From f79075223f17368a9496b15291582f961811efd9 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Tue, 3 Mar 2020 18:19:33 +0100 Subject: [PATCH] Restructured components and observables --- .../assets/javascripts/bundle.8ceb0d66.min.js | 2 + .../javascripts/bundle.8ceb0d66.min.js.map | 1 + .../assets/javascripts/bundle.b70c6ac3.min.js | 24 - .../javascripts/bundle.b70c6ac3.min.js.map | 1 - material/assets/javascripts/bundle.js | 37587 ---------------- material/assets/javascripts/bundle.js.map | 1 - .../assets/javascripts/vendor.000c9aa0.min.js | 24 + .../javascripts/vendor.000c9aa0.min.js.map | 1 + material/assets/javascripts/worker/search.js | 4569 -- .../assets/javascripts/worker/search.js.map | 1 - material/assets/manifest.json | 14 +- .../assets/stylesheets/main.1e07d700.min.css | 1 - .../assets/stylesheets/main.c05f2dae.min.css | 1 + material/assets/stylesheets/main.css | 2942 -- material/assets/stylesheets/palette.css | 290 - material/base.html | 9 +- package-lock.json | 576 - package.json | 8 +- .../javascripts/actions/search/index.ts | 23 - .../javascripts/components/header/_/index.ts | 73 +- .../header/apply}/index.ts | 10 +- .../javascripts/components/header/index.ts | 4 +- .../header/paint}/index.ts | 39 +- .../_ => components/header/watch}/index.ts | 16 +- .../{header/title => hero/_}/index.ts | 43 +- .../hero/apply}/index.ts | 12 +- .../javascripts/components/hero/index.ts | 59 +- .../title => components/hero/paint}/index.ts | 20 +- src/assets/javascripts/components/index.ts | 1 + .../javascripts/components/main/_/index.ts | 96 + .../shadow => components/main/apply}/index.ts | 0 .../javascripts/components/main/index.ts | 68 +- .../shadow => components/main/paint}/index.ts | 8 +- .../main/_ => components/main/watch}/index.ts | 17 +- .../components/navigation/_/index.ts | 122 + .../components/navigation/index.ts | 100 +- .../components/navigation/layer/_/index.ts | 33 + .../navigation/layer/apply}/index.ts | 30 - .../navigation/layer}/index.ts | 5 +- .../navigation/layer/paint/index.ts | 83 + .../navigation/layer/watch}/index.ts | 77 +- .../javascripts/components/search/_/index.ts | 3 +- .../components/search/query/_/index.ts | 113 + .../components/search/query/index.ts | 81 +- .../search/query/watch}/index.ts | 14 +- .../components/search/reset/_/index.ts | 57 + .../components/search/reset/index.ts | 36 +- .../search/reset/watch}/index.ts | 0 .../components/search/result/_/index.ts | 95 + .../search/result/apply}/index.ts | 0 .../components/search/result/index.ts | 75 +- .../search/result/paint}/index.ts | 12 +- .../navigation => components/shared}/index.ts | 2 +- .../shared/sidebar/_}/index.ts | 13 +- .../shared/sidebar/apply}/index.ts | 0 .../shared/sidebar}/index.ts | 5 +- .../components/shared/sidebar/paint/index.ts | 100 + .../shared/sidebar/watch}/index.ts | 85 +- .../javascripts/components/tabs/_/index.ts | 91 + .../components/tabs/apply/index.ts | 48 + .../javascripts/components/tabs/index.ts | 73 +- .../components/tabs/paint/index.ts | 63 + .../javascripts/components/toc/_/index.ts | 136 + .../toc/anchor/_}/index.ts | 15 +- .../toc/anchor/apply}/index.ts | 0 .../main => components/toc/anchor}/index.ts | 7 +- .../components/toc/anchor/paint/index.ts | 79 + .../toc/anchor/watch}/index.ts | 77 +- .../javascripts/components/toc/index.ts | 114 +- src/assets/javascripts/index.ts | 44 +- .../javascripts/integrations/dialog/index.ts | 5 +- .../integrations/keyboard/index.ts | 3 +- .../observables/agent/element/index.ts | 1 + .../observables/agent/element/select/index.ts | 39 + .../observables/agent/viewport/_/index.ts | 2 +- src/assets/javascripts/observables/index.ts | 5 - .../javascripts/observables/search/index.ts | 25 - .../javascripts/patches/details/index.ts | 8 +- .../javascripts/patches/script/index.ts | 24 +- .../javascripts/patches/scrollfix/index.ts | 8 +- .../javascripts/patches/source/index.ts | 15 +- src/assets/stylesheets/layout/_tabs.scss | 13 +- src/base.html | 1 + webpack.config.ts | 15 +- 84 files changed, 1502 insertions(+), 47091 deletions(-) create mode 100644 material/assets/javascripts/bundle.8ceb0d66.min.js create mode 100644 material/assets/javascripts/bundle.8ceb0d66.min.js.map delete mode 100644 material/assets/javascripts/bundle.b70c6ac3.min.js delete mode 100644 material/assets/javascripts/bundle.b70c6ac3.min.js.map delete mode 100644 material/assets/javascripts/bundle.js delete mode 100644 material/assets/javascripts/bundle.js.map create mode 100644 material/assets/javascripts/vendor.000c9aa0.min.js create mode 100644 material/assets/javascripts/vendor.000c9aa0.min.js.map delete mode 100644 material/assets/javascripts/worker/search.js delete mode 100644 material/assets/javascripts/worker/search.js.map delete mode 100644 material/assets/stylesheets/main.1e07d700.min.css create mode 100644 material/assets/stylesheets/main.c05f2dae.min.css delete mode 100644 material/assets/stylesheets/main.css delete mode 100644 material/assets/stylesheets/palette.css delete mode 100644 src/assets/javascripts/actions/search/index.ts rename src/assets/javascripts/{actions/header/title => components/header/apply}/index.ts (90%) rename src/assets/javascripts/{observables/main/hideable => components/header/paint}/index.ts (72%) rename src/assets/javascripts/{observables/header/_ => components/header/watch}/index.ts (85%) rename src/assets/javascripts/components/{header/title => hero/_}/index.ts (71%) rename src/assets/javascripts/{actions/main/hideable => components/hero/apply}/index.ts (90%) rename src/assets/javascripts/{observables/header/title => components/hero/paint}/index.ts (86%) create mode 100644 src/assets/javascripts/components/main/_/index.ts rename src/assets/javascripts/{actions/header/shadow => components/main/apply}/index.ts (100%) rename src/assets/javascripts/{observables/header/shadow => components/main/paint}/index.ts (95%) rename src/assets/javascripts/{observables/main/_ => components/main/watch}/index.ts (87%) create mode 100644 src/assets/javascripts/components/navigation/_/index.ts create mode 100644 src/assets/javascripts/components/navigation/layer/_/index.ts rename src/assets/javascripts/{actions/main/scrollable => components/navigation/layer/apply}/index.ts (76%) rename src/assets/javascripts/{observables/main => components/navigation/layer}/index.ts (94%) create mode 100644 src/assets/javascripts/components/navigation/layer/paint/index.ts rename src/assets/javascripts/{observables/navigation/layer => components/navigation/layer/watch}/index.ts (63%) create mode 100644 src/assets/javascripts/components/search/query/_/index.ts rename src/assets/javascripts/{observables/search/query => components/search/query/watch}/index.ts (89%) create mode 100644 src/assets/javascripts/components/search/reset/_/index.ts rename src/assets/javascripts/{observables/search/reset => components/search/reset/watch}/index.ts (100%) create mode 100644 src/assets/javascripts/components/search/result/_/index.ts rename src/assets/javascripts/{actions/search/result => components/search/result/apply}/index.ts (100%) rename src/assets/javascripts/{observables/search/result => components/search/result/paint}/index.ts (97%) rename src/assets/javascripts/{observables/navigation => components/shared}/index.ts (97%) rename src/assets/javascripts/{actions/header => components/shared/sidebar/_}/index.ts (77%) rename src/assets/javascripts/{actions/main/sidebar => components/shared/sidebar/apply}/index.ts (100%) rename src/assets/javascripts/{observables/header => components/shared/sidebar}/index.ts (94%) create mode 100644 src/assets/javascripts/components/shared/sidebar/paint/index.ts rename src/assets/javascripts/{observables/main/sidebar => components/shared/sidebar/watch}/index.ts (64%) create mode 100644 src/assets/javascripts/components/tabs/_/index.ts create mode 100644 src/assets/javascripts/components/tabs/apply/index.ts create mode 100644 src/assets/javascripts/components/tabs/paint/index.ts create mode 100644 src/assets/javascripts/components/toc/_/index.ts rename src/assets/javascripts/{actions => components/toc/anchor/_}/index.ts (76%) rename src/assets/javascripts/{actions/anchor => components/toc/anchor/apply}/index.ts (100%) rename src/assets/javascripts/{actions/main => components/toc/anchor}/index.ts (92%) create mode 100644 src/assets/javascripts/components/toc/anchor/paint/index.ts rename src/assets/javascripts/{observables/anchor => components/toc/anchor/watch}/index.ts (78%) create mode 100644 src/assets/javascripts/observables/agent/element/select/index.ts delete mode 100644 src/assets/javascripts/observables/search/index.ts diff --git a/material/assets/javascripts/bundle.8ceb0d66.min.js b/material/assets/javascripts/bundle.8ceb0d66.min.js new file mode 100644 index 000000000..f4bacb81b --- /dev/null +++ b/material/assets/javascripts/bundle.8ceb0d66.min.js @@ -0,0 +1,2 @@ +!function(t,e){for(var n in e)t[n]=e[n]}(window,function(t){function e(e){for(var r,o,i=e[0],u=e[1],b=e[2],s=0,O=[];s0})),Object(l.a)())}function w(t){return t.location$.pipe(Object(b.a)("pathname"),Object(f.a)(1),Object(s.a)((function(t){return Object(u.a)({url:t.href,responseType:"document",withCredentials:!0}).pipe(Object(O.a)("response"),Object(j.a)((function(){return function(t){location.href=t.href}(t),a.a})))})),Object(l.a)())}function $(t){var e=(void 0===t?{}:t).location$;return Object(r.a)(Object(c.a)(document,"DOMContentLoaded").pipe(Object(o.a)(document)),void 0!==e?w({location$:e}):a.a).pipe(Object(i.a)(1))}function x(t,e){return void 0===e&&(e=document),e.querySelector(t)||void 0}function S(t,e){void 0===e&&(e=document);var n=x(t,e);if(void 0===n)throw new ReferenceError('Missing element: expected "'+t+'" to be present');return n}function T(){return document.activeElement instanceof HTMLElement?document.activeElement:void 0}function k(t,e){return void 0===e&&(e=document),Array.from(e.querySelectorAll(t))}function C(t,e){void 0===e&&(e=!0),e?t.focus():t.blur()}function _(t){var e=Object(c.a)(t,"focus"),n=Object(c.a)(t,"blur");return Object(r.a)(e.pipe(Object(o.a)(!0)),n.pipe(Object(o.a)(!1))).pipe(Object(h.a)(t===T()),Object(i.a)(1))}function L(t){return{x:t.scrollLeft,y:t.scrollTop}}function A(t){return Object(r.a)(Object(c.a)(t,"scroll"),Object(c.a)(window,"resize")).pipe(Object(v.a)((function(){return L(t)})),Object(h.a)(L(t)),Object(i.a)(1))}function N(t){if(!(t instanceof HTMLInputElement))throw new Error("Not implemented");t.select()}function E(t){switch(t.tagName){case"INPUT":case"SELECT":case"TEXTAREA":return!0;default:return t.isContentEditable}}function R(){return Object(c.a)(window,"keydown").pipe(Object(m.a)((function(t){return!(t.metaKey||t.ctrlKey)})),Object(v.a)((function(t){return{type:t.key,claim:function(){t.preventDefault(),t.stopPropagation()}}})),Object(l.a)())}var M=n(107);function P(t){var e=matchMedia(t);return Object(M.a)((function(t){return e.addListener((function(){return t(e.matches)}))})).pipe(Object(h.a)(e.matches),Object(i.a)(1))}var H=n(0),U=n(62);function q(){return{x:Math.max(0,pageXOffset),y:Math.max(0,pageYOffset)}}function Q(t){var e=t.x,n=t.y;window.scrollTo(e||0,n||0)}function z(){return{width:innerWidth,height:innerHeight}}function I(){return Object(U.a)([Object(r.a)(Object(c.a)(window,"scroll"),Object(c.a)(window,"resize")).pipe(Object(v.a)(q),Object(h.a)(q())),Object(c.a)(window,"resize").pipe(Object(v.a)(z),Object(h.a)(z()))]).pipe(Object(v.a)((function(t){var e=Object(H.c)(t,2);return{offset:e[0],size:e[1]}})),Object(i.a)(1))}function D(t,e){var n=e.header$,r=e.viewport$,c=r.pipe(Object(b.a)("size"),Object(v.a)((function(){return{x:t.offsetLeft,y:t.offsetTop}})));return Object(U.a)([n,r,c]).pipe(Object(v.a)((function(t){var e=Object(H.c)(t,3),n=e[0].height,r=e[1],c=r.offset,a=r.size,o=e[2],i=o.x,u=o.y;return{offset:{x:c.x-i,y:c.y-u+n},size:a}})),Object(i.a)(1))}var W=n(108),J=n(58),F=n(109);function B(t,e){var n=e.tx$,r=Object(M.a)((function(e){return t.addEventListener("message",e)})).pipe(Object(O.a)("data"));return n.pipe(Object(W.a)((function(){return r}),{leading:!0,trailing:!0}),Object(J.a)((function(e){return t.postMessage(e)})),Object(F.a)(r),Object(l.a)())}var K,Y=n(45),V=n(115),X=n(36);function G(t,e){var n=e.document$;K=n.pipe(Object(V.a)(1),Object(v.a)((function(e){return t.reduce((function(t,n){var r,c=x("[data-md-toggle="+n+"]",e);return Object(H.a)(Object(H.a)({},t),void 0!==c?((r={})[n]=c,r):{})}),{})})),Object(i.a)(1))}function Z(t){return K.pipe(Object(s.a)((function(e){return void 0!==e[t]?Object(Y.a)(e[t]):a.a})),Object(X.a)())}function tt(t,e){t.checked!==e&&t.click()}function et(t){return Object(c.a)(t,"change").pipe(Object(v.a)((function(){return t.checked})),Object(h.a)(t.checked))}n.d(e,"l",(function(){return $})),n.d(e,"e",(function(){return E})),n.d(e,"o",(function(){return R})),n.d(e,"r",(function(){return P})),n.d(e,"v",(function(){return B})),n.d(e,"b",(function(){return x})),n.d(e,"c",(function(){return S})),n.d(e,"a",(function(){return T})),n.d(e,"d",(function(){return k})),n.d(e,"f",(function(){return C})),n.d(e,"m",(function(){return _})),n.d(e,"n",(function(){return A})),n.d(e,"g",(function(){return N})),n.d(e,"p",(function(){return p})),n.d(e,"q",(function(){return g})),n.d(e,"t",(function(){return I})),n.d(e,"u",(function(){return D})),n.d(e,"i",(function(){return Q})),n.d(e,"j",(function(){return G})),n.d(e,"k",(function(){return Z})),n.d(e,"h",(function(){return tt})),n.d(e,"s",(function(){return et}))},,,,function(t,e,n){"use strict";function r(t){return"object"==typeof t&&"string"==typeof t.base&&"object"==typeof t.worker&&"string"==typeof t.worker.search}var c=n(0),a=n(86);function o(t,e,n){switch(e){case"xmlns":break;case"viewBox":case"d":"boolean"!=typeof n?t.setAttributeNS(null,e,n):n&&t.setAttributeNS(null,e,"");break;default:"boolean"!=typeof n?t.setAttribute(e,n):n&&t.setAttribute(e,"")}}function i(t,e){var n,r;if("string"==typeof e||"number"==typeof e)t.innerHTML+=e.toString();else if(e instanceof Node)t.appendChild(e);else if(Array.isArray(e))try{for(var a=Object(c.f)(e),o=a.next();!o.done;o=a.next()){i(t,o.value)}}catch(t){n={error:t}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}}function u(t,e){for(var n,r,u,b,f=[],s=2;sn){for(;" "!==t[n]&&--n>0;);return t.substring(0,n)+"..."}return t}function p(t){return t>999?((t+1)/1e3).toFixed(+((t-950)%1e3>99))+"k":t.toString()}function v(t){for(var e=0,n=0,r=t.length;n=e[2].offset+c})),Object(i.a)());return Object(c.a)([s,O]).pipe(Object(o.a)((function(t){var e=Object(r.c)(t,2);return{height:e[0],lock:e[1]}})))}},function(t,e){},function(t,e,n){"use strict";n.d(e,"a",(function(){return O}));var r=n(0),c=n(35),a=n(59),o=n(46),i=n(58),u=n(98),b=n(65),f=n(1),s=n(39);function O(t){return Object(c.a)(Object(o.b)(a.a),Object(i.a)((function(t){var e=t.prev;e&&Object(s.a)(e)})),Object(u.a)(250),Object(o.b)(a.a),Object(i.a)((function(t){var e=t.next;Object(s.b)(e)})),Object(b.a)((function(){var e,n;try{for(var c=Object(r.f)(t),a=c.next();!a.done;a=c.next()){var o=a.value;Object(s.a)(Object(f.c)(".md-nav__list",o))}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}})))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(0),c=n(95),a=n(93),o=n(92),i=n(8),u=n(64),b=n(1);function f(t){var e,n,f=new Map;try{for(var s=Object(r.f)(t),O=s.next();!O.done;O=s.next()){var j=O.value,l=Object(b.b)("label",j);if(void 0!==l){var d=Object(b.c)("#"+l.htmlFor);f.set(d,j)}}}catch(t){e={error:t}}finally{try{O&&!O.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}return a.a.apply(void 0,Object(r.e)(Object(r.e)(f.keys()).map((function(t){return Object(o.a)(t,"change")})))).pipe(Object(i.a)((function(){return Object(b.c)(".md-nav__list",f.get(Object(c.a)((function(t){return t.checked}),Object(r.e)(f.keys()))))}))).pipe(Object(i.a)((function(t){return{next:t}})),Object(u.a)((function(t,e){return{prev:t.next,next:e.next}})))}},function(t,e,n){"use strict";var r=n(76);n.d(e,"mountTableOfContents",(function(){return r.a}));var c=n(49);n.o(c,"mountNavigation")&&n.d(e,"mountNavigation",(function(){return c.mountNavigation}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return O}));var r=n(0),c=n(35),a=n(62),o=n(45),i=n(24),u=n(8),b=n(1),f=n(30),s=n(49);function O(t){var e=t.header$,n=t.main$,O=t.viewport$,j=t.tablet$;return Object(c.a)(Object(i.a)((function(t){return j.pipe(Object(i.a)((function(c){if(c){var i=Object(b.d)(".md-nav__link",t),j=Object(f.watchSidebar)(t,{main$:n,viewport$:O}).pipe(Object(f.paintSidebar)(t,{header$:e})),l=Object(s.watchAnchorList)(i,{header$:e,viewport$:O}).pipe(Object(s.paintAnchorList)(i));return Object(a.a)([j,l]).pipe(Object(u.a)((function(t){var e=Object(r.c)(t,2);return{sidebar:e[0],anchors:e[1]}})))}return Object(o.a)({})})))})))}},function(t,e){},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(0),c=n(35),a=n(59),o=n(46),i=n(58),u=n(65),b=n(23);function f(t){return Object(c.a)(Object(o.b)(a.a),Object(i.a)((function(t){var e,n,c,a,o=t.prev,i=t.next;try{for(var u=Object(r.f)(i),f=u.next();!f.done;f=u.next()){var s=Object(r.c)(f.value,1)[0];Object(b.a)(s),Object(b.b)(s)}}catch(t){e={error:t}}finally{try{f&&!f.done&&(n=u.return)&&n.call(u)}finally{if(e)throw e.error}}try{for(var O=Object(r.f)(o.entries()),j=O.next();!j.done;j=O.next()){var l=Object(r.c)(j.value,2),d=l[0];s=Object(r.c)(l[1],1)[0];Object(b.c)(s,d===o.length-1),Object(b.d)(s,!0)}}catch(t){c={error:t}}finally{try{j&&!j.done&&(a=O.return)&&a.call(O)}finally{if(c)throw c.error}}})),Object(u.a)((function(){var e,n;try{for(var c=Object(r.f)(t),a=c.next();!a.done;a=c.next()){var o=a.value;Object(b.a)(o),Object(b.b)(o)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}})))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var r=n(0),c=n(99),a=n(62),o=n(8),i=n(87),u=n(24),b=n(64),f=n(36),s=n(97),O=n(94),j=n(1);function l(t,e){var n,l,d=e.header$,p=e.viewport$,v=new Map;try{for(var h=Object(r.f)(t),m=h.next();!m.done;m=h.next()){var y=m.value,g=decodeURIComponent(y.hash.substring(1)),w=Object(j.b)('[id="'+g+'"]');void 0!==w&&v.set(y,w)}}catch(t){n={error:t}}finally{try{m&&!m.done&&(l=h.return)&&l.call(h)}finally{if(n)throw n.error}}var $=d.pipe(Object(o.a)((function(t){return 18+t.height})));return p.pipe(Object(i.a)("size"),Object(o.a)((function(){var t=[];return Object(r.e)(v).reduce((function(e,n){for(var a=Object(r.c)(n,2),o=a[0],i=a[1];t.length;){if(!(v.get(t[t.length-1]).tagName>=i.tagName))break;t.pop()}for(var u=i.offsetTop;!u&&i.parentElement;)u=(i=i.parentElement).offsetTop;return e.set(Object(c.a)(t=Object(r.e)(t,[o])),u)}),new Map)})),Object(u.a)((function(t){return Object(a.a)([$,p]).pipe(Object(b.a)((function(t,e){for(var n=Object(r.c)(t,2),c=n[0],a=n[1],o=Object(r.c)(e,2),i=o[0],u=o[1].offset.y;a.length;){if(!(Object(r.c)(a[0],2)[1]-i=u))break;a=Object(r.e)([c.pop()],a)}return[c,a]}),[[],Object(r.e)(t)]),Object(f.a)((function(t,e){return t[0]===e[0]&&t[1]===e[1]})))}))).pipe(Object(o.a)((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];return{prev:n.map((function(t){return Object(r.c)(t,1)[0]})),next:c.map((function(t){return Object(r.c)(t,1)[0]}))}})),Object(s.a)({prev:[],next:[]}),Object(O.a)(2,1),Object(o.a)((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];return n.prev.length16)););return n}),0),Object(w.a)(e),Object(A.a)((function(){!function(t){t.innerHTML=""}(u)})))})))}function P(t,e){var n=t.rx$,r=e.query$;return Object(c.a)(Object(o.a)((function(t){var e=t.parentElement,c=Object(s.n)(e).pipe(Object(i.a)((function(t){return t.y>=e.scrollHeight-e.offsetHeight-16})),Object(v.a)(),Object(T.a)(S.a));return n.pipe(Object(T.a)(O.b),Object(k.a)("data"),M(t,{query$:r,fetch$:c}))})))}n.d(e,"a",(function(){return u})),n.d(e,"b",(function(){return m})),n.d(e,"c",(function(){return x})),n.d(e,"d",(function(){return P}))},function(t,e,n){"use strict";var r=n(0),c=n(35),a=n(62),o=n(24),i=n(8),u=n(101),b=n(63),f=n(36),s=n(97),O=n(96),j=n(1),l=n(21),d=n(59),p=n(46),v=n(58),h=n(65);var m=n(45),y=n(87);function g(t){var e=t.viewport$;return Object(c.a)(Object(o.a)((function(t){var n=function(t,e){return e.viewport$.pipe(Object(y.a)("size"),Object(o.a)((function(){var e=getComputedStyle(t),n=["sticky","-webkit-sticky"].includes(e.position);return Object(m.a)({sticky:n,height:n?t.offsetHeight:0})})))}(t,{viewport$:e}),g=Object(l.b)("main").pipe(Object(i.a)((function(t){return Object(j.b)("h1, h2, h3, h4, h5, h6",t)})),Object(u.a)((function(t){return void 0!==t})),Object(b.a)(Object(l.b)("header-title")),Object(o.a)((function(t){var a=Object(r.c)(t,2),o=a[0],u=a[1];return Object(j.u)(o,{header$:n,viewport$:e}).pipe(Object(i.a)((function(t){return t.offset.y>=o.offsetHeight?"page":"site"})),Object(f.a)(),function(t){return Object(c.a)(Object(p.b)(d.a),Object(v.a)((function(e){!function(t,e){t.setAttribute("data-md-state",e?"active":"")}(t,"page"===e)})),Object(h.a)((function(){!function(t){t.removeAttribute("data-md-state")}(t)})))}(u))})),Object(s.a)("site"));return Object(a.a)([n,g]).pipe(Object(i.a)((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];return Object(r.a)({type:c},n)})),Object(O.a)(1))})))}n.d(e,"a",(function(){return g}))},function(t,e,n){"use strict";var r=n(25),c=n(35),a=n(24),o=n(87),i=n(58),u=n(21),b=n(59),f=n(46),s=n(65);var O=n(0),j=n(62),l=n(103),d=n(8),p=n(36);function v(t){var e=t.header$,n=t.viewport$,v=new r.a;return Object(u.b)("header").pipe(Object(a.a)((function(t){return v.pipe(Object(o.a)("active"),(e=t,Object(c.a)(Object(f.b)(b.a),Object(i.a)((function(t){var n=t.active;!function(t,e){t.setAttribute("data-md-state",e?"shadow":"")}(e,n)})),Object(s.a)((function(){!function(t){t.removeAttribute("data-md-state")}(e)})))));var e}))).subscribe(),Object(c.a)(Object(a.a)((function(t){return function(t,e){var n=e.header$,r=e.viewport$,c=n.pipe(Object(l.a)("height")),a=Object(j.a)([c,r]).pipe(Object(d.a)((function(e){var n=Object(O.c)(e,2),r=n[0],c=n[1],a=c.offset.y,o=c.size.height,i=t.offsetTop,u=t.offsetHeight+i;return o-Math.max(0,i-a,r)-Math.max(0,o+a-u)})),Object(d.a)((function(t){return Math.max(0,t)})),Object(p.a)()),o=Object(j.a)([c,r]).pipe(Object(d.a)((function(e){var n=Object(O.c)(e,2),r=n[0];return n[1].offset.y>=t.offsetTop-r})),Object(p.a)());return Object(j.a)([c,a,o]).pipe(Object(d.a)((function(e){var n=Object(O.c)(e,3),r=n[0],c=n[1],a=n[2];return{offset:t.offsetTop-r,height:c,active:a}})))}(t,{header$:e,viewport$:n})})),Object(i.a)((function(t){return v.next(t)})))}n.d(e,"a",(function(){return v}))},function(t,e,n){"use strict";var r=n(35),c=n(24),a=n(8),o=n(36),i=n(1),u=n(59),b=n(46),f=n(58),s=n(65);function O(t){var e=t.header$,n=t.viewport$;return Object(r.a)(Object(c.a)((function(t){return Object(i.u)(t,{header$:e,viewport$:n}).pipe(Object(a.a)((function(t){return{hidden:t.offset.y>=20}})),Object(o.a)(),function(t){return Object(r.a)(Object(b.b)(u.a),Object(f.a)((function(e){var n=e.hidden;!function(t,e){t.setAttribute("data-md-state",e?"hidden":"")}(t,n)})),Object(s.a)((function(){!function(t){t.removeAttribute("data-md-state")}(t)})))}(t))})))}n.d(e,"a",(function(){return O}))},function(t,e,n){"use strict";var r=n(35),c=n(45),a=n(24),o=n(8),i=n(36),u=n(1),b=n(59),f=n(46),s=n(58),O=n(65);function j(t){var e=t.header$,n=t.viewport$,j=t.screen$;return Object(r.a)(Object(a.a)((function(t){return j.pipe(Object(a.a)((function(a){return a?Object(u.u)(t,{header$:e,viewport$:n}).pipe(Object(o.a)((function(t){return{hidden:t.offset.y>=10}})),Object(i.a)(),function(t){return Object(r.a)(Object(f.b)(b.a),Object(s.a)((function(e){var n=e.hidden;!function(t,e){t.setAttribute("data-md-state",e?"hidden":"")}(t,n)})),Object(O.a)((function(){!function(t){t.removeAttribute("data-md-state")}(t)})))}(t)):Object(c.a)({hidden:!0})})))})))}n.d(e,"a",(function(){return j}))},,,,,,,function(t,e,n){"use strict";n.r(e);var r=n(0),c=n(113),a=n(62),o=n(59),i=n(92),u=n(45),b=n(105),f=n(93),s=n(96),O=n(24),j=n(101),l=n(58),d=n(98),p=n(106),v=n(63),h=n(46),m=n(36),y=n(8),g=n(114),w=n(103),$=n(94),x=n(111),S=n(87),T=n(112),k=n(115),C=n(1),_=n(41),L=n(7),A=n(61),N=n(107),E=n(31),R=n(5);var M=n(116),P=n(109);var H=n(102);var U=n(110);function q(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}var Q=n(104),z=n(117);function I(t){switch(Object(r.c)(t.match(/(git(?:hub|lab))/i)||[],1)[0].toLowerCase()){case"github":var e=Object(r.c)(t.match(/^.+github\.com\/([^\/]+)\/?([^\/]+)/i),3);return function(t,e){return Object(z.a)({url:void 0!==e?"https://api.github.com/repos/"+t+"/"+e:"https://api.github.com/users/"+t,responseType:"json"}).pipe(Object(j.a)((function(t){return 200===t.status})),Object(w.a)("response"),Object(O.a)((function(t){if(void 0!==e){var n=t.stargazers_count,r=t.forks_count;return Object(u.a)([Object(R.e)(n||0)+" Stars",Object(R.e)(r||0)+" Forks"])}var c=t.public_repos;return Object(u.a)([Object(R.e)(c||0)+" Repositories"])})))}(e[1],e[2]);case"gitlab":var n=Object(r.c)(t.match(/^.+?([^\/]*gitlab[^\/]+)\/(.+)/i),3);return function(t,e){return Object(z.a)({url:"https://"+t+"/api/v4/projects/"+encodeURIComponent(e),responseType:"json"}).pipe(Object(j.a)((function(t){return 200===t.status})),Object(w.a)("response"),Object(y.a)((function(t){var e=t.star_count,n=t.forks_count;return[Object(R.e)(e)+" Stars",Object(R.e)(n)+" Forks"]})))}(n[1],n[2]);default:return b.a}}var D=n(25);function W(t,e){t.setAttribute("data-md-state","lock"),t.style.top="-"+e+"px"}function J(t){var e=-1*parseInt(t.style.top,10);t.removeAttribute("data-md-state"),t.style.top="",e&&window.scrollTo(0,e)}function F(t){var e,n,z,F;if(!Object(R.d)(t))throw new SyntaxError("Invalid configuration: "+JSON.stringify(t));var B=Object(C.p)(),K=Object(C.q)(),Y=Object(C.t)(),V=Object(C.r)("(min-width: 960px)"),X=Object(C.r)("(min-width: 1220px)"),G=t.feature.instant?Object(C.l)({location$:B}):Object(C.l)();Object(C.j)(["drawer","search"],{document$:G}),Object(L.setupComponents)(["container","header","header-title","hero","main","navigation","search","search-query","search-reset","search-result","tabs","toc"],{document$:G});var Z=Object(_.c)(t.worker.search,{base:t.base,location$:B}),tt=Object(L.useComponent)("header").pipe(Object(L.mountHeader)({viewport$:Y}),Object(s.a)(1)),et=Object(L.useComponent)("main").pipe(Object(L.mountMain)({header$:tt,viewport$:Y}),Object(s.a)(1)),nt=Object(L.useComponent)("search-query").pipe(Object(L.mountSearchQuery)(Z),Object(s.a)(1)),rt=Object(L.useComponent)("search-reset").pipe(Object(L.mountSearchReset)(),Object(s.a)(1)),ct=Object(L.useComponent)("search-result").pipe(Object(L.mountSearchResult)(Z,{query$:nt}),Object(s.a)(1)),at=Object(L.useComponent)("search").pipe(Object(L.mountSearch)({query$:nt,reset$:rt,result$:ct}),Object(s.a)(1)),ot=Object(L.useComponent)("navigation").pipe(Object(L.mountNavigation)({header$:tt,main$:et,viewport$:Y,screen$:X}),Object(s.a)(1)),it=Object(L.useComponent)("toc").pipe(Object(L.mountTableOfContents)({header$:tt,main$:et,viewport$:Y,tablet$:V}),Object(s.a)(1)),ut=Object(L.useComponent)("tabs").pipe(Object(L.mountTabs)({header$:tt,viewport$:Y,screen$:X}),Object(s.a)(1)),bt=Object(L.useComponent)("hero").pipe(Object(L.mountHero)({header$:tt,viewport$:Y}),Object(s.a)(1)),ft=function(){var t=Object(C.k)("search"),e=t.pipe(Object(O.a)(C.s)),n=Object(C.o)().pipe(Object(v.a)(e),Object(y.a)((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];return Object(r.a)({mode:c?"search":"global"},n)})),Object(g.a)());return n.pipe(Object(j.a)((function(t){return"search"===t.mode})),Object(v.a)(t,Object(L.useComponent)("search-query"),Object(L.useComponent)("search-result"))).subscribe((function(t){var e=Object(r.c)(t,4),n=e[0],c=e[1],a=e[2],o=e[3],i=Object(C.a)();switch(n.type){case"Enter":i===a&&n.claim();break;case"Escape":case"Tab":Object(C.h)(c,!1),Object(C.f)(a,!1);break;case"ArrowUp":case"ArrowDown":if(void 0===i)Object(C.f)(a);else{var u=Object(r.e)([a],Object(C.d)("[href]",o)),b=Math.max(0,(Math.max(0,u.indexOf(i))+u.length+("ArrowUp"===n.type?-1:1))%u.length);Object(C.f)(u[b])}n.claim();break;default:a!==Object(C.a)()&&Object(C.f)(a)}})),n.pipe(Object(j.a)((function(t){if("global"===t.mode){var e=Object(C.a)();if(void 0!==e)return!Object(C.e)(e)}return!1})),Object(v.a)(Object(L.useComponent)("search-query"))).subscribe((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];switch(n.type){case"f":case"s":Object(C.f)(c),Object(C.g)(c),n.claim();break;case"p":case",":var a=Object(C.b)("[href][rel=prev]");void 0!==a&&a.click();break;case"n":case".":var o=Object(C.b)("[href][rel=next]");void 0!==o&&o.click()}})),n}();!function(t){var e=t.document$,n=t.hash$,c=e.pipe(Object(y.a)((function(){return Object(C.d)("details")})));Object(f.a)(Object(C.r)("print").pipe(Object(j.a)(M.a)),Object(i.a)(window,"beforeprint")).pipe(Object(P.a)(c)).subscribe((function(t){var e,n;try{for(var c=Object(r.f)(t),a=c.next();!a.done;a=c.next()){a.value.setAttribute("open","")}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}})),n.pipe(Object(y.a)((function(t){return Object(C.b)('[id="'+t+'"]')})),Object(j.a)((function(t){return void 0!==t})),Object(l.a)((function(t){var e=t.closest("details");e&&!e.open&&e.setAttribute("open","")}))).subscribe((function(t){return t.scrollIntoView()}))}({document$:G,hash$:K}),function(t){t.document$.pipe(Object(H.a)(1),Object(v.a)(Object(L.useComponent)("container")),Object(y.a)((function(t){var e=Object(r.c)(t,2)[1];return Object(C.d)("script",e)}))).subscribe((function(t){var e,n;try{for(var c=Object(r.f)(t),a=c.next();!a.done;a=c.next()){var o=a.value;if(o.src||/(^|\/javascript)$/i.test(o.type)){var i=document.createElement("script"),u=o.src?"src":"innerText";i[u]=o[u],o.replaceWith(i)}}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}}))}({document$:G}),function(t){t.document$.pipe(Object(y.a)((function(){return Object(C.c)(".md-source[href]")})),Object(O.a)((function(t){var e=t.href;return Object(R.a)(""+Object(R.c)(e),(function(){return I(e)}))})),Object(Q.a)((function(){return b.a}))).subscribe((function(t){var e,n;try{for(var c=Object(r.f)(Object(C.d)(".md-source__repository")),a=c.next();!a.done;a=c.next()){var o=a.value;o.hasAttribute("data-md-state")||(o.setAttribute("data-md-state","done"),o.appendChild(Object(E.c)(t)))}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}}))}({document$:G}),function(t){var e=t.document$,n=document.createElement("table");e.pipe(Object(y.a)((function(){return Object(C.d)("table:not([class])")}))).subscribe((function(t){var e,c;try{for(var a=Object(r.f)(t),o=a.next();!o.done;o=a.next()){var i=o.value;i.replaceWith(n),n.replaceWith(Object(E.d)(i))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(c=a.return)&&c.call(a)}finally{if(e)throw e.error}}}))}({document$:G}),function(t){var e=t.document$.pipe(Object(y.a)((function(){return Object(C.d)("[data-md-scrollfix]")})),Object(s.a)(1));e.subscribe((function(t){var e,n;try{for(var c=Object(r.f)(t),a=c.next();!a.done;a=c.next()){a.value.removeAttribute("data-md-scrollfix")}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}})),Object(U.a)(q,e,b.a).pipe(Object(O.a)((function(t){return f.a.apply(void 0,Object(r.e)(t.map((function(t){return Object(i.a)(t,"touchstart").pipe(Object(p.a)(t))}))))}))).subscribe((function(t){var e=t.scrollTop;0===e?t.scrollTop=1:e+t.offsetHeight===t.scrollHeight&&(t.scrollTop=e-1)}))}({document$:G});var st=function(t){var e=(void 0===t?{}:t).duration,n=new D.a,r=document.createElement("div");return r.classList.add("md-dialog","md-typeset"),n.pipe(Object(O.a)((function(t){return Object(u.a)(document.body).pipe(Object(y.a)((function(t){return t.appendChild(r)})),Object(h.b)(o.a),Object(d.a)(1),Object(l.a)((function(e){e.innerHTML=t,e.setAttribute("data-md-state","open")})),Object(d.a)(e||2e3),Object(l.a)((function(t){return t.removeAttribute("data-md-state")})),Object(d.a)(400),Object(l.a)((function(t){t.innerHTML="",t.remove()})))}))).subscribe(),n}(),Ot=function(t){var e=t.document$,n=t.dialog$;if(!A.isSupported())return b.a;e.subscribe((function(){var t,e,n=Object(C.d)("pre > code");try{for(var c=Object(r.f)(n.entries()),a=c.next();!a.done;a=c.next()){var o=Object(r.c)(a.value,2),i=o[0],u=o[1],b=u.parentElement;b.id="__code_"+i,b.insertBefore(Object(E.a)(b.id),u)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=c.return)&&e.call(c)}finally{if(t)throw t.error}}}));var c=Object(N.a)((function(t){new A(".md-clipboard").on("success",t)})).pipe(Object(g.a)());return c.pipe(Object(l.a)((function(t){return t.clearSelection()})),Object(p.a)(Object(R.f)("clipboard.copied"))).subscribe(n),c}({document$:G,dialog$:st});K.subscribe((function(){Object(C.k)("drawer").subscribe((function(t){Object(C.h)(t,!1)}))})),K.pipe(Object(O.a)((function(t){return Object(C.k)("search").pipe(Object(j.a)((function(t){return t.checked})),Object(l.a)((function(t){return Object(C.h)(t,!1)})),Object(d.a)(125),Object(p.a)(t))}))).subscribe((function(t){Object(C.b)('[id="'+t+'"]').scrollIntoView()}));var jt=Object(C.k)("search");function lt(t){return t.pathname===location.pathname&&t.hash.length>0}if(Object(a.a)([jt.pipe(Object(O.a)(C.s)),V]).pipe(Object(v.a)(Y),Object(O.a)((function(t){var e=Object(r.c)(t,2),n=Object(r.c)(e[0],2),c=n[0],a=n[1],i=e[1].offset.y,u=c&&!a;return G.pipe(Object(d.a)(u?400:100),Object(h.b)(o.a),Object(l.a)((function(t){var e=t.body;return u?W(e,i):J(e)})))}))).subscribe(),t.feature.instant){"scrollRestoration"in history&&(history.scrollRestoration="manual");try{for(var dt=Object(r.f)(['link[rel="shortcut icon"]','link[rel="stylesheet"]']),pt=dt.next();!pt.done;pt=dt.next()){var vt=pt.value;try{for(var ht=(z=void 0,Object(r.f)(Object(C.d)(vt))),mt=ht.next();!mt.done;mt=ht.next()){var yt=mt.value;yt.href=yt.href}}catch(t){z={error:t}}finally{try{mt&&!mt.done&&(F=ht.return)&&F.call(ht)}finally{if(z)throw z.error}}}}catch(t){e={error:t}}finally{try{pt&&!pt.done&&(n=dt.return)&&n.call(dt)}finally{if(e)throw e.error}}var gt=Object(i.a)(document.body,"click").pipe(Object(j.a)((function(t){return!(t.metaKey||t.ctrlKey)})),Object(O.a)((function(t){if(t.target instanceof HTMLElement){var e=t.target.closest("a");if(e&&function(t){return t.host===location.host&&(!t.pathname||"/"===t.pathname||/\/[\w-]+(?:\/?|\.html)$/i.test(t.pathname))}(e))return lt(e)||t.preventDefault(),Object(u.a)(e.href)}return b.a})),Object(m.a)(),Object(y.a)((function(t){return{url:new URL(t)}})),Object(g.a)()),wt=gt.pipe(Object(j.a)((function(t){return!lt(t.url)})),Object(g.a)()),$t=Object(i.a)(window,"popstate").pipe(Object(j.a)((function(t){return null!==t.state})),Object(y.a)((function(t){return{url:new URL(location.href),data:t.state}})),Object(g.a)());Object(f.a)(wt,$t).pipe(Object(w.a)("url")).subscribe(B),gt.pipe(Object(m.a)((function(t,e){var n=t.url,r=e.url;return n.href===r.href})),Object(j.a)((function(t){return!lt(t.url)}))).subscribe((function(t){var e=t.url;history.pushState({},"",e.toString())})),Object(f.a)(gt,$t).pipe(Object($.a)(2,1)).subscribe((function(t){var e=Object(r.c)(t,2),n=e[0],c=e[1];console.log("<- "+n.url),console.log("-> "+c.url),null!==n.url.href.match(c.url.href)&<(n.url)&&Object(C.i)(c.data||{y:0})})),Y.pipe(Object(x.a)(250),Object(S.a)("offset")).subscribe((function(t){var e=t.offset;history.replaceState(e,"")})),Object(f.a)(wt,$t).pipe(Object(T.a)(G),Object(v.a)(G)).subscribe((function(t){var e,n,c=Object(r.c)(t,2),a=c[0],o=a.url,i=a.data,u=c[1],b=u.title,f=u.head;console.log("Done",o.href,i),document.dispatchEvent(new CustomEvent("DOMContentSwitch")),document.title=b;try{for(var s=Object(r.f)(['link[rel="canonical"]','meta[name="author"]','meta[name="description"]']),O=s.next();!O.done;O=s.next()){var j=O.value,l=Object(C.b)(j,f),d=Object(C.b)(j,document.head);void 0!==l&&void 0!==d&&d.replaceWith(l)}}catch(t){e={error:t}}finally{try{O&&!O.done&&(n=s.return)&&n.call(s)}finally{if(e)throw e.error}}if(Object(C.k)("search").subscribe((function(t){Object(C.h)(t,!1)})),o.hash){console.log("hash data?",i);var p=document.createElement("a");p.href=o.hash,p.click()}else Object(C.i)(i||{y:0})})),$t.subscribe((function(t){var e=t.url;console.log("Popstate "+e.href,e)}))}ft.pipe(Object(j.a)((function(t){return"global"===t.mode&&["Tab"].includes(t.type)})),Object(k.a)(1)).subscribe((function(){var t,e;try{for(var n=Object(r.f)(Object(C.d)(".headerlink")),c=n.next();!c.done;c=n.next()){c.value.style.visibility="visible"}}catch(e){t={error:e}}finally{try{c&&!c.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}));var xt={search$:at,clipboard$:Ot,location$:B,hash$:K,keyboard$:ft,dialog$:st,main$:et,navigation$:ot,toc$:it,tabs$:ut,hero$:bt},St=Object(r.d)(xt,[]);return f.a.apply(void 0,Object(r.e)(Object(c.a)(St))).subscribe(),{state:xt}}n.d(e,"setScrollLock",(function(){return W})),n.d(e,"resetScrollLock",(function(){return J})),n.d(e,"initialize",(function(){return F})),document.documentElement.classList.remove("no-js"),document.documentElement.classList.add("js"),navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&document.documentElement.classList.add("ios")}])); +//# sourceMappingURL=bundle.8ceb0d66.min.js.map \ No newline at end of file diff --git a/material/assets/javascripts/bundle.8ceb0d66.min.js.map b/material/assets/javascripts/bundle.8ceb0d66.min.js.map new file mode 100644 index 000000000..03b87d5c4 --- /dev/null +++ b/material/assets/javascripts/bundle.8ceb0d66.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/javascripts/observables/agent/location/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/hash/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/switch/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/focus/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/select/index.ts","webpack:///./src/assets/javascripts/observables/agent/keyboard/index.ts","webpack:///./src/assets/javascripts/observables/agent/media/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/size/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/worker/index.ts","webpack:///./src/assets/javascripts/observables/toggle/index.ts","webpack:///./src/assets/javascripts/observables/index.ts","webpack:///./src/assets/javascripts/utilities/config/index.ts","webpack:///./src/assets/javascripts/utilities/jsx/index.ts","webpack:///./src/assets/javascripts/utilities/rxjs/index.ts","webpack:///./src/assets/javascripts/utilities/string/index.ts","webpack:///./src/assets/javascripts/utilities/index.ts","webpack:///./src/assets/javascripts/components/index.ts","webpack:///./src/assets/javascripts/components/shared/sidebar/apply/index.ts","webpack:///./src/assets/javascripts/components/_/index.ts","webpack:///./src/assets/javascripts/components/toc/anchor/apply/index.ts","webpack:///./src/assets/javascripts/components/shared/index.ts","webpack:///./src/assets/javascripts/templates/clipboard/index.tsx","webpack:///./src/assets/javascripts/templates/search/index.tsx","webpack:///./src/assets/javascripts/templates/source/index.tsx","webpack:///./src/assets/javascripts/templates/table/index.tsx","webpack:///./src/assets/javascripts/templates/index.ts","webpack:///./src/assets/javascripts/components/navigation/layer/apply/index.ts","webpack:///./src/assets/javascripts/workers/search/message/index.ts","webpack:///./src/assets/javascripts/workers/search/_/index.ts","webpack:///./src/assets/javascripts/workers/index.ts","webpack:///./src/assets/javascripts/components/navigation/layer/index.ts","webpack:///./src/assets/javascripts/components/toc/anchor/index.ts","webpack:///./src/assets/javascripts/components/navigation/index.ts","webpack:///./src/assets/javascripts/components/navigation/_/index.ts","webpack:///./src/assets/javascripts/components/shared/sidebar/index.ts","webpack:///./src/assets/javascripts/components/shared/sidebar/paint/index.ts","webpack:///./src/assets/javascripts/components/shared/sidebar/watch/index.ts","webpack:///./src/assets/javascripts/components/navigation/layer/paint/index.ts","webpack:///./src/assets/javascripts/components/navigation/layer/watch/index.ts","webpack:///./src/assets/javascripts/components/toc/index.ts","webpack:///./src/assets/javascripts/components/toc/_/index.ts","webpack:///./src/assets/javascripts/components/toc/anchor/paint/index.ts","webpack:///./src/assets/javascripts/components/toc/anchor/watch/index.ts","webpack:///./src/assets/javascripts/components/search/_/index.ts","webpack:///./src/assets/javascripts/components/search/query/watch/index.ts","webpack:///./src/assets/javascripts/components/search/query/_/index.ts","webpack:///./src/assets/javascripts/components/search/reset/_/index.ts","webpack:///./src/assets/javascripts/components/search/reset/watch/index.ts","webpack:///./src/assets/javascripts/components/search/result/apply/index.ts","webpack:///./src/assets/javascripts/components/search/result/paint/index.ts","webpack:///./src/assets/javascripts/components/search/result/_/index.ts","webpack:///./src/assets/javascripts/components/search/index.ts","webpack:///./src/assets/javascripts/components/header/_/index.ts","webpack:///./src/assets/javascripts/components/header/watch/index.ts","webpack:///./src/assets/javascripts/components/header/paint/index.ts","webpack:///./src/assets/javascripts/components/header/apply/index.ts","webpack:///./src/assets/javascripts/components/header/index.ts","webpack:///./src/assets/javascripts/components/main/_/index.ts","webpack:///./src/assets/javascripts/components/main/paint/index.ts","webpack:///./src/assets/javascripts/components/main/apply/index.ts","webpack:///./src/assets/javascripts/components/main/watch/index.ts","webpack:///./src/assets/javascripts/components/main/index.ts","webpack:///./src/assets/javascripts/components/hero/_/index.ts","webpack:///./src/assets/javascripts/components/hero/paint/index.ts","webpack:///./src/assets/javascripts/components/hero/apply/index.ts","webpack:///./src/assets/javascripts/components/hero/index.ts","webpack:///./src/assets/javascripts/components/tabs/_/index.ts","webpack:///./src/assets/javascripts/components/tabs/paint/index.ts","webpack:///./src/assets/javascripts/components/tabs/apply/index.ts","webpack:///./src/assets/javascripts/components/tabs/index.ts","webpack:///./src/assets/javascripts/patches/scrollfix/index.ts","webpack:///./src/assets/javascripts/patches/source/index.ts","webpack:///./src/assets/javascripts/patches/source/github/index.ts","webpack:///./src/assets/javascripts/patches/source/gitlab/index.ts","webpack:///./src/assets/javascripts/index.ts","webpack:///./src/assets/javascripts/integrations/keyboard/index.ts","webpack:///./src/assets/javascripts/patches/details/index.ts","webpack:///./src/assets/javascripts/patches/script/index.ts","webpack:///./src/assets/javascripts/patches/table/index.ts","webpack:///./src/assets/javascripts/integrations/dialog/index.ts","webpack:///./src/assets/javascripts/integrations/clipboard/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","watchLocation","BehaviorSubject","URL","location","href","getLocationHash","hash","substring","watchLocationHash","fromEvent","pipe","map","startWith","filter","share","watchDocumentSwitch","location$","distinctUntilKeyChanged","skip","switchMap","url","ajax","responseType","withCredentials","pluck","catchError","setLocation","watchDocument","merge","document","mapTo","shareReplay","getElement","selector","node","querySelector","undefined","getElementOrThrow","el","ReferenceError","getActiveElement","activeElement","HTMLElement","getElements","Array","from","querySelectorAll","setElementFocus","focus","blur","watchElementFocus","focus$","blur$","getElementOffset","x","scrollLeft","y","scrollTop","watchElementOffset","setElementSelection","HTMLInputElement","Error","select","isSusceptibleToKeyboard","tagName","isContentEditable","watchKeyboard","ev","metaKey","ctrlKey","type","claim","preventDefault","stopPropagation","watchMedia","query","media","matchMedia","fromEventPattern","next","addListener","matches","getViewportOffset","Math","max","pageXOffset","pageYOffset","setViewportOffset","scrollTo","getViewportSize","width","innerWidth","height","innerHeight","watchViewport","combineLatest","offset","size","watchViewportAt","header$","viewport$","offset$","offsetLeft","offsetTop","watchWorker","worker","tx$","rx$","addEventListener","throttle","leading","trailing","tap","message","postMessage","switchMapTo","toggles$","setupToggles","names","document$","take","reduce","toggles","useToggle","of","distinctUntilChanged","setToggle","checked","click","watchToggle","isConfig","config","base","search","setAttribute","setAttributeNS","appendChild","child","innerHTML","toString","Node","isArray","h","tag","attributes","createElementNS","createElement","keys","attr","children","cache","factory","defer","sessionStorage","getItem","JSON","parse","value$","subscribe","setItem","stringify","err","lang","translate","innerText","replace","truncate","round","toFixed","len","charCodeAt","setSidebarOffset","style","top","resetSidebarOffset","setSidebarHeight","resetSidebarHeight","setSidebarLock","resetSidebarLock","removeAttribute","components$","setupComponents","components","prev","replaceWith","useComponent","setAnchorBlur","resetAnchorBlur","setAnchorActive","classList","toggle","resetAnchorActive","remove","css","container","renderClipboard","id","path","class","title","xmlns","viewBox","item","link","article","section","teaser","renderSearchResult","sections","text","tabIndex","facts","fact","renderSource","wrapper","table","renderTable","setOverflowScrolling","webkitOverflowScrolling","resetOverflowScrolling","SearchMessageType","isSearchResultMessage","RESULT","setupSearchWorker","index","Worker","origin$","Subject","withLatestFrom","origin","SETUP","mountNavigation","main$","screen$","screen","sidebar","els","layer","paintSidebar","lock","watchSidebar","adjust$","parseFloat","getComputedStyle","parentElement","getPropertyValue","height$","adjust","min","lock$","paintNavigationLayer","watchNavigationLayer","Map","label","input","htmlFor","set","mountTableOfContents","tablet$","tablet","sidebar$","anchors$","anchors","paintAnchorList","entries","watchAnchorList","decodeURIComponent","target","header","anchor","pop","a","b","mountSearch","query$","reset$","result$","defaultTransform","trim","mountSearchQuery","options","toggle$","fn","transform","delay","watchSearchQuery","QUERY","mountSearchReset","watchSearchReset","addToSearchResultList","paintSearchResult","fetch$","list","meta","textContent","setSearchResultMeta","resetSearchResultMeta","observeOn","animationFrame","scan","scrollHeight","offsetHeight","finalize","resetSearchResultList","mountSearchResult","identity","mountHeader","styles","sticky","includes","position","watchHeader","type$","main","hx","setHeaderTitleActive","resetHeaderTitleActive","paintHeaderType","mountMain","active","setHeaderShadow","resetHeaderShadow","bottom","active$","watchMain","mountHero","hidden","setHeroHidden","resetHeroHidden","paintHero","mountTabs","setTabsHidden","resetTabsHidden","paintTabs","isAppleDevice","test","navigator","userAgent","fetchSourceFacts","toLowerCase","user","repo","status","stargazers_count","forks_count","public_repos","fetchSourceFactsFromGitHub","project","encodeURIComponent","star_count","fetchSourceFactsFromGitLab","setScrollLock","resetScrollLock","parseInt","initialize","SyntaxError","hash$","feature","instant","search$","navigation$","toc$","tabs$","hero$","keyboard$","indexOf","setupKeyboard","els$","details","closest","open","scrollIntoView","patchDetails","src","script","patchScripts","hasAttribute","patchSource","sentinel","patchTables","iif","patchScrollfix","dialog$","duration","dialog","add","body","setupDialog","clipboard$","blocks","block","parent","insertBefore","on","clearSelection","setupClipboard","isAnchorLink","pathname","history","scrollRestoration","internal$","host","isInternalLink","dispatch$","popstate$","state","pushState","bufferCount","console","log","match","debounceTime","replaceState","sample","head","dispatchEvent","CustomEvent","visibility","values","rest","documentElement"],"mappings":"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","file":"assets/javascripts/bundle.8ceb0d66.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([91,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { BehaviorSubject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function will return a `URL` object (and not `Location`) in order to\n * normalize typings across the application. Furthermore, locations need to be\n * tracked without setting them and `Location` is a singleton which represents\n * the current location.\n *\n * @return URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @return Location subject\n */\nexport function watchLocation(): BehaviorSubject {\n return new BehaviorSubject(getLocation())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @return Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @return Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n catchError,\n distinctUntilKeyChanged,\n pluck,\n share,\n skip,\n switchMap\n} from \"rxjs/operators\"\n\nimport { setLocation } from \"../../location\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document switch\n *\n * This function returns an observables that fetches a document if the provided\n * location observable emits a new value (i.e. URL). If the emitted URL points\n * to the same page, the request is effectively ignored (i.e. when only the\n * fragment identifier changes).\n *\n * In case the request fails, the location change is dispatched regularly.\n *\n * @param options - Options\n *\n * @return Document switch observable\n */\nexport function watchDocumentSwitch(\n { location$ }: WatchOptions\n): Observable {\n return location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n skip(1),\n\n /* Fetch document */\n switchMap(url => ajax({\n url: url.href,\n responseType: \"document\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\"),\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay } from \"rxjs/operators\"\n\nimport { watchDocumentSwitch } from \"../switch\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$?: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * If the location observable is passed, instant loading will be enabled which\n * means that new values will be emitted every time the location changes.\n *\n * @return Document observable\n */\nexport function watchDocument(\n { location$ }: WatchOptions = {}\n): Observable {\n return merge(\n fromEvent(document, \"DOMContentLoaded\")\n .pipe(\n mapTo(document)\n ),\n typeof location$ !== \"undefined\"\n ? watchDocumentSwitch({ location$ })\n : NEVER\n )\n .pipe(\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element or nothing\n */\nexport function getElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element\n */\nexport function getElementOrThrow(\n selector: string, node: ParentNode = document\n): T {\n const el = getElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n return el\n}\n\n/**\n * Retrieve the currently active element\n *\n * @return Element\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : undefined\n}\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Elements\n */\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay, startWith } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element focus\n *\n * @param el - Element\n * @param value - Whether the element should be focused\n *\n * @return Element offset\n */\nexport function setElementFocus(\n el: HTMLElement, value: boolean = true\n): void {\n if (value)\n el.focus()\n else\n el.blur()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * @param el - Element\n *\n * @return Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n const focus$ = fromEvent(el, \"focus\")\n const blur$ = fromEvent(el, \"blur\")\n\n /* Map events to boolean state */\n return merge(\n focus$.pipe(mapTo(true)),\n blur$.pipe(mapTo(false))\n )\n .pipe(\n startWith(el === getActiveElement()),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @return Element offset\n */\nexport function getElementOffset(el: HTMLElement): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @return Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el)),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element text selection\n *\n * @param el - Element\n */\nexport function setElementSelection(\n el: HTMLElement\n): void {\n if (el instanceof HTMLInputElement)\n el.select()\n else\n throw new Error(\"Not implemented\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Key\n */\nexport interface Key {\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n *\n * @return Test result\n */\nexport function isSusceptibleToKeyboard(el: HTMLElement) {\n switch (el.tagName) {\n\n /* Form elements */\n case \"INPUT\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @return Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n })),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEventPattern } from \"rxjs\"\nimport { shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * @param query - Media query\n *\n * @return Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next =>\n media.addListener(() => next(media.matches))\n )\n .pipe(\n startWith(media.matches),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @return Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, pageXOffset),\n y: Math.max(0, pageYOffset)\n }\n}\n\n/**\n * Set viewport offset\n *\n * @param offset - Viewport offset\n */\nexport function setViewportOffset(\n { x, y }: Partial\n): void {\n window.scrollTo(x || 0, y || 0)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @return Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @return Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @return Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\")\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n shareReplay\n} from \"rxjs/operators\"\n\nimport { Header } from \"../../../header\"\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch relative options\n */\ninterface WatchRelativeOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @return Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @return Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { header$, viewport$ }: WatchRelativeOptions\n): Observable {\n const offset$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map((): ViewportOffset => ({\n x: el.offsetLeft,\n y: el.offsetTop\n }))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n })),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, fromEventPattern } from \"rxjs\"\nimport {\n pluck,\n share,\n switchMapTo,\n tap,\n throttle\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that will send all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @return Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEventPattern(next =>\n worker.addEventListener(\"message\", next)\n )\n .pipe(\n pluck(\"data\")\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMapTo(rx$),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take\n} from \"rxjs/operators\"\n\nimport { getElement } from \"../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/**\n * Toggle map\n */\nexport type ToggleMap = {\n [P in Toggle]?: HTMLInputElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map observable\n */\nlet toggles$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to toggles with given names\n *\n * @param names - Toggle names\n * @param options - Options\n */\nexport function setupToggles(\n names: Toggle[], { document$ }: WatchOptions\n): void {\n toggles$ = document$\n .pipe(\n\n /* Ignore document switches */\n take(1),\n\n /* Build toggle map */\n map(document => names.reduce((toggles, name) => {\n const el = getElement(`[data-md-toggle=${name}]`, document)\n return {\n ...toggles,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a toggle\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @param name - Toggle name\n *\n * @return Element observable\n */\nexport function useToggle(\n name: Toggle\n): Observable {\n return toggles$\n .pipe(\n switchMap(toggles => (\n typeof toggles[name] !== \"undefined\"\n ? of(toggles[name]!)\n : NEVER\n )),\n distinctUntilChanged()\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param el - Toggle element\n * @param value - Toggle value\n */\nexport function setToggle(\n el: HTMLInputElement, value: boolean\n): void {\n if (el.checked !== value)\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param el - Toggle element\n *\n * @return Toggle observable\n */\nexport function watchToggle(\n el: HTMLInputElement\n): Observable {\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./agent\"\nexport * from \"./toggle\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n worker: {\n search: string /* Search worker URL */\n }\n feature: {\n instant: true /* Instant loading */\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Ensure that the given value is a valid configuration\n *\n * We could use `jsonschema` or any other schema validation framework, but that\n * would just add more bloat to the bundle, so we'll keep it plain and simple.\n *\n * @param config - Configuration\n *\n * @return Test result\n */\nexport function isConfig(config: any): config is Config {\n return typeof config === \"object\"\n && typeof config.base === \"string\"\n && typeof config.worker === \"object\"\n && typeof config.worker.search === \"string\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// tslint:disable no-null-keyword\n\nimport { JSX as JSXInternal } from \"preact\"\nimport { keys } from \"ramda\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML and SVG attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | SVGElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create an element\n *\n * @param tag - HTML or SVG tag\n *\n * @return Element\n */\nfunction createElement(tag: string): HTMLElement | SVGElement {\n switch (tag) {\n\n /* SVG elements */\n case \"svg\":\n case \"path\":\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n\n /* HTML elements */\n default:\n return document.createElement(tag)\n }\n}\n\n/**\n * Set an attribute\n *\n * @param el - Element\n * @param name - Attribute name\n * @param value - Attribute value\n */\nfunction setAttribute(\n el: HTMLElement | SVGElement, name: string, value: string) {\n switch (name) {\n\n /* Attributes to be ignored */\n case \"xmlns\":\n break\n\n /* Attributes of SVG elements */\n case \"viewBox\":\n case \"d\":\n if (typeof value !== \"boolean\")\n el.setAttributeNS(null, name, value)\n else if (value)\n el.setAttributeNS(null, name, \"\")\n break\n\n /* Attributes of HTML elements */\n default:\n if (typeof value !== \"boolean\")\n el.setAttribute(name, value)\n else if (value)\n el.setAttribute(name, \"\")\n }\n}\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(\n el: HTMLElement | SVGElement, child: Child | Child[]\n): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @param tag - HTML or SVG tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @return Element\n */\nexport function h(\n tag: string, attributes: Attributes | null, ...children: Child[]\n): HTMLElement | SVGElement {\n const el = createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of keys(attributes))\n setAttribute(el, attr, attributes[attr])\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement | SVGElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, defer, of } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Cache the last value emitted by an observable in session storage\n *\n * If the key is not found in session storage, the factory is executed and the\n * latest value emitted will automatically be persisted to sessions storage.\n * Note that the values emitted by the returned observable must be serializable\n * as `JSON`, or data will be lost.\n *\n * @template T - Value type\n *\n * @param key - Cache key\n * @param factory - Observable factory\n *\n * @return Value observable\n */\nexport function cache(\n key: string, factory: () => Observable\n): Observable {\n return defer(() => {\n const data = sessionStorage.getItem(key)\n if (data) {\n return of(JSON.parse(data) as T)\n\n /* Retrieve value from observable factory and write to storage */\n } else {\n const value$ = factory()\n value$.subscribe(value => {\n try {\n sessionStorage.setItem(key, JSON.stringify(value))\n } catch (err) {\n /* Uncritical, just swallow */\n }\n })\n\n /* Return value */\n return value$\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Translations\n */\nlet lang: Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Translate the given key\n *\n * @param key - Key to be translated\n * @param value - Value to be replaced\n *\n * @return Translation\n */\nexport function translate(key: string, value?: string): string {\n if (typeof lang === \"undefined\") {\n const el = getElementOrThrow(\"#__lang\")\n lang = JSON.parse(el.innerText)\n }\n if (typeof lang[key] === \"undefined\") {\n throw new ReferenceError(`Invalid translation: ${key}`)\n }\n return typeof value !== \"undefined\"\n ? lang[key].replace(\"#\", value)\n : lang[key]\n}\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @return Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0); // tslint:disable-line\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with source facts\n *\n * This is a reverse engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @return Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 1) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n\n/**\n * Simple hash function\n *\n * @see https://bit.ly/2wsVjJ4 - Original source\n *\n * @param value - Value to be hashed\n *\n * @return Hash as 32bit integer\n */\nexport function hash(value: string): number {\n let h = 0\n for (let i = 0, len = value.length; i < len; i++) {\n h = ((h << 5) - h) + value.charCodeAt(i)\n h |= 0 // Convert to 32bit integer\n }\n return h\n }\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./config\"\nexport * from \"./jsx\"\nexport * from \"./rxjs\"\nexport * from \"./string\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./header\"\nexport * from \"./hero\"\nexport * from \"./main\"\nexport * from \"./navigation\"\nexport * from \"./search\"\nexport * from \"./shared\"\nexport * from \"./tabs\"\nexport * from \"./toc\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar offset\n *\n * @param el - Sidebar element\n * @param value - Sidebar offset\n */\nexport function setSidebarOffset(\n el: HTMLElement, value: number\n): void {\n el.style.top = `${value}px`\n}\n\n/**\n * Reset sidebar offset\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarOffset(\n el: HTMLElement\n): void {\n el.style.top = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar height\n *\n * @param el - Sidebar element\n * @param value - Sidebar height\n */\nexport function setSidebarHeight(\n el: HTMLElement, value: number\n): void {\n el.style.height = `${value}px`\n}\n\n/**\n * Reset sidebar height\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarHeight(\n el: HTMLElement\n): void {\n el.style.height = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar lock\n *\n * @param el - Sidebar element\n * @param value - Whether the sidebar is locked\n */\nexport function setSidebarLock(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"lock\" : \"\")\n}\n\n/**\n * Reset sidebar lock\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarLock(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n scan,\n shareReplay,\n switchMap\n} from \"rxjs/operators\"\n\nimport { getElement } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component\n */\nexport type Component =\n | \"container\" /* Container */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"hero\" /* Hero */\n | \"main\" /* Main area */\n | \"navigation\" /* Navigation */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-reset\" /* Search reset */\n | \"search-result\" /* Search results */\n | \"tabs\" /* Tabs */\n | \"toc\" /* Table of contents */\n\n/**\n * Component map\n */\nexport type ComponentMap = {\n [P in Component]?: HTMLElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Component map observable\n */\nlet components$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to components with given names\n *\n * This function will maintain bindings to the elements identified by the given\n * names in-between document switches and update the elements in-place.\n *\n * @param names - Component names\n * @param options - Options\n */\nexport function setupComponents(\n names: Component[], { document$ }: WatchOptions\n): void {\n components$ = document$\n .pipe(\n\n /* Build component map */\n map(document => names.reduce((components, name) => {\n const el = getElement(`[data-md-component=${name}]`, document)\n return {\n ...components,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Re-compute component map on document switch */\n scan((prev, next) => {\n for (const name of names) {\n switch (name) {\n\n /* Top-level components: update */\n case \"header-title\":\n case \"container\":\n if (name in prev && typeof prev[name] !== \"undefined\") {\n prev[name]!.replaceWith(next[name]!)\n prev[name] = next[name]\n }\n break\n\n /* All other components: rebind */\n default:\n if (typeof next[name] !== \"undefined\")\n prev[name] = getElement(`[data-md-component=${name}]`)\n else\n delete prev[name]\n }\n }\n return prev\n }),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a component\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @template T - Element type\n *\n * @param name - Component name\n *\n * @return Element observable\n */\nexport function useComponent(\n name: \"search-query\"\n): Observable\nexport function useComponent(\n name: Component\n): Observable\nexport function useComponent(\n name: Component\n): Observable {\n return components$\n .pipe(\n switchMap(components => (\n typeof components[name] !== \"undefined\"\n ? of(components[name] as T)\n : EMPTY\n )),\n distinctUntilChanged()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set anchor blur\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is blurred\n */\nexport function setAnchorBlur(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"blur\" : \"\")\n}\n\n/**\n * Reset anchor blur\n *\n * @param el - Anchor element\n */\nexport function resetAnchorBlur(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set anchor active\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is active\n */\nexport function setAnchorActive(\n el: HTMLElement, value: boolean\n): void {\n el.classList.toggle(\"md-nav__link--active\", value)\n}\n\n/**\n * Reset anchor active\n *\n * @param el - Anchor element\n */\nexport function resetAnchorActive(\n el: HTMLElement\n): void {\n el.classList.remove(\"md-nav__link--active\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./sidebar\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h, translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n container: \"md-clipboard md-icon\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @return Element\n */\nexport function renderClipboard(\n id: string\n) {\n const path = require(\"material-design-icons-svg/paths/content-copy.json\")\n return (\n \n \n \n \n \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchResult } from \"integrations/search\"\nimport { h, truncate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n item: \"md-search-result__item\",\n link: \"md-search-result__link\",\n article: \"md-search-result__article md-search-result__article--document\",\n section: \"md-search-result__article\",\n title: \"md-search-result__title\",\n teaser: \"md-search-result__teaser\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @return Element\n */\nexport function renderSearchResult(\n { article, sections }: SearchResult\n) {\n\n // create page with icon\n const path = require(\"material-design-icons-svg/paths/file-search-outline.json\")\n\n const children = [article, ...sections].map(document => {\n const { location, title, text } = document\n return (\n \n
\n {!(\"parent\" in document)\n ?
\n \n \n \n
\n : null\n }\n

{title}

\n {text.length\n ?

{truncate(text, 320)}

\n : undefined\n }\n
\n
\n )\n })\n return (\n
  • \n {children}\n
  • \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"patches/source\"\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n facts: \"md-source__facts\",\n fact: \"md-source__fact\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render source facts\n *\n * @param facts - Source facts\n *\n * @return Element\n */\nexport function renderSource(\n facts: SourceFacts\n) {\n const children = facts.map(fact => (\n
  • {fact}
  • \n ))\n return (\n
      \n {children}\n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n wrapper: \"md-typeset__scrollwrap\",\n table: \"md-typeset__table\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @return Element\n */\nexport function renderTable(\n table: HTMLTableElement\n) {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./clipboard\"\nexport * from \"./search\"\nexport * from \"./source\"\nexport * from \"./table\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Global augmentations\n */\ndeclare global {\n interface CSSStyleDeclaration {\n webkitOverflowScrolling: \"touch\" | \"\"\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function setOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"touch\"\n}\n\n/**\n * Reset overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function resetOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, from } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n map,\n pluck,\n shareReplay,\n switchMap,\n take,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { SearchIndexOptions } from \"integrations/search\"\nimport {\n WorkerHandler,\n watchWorker\n} from \"observables\"\n\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n base: string /* Base url */\n index?: Promise /* Promise resolving with index */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup search web worker\n *\n * This function will create a web worker to setup and query the search index\n * which is done using `lunr`. The index can be passed explicitly in order to\n * enable hacks like _localsearch_ via search index embedding as JSON. If no\n * index is given, this function will load it from the default location.\n *\n * @param url - Worker url\n * @param options - Options\n *\n * @return Worker handler\n */\nexport function setupSearchWorker(\n url: string, { base, index, location$ }: SetupOptions\n): WorkerHandler {\n const worker = new Worker(url)\n\n /* Ensure stable base URL */\n const origin$ = location$\n .pipe(\n take(1),\n map(({ href }) => new URL(base, href)\n .toString()\n .replace(/\\/$/, \"\")\n )\n )\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n withLatestFrom(origin$),\n map(([message, origin]) => {\n if (isSearchResultMessage(message)) {\n for (const { article, sections } of message.data) {\n article.location = `${origin}/${article.location}`\n for (const section of sections)\n section.location = `${origin}/${section.location}`\n }\n }\n return message\n }),\n shareReplay(1)\n )\n\n /* Fetch index if it wasn't passed explicitly */\n const index$ = typeof index !== \"undefined\"\n ? from(index)\n : origin$\n .pipe(\n switchMap(origin => ajax({\n url: `${origin}/search/search_index.json`,\n responseType: \"json\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\")\n ))\n )\n\n /* Send index to worker */\n index$\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return worker handler */\n return { tx$, rx$ }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./search\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\nexport * from \"./watch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\nexport * from \"./watch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./layer\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { Viewport, getElements } from \"observables\"\n\nimport { Header } from \"../../header\"\nimport { Main } from \"../../main\"\nimport {\n Sidebar,\n paintSidebar,\n watchSidebar\n} from \"../../shared\"\nimport {\n NavigationLayer,\n paintNavigationLayer,\n watchNavigationLayer\n} from \"../layer\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation for [screen -]\n */\ninterface NavigationBelowScreen {\n layer: NavigationLayer /* Active layer */\n}\n\n/**\n * Navigation for [screen +]\n */\ninterface NavigationAboveScreen {\n sidebar: Sidebar /* Sidebar */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Navigation\n */\nexport type Navigation =\n | NavigationBelowScreen\n | NavigationAboveScreen\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Screen media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount navigation from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountNavigation(\n { header$, main$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* [screen +]: Mount navigation in sidebar */\n if (screen) {\n return watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ }),\n map(sidebar => ({ sidebar }))\n )\n\n /* [screen -]: Mount navigation in drawer */\n } else {\n const els = getElements(\"nav\", el)\n return watchNavigationLayer(els)\n .pipe(\n paintNavigationLayer(els),\n map(layer => ({ layer }))\n )\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\nexport * from \"./watch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n finalize,\n map,\n observeOn,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { Header } from \"../../../header\"\nimport { Sidebar } from \"../_\"\nimport {\n resetSidebarHeight,\n resetSidebarLock,\n resetSidebarOffset,\n setSidebarHeight,\n setSidebarLock,\n setSidebarOffset\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint sidebar\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSidebar(\n el: HTMLElement, { header$ }: PaintOptions\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n withLatestFrom(header$),\n tap(([{ height, lock }, { height: offset }]) => {\n setSidebarHeight(el, height)\n setSidebarLock(el, lock)\n\n /* Set offset in locked state depending on header height */\n if (lock)\n setSidebarOffset(el, offset)\n else\n resetSidebarOffset(el)\n }),\n\n /* Re-map to sidebar */\n map(([sidebar]) => sidebar),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSidebarOffset(el)\n resetSidebarHeight(el)\n resetSidebarLock(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { Viewport } from \"observables\"\n\nimport { Main } from \"../../../main\"\nimport { Sidebar } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { main$, viewport$ }: WatchOptions\n): Observable {\n\n /* Adjust for internal main area offset */\n const adjust$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => parseFloat(\n getComputedStyle(el.parentElement!)\n .getPropertyValue(\"padding-top\")\n )),\n distinctUntilChanged()\n )\n\n /* Compute the sidebar's available height */\n const height$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset, height }]) => (\n height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n )),\n distinctUntilChanged()\n )\n\n /* Compute whether the sidebar should be locked */\n const lock$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset }]) => (\n y >= offset + adjust\n )),\n distinctUntilChanged()\n )\n\n /* Combine into single observable */\n return combineLatest([height$, lock$])\n .pipe(\n map(([height, lock]) => ({ height, lock }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n delay,\n finalize,\n observeOn,\n tap\n} from \"rxjs/operators\"\n\nimport { getElementOrThrow } from \"observables\"\n\nimport { NavigationLayer } from \"../_\"\nimport {\n resetOverflowScrolling,\n setOverflowScrolling\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint navigation layer\n *\n * @param els - Navigation elements\n *\n * @return Operator function\n */\nexport function paintNavigationLayer(\n els: HTMLElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev }) => {\n if (prev)\n resetOverflowScrolling(prev)\n }),\n\n /* Wait until transition has finished */\n delay(250),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ next }) => {\n setOverflowScrolling(next)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els)\n resetOverflowScrolling(\n getElementOrThrow(\".md-nav__list\", el)\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { findLast } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, scan } from \"rxjs/operators\"\n\nimport {\n getElement,\n getElementOrThrow\n} from \"observables\"\n\nimport { NavigationLayer } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation layer\n *\n * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus\n * contained in the drawer, but as the navigational layers are nested, we can\n * only add it to the topmost layer or extremely weird cropping will occur.\n * This implementation keeps track of the previous and current layer.\n *\n * @param els - Navigation elements\n *\n * @return Navigation layer observable\n */\nexport function watchNavigationLayer(\n els: HTMLElement[]\n): Observable {\n const table = new Map()\n for (const el of els) {\n const label = getElement(\"label\", el)\n if (typeof label !== \"undefined\") {\n const input = getElementOrThrow(`#${label.htmlFor}`)\n table.set(input, el)\n }\n }\n\n /* Determine topmost layer */\n const layer$ = merge(...[...table.keys()].map(input => (\n fromEvent(input, \"change\")\n )))\n .pipe(\n map(() => getElementOrThrow(\".md-nav__list\", table.get(\n findLast(({ checked }) => checked, [...table.keys()])!\n )))\n )\n\n /* Return previous and next layer */\n return layer$\n .pipe(\n map(next => ({ next })),\n scan(({ next: prev }, { next }) => ({ prev, next }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./anchor\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n OperatorFunction,\n combineLatest,\n of,\n pipe\n} from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { Viewport, getElements } from \"observables\"\n\nimport { Header } from \"../../header\"\nimport { Main } from \"../../main\"\nimport {\n Sidebar,\n paintSidebar,\n watchSidebar\n} from \"../../shared\"\nimport {\n AnchorList,\n paintAnchorList,\n watchAnchorList\n} from \"../anchor\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents for [tablet -]\n */\ninterface TableOfContentsBelowTablet {} // tslint:disable-line\n\n/**\n * Table of contents for [tablet +]\n */\ninterface TableOfContentsAboveTablet {\n sidebar: Sidebar /* Sidebar */\n anchors: AnchorList /* Anchor list */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport type TableOfContents =\n | TableOfContentsBelowTablet\n | TableOfContentsAboveTablet\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Tablet media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTableOfContents(\n { header$, main$, viewport$, tablet$}: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => tablet$\n .pipe(\n switchMap(tablet => {\n\n /* [tablet +]: Mount table of contents in sidebar */\n if (tablet) {\n const els = getElements(\".md-nav__link\", el)\n\n /* Watch and paint sidebar */\n const sidebar$ = watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ })\n )\n\n /* Watch and paint anchor list (scroll spy) */\n const anchors$ = watchAnchorList(els, { header$, viewport$ })\n .pipe(\n paintAnchorList(els)\n )\n\n /* Combine into a single hot observable */\n return combineLatest([sidebar$, anchors$])\n .pipe(\n map(([sidebar, anchors]) => ({ sidebar, anchors }))\n )\n\n /* [tablet -]: Unmount table of contents */\n } else {\n return of({})\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { AnchorList } from \"../_\"\nimport {\n resetAnchorActive,\n resetAnchorBlur,\n setAnchorActive,\n setAnchorBlur\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint anchor list\n *\n * @param els - Anchor elements\n *\n * @return Operator function\n */\nexport function paintAnchorList(\n els: HTMLAnchorElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev, next }) => {\n\n /* Look forward */\n for (const [el] of next) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n\n /* Look backward */\n for (const [index, [el]] of prev.entries()) {\n setAnchorActive(el, index === prev.length - 1)\n setAnchorBlur(el, true)\n }\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { reverse } from \"ramda\"\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n bufferCount,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n scan,\n startWith,\n switchMap\n} from \"rxjs/operators\"\n\nimport { Viewport, getElement } from \"observables\"\n\nimport { Header } from \"../../../header\"\nimport { AnchorList } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch anchor list\n *\n * This is effectively a scroll-spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the anchor list needs\n * to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param els - Anchor elements\n * @param options - Options\n *\n * @return Anchor list observable\n */\nexport function watchAnchorList(\n els: HTMLAnchorElement[], { header$, viewport$ }: WatchOptions\n): Observable {\n const table = new Map()\n for (const el of els) {\n const id = decodeURIComponent(el.hash.substring(1))\n const target = getElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(el, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(header => 18 + header.height)\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n\n /* Build index to map anchor paths to vertical offsets */\n map(() => {\n let path: HTMLAnchorElement[] = []\n return [...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n reverse(path = [...path, anchor]),\n offset\n )\n }, new Map())\n }),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(index => combineLatest([adjust$, viewport$])\n .pipe(\n scan(([prev, next], [adjust, { offset: { y } }]) => {\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => {\n return a[0] === b[0]\n && a[1] === b[1]\n })\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, combineLatest, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\n\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport interface Search {\n query: SearchQuery /* Search query */\n result: SearchResult[] /* Search result list */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n reset$: Observable /* Search reset observable */\n result$: Observable /* Search result observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearch(\n { query$, reset$, result$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(() => combineLatest([query$, result$, reset$])\n .pipe(\n map(([query, result]) => ({ query, result }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest, fromEvent, merge } from \"rxjs\"\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith\n} from \"rxjs/operators\"\n\nimport { watchElementFocus } from \"observables\"\n\nimport { SearchQuery } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * Rogue control characters are filtered before handing the query to the\n * search index, as `lunr` will throw otherwise.\n *\n * @param value - Query value\n *\n * @return Transformed query value\n */\nfunction defaultTransform(value: string): string {\n return value\n .replace(/(?:^|\\s+)[*+-:^~]+(?=\\s+|$)/g, \"\")\n .trim()\n .replace(/\\s+|\\b$/g, \"* \")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @return Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { transform }: WatchOptions = {}\n): Observable {\n const fn = transform || defaultTransform\n\n /* Intercept keyboard events */\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1))\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(fn(el.value)),\n distinctUntilChanged()\n )\n\n /* Intercept focus events */\n const focus$ = watchElementFocus(el)\n\n /* Combine into a single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n WorkerHandler,\n setToggle,\n useToggle\n} from \"observables\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchQueryMessage\n} from \"workers\"\n\nimport { watchSearchQuery } from \"../watch\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search query from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchQuery(\n { tx$ }: WorkerHandler, options: MountOptions = {}\n): OperatorFunction {\n const toggle$ = useToggle(\"search\")\n return pipe(\n switchMap(el => {\n const query$ = watchSearchQuery(el, options)\n\n /* Subscribe worker to search query */\n query$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Toggle search on focus */\n query$\n .pipe(\n distinctUntilKeyChanged(\"focus\"),\n withLatestFrom(toggle$)\n )\n .subscribe(([{ focus }, toggle]) => {\n if (focus)\n setToggle(toggle, focus)\n })\n\n /* Return search query */\n return query$\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n mapTo,\n startWith,\n switchMap,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport { setElementFocus } from \"observables\"\n\nimport { useComponent } from \"../../../_\"\nimport { watchSearchReset } from \"../watch\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search reset from source observable\n *\n * @return Operator function\n */\nexport function mountSearchReset(): OperatorFunction {\n return pipe(\n switchMap(el => watchSearchReset(el)\n .pipe(\n switchMapTo(useComponent(\"search-query\")),\n tap(setElementFocus),\n mapTo(undefined)\n )\n ),\n startWith(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { mapTo } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search reset\n *\n * @param el - Search reset element\n *\n * @return Search reset observable\n */\nexport function watchSearchReset(\n el: HTMLElement\n): Observable {\n return fromEvent(el, \"click\")\n .pipe(\n mapTo(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set number of search results\n *\n * @param el - Search result metadata element\n * @param value - Number of results\n */\nexport function setSearchResultMeta(\n el: HTMLElement, value: number\n): void {\n switch (value) {\n\n /* No results */\n case 0:\n el.textContent = translate(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n el.textContent = translate(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n el.textContent = translate(\"search.result.other\", value.toString())\n }\n}\n\n/**\n * Reset number of search results\n *\n * @param el - Search result metadata element\n */\nexport function resetSearchResultMeta(\n el: HTMLElement\n): void {\n el.textContent = translate(\"search.result.placeholder\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Add an element to the search result list\n *\n * @param el - Search result list element\n * @param child - Search result element\n */\nexport function addToSearchResultList(\n el: HTMLElement, child: HTMLElement\n): void {\n el.appendChild(child)\n}\n\n/**\n * Reset search result list\n *\n * @param el - Search result list element\n */\nexport function resetSearchResultList(\n el: HTMLElement\n): void {\n el.innerHTML = \"\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n finalize,\n map,\n mapTo,\n observeOn,\n scan,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport { getElementOrThrow } from \"observables\"\nimport { renderSearchResult } from \"templates\"\n\nimport { SearchQuery } from \"../../query\"\nimport {\n addToSearchResultList,\n resetSearchResultList,\n resetSearchResultMeta,\n setSearchResultMeta\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n query$: Observable /* Search query observable */\n fetch$: Observable /* Result fetch observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint search results\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container. When the scroll offset\n * reaches the bottom of the element, more results are fetched and rendered.\n *\n * @param el - Search result element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSearchResult(\n el: HTMLElement, { query$, fetch$ }: PaintOptions\n): MonoTypeOperatorFunction {\n const list = getElementOrThrow(\".md-search-result__list\", el)\n const meta = getElementOrThrow(\".md-search-result__meta\", el)\n return pipe(\n\n /* Paint search result metadata */\n withLatestFrom(query$),\n map(([result, query]) => {\n if (query.value) {\n setSearchResultMeta(meta, result.length)\n } else {\n resetSearchResultMeta(meta)\n }\n return result\n }),\n\n /* Paint search result list */\n switchMap(result => fetch$\n .pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n scan(index => {\n const container = el.parentElement!\n while (index < result.length) {\n addToSearchResultList(list, renderSearchResult(result[index++]))\n if (container.scrollHeight - container.offsetHeight > 16)\n break\n }\n return index\n }, 0),\n\n /* Re-map to search result */\n mapTo(result),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSearchResultList(list)\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n filter,\n map,\n pluck,\n switchMap\n} from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport {\n WorkerHandler,\n watchElementOffset\n} from \"observables\"\nimport {\n SearchMessage,\n isSearchResultMessage\n} from \"workers\"\n\nimport { SearchQuery } from \"../../query\"\nimport { paintSearchResult } from \"../paint\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchResult(\n { rx$ }: WorkerHandler, { query$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => {\n const container = el.parentElement!\n\n /* Compute whether there are more search results to fetch */\n const fetch$ = watchElementOffset(container)\n .pipe(\n map(({ y }) => {\n return y >= container.scrollHeight - container.offsetHeight - 16\n }),\n distinctUntilChanged(),\n filter(identity)\n )\n\n /* Paint search results */\n return rx$\n .pipe(\n filter(isSearchResultMessage),\n pluck(\"data\"),\n paintSearchResult(el, { query$, fetch$ })\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./query\"\nexport * from \"./reset\"\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, combineLatest, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n Viewport,\n getElement,\n watchViewportAt\n} from \"observables\"\n\nimport { useComponent } from \"../../_\"\nimport { paintHeaderType } from \"../paint\"\nimport { watchHeader } from \"../watch\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header type\n */\nexport type HeaderType =\n | \"site\" /* Header shows site title */\n | \"page\" /* Header shows page title */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n type: HeaderType /* Header type */\n sticky: boolean /* Header stickyness */\n height: number /* Header visible height */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeader(\n { viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => {\n const header$ = watchHeader(el, { viewport$ })\n\n /* Compute whether the header should switch to page header */\n const type$ = useComponent(\"main\")\n .pipe(\n map(main => getElement(\"h1, h2, h3, h4, h5, h6\", main)!),\n filter(hx => typeof hx !== \"undefined\"),\n withLatestFrom(useComponent(\"header-title\")),\n switchMap(([hx, title]) => watchViewportAt(hx, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => {\n return y >= hx.offsetHeight ? \"page\" : \"site\"\n }),\n distinctUntilChanged(),\n paintHeaderType(title)\n )\n ),\n startWith(\"site\")\n )\n\n /* Combine into single observable */\n return combineLatest([header$, type$])\n .pipe(\n map(([header, type]): Header => ({ type, ...header })),\n shareReplay(1)\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap } from \"rxjs/operators\"\n\nimport { Viewport } from \"observables\"\n\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * The header is wrapped in an observable to pave the way for auto-hiding or\n * other dynamic behaviors that may be implemented later on.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @return Header observable\n */\nexport function watchHeader(\n el: HTMLElement, { viewport$ }: WatchOptions\n): Observable> {\n return viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n switchMap(() => {\n const styles = getComputedStyle(el)\n const sticky = [\n \"sticky\", /* Modern browsers */\n \"-webkit-sticky\" /* Old Safari */\n ].includes(styles.position)\n return of({\n sticky,\n height: sticky ? el.offsetHeight : 0\n })\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { HeaderType } from \"../_\"\nimport {\n resetHeaderTitleActive,\n setHeaderTitleActive\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header title type\n *\n * @param el - Header title element\n *\n * @return Operator function\n */\nexport function paintHeaderType(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(type => {\n setHeaderTitleActive(el, type === \"page\")\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderTitleActive(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header title active\n *\n * @param el - Header title element\n * @param value - Whether the title is shown\n */\nexport function setHeaderTitleActive(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"active\" : \"\")\n}\n\n/**\n * Reset header title active\n *\n * @param el - Header title element\n */\nexport function resetHeaderTitleActive(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\nexport * from \"./watch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, Subject, pipe } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap, tap } from \"rxjs/operators\"\n\nimport { Viewport } from \"observables\"\n\nimport { useComponent } from \"../../_\"\nimport { Header } from \"../../header\"\nimport { paintHeaderShadow } from \"../paint\"\nimport { watchMain } from \"../watch\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Scrolled past top offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount main area from source observable\n *\n * The header must be connected to the main area observable outside of the\n * operator function, as the header will persist in-between document switches\n * while the main area is replaced. However, the header observable must be\n * passed to this function, so we connect both via a long-living subject.\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountMain(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n const main$ = new Subject
    ()\n\n /* Connect to main area observable via long-living subject */\n useComponent(\"header\")\n .pipe(\n switchMap(header => main$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n paintHeaderShadow(header)\n )\n )\n )\n .subscribe()\n\n /* Return operator */\n return pipe(\n switchMap(el => watchMain(el, { header$, viewport$ })),\n tap(main => main$.next(main))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { Main } from \"../_\"\nimport {\n resetHeaderShadow,\n setHeaderShadow\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header shadow\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderShadow(\n el: HTMLElement\n): MonoTypeOperatorFunction
    {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ active }) => {\n setHeaderShadow(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderShadow(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header shadow\n *\n * @param el - Header element\n * @param value - Whether the shadow is shown\n */\nexport function setHeaderShadow(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"shadow\" : \"\")\n}\n\n/**\n * Reset header shadow\n *\n * @param el - Header element\n */\nexport function resetHeaderShadow(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport { distinctUntilChanged, map, pluck } from \"rxjs/operators\"\n\nimport { Viewport } from \"observables\"\n\nimport { Header } from \"../../header\"\nimport { Main } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @return Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { header$, viewport$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n pluck(\"height\")\n )\n\n /* Compute the main area's visible height */\n const height$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y }, size: { height } }]) => {\n const top = el.offsetTop\n const bottom = el.offsetHeight + top\n return height\n - Math.max(0, top - y, adjust)\n - Math.max(0, height + y - bottom)\n }),\n map(height => Math.max(0, height)),\n distinctUntilChanged()\n )\n\n /* Compute whether the viewport offset is past the main area's top */\n const active$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y } }]) => y >= el.offsetTop - adjust),\n distinctUntilChanged()\n )\n\n /* Combine into a single observable */\n return combineLatest([adjust$, height$, active$])\n .pipe(\n map(([adjust, height, active]) => ({\n offset: el.offsetTop - adjust,\n height,\n active\n }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\nexport * from \"./watch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { distinctUntilChanged, map, switchMap } from \"rxjs/operators\"\n\nimport { Viewport, watchViewportAt } from \"observables\"\n\nimport { Header } from \"../../header\"\nimport { paintHero } from \"../paint\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Hero\n */\nexport interface Hero {\n hidden: boolean /* Whether the hero is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount hero from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHero(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchViewportAt(el, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => ({ hidden: y >= 20 })),\n distinctUntilChanged(),\n paintHero(el)\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { Hero } from \"../_\"\nimport {\n resetHeroHidden,\n setHeroHidden\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint hero\n *\n * @param el - Hero element\n *\n * @return Operator function\n */\nexport function paintHero(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ hidden }) => {\n setHeroHidden(el, hidden)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeroHidden(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set hero hidden\n *\n * @param el - Hero element\n * @param value - Whether the element is hidden\n */\nexport function setHeroHidden(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"hidden\" : \"\")\n}\n\n/**\n * Reset hero hidden\n *\n * @param el - Hero element\n */\nexport function resetHeroHidden(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, of, pipe } from \"rxjs\"\nimport { distinctUntilChanged, map, switchMap } from \"rxjs/operators\"\n\nimport { Viewport, watchViewportAt } from \"observables\"\n\nimport { Header } from \"../../header\"\nimport { paintTabs } from \"../paint\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabs\n */\nexport interface Tabs {\n hidden: boolean /* Whether the tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Media screen observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount tabs from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTabs(\n { header$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* [screen +]: Mount tabs above screen breakpoint */\n if (screen) {\n return watchViewportAt(el, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => ({ hidden: y >= 10 })),\n distinctUntilChanged(),\n paintTabs(el)\n )\n\n /* [screen -]: Unmount tabs below screen breakpoint */\n } else {\n return of({ hidden: true })\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { Tabs } from \"../_\"\nimport {\n resetTabsHidden,\n setTabsHidden\n} from \"../apply\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint tabs\n *\n * @param el - Tabs element\n *\n * @return Operator function\n */\nexport function paintTabs(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ hidden }) => {\n setTabsHidden(el, hidden)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetTabsHidden(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set tabs hidden\n *\n * @param el - Tabs element\n * @param value - Whether the element is hidden\n */\nexport function setTabsHidden(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"hidden\" : \"\")\n}\n\n/**\n * Reset tabs hidden\n *\n * @param el - Tabs element\n */\nexport function resetTabsHidden(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./apply\"\nexport * from \"./paint\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, iif, merge } from \"rxjs\"\nimport { map, mapTo, shareReplay, switchMap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @return Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"[data-md-scrollfix]\")),\n shareReplay(1)\n )\n\n /* Remove marker attribute, so we'll only add the fix once */\n els$.subscribe(els => {\n for (const el of els)\n el.removeAttribute(\"data-md-scrollfix\")\n })\n\n /* Patch overflow scrolling on touch start */\n iif(isAppleDevice, els$, NEVER)\n .pipe(\n switchMap(els => merge(...els.map(el => (\n fromEvent(el, \"touchstart\")\n .pipe(\n mapTo(el)\n )\n ))))\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { catchError, map, switchMap } from \"rxjs/operators\"\n\nimport { getElementOrThrow, getElements } from \"observables\"\nimport { renderSource } from \"templates\"\nimport { cache, hash } from \"utilities\"\n\nimport { fetchSourceFactsFromGitHub } from \"./github\"\nimport { fetchSourceFactsFromGitLab } from \"./gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Source facts\n */\nexport type SourceFacts = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch source facts\n *\n * @param url - Source repository URL\n *\n * @return Source facts observable\n */\nfunction fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^\\/]+)\\/?([^\\/]+)/i)\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, project] = url.match(/^.+?([^\\/]*gitlab[^\\/]+)\\/(.+)/i)\n return fetchSourceFactsFromGitLab(base, project)\n\n /* Everything else */\n default:\n return NEVER\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch elements containing repository information\n *\n * This function will retrieve the URL from the repository link and try to\n * query data from integrated source code platforms like GitHub or GitLab.\n *\n * @param options - Options\n */\nexport function patchSource(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n map(() => getElementOrThrow(\".md-source[href]\")),\n switchMap(({ href }) => (\n cache(`${hash(href)}`, () => fetchSourceFacts(href))\n )),\n catchError(() => NEVER)\n )\n .subscribe(facts => {\n for (const el of getElements(\".md-source__repository\")) {\n if (!el.hasAttribute(\"data-md-state\")) {\n el.setAttribute(\"data-md-state\", \"done\")\n el.appendChild(renderSource(facts))\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport { Observable, of } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, pluck, switchMap } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub source facts\n *\n * @param user - GitHub user\n * @param repo - GitHub repository\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n return ajax({\n url: typeof repo !== \"undefined\"\n ? `https://api.github.com/repos/${user}/${repo}`\n : `https://api.github.com/users/${user}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n switchMap(data => {\n\n /* GitHub repository */\n if (typeof repo !== \"undefined\") {\n const { stargazers_count, forks_count }: Repo = data\n return of([\n `${round(stargazers_count || 0)} Stars`,\n `${round(forks_count || 0)} Forks`\n ])\n\n /* GitHub user/organization */\n } else {\n const { public_repos }: User = data\n return of([\n `${round(public_repos || 0)} Repositories`\n ])\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport { Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, map, pluck } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab source facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n return ajax({\n url: `https://${base}/api/v4/projects/${encodeURIComponent(project)}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n map(({ star_count, forks_count }: ProjectSchema) => ([\n `${round(star_count)} Stars`,\n `${round(forks_count)} Forks`\n ]))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// TODO: remove this after we finished refactoring\n// tslint:disable\n\nimport \"../stylesheets/main.scss\"\nimport \"../stylesheets/palette.scss\"\n\nimport { values } from \"ramda\"\nimport {\n merge,\n combineLatest,\n animationFrameScheduler,\n fromEvent,\n of,\n NEVER\n} from \"rxjs\"\nimport {\n delay,\n switchMap,\n tap,\n filter,\n withLatestFrom,\n observeOn,\n take,\n mapTo,\n shareReplay,\n sample,\n share,\n map,\n pluck,\n debounceTime,\n distinctUntilKeyChanged,\n distinctUntilChanged,\n bufferCount\n} from \"rxjs/operators\"\n\nimport {\n watchToggle,\n setToggle,\n getElements,\n watchMedia,\n watchDocument,\n watchLocation,\n watchLocationHash,\n watchViewport,\n setupToggles,\n useToggle,\n getElement,\n setViewportOffset,\n ViewportOffset\n} from \"./observables\"\nimport { setupSearchWorker } from \"./workers\"\n\nimport {\n mountHeader,\n mountHero,\n mountMain,\n mountNavigation,\n mountSearch,\n mountTableOfContents,\n mountTabs,\n useComponent,\n setupComponents,\n mountSearchQuery,\n mountSearchReset,\n mountSearchResult\n} from \"components\"\nimport { setupClipboard } from \"./integrations/clipboard\"\nimport { setupKeyboard } from \"./integrations/keyboard\"\nimport {\n patchTables,\n patchDetails,\n patchScrollfix,\n patchSource,\n patchScripts\n} from \"patches\"\nimport { isConfig } from \"utilities\"\nimport { setupDialog } from \"integrations/dialog\"\n\n/* ------------------------------------------------------------------------- */\n\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Test for iOS */\nif (navigator.userAgent.match(/(iPad|iPhone|iPod)/g))\n document.documentElement.classList.add(\"ios\")\n\n/**\n * Set scroll lock\n *\n * @param el - Scrollable element\n * @param value - Vertical offset\n */\nexport function setScrollLock(\n el: HTMLElement, value: number\n): void {\n el.setAttribute(\"data-md-state\", \"lock\")\n el.style.top = `-${value}px`\n}\n\n/**\n * Reset scroll lock\n *\n * @param el - Scrollable element\n */\nexport function resetScrollLock(\n el: HTMLElement\n): void {\n const value = -1 * parseInt(el.style.top, 10)\n el.removeAttribute(\"data-md-state\")\n el.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Initialize Material for MkDocs\n *\n * @param config - Configuration\n */\nexport function initialize(config: unknown) {\n if (!isConfig(config))\n throw new SyntaxError(`Invalid configuration: ${JSON.stringify(config)}`)\n\n /* Setup user interface observables */\n const location$ = watchLocation()\n const hash$ = watchLocationHash()\n const viewport$ = watchViewport()\n const tablet$ = watchMedia(\"(min-width: 960px)\")\n const screen$ = watchMedia(\"(min-width: 1220px)\")\n\n /* Setup document observable */\n const document$ = config.feature.instant\n ? watchDocument({ location$ })\n : watchDocument()\n\n /* Setup toggle bindings */\n setupToggles([\n \"drawer\", /* Toggle for drawer */\n \"search\" /* Toggle for search */\n ], { document$ })\n\n /* Setup component bindings */\n setupComponents([\n \"container\", /* Container */\n \"header\", /* Header */\n \"header-title\", /* Header title */\n \"hero\", /* Hero */\n \"main\", /* Main area */\n \"navigation\", /* Navigation */\n \"search\", /* Search */\n \"search-query\", /* Search input */\n \"search-reset\", /* Search reset */\n \"search-result\", /* Search results */\n \"tabs\", /* Tabs */\n \"toc\" /* Table of contents */\n ], { document$ })\n\n /* ----------------------------------------------------------------------- */\n\n const worker = setupSearchWorker(config.worker.search, {\n base: config.base, location$\n })\n\n /* ----------------------------------------------------------------------- */\n\n /* Create header observable */\n const header$ = useComponent(\"header\")\n .pipe(\n mountHeader({ viewport$ }),\n shareReplay(1)\n )\n\n const main$ = useComponent(\"main\")\n .pipe(\n mountMain({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n /* Mount search query */\n const query$ = useComponent(\"search-query\")\n .pipe(\n mountSearchQuery(worker),\n shareReplay(1) // TODO: this must be put onto EVERY component!\n )\n\n /* Mount search reset */\n const reset$ = useComponent(\"search-reset\")\n .pipe(\n mountSearchReset(),\n shareReplay(1)\n )\n\n /* Mount search result */\n const result$ = useComponent(\"search-result\")\n .pipe(\n mountSearchResult(worker, { query$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const search$ = useComponent(\"search\")\n .pipe(\n mountSearch({ query$, reset$, result$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const navigation$ = useComponent(\"navigation\")\n .pipe(\n mountNavigation({ header$, main$, viewport$, screen$ }),\n shareReplay(1) // shareReplay because there might be late subscribers\n )\n\n const toc$ = useComponent(\"toc\")\n .pipe(\n mountTableOfContents({ header$, main$, viewport$, tablet$ }),\n shareReplay(1)\n )\n\n const tabs$ = useComponent(\"tabs\")\n .pipe(\n mountTabs({ header$, viewport$, screen$ }),\n shareReplay(1)\n )\n\n const hero$ = useComponent(\"hero\")\n .pipe(\n mountHero({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const keyboard$ = setupKeyboard()\n\n patchDetails({ document$, hash$ })\n patchScripts({ document$ })\n patchSource({ document$ })\n patchTables({ document$ })\n\n /* Force 1px scroll offset to trigger overflow scrolling */\n patchScrollfix({ document$ })\n\n /* Setup clipboard and dialog */\n const dialog$ = setupDialog()\n const clipboard$ = setupClipboard({ document$, dialog$ })\n\n /* ----------------------------------------------------------------------- */\n\n // Close drawer and search on hash change\n // put into navigation...\n // TODO: replace with popstate?\n hash$.subscribe(() => {\n useToggle(\"drawer\").subscribe(el => {\n setToggle(el, false)\n })\n })\n\n // put into search...\n hash$\n .pipe(\n switchMap(hash => useToggle(\"search\")\n .pipe(\n filter(x => x.checked), // only active\n tap(toggle => setToggle(toggle, false)),\n delay(125), // ensure that it runs after the body scroll reset...\n mapTo(hash)\n )\n )\n )\n .subscribe(hash => {\n getElement(`[id=\"${hash}\"]`)!.scrollIntoView()\n })\n\n // Scroll lock // document -> document$ => { body } !?\n // put into search...\n const toggle$ = useToggle(\"search\")\n combineLatest([\n toggle$.pipe(switchMap(watchToggle)),\n tablet$,\n ])\n .pipe(\n withLatestFrom(viewport$),\n switchMap(([[toggle, tablet], { offset: { y }}]) => {\n const active = toggle && !tablet\n return document$\n .pipe(\n delay(active ? 400 : 100), // TOOD: directly combine this with the hash!\n observeOn(animationFrameScheduler),\n tap(({ body }) => active\n ? setScrollLock(body, y)\n : resetScrollLock(body)\n )\n )\n })\n )\n .subscribe()\n\n /* ----------------------------------------------------------------------- */\n\n /**\n * Location change\n */\n interface State {\n url: URL\n data?: ViewportOffset\n }\n\n function isInternalLink(el: HTMLAnchorElement | URL) {\n return el.host === location.host && (\n // TODO: Improve regex\n !el.pathname || el.pathname === \"/\" || /\\/[\\w-]+(?:\\/?|\\.html)$/i.test(el.pathname) // TODO: provide some test cases\n )\n }\n\n // on same page!\n function isAnchorLink(el: HTMLAnchorElement | URL) {\n return el.pathname === location.pathname && el.hash.length > 0\n }\n\n function compareState(\n { url: a }: State, { url: b }: State\n ) {\n return a.href === b.href\n }\n\n // instant loading\n if (config.feature.instant) {\n\n /* Disable automatic scroll restoration, as it doesn't work nicely */\n if (\"scrollRestoration\" in history)\n history.scrollRestoration = \"manual\"\n\n /* Resolve relative links for stability */\n for (const selector of [\n `link[rel=\"shortcut icon\"]`,\n `link[rel=\"stylesheet\"]`\n ])\n for (const el of getElements(selector))\n el.href = el.href\n\n /* Intercept internal link clicks */\n const internal$ = fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n switchMap(ev => {\n if (ev.target instanceof HTMLElement) {\n const el = ev.target.closest(\"a\")\n if (el && isInternalLink(el)) {\n if (!isAnchorLink(el))\n ev.preventDefault()\n return of(el.href)\n }\n }\n return NEVER\n }),\n distinctUntilChanged(),\n map(href => ({ url: new URL(href) })),\n share()\n )\n\n /* Intercept internal links to dispatch */\n const dispatch$ = internal$\n .pipe(\n filter(({ url }) => !isAnchorLink(url)),\n share()\n )\n\n /* Intercept popstate events (history back and forward) */\n const popstate$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n data: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(dispatch$, popstate$)\n .pipe(\n pluck(\"url\")\n )\n .subscribe(location$)\n\n /* Add dispatched link to history */\n internal$\n .pipe(\n // TODO: must start with the current location and ignore the first emission\n distinctUntilChanged(compareState),\n filter(({ url }) => !isAnchorLink(url))\n )\n .subscribe(({ url }) => {\n // console.log(`History.Push ${url}`)\n history.pushState({}, \"\", url.toString())\n })\n\n // special case\n merge(internal$, popstate$)\n .pipe(\n bufferCount(2, 1),\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // })\n )\n .subscribe(([prev, next]) => {\n console.log(`<- ${prev.url}`)\n console.log(`-> ${next.url}`)\n\n if (\n prev.url.href.match(next.url.href) !== null &&\n isAnchorLink(prev.url)\n ) {\n // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging.\n setViewportOffset(next.data || { y: 0 })\n }\n // console.log(\"Potential Candidate\")\n })\n // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString()))\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // }),\n // map(([, next]) => next)\n // // distinctUntilChanged(compareLocationChange),\n // // filter(({ url }) => !isAnchorLink(url))\n // )\n // .subscribe(({ url }) => {\n // console.log(`Restore ${url}`)\n // })\n\n /* Persist viewport offset in history before hash change */\n viewport$\n .pipe(\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\"),\n )\n .subscribe(({ offset }) => {\n // console.log(\"Update\", offset)\n history.replaceState(offset, \"\")\n })\n\n /* */\n merge(dispatch$, popstate$)\n .pipe(\n sample(document$),\n withLatestFrom(document$),\n )\n .subscribe(([{ url, data }, { title, head }]) => {\n console.log(\"Done\", url.href, data)\n\n // trigger custom event\n document.dispatchEvent(new CustomEvent(\"DOMContentSwitch\"))\n\n // setDocumentTitle\n document.title = title\n\n // replace meta tags\n for (const selector of [\n `link[rel=\"canonical\"]`,\n `meta[name=\"author\"]`,\n `meta[name=\"description\"]`\n ]) {\n const next = getElement(selector, head)\n const prev = getElement(selector, document.head)\n if (\n typeof next !== \"undefined\" &&\n typeof prev !== \"undefined\"\n ) {\n prev.replaceWith(next)\n }\n }\n\n // search drawer close\n useToggle(\"search\").subscribe(el => {\n setToggle(el, false)\n })\n\n // // TODO: this doesnt work as expected\n if (url.hash) {\n console.log(\"hash data?\", data)\n const a = document.createElement(\"a\")\n a.href = url.hash\n a.click()\n } else {\n setViewportOffset(data || { y: 0 }) // push state!\n }\n })\n\n // internal$.subscribe(({ url }) => {\n // console.log(`Internal ${url}`)\n // })\n\n // dispatch$.subscribe(({ url }) => {\n // console.log(`Dispatch ${url}`)\n // })\n\n popstate$.subscribe(({ url }) => {\n console.log(`Popstate ${url.href}`, url)\n })\n }\n\n /* ----------------------------------------------------------------------- */\n\n // if we use a single tab outside of search, unhide all permalinks.\n // TODO: experimental. necessary!?\n keyboard$\n .pipe(\n filter(key => key.mode === \"global\" && [\"Tab\"].includes(key.type)),\n take(1)\n )\n .subscribe(() => {\n for (const link of getElements(\".headerlink\"))\n link.style.visibility = \"visible\"\n })\n\n /* ----------------------------------------------------------------------- */\n\n const state = {\n search$,\n clipboard$,\n location$,\n hash$,\n keyboard$,\n dialog$,\n main$,\n navigation$,\n toc$,\n tabs$,\n hero$,\n // title$ // TODO: header title\n }\n\n const { ...rest } = state\n merge(...values(rest))\n .subscribe() // potential memleak <-- use takeUntil\n\n return {\n // agent,\n state\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport {\n filter,\n map,\n share,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport {\n Key,\n getActiveElement,\n getElement,\n getElements,\n isSusceptibleToKeyboard,\n setElementFocus,\n setElementSelection,\n setToggle,\n useToggle,\n watchKeyboard,\n watchToggle\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard extends Key {\n mode: KeyboardMode /* Keyboard mode */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup keyboard\n *\n * This function will setup the keyboard handlers and ensure that keys are\n * correctly propagated. Currently there are two modes:\n *\n * - `global`: This mode is active when the search is closed. It is intended\n * to assign hotkeys to specific functions of the site. Currently the search,\n * previous and next page can be triggered.\n *\n * - `search`: This mode is active when the search is open. It maps certain\n * navigational keys to offer search results that can be entirely navigated\n * through keyboard input.\n *\n * The keyboard observable is returned and can be used to monitor the keyboard\n * in order toassign further hotkeys to custom functions.\n *\n * @return Keyboard observable\n */\nexport function setupKeyboard(): Observable {\n const toggle$ = useToggle(\"search\")\n const search$ = toggle$\n .pipe(\n switchMap(watchToggle)\n )\n\n /* Setup keyboard and determine mode */\n const keyboard$ = watchKeyboard()\n .pipe(\n withLatestFrom(search$),\n map(([key, toggle]): Keyboard => ({\n mode: toggle ? \"search\" : \"global\",\n ...key\n })),\n share()\n )\n\n /* Setup search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\"),\n withLatestFrom(\n toggle$,\n useComponent(\"search-query\"),\n useComponent(\"search-result\")\n )\n )\n .subscribe(([key, toggle, query, result]) => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: prevent form submission */\n case \"Enter\":\n if (active === query)\n key.claim()\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(toggle, false)\n setElementFocus(query, false)\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n setElementFocus(query)\n } else {\n const els = [query, ...getElements(\"[href]\", result)]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n setElementFocus(els[i])\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n setElementFocus(query)\n }\n })\n\n /* Setup global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active)\n }\n return false\n }),\n withLatestFrom(useComponent(\"search-query\"))\n )\n .subscribe(([key, query]) => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n setElementFocus(query)\n setElementSelection(query)\n key.claim()\n break\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n /* Return keyboard */\n return keyboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n filter,\n map,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport {\n getElement,\n getElements,\n watchMedia\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n hash$: Observable /* Location hash observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `details` elements\n *\n * This function will ensure that all `details` tags are opened prior to\n * printing, so the whole content of the page is included, and on anchor jumps.\n *\n * @param options - Options\n */\nexport function patchDetails(\n { document$, hash$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"details\"))\n )\n\n /* Open all details before printing */\n merge(\n watchMedia(\"print\").pipe(filter(identity)), /* Webkit */\n fromEvent(window, \"beforeprint\") /* IE, FF */\n )\n .pipe(\n switchMapTo(els$)\n )\n .subscribe(els => {\n for (const el of els)\n el.setAttribute(\"open\", \"\")\n })\n\n /* Open parent details and fix anchor jump */\n hash$\n .pipe(\n map(id => getElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\"),\n tap(el => {\n const details = el.closest(\"details\")\n if (details && !details.open)\n details.setAttribute(\"open\", \"\")\n })\n )\n .subscribe(el => el.scrollIntoView())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map, skip, withLatestFrom } from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `script` elements\n *\n * This function must be run after a document switch, which means the first\n * emission must be ignored.\n *\n * @param options - Options\n */\nexport function patchScripts(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n skip(1),\n withLatestFrom(useComponent(\"container\")),\n map(([, el]) => getElements(\"script\", el))\n )\n\n /* Evaluate all scripts via replacement */\n els$.subscribe(els => {\n for (const el of els) {\n if (el.src || /(^|\\/javascript)$/i.test(el.type)) {\n const script = document.createElement(\"script\")\n const key = el.src ? \"src\" : \"innerText\"\n script[key] = el[key]\n el.replaceWith(script)\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderTable } from \"templates\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `table` elements\n *\n * This function will re-render all tables by wrapping them to improve overflow\n * scrolling on smaller screen sizes.\n *\n * @param options - Options\n */\nexport function patchTables(\n { document$ }: MountOptions\n): void {\n const sentinel = document.createElement(\"table\")\n document$\n .pipe(\n map(() => getElements(\"table:not([class])\"))\n )\n .subscribe(els => {\n for (const el of els) {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject, animationFrameScheduler, of } from \"rxjs\"\nimport {\n delay,\n map,\n observeOn,\n switchMap,\n tap\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n duration?: number /* Display duration (default: 2s) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup dialog\n *\n * @param options - Options\n *\n * @return Dialog observable\n */\nexport function setupDialog(\n { duration }: SetupOptions = {}\n): Subject {\n const dialog$ = new Subject()\n\n /* Create dialog */\n const dialog = document.createElement(\"div\") // TODO: improve scoping\n dialog.classList.add(\"md-dialog\", \"md-typeset\")\n\n /* Display dialog */\n dialog$\n .pipe(\n switchMap(text => of(document.body) // useComponent(\"container\")\n .pipe(\n map(container => container.appendChild(dialog)),\n observeOn(animationFrameScheduler),\n delay(1), // Strangley it doesnt work when we push things to the new animation frame...\n tap(el => {\n el.innerHTML = text\n el.setAttribute(\"data-md-state\", \"open\")\n }),\n delay(duration || 2000),\n tap(el => el.removeAttribute(\"data-md-state\")),\n delay(400),\n tap(el => {\n el.innerHTML = \"\"\n el.remove()\n })\n )\n )\n )\n .subscribe()\n\n /* Return dialog subject */\n return dialog$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as ClipboardJS from \"clipboard\"\nimport { NEVER, Observable, Subject, fromEventPattern } from \"rxjs\"\nimport { mapTo, share, tap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderClipboard } from \"templates\"\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Observable /* Document observable */\n dialog$: Subject /* Dialog subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup clipboard\n *\n * This function implements the Clipboard.js integration and injects a button\n * into all code blocks when the document changes.\n *\n * @param options - Options\n *\n * @return Clipboard observable\n */\nexport function setupClipboard(\n { document$, dialog$ }: SetupOptions\n): Observable {\n if (!ClipboardJS.isSupported())\n return NEVER\n\n /* Inject 'copy-to-clipboard' buttons */\n document$.subscribe(() => {\n const blocks = getElements(\"pre > code\")\n for (const [index, block] of blocks.entries()) {\n const parent = block.parentElement!\n parent.id = `__code_${index}`\n parent.insertBefore(renderClipboard(parent.id), block)\n }\n })\n\n /* Initialize and setup clipboard */\n const clipboard$ = fromEventPattern(next => {\n new ClipboardJS(\".md-clipboard\").on(\"success\", next)\n })\n .pipe(\n share()\n )\n\n /* Display notification for clipboard event */\n clipboard$\n .pipe(\n tap(ev => ev.clearSelection()),\n mapTo(translate(\"clipboard.copied\"))\n )\n .subscribe(dialog$)\n\n /* Return clipboard */\n return clipboard$\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/javascripts/bundle.b70c6ac3.min.js b/material/assets/javascripts/bundle.b70c6ac3.min.js deleted file mode 100644 index b5b506de4..000000000 --- a/material/assets/javascripts/bundle.b70c6ac3.min.js +++ /dev/null @@ -1,24 +0,0 @@ -!function(t,e){for(var n in e)t[n]=e[n]}(window,function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=9)}([,,function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return o}));var r="undefined"!=typeof window&&window,i="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,o=r||void 0!==t&&t||i}).call(this,n(6))},,,function(t,e,n){ -/*! - * clipboard.js v2.0.4 - * https://zenorocha.github.io/clipboard.js - * - * Licensed MIT © Zeno Rocha - */ -var r;r=function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";var r="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 n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,s.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return l("action",t)}},{key:"defaultTarget",value:function(t){var e=l("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return l("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(u.default);function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=a},function(t,e,n){"use strict";var r,i="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},o=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,s.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,s.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=c},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(t),r.removeAllRanges(),r.addRange(i),e=r.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function i(){r.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;r=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)u.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return u}function c(){for(var t=[],e=0;e=0;)f(e=v[n],t)&&!b(r,e)&&(r[r.length]=e),n-=1;return r})):l((function(t){return Object(t)!==t?[]:Object.keys(t)})),w=l((function(t){for(var e=m(t),n=e.length,r=[],i=0;i0?t.prototype.requestAsyncId.call(this,e,n,r):(e.actions.push(this),e.scheduled||(e.scheduled=requestAnimationFrame((function(){return e.flush(null)}))))},e.prototype.recycleAsyncId=function(e,n,r){if(void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,r);0===e.actions.length&&(cancelAnimationFrame(n),e.scheduled=void 0)},e}(et),rt=function(){function t(e,n){void 0===n&&(n=t.now),this.SchedulerAction=e,this.now=n}return t.prototype.schedule=function(t,e,n){return void 0===e&&(e=0),new this.SchedulerAction(this,t).schedule(n,e)},t.now=function(){return Date.now()},t}(),it=function(t){function e(n,r){void 0===r&&(r=rt.now);var i=t.call(this,n,(function(){return e.delegate&&e.delegate!==i?e.delegate.now():r()}))||this;return i.actions=[],i.active=!1,i.scheduled=void 0,i}return i(e,t),e.prototype.schedule=function(n,r,i){return void 0===r&&(r=0),e.delegate&&e.delegate!==this?e.delegate.schedule(n,r,i):t.prototype.schedule.call(this,n,r,i)},e.prototype.flush=function(t){var e=this.actions;if(this.active)e.push(t);else{var n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}},e}(rt),ot=new(function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,r=-1,i=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++r1?r.next(Array.prototype.slice.call(arguments)):r.next(t)}),r,n)}))}function lt(){for(var t=[],e=0;e0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},e}(P);function yt(t){return t}function bt(t){return void 0===t&&(t=Number.POSITIVE_INFINITY),function t(e,n,r){return void 0===r&&(r=Number.POSITIVE_INFINITY),"function"==typeof n?function(i){return i.pipe(t((function(t,r){return pt(e(t,r)).pipe(ut((function(e,i){return n(t,e,r,i)})))}),r))}:("number"==typeof n&&(r=n),function(t){return t.lift(new dt(e,r))})}(yt,t)}function mt(){for(var t=[],e=0;e1&&"number"==typeof t[t.length-1]&&(n=t.pop())):"number"==typeof i&&(n=t.pop()),null===r&&1===t.length&&t[0]instanceof X?t[0]:bt(n)(G(t,r))}var wt,gt=function(){function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t}(),xt=function(t){function e(e,n){var r=t.call(this)||this;return r.subject=e,r.subscriber=n,r.closed=!1,r}return i(e,t),e.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var t=this.subject,e=t.observers;if(this.subject=null,e&&0!==e.length&&!t.isStopped&&!t.closed){var n=e.indexOf(this.subscriber);-1!==n&&e.splice(n,1)}}},e}($),_t=function(t){function e(e){var n=t.call(this,e)||this;return n.destination=e,n}return i(e,t),e}(N),St=function(t){function e(){var e=t.call(this)||this;return e.observers=[],e.closed=!1,e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return i(e,t),e.prototype[C]=function(){return new _t(this)},e.prototype.lift=function(t){var e=new Et(this,this);return e.operator=t,e},e.prototype.next=function(t){if(this.closed)throw new gt;if(!this.isStopped)for(var e=this.observers,n=e.length,r=e.slice(),i=0;i0?t.prototype.schedule.call(this,e,n):(this.delay=n,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,n){return n>0||this.closed?t.prototype.execute.call(this,e,n):this._execute(e,n)},e.prototype.requestAsyncId=function(e,n,r){return void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0?t.prototype.requestAsyncId.call(this,e,n,r):e.flush(this)},e}(et),kt=new(function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(it))(Tt),Ot=new X((function(t){return t.complete()}));function jt(t){return t?function(t){return new X((function(e){return t.schedule((function(){return e.complete()}))}))}(t):Ot}function $t(t){var e=t.error;t.subscriber.error(e)}wt||(wt={});var At=function(){function t(t,e,n){this.kind=t,this.value=e,this.error=n,this.hasValue="N"===t}return t.prototype.observe=function(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}},t.prototype.do=function(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}},t.prototype.accept=function(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)},t.prototype.toObservable=function(){var t,e;switch(this.kind){case"N":return lt(this.value);case"E":return t=this.error,new X(e?function(n){return e.schedule($t,0,{error:t,subscriber:n})}:function(e){return e.error(t)});case"C":return jt()}throw new Error("unexpected notification kind value")},t.createNext=function(e){return void 0!==e?new t("N",e):t.undefinedValueNotification},t.createError=function(e){return new t("E",void 0,e)},t.createComplete=function(){return t.completeNotification},t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t}();function Ct(t,e){return void 0===e&&(e=0),function(n){return n.lift(new Nt(t,e))}}var Nt=function(){function t(t,e){void 0===e&&(e=0),this.scheduler=t,this.delay=e}return t.prototype.call=function(t,e){return e.subscribe(new It(t,this.scheduler,this.delay))},t}(),It=function(t){function e(e,n,r){void 0===r&&(r=0);var i=t.call(this,e)||this;return i.scheduler=n,i.delay=r,i}return i(e,t),e.dispatch=function(t){var e=t.notification,n=t.destination;e.observe(n),this.unsubscribe()},e.prototype.scheduleMessage=function(t){this.destination.add(this.scheduler.schedule(e.dispatch,this.delay,new Pt(t,this.destination)))},e.prototype._next=function(t){this.scheduleMessage(At.createNext(t))},e.prototype._error=function(t){this.scheduleMessage(At.createError(t)),this.unsubscribe()},e.prototype._complete=function(){this.scheduleMessage(At.createComplete()),this.unsubscribe()},e}(N),Pt=function(){return function(t,e){this.notification=t,this.destination=e}}(),Mt=function(t){function e(e,n,r){void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=Number.POSITIVE_INFINITY);var i=t.call(this)||this;return i.scheduler=r,i._events=[],i._infiniteTimeWindow=!1,i._bufferSize=e<1?1:e,i._windowTime=n<1?1:n,n===Number.POSITIVE_INFINITY?(i._infiniteTimeWindow=!0,i.next=i.nextInfiniteTimeWindow):i.next=i.nextTimeWindow,i}return i(e,t),e.prototype.nextInfiniteTimeWindow=function(e){var n=this._events;n.push(e),n.length>this._bufferSize&&n.shift(),t.prototype.next.call(this,e)},e.prototype.nextTimeWindow=function(e){this._events.push(new Ht(this._getNow(),e)),this._trimBufferThenGetEvents(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){var e,n=this._infiniteTimeWindow,r=n?this._events:this._trimBufferThenGetEvents(),i=this.scheduler,o=r.length;if(this.closed)throw new gt;if(this.isStopped||this.hasError?e=$.EMPTY:(this.observers.push(t),e=new xt(this,t)),i&&t.add(t=new It(t,i)),n)for(var u=0;ue&&(o=Math.max(o,i-e)),o>0&&r.splice(0,o),r},e}(St),Ht=function(){return function(t,e){this.time=t,this.value=e}}();function Lt(t,e,n){var r;return r=t&&"object"==typeof t?t:{bufferSize:t,windowTime:e,refCount:!1,scheduler:n},function(t){return t.lift(function(t){var e,n,r=t.bufferSize,i=void 0===r?Number.POSITIVE_INFINITY:r,o=t.windowTime,u=void 0===o?Number.POSITIVE_INFINITY:o,s=t.refCount,c=t.scheduler,a=0,l=!1,f=!1;return function(t){a++,e&&!l||(l=!1,e=new Mt(i,u,c),n=t.subscribe({next:function(t){e.next(t)},error:function(t){l=!0,e.error(t)},complete:function(){f=!0,e.complete()}}));var r=e.subscribe(this);this.add((function(){a--,r.unsubscribe(),n&&!f&&s&&0===a&&(n.unsubscribe(),n=void 0,e=void 0)}))}}(r))}}function Vt(t,e){return"function"==typeof e?function(n){return n.pipe(Vt((function(n,r){return pt(t(n,r)).pipe(ut((function(t,i){return e(n,t,r,i)})))})))}:function(e){return e.lift(new qt(t))}}var qt=function(){function t(t){this.project=t}return t.prototype.call=function(t,e){return e.subscribe(new Rt(t,this.project))},t}(),Rt=function(t){function e(e,n){var r=t.call(this,e)||this;return r.project=n,r.index=0,r}return i(e,t),e.prototype._next=function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(t){return void this.destination.error(t)}this._innerSub(e,t,n)},e.prototype._innerSub=function(t,e,n){var r=this.innerSubscription;r&&r.unsubscribe();var i=new M(this,void 0,void 0);this.destination.add(i),this.innerSubscription=B(this,t,e,n,i)},e.prototype._complete=function(){var e=this.innerSubscription;e&&!e.closed||t.prototype._complete.call(this),this.unsubscribe()},e.prototype._unsubscribe=function(){this.innerSubscription=null},e.prototype.notifyComplete=function(e){this.destination.remove(e),this.innerSubscription=null,this.isStopped&&t.prototype._complete.call(this)},e.prototype.notifyNext=function(t,e,n,r,i){this.destination.next(e)},e}(P);function Dt(t,e){return function(n){return n.lift(new Ft(t,e))}}var Ft=function(){function t(t,e){this.predicate=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new Ut(t,this.predicate,this.thisArg))},t}(),Ut=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.predicate=n,i.thisArg=r,i.count=0,i}return i(e,t),e.prototype._next=function(t){var e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(t){return void this.destination.error(t)}e&&this.destination.next(t)},e}(N);function zt(t,e,n){return function(r){return r.lift(new Yt(t,e,n))}}var Yt=function(){function t(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}return t.prototype.call=function(t,e){return e.subscribe(new Xt(t,this.nextOrObserver,this.error,this.complete))},t}(),Xt=function(t){function e(e,n,r,i){var o=t.call(this,e)||this;return o._tapNext=U,o._tapError=U,o._tapComplete=U,o._tapError=r||U,o._tapComplete=i||U,_(n)?(o._context=o,o._tapNext=n):n&&(o._context=n,o._tapNext=n.next||U,o._tapError=n.error||U,o._tapComplete=n.complete||U),o}return i(e,t),e.prototype._next=function(t){try{this._tapNext.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.next(t)},e.prototype._error=function(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)},e.prototype._complete=function(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()},e}(N),Wt=new it(et);function Bt(t,e){void 0===e&&(e=Wt);var n,r=(n=t)instanceof Date&&!isNaN(+n)?+t-e.now():Math.abs(t);return function(t){return t.lift(new Jt(r,e))}}var Jt=function(){function t(t,e){this.delay=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new Gt(t,this.delay,this.scheduler))},t}(),Gt=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.delay=n,i.scheduler=r,i.queue=[],i.active=!1,i.errored=!1,i}return i(e,t),e.dispatch=function(t){for(var e=t.source,n=e.queue,r=t.scheduler,i=t.destination;n.length>0&&n[0].time-r.now()<=0;)n.shift().notification.observe(i);if(n.length>0){var o=Math.max(0,n[0].time-r.now());this.schedule(t,o)}else this.unsubscribe(),e.active=!1},e.prototype._schedule=function(t){this.active=!0,this.destination.add(t.schedule(e.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))},e.prototype.scheduleNotification=function(t){if(!0!==this.errored){var e=this.scheduler,n=new Kt(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}},e.prototype._next=function(t){this.scheduleNotification(At.createNext(t))},e.prototype._error=function(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.scheduleNotification(At.createComplete()),this.unsubscribe()},e}(N),Kt=function(){return function(t,e){this.time=t,this.notification=e}}();function Qt(t){return function(e){return e.lift(new Zt(t))}}var Zt=function(){function t(t){this.value=t}return t.prototype.call=function(t,e){return e.subscribe(new te(t,this.value))},t}(),te=function(t){function e(e,n){var r=t.call(this,e)||this;return r.value=n,r}return i(e,t),e.prototype._next=function(t){this.destination.next(this.value)},e}(N);function ee(){for(var t=[],e=0;e0){var u=o.indexOf(n);-1!==u&&o.splice(u,1)}},e.prototype.notifyComplete=function(){},e.prototype._next=function(t){if(0===this.toRespond.length){var e=[t].concat(this.values);this.project?this._tryProject(e):this.destination.next(e)}},e.prototype._tryProject=function(t){var e;try{e=this.project.apply(this,t)}catch(t){return void this.destination.error(t)}this.destination.next(e)},e}(P);function ie(t,e){return function(n){return n.lift(new oe(t,e))}}var oe=function(){function t(t,e){this.compare=t,this.keySelector=e}return t.prototype.call=function(t,e){return e.subscribe(new ue(t,this.compare,this.keySelector))},t}(),ue=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.keySelector=r,i.hasKey=!1,"function"==typeof n&&(i.compare=n),i}return i(e,t),e.prototype.compare=function(t,e){return t===e},e.prototype._next=function(t){var e;try{var n=this.keySelector;e=n?n(t):t}catch(t){return this.destination.error(t)}var r=!1;if(this.hasKey)try{r=(0,this.compare)(this.key,e)}catch(t){return this.destination.error(t)}else this.hasKey=!0;r||(this.key=e,this.destination.next(t))},e}(N);function se(){return function(t){return t.lift(new ce(t))}}var ce=function(){function t(t){this.connectable=t}return t.prototype.call=function(t,e){var n=this.connectable;n._refCount++;var r=new ae(t,n),i=e.subscribe(r);return r.closed||(r.connection=n.connect()),i},t}(),ae=function(t){function e(e,n){var r=t.call(this,e)||this;return r.connectable=n,r}return i(e,t),e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._refCount;if(e<=0)this.connection=null;else if(t._refCount=e-1,e>1)this.connection=null;else{var n=this.connection,r=t._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}else this.connection=null},e}(N),le=function(t){function e(e,n){var r=t.call(this)||this;return r.source=e,r.subjectFactory=n,r._refCount=0,r._isComplete=!1,r}return i(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype.connect=function(){var t=this._connection;return t||(this._isComplete=!1,(t=this._connection=new $).add(this.source.subscribe(new he(this.getSubject(),this))),t.closed&&(this._connection=null,t=$.EMPTY)),t},e.prototype.refCount=function(){return se()(this)},e}(X),fe=function(){var t=le.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}}(),he=function(t){function e(e,n){var r=t.call(this,e)||this;return r.connectable=n,r}return i(e,t),e.prototype._error=function(e){this._unsubscribe(),t.prototype._error.call(this,e)},e.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}},e}(_t);var pe=function(){function t(t,e){this.subjectFactory=t,this.selector=e}return t.prototype.call=function(t,e){var n=this.selector,r=this.subjectFactory(),i=n(r).subscribe(t);return i.add(e.subscribe(r)),i},t}();function de(){return new St}function ve(){return function(t){return se()((e=de,function(t){var r;if(r="function"==typeof e?e:function(){return e},"function"==typeof n)return t.lift(new pe(r,n));var i=Object.create(t,fe);return i.source=t,i.subjectFactory=r,i})(t));var e,n}}function ye(){for(var t=[],e=0;e0&&this.destination.next(e),t.prototype._complete.call(this)},e}(N),ge=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.bufferSize=n,i.startBufferEvery=r,i.buffers=[],i.count=0,i}return i(e,t),e.prototype._next=function(t){var e=this.bufferSize,n=this.startBufferEvery,r=this.buffers,i=this.count;this.count++,i%n==0&&r.push([]);for(var o=r.length;o--;){var u=r[o];u.push(t),u.length===e&&(r.splice(o,1),this.destination.next(u))}},e.prototype._complete=function(){for(var e=this.buffers,n=this.destination;e.length>0;){var r=e.shift();r.length>0&&n.next(r)}t.prototype._complete.call(this)},e}(N);var xe=function(){function t(t,e){this.dueTime=t,this.scheduler=e}return t.prototype.call=function(t,e){return e.subscribe(new _e(t,this.dueTime,this.scheduler))},t}(),_e=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.dueTime=n,i.scheduler=r,i.debouncedSubscription=null,i.lastValue=null,i.hasValue=!1,i}return i(e,t),e.prototype._next=function(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(Se,this.dueTime,this))},e.prototype._complete=function(){this.debouncedNext(),this.destination.complete()},e.prototype.debouncedNext=function(){if(this.clearDebounce(),this.hasValue){var t=this.lastValue;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}},e.prototype.clearDebounce=function(){var t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)},e}(N);function Se(t){t.debouncedNext()}function Ee(t,e){return ie((function(n,r){return e?e(n[t],r[t]):n[t]===r[t]}))}var Te=function(){function t(t){this.notifier=t}return t.prototype.call=function(t,e){var n=new ke(t),r=e.subscribe(n);return r.add(B(n,this.notifier)),r},t}(),ke=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasValue=!1,e}return i(e,t),e.prototype._next=function(t){this.value=t,this.hasValue=!0},e.prototype.notifyNext=function(t,e,n,r,i){this.emitValue()},e.prototype.notifyComplete=function(){this.emitValue()},e.prototype.emitValue=function(){this.hasValue&&(this.hasValue=!1,this.destination.next(this.value))},e}(P),Oe=function(){function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t}();function je(t){return function(e){return 0===t?jt():e.lift(new $e(t))}}var $e=function(){function t(t){if(this.total=t,this.total<0)throw new Oe}return t.prototype.call=function(t,e){return e.subscribe(new Ae(t,this.total))},t}(),Ae=function(t){function e(e,n){var r=t.call(this,e)||this;return r.total=n,r.count=0,r}return i(e,t),e.prototype._next=function(t){var e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))},e}(N),Ce=n(2);function Ne(t,e){return void 0===e&&(e=null),new qe({method:"GET",url:t,headers:e})}function Ie(t,e,n){return new qe({method:"POST",url:t,body:e,headers:n})}function Pe(t,e){return new qe({method:"DELETE",url:t,headers:e})}function Me(t,e,n){return new qe({method:"PUT",url:t,body:e,headers:n})}function He(t,e,n){return new qe({method:"PATCH",url:t,body:e,headers:n})}var Le=ut((function(t,e){return t.response}));function Ve(t,e){return Le(new qe({method:"GET",url:t,responseType:"json",headers:e}))}var qe=function(t){function e(e){var n=t.call(this)||this,r={async:!0,createXHR:function(){return this.crossDomain?function(){if(Ce.a.XMLHttpRequest)return new Ce.a.XMLHttpRequest;if(Ce.a.XDomainRequest)return new Ce.a.XDomainRequest;throw new Error("CORS is not supported by your browser")}():function(){if(Ce.a.XMLHttpRequest)return new Ce.a.XMLHttpRequest;var t=void 0;try{for(var e=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],n=0;n<3;n++)try{if(t=e[n],new Ce.a.ActiveXObject(t))break}catch(t){}return new Ce.a.ActiveXObject(t)}catch(t){throw new Error("XMLHttpRequest is not supported by your browser")}}()},crossDomain:!0,withCredentials:!1,headers:{},method:"GET",responseType:"json",timeout:0};if("string"==typeof e)r.url=e;else for(var i in e)e.hasOwnProperty(i)&&(r[i]=e[i]);return n.request=r,n}var n;return i(e,t),e.prototype._subscribe=function(t){return new Re(t,this.request)},e.create=((n=function(t){return new e(t)}).get=Ne,n.post=Ie,n.delete=Pe,n.put=Me,n.patch=He,n.getJSON=Ve,n),e}(X),Re=function(t){function e(e,n){var r=t.call(this,e)||this;r.request=n,r.done=!1;var i=n.headers=n.headers||{};return n.crossDomain||r.getHeader(i,"X-Requested-With")||(i["X-Requested-With"]="XMLHttpRequest"),r.getHeader(i,"Content-Type")||Ce.a.FormData&&n.body instanceof Ce.a.FormData||void 0===n.body||(i["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"),n.body=r.serializeBody(n.body,r.getHeader(n.headers,"Content-Type")),r.send(),r}return i(e,t),e.prototype.next=function(t){this.done=!0;var e,n=this.xhr,r=this.request,i=this.destination;try{e=new De(t,n,r)}catch(t){return i.error(t)}i.next(e)},e.prototype.send=function(){var t=this.request,e=this.request,n=e.user,r=e.method,i=e.url,o=e.async,u=e.password,s=e.headers,c=e.body;try{var a=this.xhr=t.createXHR();this.setupEvents(a,t),n?a.open(r,i,o,n,u):a.open(r,i,o),o&&(a.timeout=t.timeout,a.responseType=t.responseType),"withCredentials"in a&&(a.withCredentials=!!t.withCredentials),this.setHeaders(a,s),c?a.send(c):a.send()}catch(t){this.error(t)}},e.prototype.serializeBody=function(t,e){if(!t||"string"==typeof t)return t;if(Ce.a.FormData&&t instanceof Ce.a.FormData)return t;if(e){var n=e.indexOf(";");-1!==n&&(e=e.substring(0,n))}switch(e){case"application/x-www-form-urlencoded":return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&");case"application/json":return JSON.stringify(t);default:return t}},e.prototype.setHeaders=function(t,e){for(var n in e)e.hasOwnProperty(n)&&t.setRequestHeader(n,e[n])},e.prototype.getHeader=function(t,e){for(var n in t)if(n.toLowerCase()===e.toLowerCase())return t[n]},e.prototype.setupEvents=function(t,e){var n=e.progressSubscriber;function r(t){var e,n=r,i=n.subscriber,o=n.progressSubscriber,u=n.request;o&&o.error(t);try{e=new ze(this,u)}catch(t){e=t}i.error(e)}if(t.ontimeout=r,r.request=e,r.subscriber=this,r.progressSubscriber=n,t.upload&&"withCredentials"in t){var i,o;if(n)i=function(t){i.progressSubscriber.next(t)},Ce.a.XDomainRequest?t.onprogress=i:t.upload.onprogress=i,i.progressSubscriber=n;o=function(t){var e,n=o,r=n.progressSubscriber,i=n.subscriber,u=n.request;r&&r.error(t);try{e=new Fe("ajax error",this,u)}catch(t){e=t}i.error(e)},t.onerror=o,o.request=e,o.subscriber=this,o.progressSubscriber=n}function u(t){}function s(t){var e=s,n=e.subscriber,r=e.progressSubscriber,i=e.request;if(4===this.readyState){var o=1223===this.status?204:this.status,u="text"===this.responseType?this.response||this.responseText:this.response;if(0===o&&(o=u?200:0),o<400)r&&r.complete(),n.next(t),n.complete();else{r&&r.error(t);var c=void 0;try{c=new Fe("ajax error "+o,this,i)}catch(t){c=t}n.error(c)}}}t.onreadystatechange=u,u.subscriber=this,u.progressSubscriber=n,u.request=e,t.onload=s,s.subscriber=this,s.progressSubscriber=n,s.request=e},e.prototype.unsubscribe=function(){var e=this.done,n=this.xhr;!e&&n&&4!==n.readyState&&"function"==typeof n.abort&&n.abort(),t.prototype.unsubscribe.call(this)},e}(N),De=function(){return function(t,e,n){this.originalEvent=t,this.xhr=e,this.request=n,this.status=e.status,this.responseType=e.responseType||n.responseType,this.response=Ue(this.responseType,e)}}(),Fe=function(){function t(t,e,n){return Error.call(this),this.message=t,this.name="AjaxError",this.xhr=e,this.request=n,this.status=e.status,this.responseType=e.responseType||n.responseType,this.response=Ue(this.responseType,e),this}return t.prototype=Object.create(Error.prototype),t}();function Ue(t,e){switch(t){case"json":return function(t){return"response"in t?t.responseType?t.response:JSON.parse(t.response||t.responseText||"null"):JSON.parse(t.responseText||"null")}(e);case"xml":return e.responseXML;case"text":default:return"response"in e?e.response:e.responseText}}var ze=function(t,e){return Fe.call(this,"ajax timeout",t,e),this.name="AjaxTimeoutError",this},Ye=function(){return qe.create}();function Xe(t){return function(e){return e.lift(new We(t))}}var We=function(){function t(t){this.total=t}return t.prototype.call=function(t,e){return e.subscribe(new Be(t,this.total))},t}(),Be=function(t){function e(e,n){var r=t.call(this,e)||this;return r.total=n,r.count=0,r}return i(e,t),e.prototype._next=function(t){++this.count>this.total&&this.destination.next(t)},e}(N);function Je(t){return function(e){var n=new Ge(t),r=e.lift(n);return n.caught=r}}var Ge=function(){function t(t){this.selector=t}return t.prototype.call=function(t,e){return e.subscribe(new Ke(t,this.selector,this.caught))},t}(),Ke=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.selector=n,i.caught=r,i}return i(e,t),e.prototype.error=function(e){if(!this.isStopped){var n=void 0;try{n=this.selector(e,this.caught)}catch(e){return void t.prototype.error.call(this,e)}this._unsubscribeAndRecycle();var r=new M(this,void 0,void 0);this.add(r),B(this,n,void 0,void 0,r)}},e}(P),Qe=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return i(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return n&&!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new gt;return this._value},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(St);function Ze(){return new Qe(new URL(location.href))}function tn(){for(var t=[],e=0;e=2&&(n=!0),function(r){return r.lift(new Tn(t,e,n))}}var Tn=function(){function t(t,e,n){void 0===n&&(n=!1),this.accumulator=t,this.seed=e,this.hasSeed=n}return t.prototype.call=function(t,e){return e.subscribe(new kn(t,this.accumulator,this.seed,this.hasSeed))},t}(),kn=function(t){function e(e,n,r,i){var o=t.call(this,e)||this;return o.accumulator=n,o._seed=r,o.hasSeed=i,o.index=0,o}return i(e,t),Object.defineProperty(e.prototype,"seed",{get:function(){return this._seed},set:function(t){this.hasSeed=!0,this._seed=t},enumerable:!0,configurable:!0}),e.prototype._next=function(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.accumulator(this.seed,t,n)}catch(t){this.destination.error(t)}this.seed=e,this.destination.next(e)},e}(N);function On(t){return function(e){return e.lift(new $n(t))}}var jn,$n=function(){function t(t){this.callback=t}return t.prototype.call=function(t,e){return e.subscribe(new An(t,this.callback))},t}(),An=function(t){function e(e,n){var r=t.call(this,e)||this;return r.add(new $(n)),r}return i(e,t),e}(N);function Cn(t,e){t.setAttribute("data-md-state",e?"blur":"")}function Nn(t){t.removeAttribute("data-md-state")}function In(t,e){t.classList.toggle("md-nav__link--active",e)}function Pn(t){t.classList.remove("md-nav__link--active")}function Mn(t){t.style.top=""}function Hn(t){t.style.webkitOverflowScrolling=""}function Ln(t,e,n){switch(e){case"xmlns":break;case"viewBox":case"d":"boolean"!=typeof n?t.setAttributeNS(null,e,n):n&&t.setAttributeNS(null,e,"");break;default:"boolean"!=typeof n?t.setAttribute(e,n):n&&t.setAttribute(e,"")}}function Vn(t,e){var n,r;if("string"==typeof e||"number"==typeof e)t.innerHTML+=e.toString();else if(e instanceof Node)t.appendChild(e);else if(Array.isArray(e))try{for(var i=u(e),o=i.next();!o.done;o=i.next()){Vn(t,o.value)}}catch(t){n={error:t}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}function qn(t,e){for(var n,r,i,o,s=[],c=2;c999?((t+1)/1e3).toFixed(+((t-950)%1e3>99))+"k":t.toString()}function Un(t,e){t.appendChild(e)}function zn(t,e){return void 0===e&&(e=0),z(ut((function(t){return t.offset.y>=e})),ie(),Ct(ot),zt((function(e){!function(t,e){t.setAttribute("data-md-state",e?"hidden":"")}(t,e)})),On((function(){!function(t){t.removeAttribute("data-md-state")}(t)})))}function Yn(t,e){var n=e.main$,r=e.viewport$,i=r.pipe(Ee("size"),ut((function(){return parseFloat(getComputedStyle(t.parentElement).getPropertyValue("padding-top"))})),ie());return Q([r.pipe(ee(i,n),ut((function(t){var e=s(t,3),n=e[0].offset.y,r=e[1],i=e[2],o=i.offset;return i.height+Math.min(r,Math.max(0,n-o))-r})),ie()),r.pipe(ee(i,n),ut((function(t){var e=s(t,3),n=e[0].offset.y,r=e[1];return n>=e[2].offset+r})),ie())]).pipe(ut((function(t){var e=s(t,2);return{height:e[0],lock:e[1]}})))}function Xn(t,e){var n=e.header$;return z(Ct(ot),ee(n),zt((function(e){var n=s(e,2),r=n[0],i=r.height,o=r.lock,u=n[1].height;!function(t,e){t.style.height=e+"px"}(t,i),function(t,e){t.setAttribute("data-md-state",e?"lock":"")}(t,o),o?function(t,e){t.style.top=e+"px"}(t,u):Mn(t)})),ut((function(t){return s(t,1)[0]})),On((function(){Mn(t),function(t){t.style.height=""}(t),function(t){t.removeAttribute("data-md-state")}(t)})))}function Wn(t){return function e(n,r){switch(arguments.length){case 0:return e;case 1:return a(n)?e:l((function(e){return t(n,e)}));default:return a(n)&&a(r)?e:a(n)?l((function(e){return t(e,r)})):a(r)?l((function(e){return t(n,e)})):t(n,r)}}}var Bn=Array.isArray||function(t){return null!=t&&t.length>=0&&"[object Array]"===Object.prototype.toString.call(t)};function Jn(t){return null!=t&&"function"==typeof t["@@transducer/step"]}function Gn(t,e,n){return function(){if(0===arguments.length)return n();var r=Array.prototype.slice.call(arguments,0),i=r.pop();if(!Bn(i)){for(var o=0;o=0;){if(t(e[n]))return e[n];n-=1}})));function tr(t){return t.replace(/(?:^|\s+)[*+-:^~]+(?=\s+|$)/g,"").trim().replace(/\s+|\b$/g,"* ")}function er(t,e){var n=(void 0===e?{}:e).transform||tr;return Q([mt(at(t,"keyup"),at(t,"focus").pipe(Bt(1))).pipe(ut((function(){return n(t.value)})),en(n(t.value)),ie()),function(t){var e=at(t,"focus"),n=at(t,"blur");return mt(e.pipe(Qt(!0)),n.pipe(Qt(!1))).pipe(en(t===cn()),Lt(1))}(t)]).pipe(ut((function(t){var e=s(t,2);return{value:e[0],focus:e[1]}})))}var nr={container:"md-clipboard md-icon"};var rr={item:"md-search-result__item",link:"md-search-result__link",article:"md-search-result__article md-search-result__article--document",section:"md-search-result__article",title:"md-search-result__title",teaser:"md-search-result__teaser"};function ir(t){var e=t.article,r=t.sections,i=n(8),o=c([e],r).map((function(t){var e=t.location,n=t.title,r=t.text;return qn("a",{href:e,class:rr.link,tabIndex:-1},qn("article",{class:"parent"in t?rr.section:rr.article},"parent"in t?null:qn("div",{class:"md-search-result__icon md-icon"},qn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},qn("path",{d:i}))),qn("h1",{class:rr.title},n),r.length?qn("p",{class:rr.teaser},function(t,e){var n=e;if(t.length>n){for(;" "!==t[n]&&--n>0;);return t.substring(0,n)+"..."}return t}(r,320)):void 0))}));return qn("li",{class:rr.item},o)}var or={facts:"md-source__facts",fact:"md-source__fact"};function ur(t){var e=t.map((function(t){return qn("li",{class:or.fact},t)}));return qn("ul",{class:or.facts},e)}var sr,cr,ar,lr={wrapper:"md-typeset__scrollwrap",table:"md-typeset__table"};function fr(t,e){var n=e.query$,r=e.fetch$,i=sn(".md-search-result__list",t),o=sn(".md-search-result__meta",t);return z(ee(n),ut((function(t){var e=s(t,2),n=e[0];return e[1].value?function(t,e){switch(e){case 0:t.textContent=Dn("search.result.none");break;case 1:t.textContent=Dn("search.result.one");break;default:t.textContent=Dn("search.result.other",e.toString())}}(o,n.length):function(t){t.textContent=Dn("search.result.placeholder")}(o),n})),Vt((function(e){return r.pipe(Ct(ot),En((function(n){for(var r=t.parentElement;n16)););return n}),0),Qt(e),On((function(){!function(t){t.innerHTML=""}(i)})))})))}function hr(t){return sr.pipe(Vt((function(e){return void 0!==e[t]?lt(e[t]):ft})),ie())}function pr(t,e){t.checked!==e&&t.click()}function dr(t){return at(t,"change").pipe(ut((function(){return t.checked})),en(t.checked))}function vr(t){return t.type===cr.RESULT}function yr(t){return ar.pipe(Vt((function(e){return void 0!==e[t]?lt(e[t]):Ot})),ie())}function br(t){var e=t.viewport$;return z(Vt((function(t){return function(t,e){return e.viewport$.pipe(Ee("size"),Vt((function(){var e=getComputedStyle(t),n=["sticky","-webkit-sticky"].includes(e.position);return lt({sticky:n,height:n?t.offsetHeight:0})})))}(t,{viewport$:e})})))}function mr(t){var e=t.header$,n=t.viewport$;return z(Vt((function(t){return yr("main").pipe(ut((function(t){return un("h1, h2, h3, h4, h5, h6",t)})),Dt((function(t){return void 0!==t})),Vt((function(r){return bn(r,{header$:e,viewport$:n}).pipe(ut((function(t){return t.offset.y>=r.offsetHeight})),function(t){return z(Ct(ot),zt((function(e){!function(t,e){t.setAttribute("data-md-state",e?"active":"")}(t,e)})),On((function(){!function(t){t.removeAttribute("data-md-state")}(t)})))}(t))})))})))}function wr(t){var e=t.header$,n=t.viewport$,r=new St;return yr("header").pipe(Vt((function(t){return r.pipe(Ee("active"),(e=t,z(Ct(ot),zt((function(t){var n=t.active;!function(t,e){t.setAttribute("data-md-state",e?"shadow":"")}(e,n)})),On((function(){!function(t){t.removeAttribute("data-md-state")}(e)})))));var e}))).subscribe(),z(Vt((function(t){return function(t,e){var n=e.header$,r=e.viewport$,i=n.pipe(ye("height")),o=Q([i,r]).pipe(ut((function(e){var n=s(e,2),r=n[0],i=n[1],o=i.offset.y,u=i.size.height,c=t.offsetTop,a=t.offsetHeight+c;return u-Math.max(0,c-o,r)-Math.max(0,u+o-a)})),ut((function(t){return Math.max(0,t)})),ie()),u=Q([i,r]).pipe(ut((function(e){var n=s(e,2),r=n[0];return n[1].offset.y>=t.offsetTop-r})),ie());return Q([i,o,u]).pipe(ut((function(e){var n=s(e,3),r=n[0],i=n[1],o=n[2];return{offset:t.offsetTop-r,height:i,active:o}})))}(t,{header$:e,viewport$:n})})),zt((function(t){return r.next(t)})))}function gr(t){var e=t.header$,n=t.main$,r=t.viewport$,i=t.screen$;return z(Vt((function(t){return i.pipe(Vt((function(i){if(i)return Yn(t,{main$:n,viewport$:r}).pipe(Xn(t,{header$:e}),ut((function(t){return{sidebar:t}})));var o=an("nav",t);return function(t){var e,n,r=new Map;try{for(var i=u(t),o=i.next();!o.done;o=i.next()){var s=o.value,a=un("label",s);if(void 0!==a){var l=sn("#"+a.htmlFor);r.set(l,s)}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return mt.apply(void 0,c(c(r.keys()).map((function(t){return at(t,"change")})))).pipe(ut((function(){return sn(".md-nav__list",r.get(Zn((function(t){return t.checked}),c(r.keys()))))}))).pipe(ut((function(t){return{next:t}})),En((function(t,e){return{prev:t.next,next:e.next}})))}(o).pipe(function(t){return z(Ct(ot),zt((function(t){var e=t.prev;e&&Hn(e)})),Bt(250),Ct(ot),zt((function(t){var e=t.next;e.style.webkitOverflowScrolling="touch"})),On((function(){var e,n;try{for(var r=u(t),i=r.next();!i.done;i=r.next()){Hn(sn(".md-nav__list",i.value))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}})))}(o),ut((function(t){return{layer:t}})))})))})))}function xr(){return z(Vt((function(t){return function(t){return at(t,"click").pipe(Qt(void 0))}(t).pipe(xn(yr("search-query")),zt(ln),Qt(void 0))})),en(void 0))}function _r(t){return t}!function(t){t[t.SETUP=0]="SETUP",t[t.DUMP=1]="DUMP",t[t.QUERY=2]="QUERY",t[t.RESULT=3]="RESULT"}(cr||(cr={}));var Sr=l(_r);function Er(t,e){var n=t.rx$,r=e.query$;return z(Vt((function(t){var e=t.parentElement,i=function(t){return mt(at(t,"scroll"),at(window,"resize")).pipe(ut((function(){return fn(t)})),en(fn(t)),Lt(1))}(e).pipe(ut((function(t){return t.y>=e.scrollHeight-e.offsetHeight-16})),ie(),Dt(Sr));return n.pipe(Dt(vr),ye("data"),fr(t,{query$:r,fetch$:i}))})))}function Tr(t){var e=t.header$,n=t.main$,r=t.viewport$,i=t.tablet$;return z(Vt((function(t){return i.pipe(Vt((function(i){if(i){var o=an(".md-nav__link",t),a=Yn(t,{main$:n,viewport$:r}).pipe(Xn(t,{header$:e})),l=function(t,e){var n,r,i=e.header$,o=e.viewport$,a=new Map;try{for(var l=u(t),f=l.next();!f.done;f=l.next()){var h=f.value,p=un('[id="'+decodeURIComponent(h.hash.substring(1))+'"]');void 0!==p&&a.set(h,p)}}catch(t){n={error:t}}finally{try{f&&!f.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}var d=i.pipe(ut((function(t){return 18+t.height})));return o.pipe(Ee("size"),ut((function(){var t=[];return c(a).reduce((function(e,n){for(var r=s(n,2),i=r[0],o=r[1];t.length;){if(!(a.get(t[t.length-1]).tagName>=o.tagName))break;t.pop()}for(var u=o.offsetTop;!u&&o.parentElement;)u=(o=o.parentElement).offsetTop;return e.set(Sn(t=c(t,[i])),u)}),new Map)})),Vt((function(t){return Q([d,o]).pipe(En((function(t,e){for(var n=s(t,2),r=n[0],i=n[1],o=s(e,2),u=o[0],a=o[1].offset.y;i.length;){if(!(s(i[0],2)[1]-u=a))break;i=c([r.pop()],i)}return[r,i]}),[[],c(t)]),ie((function(t,e){return t[0]===e[0]&&t[1]===e[1]})))}))).pipe(ut((function(t){var e=s(t,2),n=e[0],r=e[1];return{prev:n.map((function(t){return s(t,1)[0]})),next:r.map((function(t){return s(t,1)[0]}))}})),en({prev:[],next:[]}),be(2,1),ut((function(t){var e=s(t,2),n=e[0],r=e[1];return n.prev.length0})),ve()),h=Q([mt(at(window,"scroll"),at(window,"resize")).pipe(ut(dn),en(dn())),at(window,"resize").pipe(ut(yn),en(yn()))]).pipe(ut((function(t){var e=s(t,2);return{offset:e[0],size:e[1]}})),Lt(1)),p=pn("(min-width: 960px)"),d=pn("(min-width: 1220px)"),v=t.feature.instant?on({location$:l}):on();!function(t,e){var n=e.document$;sr=n.pipe(je(1),ut((function(e){return t.reduce((function(t,n){var r,i=un("[data-md-toggle="+n+"]",e);return o(o({},t),void 0!==i?((r={})[n]=i,r):{})}),{})})),Lt(1))}(["drawer","search"],{document$:v}),function(t,e){var n=e.document$;ar=n.pipe(ut((function(e){return t.reduce((function(t,n){var r,i=un("[data-md-component="+n+"]",e);return o(o({},t),void 0!==i?((r={})[n]=i,r):{})}),{})})),En((function(e,n){var r,i;try{for(var o=u(t),s=o.next();!s.done;s=o.next()){var c=s.value;switch(c){case"header-title":case"container":c in e&&void 0!==e[c]&&(e[c].replaceWith(n[c]),e[c]=n[c]);break;default:void 0!==n[c]?e[c]=un("[data-md-component="+c+"]"):delete e[c]}}}catch(t){r={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}return e})),Lt(1))}(["container","header","header-title","hero","main","navigation","search","search-query","search-reset","search-result","tabs","toc"],{document$:v});var y=function(t,e){var n=e.base,r=e.index,i=e.location$,o=new Worker(t),c=i.pipe(je(1),ut((function(t){var e=t.href;return new URL(n,e).toString().replace(/\/$/,"")}))),a=new St,l=_n(o,{tx$:a}).pipe(ee(c),ut((function(t){var e,n,r,i,o=s(t,2),c=o[0],a=o[1];if(vr(c))try{for(var l=u(c.data),f=l.next();!f.done;f=l.next()){var h=f.value,p=h.article,d=h.sections;p.location=a+"/"+p.location;try{for(var v=(r=void 0,u(d)),y=v.next();!y.done;y=v.next()){var b=y.value;b.location=a+"/"+b.location}}catch(t){r={error:t}}finally{try{y&&!y.done&&(i=v.return)&&i.call(v)}finally{if(r)throw r.error}}}}catch(t){e={error:t}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}return c})),Lt(1));return(void 0!==r?pt(r):c.pipe(Vt((function(t){return Ye({url:t+"/search/search_index.json",responseType:"json",withCredentials:!0}).pipe(ye("response"))})))).pipe(ut((function(t){return{type:cr.SETUP,data:t}}))).subscribe(a.next.bind(a)),{tx$:a,rx$:l}}(t.worker.search,{base:t.base,location$:l}),b=yr("header").pipe(br({viewport$:h}),Lt(1)),m=yr("main").pipe(wr({header$:b,viewport$:h}),Lt(1)),g=yr("search-query").pipe(function(t,e){var n=t.tx$;void 0===e&&(e={});var r=hr("search");return z(Vt((function(t){var i=er(t,e);return i.pipe(Ee("value"),ut((function(t){var e=t.value;return{type:cr.QUERY,data:e}}))).subscribe(n.next.bind(n)),i.pipe(Ee("focus"),ee(r)).subscribe((function(t){var e=s(t,2),n=e[0].focus,r=e[1];n&&pr(r,n)})),i})))}(y),Lt(1)),x=yr("search-reset").pipe(xr(),Lt(1)),_=yr("search-result").pipe(Er(y,{query$:g}),Lt(1)),S=yr("search").pipe(function(t){var e=t.query$,n=t.reset$,r=t.result$;return z(Vt((function(){return Q([e,r,n]).pipe(ut((function(t){var e=s(t,2);return{query:e[0],result:e[1]}})))})))}({query$:g,reset$:x,result$:_}),Lt(1)),E=yr("navigation").pipe(gr({header$:b,main$:m,viewport$:h,screen$:d}),Lt(1)),T=yr("toc").pipe(Tr({header$:b,main$:m,viewport$:h,tablet$:p}),Lt(1)),k=yr("tabs").pipe(function(t){var e=t.header$,n=t.viewport$,r=t.screen$;return z(Vt((function(t){return r.pipe(Vt((function(r){return r?bn(t,{header$:e,viewport$:n}).pipe(zn(t,10),ut((function(t){return{hidden:t}}))):lt({hidden:!0})})))})))}({header$:b,viewport$:h,screen$:d}),Lt(1)),O=yr("hero").pipe(function(t){var e=t.header$,n=t.viewport$;return z(Vt((function(t){return bn(t,{header$:e,viewport$:n}).pipe(zn(t,20),ut((function(t){return{hidden:t}})))})))}({header$:b,viewport$:h}),Lt(1)),j=yr("header-title").pipe(mr({header$:b,viewport$:h}),Lt(1)),$=Or();!function(t){var e=t.document$,n=t.hash$,r=e.pipe(ut((function(){return an("details")})));mt(pn("print").pipe(Dt(Sr)),at(window,"beforeprint")).pipe(xn(r)).subscribe((function(t){var e,n;try{for(var r=u(t),i=r.next();!i.done;i=r.next()){i.value.setAttribute("open","")}}catch(t){e={error:t}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}})),n.pipe(ut((function(t){return un('[id="'+t+'"]')})),Dt((function(t){return void 0!==t})),zt((function(t){var e=t.closest("details");e&&!e.open&&e.setAttribute("open","")}))).subscribe((function(t){return t.scrollIntoView()}))}({document$:v,hash$:f}),function(t){t.document$.pipe(Xe(1),ee(yr("container")),ut((function(t){return an("script",s(t,2)[1])}))).subscribe((function(t){var e,n;try{for(var r=u(t),i=r.next();!i.done;i=r.next()){var o=i.value;if(o.src||/(^|\/javascript)$/i.test(o.type)){var s=document.createElement("script"),c=o.src?"src":"innerText";s[c]=o[c],o.replaceWith(s)}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(e)throw e.error}}}))}({document$:v}),Cr({document$:v}),function(t){var e=t.document$,n=document.createElement("table");e.pipe(ut((function(){return an("table:not([class])")}))).subscribe((function(t){var e,r,i;try{for(var o=u(t),s=o.next();!s.done;s=o.next()){var c=s.value;c.replaceWith(n),n.replaceWith((i=c,qn("div",{class:lr.wrapper},qn("div",{class:lr.table},i))))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}}))}({document$:v}),$r({document$:v});var A,C,N,I=function(t){var e=(void 0===t?{}:t).duration,n=new St,r=document.createElement("div");return r.classList.add("md-dialog","md-typeset"),n.pipe(Vt((function(t){return lt(document.body).pipe(ut((function(t){return t.appendChild(r)})),Ct(ot),Bt(1),zt((function(e){e.innerHTML=t,e.setAttribute("data-md-state","open")})),Bt(e||2e3),zt((function(t){return t.removeAttribute("data-md-state")})),Bt(400),zt((function(t){t.innerHTML="",t.remove()})))}))).subscribe(),n}(),P=function(t){var e=t.document$,r=t.dialog$;if(!kr.isSupported())return ft;e.subscribe((function(){var t,e,r,i,o=an("pre > code");try{for(var c=u(o.entries()),a=c.next();!a.done;a=c.next()){var l=s(a.value,2),f=l[0],h=l[1],p=h.parentElement;p.id="__code_"+f,p.insertBefore((r=p.id,i=void 0,i=n(7),qn("button",{class:nr.container,title:Dn("clipboard.copy"),"data-clipboard-target":"#"+r+" code"},qn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},qn("path",{d:i})))),h)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=c.return)&&e.call(c)}finally{if(t)throw t.error}}}));var i=hn((function(t){new kr(".md-clipboard").on("success",t)})).pipe(ve());return i.pipe(zt((function(t){return t.clearSelection()})),Qt(Dn("clipboard.copied"))).subscribe(r),i}({document$:v,dialog$:I});function M(t){return t.pathname===location.pathname&&t.hash.length>0}if(f.subscribe((function(){hr("drawer").subscribe((function(t){pr(t,!1)}))})),f.pipe(Vt((function(t){return hr("search").pipe(Dt((function(t){return t.checked})),zt((function(t){return pr(t,!1)})),Bt(125),Qt(t))}))).subscribe((function(t){un('[id="'+t+'"]').scrollIntoView()})),Q([hr("search").pipe(Vt(dr)),p]).pipe(ee(h),Vt((function(t){var e=s(t,2),n=s(e[0],2),r=n[0],i=n[1],o=e[1].offset.y,u=r&&!i;return v.pipe(Bt(u?400:100),Ct(ot),zt((function(t){var e=t.body;return u?function(t,e){t.setAttribute("data-md-state","lock"),t.style.top="-"+e+"px"}(e,o):function(t){var e=-1*parseInt(t.style.top,10);t.removeAttribute("data-md-state"),t.style.top="",e&&window.scrollTo(0,e)}(e)})))}))).subscribe(),t.feature.instant){"scrollRestoration"in history&&(history.scrollRestoration="manual");try{for(var H=u(['link[rel="shortcut icon"]','link[rel="stylesheet"]']),L=H.next();!L.done;L=H.next()){var V=L.value;try{for(var q=(i=void 0,u(an(V))),R=q.next();!R.done;R=q.next()){var D=R.value;D.href=D.href}}catch(t){i={error:t}}finally{try{R&&!R.done&&(a=q.return)&&a.call(q)}finally{if(i)throw i.error}}}}catch(t){e={error:t}}finally{try{L&&!L.done&&(r=H.return)&&r.call(H)}finally{if(e)throw e.error}}var F=at(document.body,"click").pipe(Dt((function(t){return!(t.metaKey||t.ctrlKey)})),Vt((function(t){if(t.target instanceof HTMLElement){var e=t.target.closest("a");if(e&&function(t){return t.host===location.host&&(!t.pathname||"/"===t.pathname||/\/[\w-]+(?:\/?|\.html)$/i.test(t.pathname))}(e))return M(e)||t.preventDefault(),lt(e.href)}return ft})),ie(),ut((function(t){return{url:new URL(t)}})),ve()),U=F.pipe(Dt((function(t){return!M(t.url)})),ve()),Y=at(window,"popstate").pipe(Dt((function(t){return null!==t.state})),ut((function(t){return{url:new URL(location.href),data:t.state}})),ve());mt(U,Y).pipe(ye("url")).subscribe(l),F.pipe(ie((function(t,e){var n=t.url,r=e.url;return n.href===r.href})),Dt((function(t){return!M(t.url)}))).subscribe((function(t){var e=t.url;history.pushState({},"",e.toString())})),mt(F,Y).pipe(be(2,1)).subscribe((function(t){var e=s(t,2),n=e[0],r=e[1];console.log("<- "+n.url),console.log("-> "+r.url),null!==n.url.href.match(r.url.href)&&M(n.url)&&vn(r.data||{y:0})})),h.pipe((C=250,void 0===N&&(N=Wt),function(t){return t.lift(new xe(C,N))}),Ee("offset")).subscribe((function(t){var e=t.offset;history.replaceState(e,"")})),mt(U,Y).pipe((A=v,function(t){return t.lift(new Te(A))}),ee(v)).subscribe((function(t){var e,n,r=s(t,2),i=r[0],o=i.url,c=i.data,a=r[1],l=a.title,f=a.head;console.log("Done",o.href,c),document.dispatchEvent(new CustomEvent("DOMContentSwitch")),document.title=l;try{for(var h=u(['link[rel="canonical"]','meta[name="author"]','meta[name="description"]']),p=h.next();!p.done;p=h.next()){var d=p.value,v=un(d,f),y=un(d,document.head);void 0!==v&&void 0!==y&&y.replaceWith(v)}}catch(t){e={error:t}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(e)throw e.error}}if(hr("search").subscribe((function(t){pr(t,!1)})),o.hash){console.log("hash data?",c);var b=document.createElement("a");b.href=o.hash,b.click()}else vn(c||{y:0})})),Y.subscribe((function(t){var e=t.url;console.log("Popstate "+e.href,e)}))}$.pipe(Dt((function(t){return"global"===t.mode&&["Tab"].includes(t.type)})),je(1)).subscribe((function(){var t,e;try{for(var n=u(an(".headerlink")),r=n.next();!r.done;r=n.next()){r.value.style.visibility="visible"}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=n.return)&&e.call(n)}finally{if(t)throw t.error}}}));var X={search$:S,clipboard$:P,location$:l,hash$:f,keyboard$:$,dialog$:I,main$:m,navigation$:E,toc$:T,tabs$:k,hero$:O,title$:j},W=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(t);i 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(_tinyEmitter2.default);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\nmodule.exports = Clipboard;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _select = __webpack_require__(2);\n\nvar _select2 = _interopRequireDefault(_select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nvar ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\nmodule.exports = ClipboardAction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(5);\nvar delegate = __webpack_require__(6);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(7);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ })\n/******/ ]);\n});","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _has from './_has.js';\n\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\nimport _isArguments from './internal/_isArguments.js';\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _curry1 from './internal/_curry1.js';\nimport keys from './keys.js';\n\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\nvar values = /*#__PURE__*/_curry1(function values(obj) {\n var props = keys(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n return vals;\n});\nexport default values;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) {\n destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = null;\n var scheduler = null;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\nimport { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrame = /*@__PURE__*/ new AnimationFrameScheduler(AnimationFrameAction);\n//# sourceMappingURL=animationFrame.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queue = /*@__PURE__*/ new QueueScheduler(QueueAction);\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime: windowTime,\n refCount: false,\n scheduler: scheduler\n };\n }\n return function (source) { return source.lift(shareReplayOperator(config)); };\n}\nfunction shareReplayOperator(_a) {\n var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;\n var subject;\n var refCount = 0;\n var subscription;\n var hasError = false;\n var isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next: function (value) { subject.next(value); },\n error: function (err) {\n hasError = true;\n subject.error(err);\n },\n complete: function () {\n isComplete = true;\n subject.complete();\n },\n });\n }\n var innerSub = subject.subscribe(this);\n this.add(function () {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nvar SwitchMapOperator = /*@__PURE__*/ (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = subscribeToResult(this, result, value, index, innerSubscriber);\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var async = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n var absoluteDelay = isDate(delay);\n var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nvar DelayOperator = /*@__PURE__*/ (function () {\n function DelayOperator(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n DelayOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n };\n return DelayOperator;\n}());\nvar DelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelaySubscriber, _super);\n function DelaySubscriber(destination, delay, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.delay = delay;\n _this.scheduler = scheduler;\n _this.queue = [];\n _this.active = false;\n _this.errored = false;\n return _this;\n }\n DelaySubscriber.dispatch = function (state) {\n var source = state.source;\n var queue = source.queue;\n var scheduler = state.scheduler;\n var destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay_1);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n };\n DelaySubscriber.prototype._schedule = function (scheduler) {\n this.active = true;\n var destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n };\n DelaySubscriber.prototype.scheduleNotification = function (notification) {\n if (this.errored === true) {\n return;\n }\n var scheduler = this.scheduler;\n var message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n };\n DelaySubscriber.prototype._next = function (value) {\n this.scheduleNotification(Notification.createNext(value));\n };\n DelaySubscriber.prototype._error = function (err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n };\n DelaySubscriber.prototype._complete = function () {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n };\n return DelaySubscriber;\n}(Subscriber));\nvar DelayMessage = /*@__PURE__*/ (function () {\n function DelayMessage(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = /*@__PURE__*/ (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (source) {\n var project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n var observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nvar WithLatestFromOperator = /*@__PURE__*/ (function () {\n function WithLatestFromOperator(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n WithLatestFromOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n };\n return WithLatestFromOperator;\n}());\nvar WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WithLatestFromSubscriber, _super);\n function WithLatestFromSubscriber(destination, observables, project) {\n var _this = _super.call(this, destination) || this;\n _this.observables = observables;\n _this.project = project;\n _this.toRespond = [];\n var len = observables.length;\n _this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n _this.toRespond.push(i);\n }\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n _this.add(subscribeToResult(_this, observable, observable, i));\n }\n return _this;\n }\n WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n var toRespond = this.toRespond;\n if (toRespond.length > 0) {\n var found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n };\n WithLatestFromSubscriber.prototype.notifyComplete = function () {\n };\n WithLatestFromSubscriber.prototype._next = function (value) {\n if (this.toRespond.length === 0) {\n var args = [value].concat(this.values);\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n };\n WithLatestFromSubscriber.prototype._tryProject = function (args) {\n var result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return WithLatestFromSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = /*@__PURE__*/ (function () {\n function DistinctUntilChangedOperator(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n };\n return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctUntilChangedSubscriber, _super);\n function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.hasKey = false;\n if (typeof compare === 'function') {\n _this.compare = compare;\n }\n return _this;\n }\n DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n return x === y;\n };\n DistinctUntilChangedSubscriber.prototype._next = function (value) {\n var key;\n try {\n var keySelector = this.keySelector;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n var result = false;\n if (this.hasKey) {\n try {\n var compare = this.compare;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n };\n return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n var connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return function (source) { return refCount()(multicast(shareSubjectFactory)(source)); };\n}\n//# sourceMappingURL=share.js.map\n","/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) {\n startBufferEvery = null;\n }\n return function bufferCountOperatorFunction(source) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\nvar BufferCountOperator = /*@__PURE__*/ (function () {\n function BufferCountOperator(bufferSize, startBufferEvery) {\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n }\n else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n BufferCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n };\n return BufferCountOperator;\n}());\nvar BufferCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferCountSubscriber, _super);\n function BufferCountSubscriber(destination, bufferSize) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.buffer = [];\n return _this;\n }\n BufferCountSubscriber.prototype._next = function (value) {\n var buffer = this.buffer;\n buffer.push(value);\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n };\n BufferCountSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n return BufferCountSubscriber;\n}(Subscriber));\nvar BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferSkipCountSubscriber, _super);\n function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.startBufferEvery = startBufferEvery;\n _this.buffers = [];\n _this.count = 0;\n return _this;\n }\n BufferSkipCountSubscriber.prototype._next = function (value) {\n var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n for (var i = buffers.length; i--;) {\n var buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n };\n BufferSkipCountSubscriber.prototype._complete = function () {\n var _a = this, buffers = _a.buffers, destination = _a.destination;\n while (buffers.length > 0) {\n var buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n _super.prototype._complete.call(this);\n };\n return BufferSkipCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=bufferCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nvar DebounceTimeOperator = /*@__PURE__*/ (function () {\n function DebounceTimeOperator(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n DebounceTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n };\n return DebounceTimeOperator;\n}());\nvar DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DebounceTimeSubscriber, _super);\n function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.dueTime = dueTime;\n _this.scheduler = scheduler;\n _this.debouncedSubscription = null;\n _this.lastValue = null;\n _this.hasValue = false;\n return _this;\n }\n DebounceTimeSubscriber.prototype._next = function (value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n };\n DebounceTimeSubscriber.prototype._complete = function () {\n this.debouncedNext();\n this.destination.complete();\n };\n DebounceTimeSubscriber.prototype.debouncedNext = function () {\n this.clearDebounce();\n if (this.hasValue) {\n var lastValue = this.lastValue;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n };\n DebounceTimeSubscriber.prototype.clearDebounce = function () {\n var debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n };\n return DebounceTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map\n","/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */\nimport { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function sample(notifier) {\n return function (source) { return source.lift(new SampleOperator(notifier)); };\n}\nvar SampleOperator = /*@__PURE__*/ (function () {\n function SampleOperator(notifier) {\n this.notifier = notifier;\n }\n SampleOperator.prototype.call = function (subscriber, source) {\n var sampleSubscriber = new SampleSubscriber(subscriber);\n var subscription = source.subscribe(sampleSubscriber);\n subscription.add(subscribeToResult(sampleSubscriber, this.notifier));\n return subscription;\n };\n return SampleOperator;\n}());\nvar SampleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SampleSubscriber, _super);\n function SampleSubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasValue = false;\n return _this;\n }\n SampleSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n };\n SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n SampleSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n SampleSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.value);\n }\n };\n return SampleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=sample.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nvar TakeOperator = /*@__PURE__*/ (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map\n","/** PURE_IMPORTS_START tslib,_.._util_root,_.._Observable,_.._Subscriber,_.._operators_map PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { root } from '../../util/root';\nimport { Observable } from '../../Observable';\nimport { Subscriber } from '../../Subscriber';\nimport { map } from '../../operators/map';\nfunction getCORSRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else if (!!root.XDomainRequest) {\n return new root.XDomainRequest();\n }\n else {\n throw new Error('CORS is not supported by your browser');\n }\n}\nfunction getXMLHttpRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else {\n var progId = void 0;\n try {\n var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n for (var i = 0; i < 3; i++) {\n try {\n progId = progIds[i];\n if (new root.ActiveXObject(progId)) {\n break;\n }\n }\n catch (e) {\n }\n }\n return new root.ActiveXObject(progId);\n }\n catch (e) {\n throw new Error('XMLHttpRequest is not supported by your browser');\n }\n }\n}\nexport function ajaxGet(url, headers) {\n if (headers === void 0) {\n headers = null;\n }\n return new AjaxObservable({ method: 'GET', url: url, headers: headers });\n}\nexport function ajaxPost(url, body, headers) {\n return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers });\n}\nexport function ajaxDelete(url, headers) {\n return new AjaxObservable({ method: 'DELETE', url: url, headers: headers });\n}\nexport function ajaxPut(url, body, headers) {\n return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers });\n}\nexport function ajaxPatch(url, body, headers) {\n return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers });\n}\nvar mapResponse = /*@__PURE__*/ map(function (x, index) { return x.response; });\nexport function ajaxGetJSON(url, headers) {\n return mapResponse(new AjaxObservable({\n method: 'GET',\n url: url,\n responseType: 'json',\n headers: headers\n }));\n}\nvar AjaxObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxObservable, _super);\n function AjaxObservable(urlOrRequest) {\n var _this = _super.call(this) || this;\n var request = {\n async: true,\n createXHR: function () {\n return this.crossDomain ? getCORSRequest() : getXMLHttpRequest();\n },\n crossDomain: true,\n withCredentials: false,\n headers: {},\n method: 'GET',\n responseType: 'json',\n timeout: 0\n };\n if (typeof urlOrRequest === 'string') {\n request.url = urlOrRequest;\n }\n else {\n for (var prop in urlOrRequest) {\n if (urlOrRequest.hasOwnProperty(prop)) {\n request[prop] = urlOrRequest[prop];\n }\n }\n }\n _this.request = request;\n return _this;\n }\n AjaxObservable.prototype._subscribe = function (subscriber) {\n return new AjaxSubscriber(subscriber, this.request);\n };\n AjaxObservable.create = (function () {\n var create = function (urlOrRequest) {\n return new AjaxObservable(urlOrRequest);\n };\n create.get = ajaxGet;\n create.post = ajaxPost;\n create.delete = ajaxDelete;\n create.put = ajaxPut;\n create.patch = ajaxPatch;\n create.getJSON = ajaxGetJSON;\n return create;\n })();\n return AjaxObservable;\n}(Observable));\nexport { AjaxObservable };\nvar AjaxSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxSubscriber, _super);\n function AjaxSubscriber(destination, request) {\n var _this = _super.call(this, destination) || this;\n _this.request = request;\n _this.done = false;\n var headers = request.headers = request.headers || {};\n if (!request.crossDomain && !_this.getHeader(headers, 'X-Requested-With')) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n var contentTypeHeader = _this.getHeader(headers, 'Content-Type');\n if (!contentTypeHeader && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n request.body = _this.serializeBody(request.body, _this.getHeader(request.headers, 'Content-Type'));\n _this.send();\n return _this;\n }\n AjaxSubscriber.prototype.next = function (e) {\n this.done = true;\n var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination;\n var result;\n try {\n result = new AjaxResponse(e, xhr, request);\n }\n catch (err) {\n return destination.error(err);\n }\n destination.next(result);\n };\n AjaxSubscriber.prototype.send = function () {\n var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body;\n try {\n var xhr = this.xhr = request.createXHR();\n this.setupEvents(xhr, request);\n if (user) {\n xhr.open(method, url, async, user, password);\n }\n else {\n xhr.open(method, url, async);\n }\n if (async) {\n xhr.timeout = request.timeout;\n xhr.responseType = request.responseType;\n }\n if ('withCredentials' in xhr) {\n xhr.withCredentials = !!request.withCredentials;\n }\n this.setHeaders(xhr, headers);\n if (body) {\n xhr.send(body);\n }\n else {\n xhr.send();\n }\n }\n catch (err) {\n this.error(err);\n }\n };\n AjaxSubscriber.prototype.serializeBody = function (body, contentType) {\n if (!body || typeof body === 'string') {\n return body;\n }\n else if (root.FormData && body instanceof root.FormData) {\n return body;\n }\n if (contentType) {\n var splitIndex = contentType.indexOf(';');\n if (splitIndex !== -1) {\n contentType = contentType.substring(0, splitIndex);\n }\n }\n switch (contentType) {\n case 'application/x-www-form-urlencoded':\n return Object.keys(body).map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(body[key]); }).join('&');\n case 'application/json':\n return JSON.stringify(body);\n default:\n return body;\n }\n };\n AjaxSubscriber.prototype.setHeaders = function (xhr, headers) {\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n AjaxSubscriber.prototype.getHeader = function (headers, headerName) {\n for (var key in headers) {\n if (key.toLowerCase() === headerName.toLowerCase()) {\n return headers[key];\n }\n }\n return undefined;\n };\n AjaxSubscriber.prototype.setupEvents = function (xhr, request) {\n var progressSubscriber = request.progressSubscriber;\n function xhrTimeout(e) {\n var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxTimeoutError(this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n xhr.ontimeout = xhrTimeout;\n xhrTimeout.request = request;\n xhrTimeout.subscriber = this;\n xhrTimeout.progressSubscriber = progressSubscriber;\n if (xhr.upload && 'withCredentials' in xhr) {\n if (progressSubscriber) {\n var xhrProgress_1;\n xhrProgress_1 = function (e) {\n var progressSubscriber = xhrProgress_1.progressSubscriber;\n progressSubscriber.next(e);\n };\n if (root.XDomainRequest) {\n xhr.onprogress = xhrProgress_1;\n }\n else {\n xhr.upload.onprogress = xhrProgress_1;\n }\n xhrProgress_1.progressSubscriber = progressSubscriber;\n }\n var xhrError_1;\n xhrError_1 = function (e) {\n var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxError('ajax error', this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n };\n xhr.onerror = xhrError_1;\n xhrError_1.request = request;\n xhrError_1.subscriber = this;\n xhrError_1.progressSubscriber = progressSubscriber;\n }\n function xhrReadyStateChange(e) {\n return;\n }\n xhr.onreadystatechange = xhrReadyStateChange;\n xhrReadyStateChange.subscriber = this;\n xhrReadyStateChange.progressSubscriber = progressSubscriber;\n xhrReadyStateChange.request = request;\n function xhrLoad(e) {\n var _a = xhrLoad, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (this.readyState === 4) {\n var status_1 = this.status === 1223 ? 204 : this.status;\n var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response);\n if (status_1 === 0) {\n status_1 = response ? 200 : 0;\n }\n if (status_1 < 400) {\n if (progressSubscriber) {\n progressSubscriber.complete();\n }\n subscriber.next(e);\n subscriber.complete();\n }\n else {\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error = void 0;\n try {\n error = new AjaxError('ajax error ' + status_1, this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n }\n }\n xhr.onload = xhrLoad;\n xhrLoad.subscriber = this;\n xhrLoad.progressSubscriber = progressSubscriber;\n xhrLoad.request = request;\n };\n AjaxSubscriber.prototype.unsubscribe = function () {\n var _a = this, done = _a.done, xhr = _a.xhr;\n if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') {\n xhr.abort();\n }\n _super.prototype.unsubscribe.call(this);\n };\n return AjaxSubscriber;\n}(Subscriber));\nexport { AjaxSubscriber };\nvar AjaxResponse = /*@__PURE__*/ (function () {\n function AjaxResponse(originalEvent, xhr, request) {\n this.originalEvent = originalEvent;\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n }\n return AjaxResponse;\n}());\nexport { AjaxResponse };\nvar AjaxErrorImpl = /*@__PURE__*/ (function () {\n function AjaxErrorImpl(message, xhr, request) {\n Error.call(this);\n this.message = message;\n this.name = 'AjaxError';\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n return this;\n }\n AjaxErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return AjaxErrorImpl;\n})();\nexport var AjaxError = AjaxErrorImpl;\nfunction parseJson(xhr) {\n if ('response' in xhr) {\n return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null');\n }\n else {\n return JSON.parse(xhr.responseText || 'null');\n }\n}\nfunction parseXhrResponse(responseType, xhr) {\n switch (responseType) {\n case 'json':\n return parseJson(xhr);\n case 'xml':\n return xhr.responseXML;\n case 'text':\n default:\n return ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n}\nfunction AjaxTimeoutErrorImpl(xhr, request) {\n AjaxError.call(this, 'ajax timeout', xhr, request);\n this.name = 'AjaxTimeoutError';\n return this;\n}\nexport var AjaxTimeoutError = AjaxTimeoutErrorImpl;\n//# sourceMappingURL=AjaxObservable.js.map\n","/** PURE_IMPORTS_START _AjaxObservable PURE_IMPORTS_END */\nimport { AjaxObservable } from './AjaxObservable';\nexport var ajax = /*@__PURE__*/ (function () { return AjaxObservable.create; })();\n//# sourceMappingURL=ajax.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return function (source) { return source.lift(new SkipOperator(count)); };\n}\nvar SkipOperator = /*@__PURE__*/ (function () {\n function SkipOperator(total) {\n this.total = total;\n }\n SkipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n };\n return SkipOperator;\n}());\nvar SkipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipSubscriber, _super);\n function SkipSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n SkipSubscriber.prototype._next = function (x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n };\n return SkipSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skip.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { BehaviorSubject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function will return a `URL` object (and not `Location`) in order to\n * normalize typings across the application. Furthermore, locations need to be\n * tracked without setting them and `Location` is a singleton which represents\n * the current location.\n *\n * @return URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @return Location subject\n */\nexport function watchLocation(): BehaviorSubject {\n return new BehaviorSubject(getLocation())\n}\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return function (source) { return concat(array, source, scheduler); };\n }\n else {\n return function (source) { return concat(array, source); };\n }\n}\n//# sourceMappingURL=startWith.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @return Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @return Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n catchError,\n distinctUntilKeyChanged,\n pluck,\n share,\n skip,\n switchMap\n} from \"rxjs/operators\"\n\nimport { setLocation } from \"../../location\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document switch\n *\n * This function returns an observables that fetches a document if the provided\n * location observable emits a new value (i.e. URL). If the emitted URL points\n * to the same page, the request is effectively ignored (i.e. when only the\n * fragment identifier changes).\n *\n * In case the request fails, the location change is dispatched regularly.\n *\n * @param options - Options\n *\n * @return Document switch observable\n */\nexport function watchDocumentSwitch(\n { location$ }: WatchOptions\n): Observable {\n return location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n skip(1),\n\n /* Fetch document */\n switchMap(url => ajax({\n url: url.href,\n responseType: \"document\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\"),\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay } from \"rxjs/operators\"\n\nimport { watchDocumentSwitch } from \"../switch\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$?: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * If the location observable is passed, instant loading will be enabled which\n * means that new values will be emitted every time the location changes.\n *\n * @return Document observable\n */\nexport function watchDocument(\n { location$ }: WatchOptions = {}\n): Observable {\n return merge(\n fromEvent(document, \"DOMContentLoaded\")\n .pipe(\n mapTo(document)\n ),\n typeof location$ !== \"undefined\"\n ? watchDocumentSwitch({ location$ })\n : NEVER\n )\n .pipe(\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element or nothing\n */\nexport function getElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element\n */\nexport function getElementOrThrow(\n selector: string, node: ParentNode = document\n): T {\n const el = getElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n return el\n}\n\n/**\n * Retrieve the currently active element\n *\n * @return Element\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : undefined\n}\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Elements\n */\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay, startWith } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element focus\n *\n * @param el - Element\n * @param value - Whether the element should be focused\n *\n * @return Element offset\n */\nexport function setElementFocus(\n el: HTMLElement, value: boolean = true\n): void {\n if (value)\n el.focus()\n else\n el.blur()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * @param el - Element\n *\n * @return Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n const focus$ = fromEvent(el, \"focus\")\n const blur$ = fromEvent(el, \"blur\")\n\n /* Map events to boolean state */\n return merge(\n focus$.pipe(mapTo(true)),\n blur$.pipe(mapTo(false))\n )\n .pipe(\n startWith(el === getActiveElement()),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @return Element offset\n */\nexport function getElementOffset(el: HTMLElement): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @return Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el)),\n shareReplay(1)\n )\n}\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEventPattern } from \"rxjs\"\nimport { shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * @param query - Media query\n *\n * @return Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next =>\n media.addListener(() => next(media.matches))\n )\n .pipe(\n startWith(media.matches),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @return Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, pageXOffset),\n y: Math.max(0, pageYOffset)\n }\n}\n\n/**\n * Set viewport offset\n *\n * @param offset - Viewport offset\n */\nexport function setViewportOffset(\n { x, y }: Partial\n): void {\n window.scrollTo(x || 0, y || 0)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @return Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @return Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @return Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\")\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n shareReplay\n} from \"rxjs/operators\"\n\nimport { Header } from \"../../../header\"\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch relative options\n */\ninterface WatchRelativeOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @return Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @return Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { header$, viewport$ }: WatchRelativeOptions\n): Observable {\n const offset$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => ({\n x: el.offsetLeft,\n y: el.offsetTop\n }))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n })),\n shareReplay(1)\n )\n}\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config) {\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nvar ThrottleOperator = /*@__PURE__*/ (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\nvar ThrottleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.durationSelector = durationSelector;\n _this._leading = _leading;\n _this._trailing = _trailing;\n _this._hasValue = false;\n return _this;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n };\n ThrottleSubscriber.prototype.send = function () {\n var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = null;\n };\n ThrottleSubscriber.prototype.throttle = function (value) {\n var duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = subscribeToResult(this, duration));\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype.throttlingDone = function () {\n var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = null;\n if (_trailing) {\n this.send();\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.throttlingDone();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this.throttlingDone();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=throttle.js.map\n","/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, fromEventPattern } from \"rxjs\"\nimport {\n pluck,\n share,\n switchMapTo,\n tap,\n throttle\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that will send all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @return Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEventPattern(next =>\n worker.addEventListener(\"message\", next)\n )\n .pipe(\n pluck(\"data\")\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMapTo(rx$),\n share()\n )\n}\n","import _curry1 from './internal/_curry1.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\nvar reverse = /*#__PURE__*/_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\nexport default reverse;","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n var hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nvar ScanOperator = /*@__PURE__*/ (function () {\n function ScanOperator(accumulator, seed, hasSeed) {\n if (hasSeed === void 0) {\n hasSeed = false;\n }\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n ScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n };\n return ScanOperator;\n}());\nvar ScanSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ScanSubscriber, _super);\n function ScanSubscriber(destination, accumulator, _seed, hasSeed) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this._seed = _seed;\n _this.hasSeed = hasSeed;\n _this.index = 0;\n return _this;\n }\n Object.defineProperty(ScanSubscriber.prototype, \"seed\", {\n get: function () {\n return this._seed;\n },\n set: function (value) {\n this.hasSeed = true;\n this._seed = value;\n },\n enumerable: true,\n configurable: true\n });\n ScanSubscriber.prototype._next = function (value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n };\n ScanSubscriber.prototype._tryNext = function (value) {\n var index = this.index++;\n var result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n };\n return ScanSubscriber;\n}(Subscriber));\n//# sourceMappingURL=scan.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Translations\n */\nlet lang: Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Translate the given key\n *\n * @param key - Key to be translated\n * @param value - Value to be replaced\n *\n * @return Translation\n */\nexport function translate(key: string, value?: string): string {\n if (typeof lang === \"undefined\") {\n const el = getElementOrThrow(\"#__lang\")\n lang = JSON.parse(el.innerText)\n }\n if (typeof lang[key] === \"undefined\") {\n throw new ReferenceError(`Invalid translation: ${key}`)\n }\n return typeof value !== \"undefined\"\n ? lang[key].replace(\"#\", value)\n : lang[key]\n}\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @return Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0); // tslint:disable-line\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with source facts\n *\n * This is a reverse engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @return Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 1) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n\n/**\n * Simple hash function\n *\n * @see https://bit.ly/2wsVjJ4 - Original source\n *\n * @param value - Value to be hashed\n *\n * @return Hash as 32bit integer\n */\nexport function hash(value: string): number {\n let h = 0\n for (let i = 0, len = value.length; i < len; i++) {\n h = ((h << 5) - h) + value.charCodeAt(i)\n h |= 0 // Convert to 32bit integer\n }\n return h\n }\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set anchor blur\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is blurred\n */\nexport function setAnchorBlur(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"blur\" : \"\")\n}\n\n/**\n * Reset anchor blur\n *\n * @param el - Anchor element\n */\nexport function resetAnchorBlur(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set anchor active\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is active\n */\nexport function setAnchorActive(\n el: HTMLElement, value: boolean\n): void {\n el.classList.toggle(\"md-nav__link--active\", value)\n}\n\n/**\n * Reset anchor active\n *\n * @param el - Anchor element\n */\nexport function resetAnchorActive(\n el: HTMLElement\n): void {\n el.classList.remove(\"md-nav__link--active\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar offset\n *\n * @param el - Sidebar element\n * @param value - Sidebar offset\n */\nexport function setSidebarOffset(\n el: HTMLElement, value: number\n): void {\n el.style.top = `${value}px`\n}\n\n/**\n * Reset sidebar offset\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarOffset(\n el: HTMLElement\n): void {\n el.style.top = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar height\n *\n * @param el - Sidebar element\n * @param value - Sidebar height\n */\nexport function setSidebarHeight(\n el: HTMLElement, value: number\n): void {\n el.style.height = `${value}px`\n}\n\n/**\n * Reset sidebar height\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarHeight(\n el: HTMLElement\n): void {\n el.style.height = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar lock\n *\n * @param el - Sidebar element\n * @param value - Whether the sidebar is locked\n */\nexport function setSidebarLock(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"lock\" : \"\")\n}\n\n/**\n * Reset sidebar lock\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarLock(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Global augmentations\n */\ndeclare global {\n interface CSSStyleDeclaration {\n webkitOverflowScrolling: \"touch\" | \"\"\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function setOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"touch\"\n}\n\n/**\n * Reset overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function resetOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set scroll lock\n *\n * @param el - Scrollable element\n * @param value - Vertical offset\n */\nexport function setScrollLock(\n el: HTMLElement, value: number\n): void {\n el.setAttribute(\"data-md-state\", \"lock\")\n el.style.top = `-${value}px`\n}\n\n/**\n * Reset scroll lock\n *\n * @param el - Scrollable element\n */\nexport function resetScrollLock(\n el: HTMLElement\n): void {\n const value = -1 * parseInt(el.style.top, 10)\n el.removeAttribute(\"data-md-state\")\n el.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// tslint:disable no-null-keyword\n\nimport { JSX as JSXInternal } from \"preact\"\nimport { keys } from \"ramda\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML and SVG attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | SVGElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create an element\n *\n * @param tag - HTML or SVG tag\n *\n * @return Element\n */\nfunction createElement(tag: string): HTMLElement | SVGElement {\n switch (tag) {\n\n /* SVG elements */\n case \"svg\":\n case \"path\":\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n\n /* HTML elements */\n default:\n return document.createElement(tag)\n }\n}\n\n/**\n * Set an attribute\n *\n * @param el - Element\n * @param name - Attribute name\n * @param value - Attribute value\n */\nfunction setAttribute(\n el: HTMLElement | SVGElement, name: string, value: string) {\n switch (name) {\n\n /* Attributes to be ignored */\n case \"xmlns\":\n break\n\n /* Attributes of SVG elements */\n case \"viewBox\":\n case \"d\":\n if (typeof value !== \"boolean\")\n el.setAttributeNS(null, name, value)\n else if (value)\n el.setAttributeNS(null, name, \"\")\n break\n\n /* Attributes of HTML elements */\n default:\n if (typeof value !== \"boolean\")\n el.setAttribute(name, value)\n else if (value)\n el.setAttribute(name, \"\")\n }\n}\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(\n el: HTMLElement | SVGElement, child: Child | Child[]\n): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @param tag - HTML or SVG tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @return Element\n */\nexport function h(\n tag: string, attributes: Attributes | null, ...children: Child[]\n): HTMLElement | SVGElement {\n const el = createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of keys(attributes))\n setAttribute(el, attr, attributes[attr])\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement | SVGElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set number of search results\n *\n * @param el - Search result metadata element\n * @param value - Number of results\n */\nexport function setSearchResultMeta(\n el: HTMLElement, value: number\n): void {\n switch (value) {\n\n /* No results */\n case 0:\n el.textContent = translate(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n el.textContent = translate(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n el.textContent = translate(\"search.result.other\", value.toString())\n }\n}\n\n/**\n * Reset number of search results\n *\n * @param el - Search result metadata element\n */\nexport function resetSearchResultMeta(\n el: HTMLElement\n): void {\n el.textContent = translate(\"search.result.placeholder\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Add an element to the search result list\n *\n * @param el - Search result list element\n * @param child - Search result element\n */\nexport function addToSearchResultList(\n el: HTMLElement, child: HTMLElement\n): void {\n el.appendChild(child)\n}\n\n/**\n * Reset search result list\n *\n * @param el - Search result list element\n */\nexport function resetSearchResultList(\n el: HTMLElement\n): void {\n el.innerHTML = \"\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, animationFrameScheduler, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n tap\n} from \"rxjs/operators\"\n\nimport { resetHidden, setHidden } from \"actions\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint hideable\n *\n * @param el - Hideable element\n * @param offset - Additional offset\n *\n * @return Operator function\n */\nexport function paintHideable(\n el: HTMLElement, offset: number = 0\n): OperatorFunction {\n return pipe(\n map(({ offset: { y } }) => y >= offset),\n distinctUntilChanged(),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(value => {\n setHidden(el, value)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHidden(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set hidden\n *\n * @param el - Hideable element\n * @param value - Whether the element is hidden\n */\nexport function setHidden(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"hidden\" : \"\")\n}\n\n/**\n * Reset hidden\n *\n * @param el - Hideable element\n */\nexport function resetHidden(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n resetSidebarHeight,\n resetSidebarLock,\n resetSidebarOffset,\n setSidebarHeight,\n setSidebarLock,\n setSidebarOffset\n} from \"actions\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\nimport { Main } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n lock: boolean /* Sidebar lock */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { main$, viewport$ }: WatchOptions\n): Observable {\n\n /* Adjust for internal main area offset */\n const adjust$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => parseFloat(\n getComputedStyle(el.parentElement!)\n .getPropertyValue(\"padding-top\")\n )),\n distinctUntilChanged()\n )\n\n /* Compute the sidebar's available height */\n const height$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset, height }]) => (\n height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n )),\n distinctUntilChanged()\n )\n\n /* Compute whether the sidebar should be locked */\n const lock$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset }]) => (\n y >= offset + adjust\n )),\n distinctUntilChanged()\n )\n\n /* Combine into single observable */\n return combineLatest([height$, lock$])\n .pipe(\n map(([height, lock]) => ({ height, lock }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint sidebar\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSidebar(\n el: HTMLElement, { header$ }: PaintOptions\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n withLatestFrom(header$),\n tap(([{ height, lock }, { height: offset }]) => {\n setSidebarHeight(el, height)\n setSidebarLock(el, lock)\n\n /* Set offset in locked state depending on header height */\n if (lock)\n setSidebarOffset(el, offset)\n else\n resetSidebarOffset(el)\n }),\n\n /* Re-map to sidebar */\n map(([sidebar]) => sidebar),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSidebarOffset(el)\n resetSidebarHeight(el)\n resetSidebarLock(el)\n })\n )\n}\n","import _curry1 from './_curry1.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from './_isArray.js';\nimport _isTransformer from './_isTransformer.js';\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindLast = /*#__PURE__*/function () {\n function XFindLast(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFindLast.prototype['@@transducer/init'] = _xfBase.init;\n XFindLast.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));\n };\n XFindLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.last = input;\n }\n return result;\n };\n\n return XFindLast;\n}();\n\nvar _xfindLast = /*#__PURE__*/_curry2(function _xfindLast(f, xf) {\n return new XFindLast(f, xf);\n});\nexport default _xfindLast;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindLast from './internal/_xfindLast.js';\n\n/**\n * Returns the last element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1}\n * R.findLast(R.propEq('a', 4))(xs); //=> undefined\n */\nvar findLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLast, function findLast(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx -= 1;\n }\n}));\nexport default findLast;","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest, fromEvent, merge } from \"rxjs\"\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith\n} from \"rxjs/operators\"\n\nimport { watchElementFocus } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * Rogue control characters are filtered before handing the query to the\n * search index, as `lunr` will throw otherwise.\n *\n * @param value - Query value\n *\n * @return Transformed query value\n */\nfunction defaultTransform(value: string): string {\n return value\n .replace(/(?:^|\\s+)[*+-:^~]+(?=\\s+|$)/g, \"\")\n .trim()\n .replace(/\\s+|\\b$/g, \"* \")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @return Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { transform }: WatchOptions = {}\n): Observable {\n const fn = transform || defaultTransform\n\n /* Intercept keyboard events */\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1))\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(fn(el.value)),\n distinctUntilChanged()\n )\n\n /* Intercept focus events */\n const focus$ = watchElementFocus(el)\n\n /* Combine into a single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h, translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n container: \"md-clipboard md-icon\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @return Element\n */\nexport function renderClipboard(\n id: string\n) {\n const path = require(\"material-design-icons-svg/paths/content-copy.json\")\n return (\n \n \n \n \n \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchResult } from \"integrations/search\"\nimport { h, truncate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n item: \"md-search-result__item\",\n link: \"md-search-result__link\",\n article: \"md-search-result__article md-search-result__article--document\",\n section: \"md-search-result__article\",\n title: \"md-search-result__title\",\n teaser: \"md-search-result__teaser\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @return Element\n */\nexport function renderSearchResult(\n { article, sections }: SearchResult\n) {\n\n // create page with icon\n const path = require(\"material-design-icons-svg/paths/file-search-outline.json\")\n\n const children = [article, ...sections].map(document => {\n const { location, title, text } = document\n return (\n \n
    \n {!(\"parent\" in document)\n ?
    \n \n \n \n
    \n : null\n }\n

    {title}

    \n {text.length\n ?

    {truncate(text, 320)}

    \n : undefined\n }\n
    \n
    \n )\n })\n return (\n
  • \n {children}\n
  • \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"patches/source\"\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n facts: \"md-source__facts\",\n fact: \"md-source__fact\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render source facts\n *\n * @param facts - Source facts\n *\n * @return Element\n */\nexport function renderSource(\n facts: SourceFacts\n) {\n const children = facts.map(fact => (\n
  • {fact}
  • \n ))\n return (\n
      \n {children}\n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n wrapper: \"md-typeset__scrollwrap\",\n table: \"md-typeset__table\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @return Element\n */\nexport function renderTable(\n table: HTMLTableElement\n) {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take\n} from \"rxjs/operators\"\n\nimport { getElement } from \"../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/**\n * Toggle map\n */\nexport type ToggleMap = {\n [P in Toggle]?: HTMLInputElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map observable\n */\nlet toggles$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to toggles with given names\n *\n * @param names - Toggle names\n * @param options - Options\n */\nexport function setupToggles(\n names: Toggle[], { document$ }: WatchOptions\n): void {\n toggles$ = document$\n .pipe(\n\n /* Ignore document switches */\n take(1),\n\n /* Build toggle map */\n map(document => names.reduce((toggles, name) => {\n const el = getElement(`[data-md-toggle=${name}]`, document)\n return {\n ...toggles,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a toggle\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @param name - Toggle name\n *\n * @return Element observable\n */\nexport function useToggle(\n name: Toggle\n): Observable {\n return toggles$\n .pipe(\n switchMap(toggles => (\n typeof toggles[name] !== \"undefined\"\n ? of(toggles[name]!)\n : NEVER\n )),\n distinctUntilChanged()\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param el - Toggle element\n * @param value - Toggle value\n */\nexport function setToggle(\n el: HTMLInputElement, value: boolean\n): void {\n if (el.checked !== value)\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param el - Toggle element\n *\n * @return Toggle observable\n */\nexport function watchToggle(\n el: HTMLInputElement\n): Observable {\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n scan,\n shareReplay,\n switchMap\n} from \"rxjs/operators\"\n\nimport { getElement } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component\n */\nexport type Component =\n | \"container\" /* Container */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"hero\" /* Hero */\n | \"main\" /* Main area */\n | \"navigation\" /* Navigation */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-reset\" /* Search reset */\n | \"search-result\" /* Search results */\n | \"tabs\" /* Tabs */\n | \"toc\" /* Table of contents */\n\n/**\n * Component map\n */\nexport type ComponentMap = {\n [P in Component]?: HTMLElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Component map observable\n */\nlet components$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to components with given names\n *\n * This function will maintain bindings to the elements identified by the given\n * names in-between document switches and update the elements in-place.\n *\n * @param names - Component names\n * @param options - Options\n */\nexport function setupComponents(\n names: Component[], { document$ }: WatchOptions\n): void {\n components$ = document$\n .pipe(\n\n /* Build component map */\n map(document => names.reduce((components, name) => {\n const el = getElement(`[data-md-component=${name}]`, document)\n return {\n ...components,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Re-compute component map on document switch */\n scan((prev, next) => {\n for (const name of names) {\n switch (name) {\n\n /* Top-level components: update */\n case \"header-title\":\n case \"container\":\n if (name in prev && typeof prev[name] !== \"undefined\") {\n prev[name]!.replaceWith(next[name]!)\n prev[name] = next[name]\n }\n break\n\n /* All other components: rebind */\n default:\n if (typeof next[name] !== \"undefined\")\n prev[name] = getElement(`[data-md-component=${name}]`)\n else\n delete prev[name]\n }\n }\n return prev\n }),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a component\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @template T - Element type\n *\n * @param name - Component name\n *\n * @return Element observable\n */\nexport function useComponent(\n name: Component\n): Observable {\n return components$\n .pipe(\n switchMap(components => (\n typeof components[name] !== \"undefined\"\n ? of(components[name] as T)\n : EMPTY\n )),\n distinctUntilChanged()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n finalize,\n map,\n mapTo,\n observeOn,\n scan,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n addToSearchResultList,\n resetSearchResultList,\n resetSearchResultMeta,\n setSearchResultMeta\n} from \"actions\"\nimport { SearchResult } from \"integrations/search\"\nimport { renderSearchResult } from \"templates\"\n\nimport { getElementOrThrow } from \"../../agent\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n query$: Observable /* Search query observable */\n fetch$: Observable /* Result fetch observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint search results\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container. When the scroll offset\n * reaches the bottom of the element, more results are fetched and rendered.\n *\n * @param el - Search result element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSearchResult(\n el: HTMLElement, { query$, fetch$ }: PaintOptions\n): MonoTypeOperatorFunction {\n const list = getElementOrThrow(\".md-search-result__list\", el)\n const meta = getElementOrThrow(\".md-search-result__meta\", el)\n return pipe(\n\n /* Paint search result metadata */\n withLatestFrom(query$),\n map(([result, query]) => {\n if (query.value) {\n setSearchResultMeta(meta, result.length)\n } else {\n resetSearchResultMeta(meta)\n }\n return result\n }),\n\n /* Paint search result list */\n switchMap(result => fetch$\n .pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n scan(index => {\n const container = el.parentElement!\n while (index < result.length) {\n addToSearchResultList(list, renderSearchResult(result[index++]))\n if (container.scrollHeight - container.offsetHeight > 16)\n break\n }\n return index\n }, 0),\n\n /* Re-map to search result */\n mapTo(result),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSearchResultList(list)\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { switchMap } from \"rxjs/operators\"\n\nimport { Header, Viewport, watchHeader } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeader(\n { viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchHeader(el, { viewport$ }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n sticky: boolean /* Header stickyness */\n height: number /* Header visible height */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * The header is wrapped in an observable to pave the way for auto-hiding or\n * other dynamic behaviors that may be implemented later on.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @return Header observable\n */\nexport function watchHeader(\n el: HTMLElement, { viewport$ }: WatchOptions\n): Observable
    {\n return viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n switchMap(() => {\n const styles = getComputedStyle(el)\n const sticky = [\n \"sticky\", /* Modern browsers */\n \"-webkit-sticky\" /* Old Safari */\n ].includes(styles.position)\n return of({\n sticky,\n height: sticky ? el.offsetHeight : 0\n })\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { filter, map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n getElement,\n paintHeaderTitle,\n watchViewportAt\n} from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header title from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeaderTitle(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => useComponent(\"main\")\n .pipe(\n map(main => getElement(\"h1, h2, h3, h4, h5, h6\", main)!),\n filter(hx => typeof hx !== \"undefined\"),\n switchMap(hx => watchViewportAt(hx, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => y >= hx.offsetHeight),\n paintHeaderTitle(el)\n )\n )\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderTitle, setHeaderTitle } from \"actions\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header title\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderTitle(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(active => {\n setHeaderTitle(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderTitle(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header title\n *\n * @param el - Header title element\n * @param value - Whether the title is shown\n */\nexport function setHeaderTitle(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"active\" : \"\")\n}\n\n/**\n * Reset header title\n *\n * @param el - Header element\n */\nexport function resetHeaderTitle(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, Subject, pipe } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap, tap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n Viewport,\n paintHeaderShadow,\n watchMain\n} from \"observables\"\n\nimport { useComponent } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount main area from source observable\n *\n * The header must be connected to the main area observable outside of the\n * operator function, as the header will persist in-between document switches\n * while the main area is replaced. However, the header observable must be\n * passed to this function, so we connect both via a long-living subject.\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountMain(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n const main$ = new Subject
    ()\n\n /* Connect to main area observable via long-living subject */\n useComponent(\"header\")\n .pipe(\n switchMap(header => main$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n paintHeaderShadow(header)\n )\n )\n )\n .subscribe()\n\n /* Return operator */\n return pipe(\n switchMap(el => watchMain(el, { header$, viewport$ })),\n tap(main => main$.next(main))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderShadow, setHeaderShadow } from \"actions\"\n\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header shadow\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderShadow(\n el: HTMLElement\n): MonoTypeOperatorFunction
    {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ active }) => {\n setHeaderShadow(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderShadow(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header shadow\n *\n * @param el - Header element\n * @param value - Whether the shadow is shown\n */\nexport function setHeaderShadow(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"shadow\" : \"\")\n}\n\n/**\n * Reset header shadow\n *\n * @param el - Header element\n */\nexport function resetHeaderShadow(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport { distinctUntilChanged, map, pluck } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Scrolled past top offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @return Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { header$, viewport$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n pluck(\"height\")\n )\n\n /* Compute the main area's visible height */\n const height$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y }, size: { height } }]) => {\n const top = el.offsetTop\n const bottom = el.offsetHeight + top\n return height\n - Math.max(0, top - y, adjust)\n - Math.max(0, height + y - bottom)\n }),\n map(height => Math.max(0, height)),\n distinctUntilChanged()\n )\n\n /* Compute whether the viewport offset is past the main area's top */\n const active$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y } }]) => y >= el.offsetTop - adjust),\n distinctUntilChanged()\n )\n\n /* Combine into a single observable */\n return combineLatest([adjust$, height$, active$])\n .pipe(\n map(([adjust, height, active]) => ({\n offset: el.offsetTop - adjust,\n height,\n active\n }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n NavigationLayer,\n Sidebar,\n Viewport,\n getElements,\n paintNavigationLayer,\n paintSidebar,\n watchNavigationLayer,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation for [screen -]\n */\nexport interface NavigationBelowScreen {\n layer: NavigationLayer /* Active layer */\n}\n\n/**\n * Navigation for [screen +]\n */\nexport interface NavigationAboveScreen {\n sidebar: Sidebar /* Sidebar */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Navigation\n */\nexport type Navigation =\n | NavigationBelowScreen\n | NavigationAboveScreen\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Screen media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount navigation from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountNavigation(\n { header$, main$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* [screen +]: Mount navigation in sidebar */\n if (screen) {\n return watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ }),\n map(sidebar => ({ sidebar }))\n )\n\n /* [screen -]: Mount navigation in drawer */\n } else {\n const els = getElements(\"nav\", el)\n return watchNavigationLayer(els)\n .pipe(\n paintNavigationLayer(els),\n map(layer => ({ layer }))\n )\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { findLast } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n fromEvent,\n merge,\n pipe\n} from \"rxjs\"\nimport {\n delay,\n finalize,\n map,\n observeOn,\n scan,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetOverflowScrolling,\n setOverflowScrolling\n} from \"actions\"\n\nimport {\n getElement,\n getElementOrThrow\n} from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation layer\n */\nexport interface NavigationLayer {\n prev?: HTMLElement /* Layer (previous) */\n next: HTMLElement /* Layer (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation layer\n *\n * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus\n * contained in the drawer, but as the navigational layers are nested, we can\n * only add it to the topmost layer or extremely weird cropping will occur.\n * This implementation keeps track of the previous and current layer.\n *\n * @param els - Navigation elements\n *\n * @return Navigation layer observable\n */\nexport function watchNavigationLayer(\n els: HTMLElement[]\n): Observable {\n const table = new Map()\n for (const el of els) {\n const label = getElement(\"label\", el)\n if (typeof label !== \"undefined\") {\n const input = getElementOrThrow(`#${label.htmlFor}`)\n table.set(input, el)\n }\n }\n\n /* Determine topmost layer */\n const layer$ = merge(...[...table.keys()].map(input => (\n fromEvent(input, \"change\")\n )))\n .pipe(\n map(() => getElementOrThrow(\".md-nav__list\", table.get(\n findLast(({ checked }) => checked, [...table.keys()])!\n )))\n )\n\n /* Return previous and next layer */\n return layer$\n .pipe(\n map(next => ({ next })),\n scan(({ next: prev }, { next }) => ({ prev, next }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint navigation layer\n *\n * @param els - Navigation elements\n *\n * @return Operator function\n */\nexport function paintNavigationLayer(\n els: HTMLElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev }) => {\n if (prev)\n resetOverflowScrolling(prev)\n }),\n\n /* Wait until transition has finished */\n delay(250),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ next }) => {\n setOverflowScrolling(next)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els)\n resetOverflowScrolling(\n getElementOrThrow(\".md-nav__list\", el)\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n mapTo,\n startWith,\n switchMap,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport { setElementFocus, watchSearchReset } from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search reset from source observable\n *\n * @return Operator function\n */\nexport function mountSearchReset(): OperatorFunction {\n return pipe(\n switchMap(el => watchSearchReset(el)\n .pipe(\n switchMapTo(useComponent(\"search-query\")),\n tap(setElementFocus),\n mapTo(undefined)\n )\n ),\n startWith(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { mapTo } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search reset\n *\n * @param el - Search reset element\n *\n * @return Search reset observable\n */\nexport function watchSearchReset(\n el: HTMLElement\n): Observable {\n return fromEvent(el, \"click\")\n .pipe(\n mapTo(undefined)\n )\n}\n","export default function _identity(x) {\n return x;\n}","import _curry1 from './internal/_curry1.js';\nimport _identity from './internal/_identity.js';\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n filter,\n map,\n pluck,\n switchMap\n} from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport {\n SearchQuery,\n WorkerHandler,\n paintSearchResult,\n watchElementOffset\n} from \"observables\"\nimport {\n SearchMessage,\n isSearchResultMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchResult(\n { rx$ }: WorkerHandler, { query$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => {\n const container = el.parentElement!\n\n /* Compute whether there are more search results to fetch */\n const fetch$ = watchElementOffset(container)\n .pipe(\n map(({ y }) => {\n return y >= container.scrollHeight - container.offsetHeight - 16\n }),\n distinctUntilChanged(),\n filter(identity)\n )\n\n /* Paint search results */\n return rx$\n .pipe(\n filter(isSearchResultMessage),\n pluck(\"data\"),\n paintSearchResult(el, { query$, fetch$ })\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n OperatorFunction,\n combineLatest,\n of,\n pipe\n} from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n AnchorList,\n Header,\n Main,\n Sidebar,\n Viewport,\n getElements,\n paintAnchorList,\n paintSidebar,\n watchAnchorList,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents for [tablet -]\n */\nexport interface TableOfContentsBelowTablet {} // tslint:disable-line\n\n/**\n * Table of contents for [tablet +]\n */\nexport interface TableOfContentsAboveTablet {\n sidebar: Sidebar /* Sidebar */\n anchors: AnchorList /* Anchor list */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport type TableOfContents =\n | TableOfContentsBelowTablet\n | TableOfContentsAboveTablet\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Tablet media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTableOfContents(\n { header$, main$, viewport$, tablet$}: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => tablet$\n .pipe(\n switchMap(tablet => {\n\n /* [tablet +]: Mount table of contents in sidebar */\n if (tablet) {\n const els = getElements(\".md-nav__link\", el)\n\n /* Watch and paint sidebar */\n const sidebar$ = watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ })\n )\n\n /* Watch and paint anchor list (scroll spy) */\n const anchors$ = watchAnchorList(els, { header$, viewport$ })\n .pipe(\n paintAnchorList(els)\n )\n\n /* Combine into a single hot observable */\n return combineLatest([sidebar$, anchors$])\n .pipe(\n map(([sidebar, anchors]) => ({ sidebar, anchors }))\n )\n\n /* [tablet -]: Unmount table of contents */\n } else {\n return of({})\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { reverse } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n bufferCount,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n scan,\n startWith,\n switchMap,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetAnchorActive,\n resetAnchorBlur,\n setAnchorActive,\n setAnchorBlur\n} from \"actions\"\n\nimport { Viewport, getElement } from \"../agent\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Anchor list\n */\nexport interface AnchorList {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch anchor list\n *\n * This is effectively a scroll-spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the anchor list needs\n * to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param els - Anchor elements\n * @param options - Options\n *\n * @return Anchor list observable\n */\nexport function watchAnchorList(\n els: HTMLAnchorElement[], { header$, viewport$ }: WatchOptions\n): Observable {\n const table = new Map()\n for (const el of els) {\n const id = decodeURIComponent(el.hash.substring(1))\n const target = getElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(el, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(header => 18 + header.height)\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n\n /* Build index to map anchor paths to vertical offsets */\n map(() => {\n let path: HTMLAnchorElement[] = []\n return [...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n reverse(path = [...path, anchor]),\n offset\n )\n }, new Map())\n }),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(index => combineLatest([adjust$, viewport$])\n .pipe(\n scan(([prev, next], [adjust, { offset: { y } }]) => {\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => {\n return a[0] === b[0]\n && a[1] === b[1]\n })\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint anchor list\n *\n * @param els - Anchor elements\n *\n * @return Operator function\n */\nexport function paintAnchorList(\n els: HTMLAnchorElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev, next }) => {\n\n /* Look forward */\n for (const [el] of next) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n\n /* Look backward */\n for (const [index, [el]] of prev.entries()) {\n setAnchorActive(el, index === prev.length - 1)\n setAnchorBlur(el, true)\n }\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport {\n filter,\n map,\n share,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport {\n Key,\n getActiveElement,\n getElement,\n getElements,\n isSusceptibleToKeyboard,\n setElementFocus,\n setToggle,\n useToggle,\n watchKeyboard,\n watchToggle\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard extends Key {\n mode: KeyboardMode /* Keyboard mode */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup keyboard\n *\n * This function will setup the keyboard handlers and ensure that keys are\n * correctly propagated. Currently there are two modes:\n *\n * - `global`: This mode is active when the search is closed. It is intended\n * to assign hotkeys to specific functions of the site. Currently the search,\n * previous and next page can be triggered.\n *\n * - `search`: This mode is active when the search is open. It maps certain\n * navigational keys to offer search results that can be entirely navigated\n * through keyboard input.\n *\n * The keyboard observable is returned and can be used to monitor the keyboard\n * in order toassign further hotkeys to custom functions.\n *\n * @return Keyboard observable\n */\nexport function setupKeyboard(): Observable {\n const toggle$ = useToggle(\"search\")\n const search$ = toggle$\n .pipe(\n switchMap(watchToggle)\n )\n\n /* Setup keyboard and determine mode */\n const keyboard$ = watchKeyboard()\n .pipe(\n withLatestFrom(search$),\n map(([key, toggle]): Keyboard => ({\n mode: toggle ? \"search\" : \"global\",\n ...key\n })),\n share()\n )\n\n /* Setup search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\"),\n withLatestFrom(\n toggle$,\n useComponent(\"search-query\"),\n useComponent(\"search-result\")\n )\n )\n .subscribe(([key, toggle, query, result]) => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: prevent form submission */\n case \"Enter\":\n if (active === query)\n key.claim()\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(toggle, false)\n setElementFocus(query, false)\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n setElementFocus(query)\n } else {\n const els = [query, ...getElements(\"[href]\", result)]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n setElementFocus(els[i])\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n setElementFocus(query)\n }\n })\n\n /* Setup global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active)\n }\n return false\n }),\n withLatestFrom(useComponent(\"search-query\"))\n )\n .subscribe(([key, query]) => {\n switch (key.type) {\n\n /* Open search */\n case \"f\":\n case \"s\":\n setElementFocus(query)\n key.claim()\n break\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n /* Return keyboard */\n return keyboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Key\n */\nexport interface Key {\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n *\n * @return Test result\n */\nexport function isSusceptibleToKeyboard(el: HTMLElement) {\n switch (el.tagName) {\n\n /* Form elements */\n case \"INPUT\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @return Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n })),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, iif, merge } from \"rxjs\"\nimport { map, mapTo, shareReplay, switchMap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whetehr the given device is an Apple device\n *\n * @return Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: MountOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"[data-md-scrollfix]\")),\n shareReplay(1)\n )\n\n /* Remove marker attribute, so we'll only add the fix once */\n els$.subscribe(els => {\n for (const el of els)\n el.removeAttribute(\"data-md-scrollfix\")\n })\n\n /* Patch overflow scrolling on touch start */\n iif(isAppleDevice, els$, NEVER)\n .pipe(\n switchMap(els => merge(...els.map(el => (\n fromEvent(el, \"touchstart\")\n .pipe(\n mapTo(el)\n )\n ))))\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { catchError, map, switchMap, take } from \"rxjs/operators\"\n\nimport { getElementOrThrow, getElements } from \"observables\"\nimport { renderSource } from \"templates\"\nimport { cache, hash } from \"utilities\"\n\nimport { fetchSourceFactsFromGitHub } from \"./github\"\nimport { fetchSourceFactsFromGitLab } from \"./gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Source facts\n */\nexport type SourceFacts = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch source facts\n *\n * @param url - Source repository URL\n *\n * @return Source facts observable\n */\nfunction fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^\\/]+)\\/?([^\\/]+)/i)\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, project] = url.match(/^.+?([^\\/]*gitlab[^\\/]+)\\/(.+)/i)\n return fetchSourceFactsFromGitLab(base, project)\n\n /* Everything else */\n default:\n return NEVER\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch elements containing repository information\n *\n * This function will retrieve the URL from the repository link and try to\n * query data from integrated source code platforms like GitHub or GitLab.\n *\n * @param options - Options\n */\nexport function patchSource(\n { document$ }: SetupOptions\n): void {\n document$\n .pipe(\n map(() => getElementOrThrow(\".md-source[href]\")),\n take(1),\n switchMap(({ href }) => (\n cache(`${hash(href)}`, () => fetchSourceFacts(href))\n )),\n catchError(() => NEVER)\n )\n .subscribe(facts => {\n for (const el of getElements(\".md-source__repository\")) {\n el.setAttribute(\"data-md-state\", \"done\")\n el.appendChild(renderSource(facts))\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport { Observable, of } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, pluck, switchMap } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub source facts\n *\n * @param user - GitHub user\n * @param repo - GitHub repository\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n return ajax({\n url: typeof repo !== \"undefined\"\n ? `https://api.github.com/repos/${user}/${repo}`\n : `https://api.github.com/users/${user}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n switchMap(data => {\n\n /* GitHub repository */\n if (typeof repo !== \"undefined\") {\n const { stargazers_count, forks_count }: Repo = data\n return of([\n `${round(stargazers_count || 0)} Stars`,\n `${round(forks_count || 0)} Forks`\n ])\n\n /* GitHub user/organization */\n } else {\n const { public_repos }: User = data\n return of([\n `${round(public_repos || 0)} Repositories`\n ])\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport { Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, map, pluck } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab source facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n return ajax({\n url: `https://${base}/api/v4/projects/${encodeURIComponent(project)}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n map(({ star_count, forks_count }: ProjectSchema) => ([\n `${round(star_count)} Stars`,\n `${round(forks_count)} Forks`\n ]))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, defer, of } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Cache the last value emitted by an observable in session storage\n *\n * If the key is not found in session storage, the factory is executed and the\n * latest value emitted will automatically be persisted to sessions storage.\n * Note that the values emitted by the returned observable must be serializable\n * as `JSON`, or data will be lost.\n *\n * @template T - Value type\n *\n * @param key - Cache key\n * @param factory - Observable factory\n *\n * @return Value observable\n */\nexport function cache(\n key: string, factory: () => Observable\n): Observable {\n return defer(() => {\n const data = sessionStorage.getItem(key)\n if (data) {\n return of(JSON.parse(data) as T)\n\n /* Retrieve value from observable factory and write to storage */\n } else {\n const value$ = factory()\n value$.subscribe(value => {\n try {\n sessionStorage.setItem(key, JSON.stringify(value))\n } catch (err) {\n /* Uncritical, just swallow */\n }\n })\n\n /* Return value */\n return value$\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// TODO: remove this after we finished refactoring\n// tslint:disable\n\nimport \"../stylesheets/main.scss\"\nimport \"../stylesheets/palette.scss\"\n\nimport { values } from \"ramda\"\nimport {\n merge,\n combineLatest,\n animationFrameScheduler,\n fromEvent,\n of,\n NEVER\n} from \"rxjs\"\nimport {\n delay,\n switchMap,\n tap,\n filter,\n withLatestFrom,\n observeOn,\n take,\n mapTo,\n shareReplay,\n sample,\n share,\n map,\n pluck,\n debounceTime,\n distinctUntilKeyChanged,\n distinctUntilChanged,\n bufferCount\n} from \"rxjs/operators\"\n\nimport {\n watchToggle,\n setToggle,\n getElements,\n watchMedia,\n watchDocument,\n watchLocation,\n watchLocationHash,\n watchViewport,\n setupToggles,\n useToggle,\n getElement,\n setViewportOffset,\n ViewportOffset,\n getLocation\n} from \"./observables\"\nimport { setupSearchWorker } from \"./workers\"\n\nimport { setScrollLock, resetScrollLock } from \"actions\"\nimport {\n mountHeader,\n mountHero,\n mountMain,\n mountNavigation,\n mountSearch,\n mountTableOfContents,\n mountTabs,\n useComponent,\n setupComponents,\n mountHeaderTitle,\n mountSearchQuery,\n mountSearchReset,\n mountSearchResult\n} from \"components\"\nimport { setupClipboard } from \"./integrations/clipboard\"\nimport { setupKeyboard } from \"./integrations/keyboard\"\nimport {\n patchTables,\n patchDetails,\n patchScrollfix,\n patchSource,\n patchScripts\n} from \"patches\"\nimport { isConfig } from \"utilities\"\nimport { setupDialog } from \"integrations/dialog\"\n\n/* ------------------------------------------------------------------------- */\n\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Test for iOS */\nif (navigator.userAgent.match(/(iPad|iPhone|iPod)/g))\n document.documentElement.classList.add(\"ios\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Initialize Material for MkDocs\n *\n * @param config - Configuration\n */\nexport function initialize(config: unknown) {\n if (!isConfig(config))\n throw new SyntaxError(`Invalid configuration: ${JSON.stringify(config)}`)\n\n /* Setup user interface observables */\n const location$ = watchLocation()\n const hash$ = watchLocationHash()\n const viewport$ = watchViewport()\n const tablet$ = watchMedia(\"(min-width: 960px)\")\n const screen$ = watchMedia(\"(min-width: 1220px)\")\n\n /* Setup document observable */\n const document$ = config.feature.instant\n ? watchDocument({ location$ })\n : watchDocument()\n\n /* Setup toggle bindings */\n setupToggles([\n \"drawer\", /* Toggle for drawer */\n \"search\" /* Toggle for search */\n ], { document$ })\n\n /* Setup component bindings */\n setupComponents([\n \"container\", /* Container */\n \"header\", /* Header */\n \"header-title\", /* Header title */\n \"hero\", /* Hero */\n \"main\", /* Main area */\n \"navigation\", /* Navigation */\n \"search\", /* Search */\n \"search-query\", /* Search input */\n \"search-reset\", /* Search reset */\n \"search-result\", /* Search results */\n \"tabs\", /* Tabs */\n \"toc\" /* Table of contents */\n ], { document$ })\n\n /* ----------------------------------------------------------------------- */\n\n const worker = setupSearchWorker(config.worker.search, {\n base: config.base, location$\n })\n\n /* ----------------------------------------------------------------------- */\n\n /* Create header observable */\n const header$ = useComponent(\"header\")\n .pipe(\n mountHeader({ viewport$ }),\n shareReplay(1)\n )\n\n const main$ = useComponent(\"main\")\n .pipe(\n mountMain({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n /* Mount search query */\n const query$ = useComponent(\"search-query\")\n .pipe(\n mountSearchQuery(worker),\n shareReplay(1) // TODO: this must be put onto EVERY component!\n )\n\n /* Mount search reset */\n const reset$ = useComponent(\"search-reset\")\n .pipe(\n mountSearchReset(),\n shareReplay(1)\n )\n\n /* Mount search result */\n const result$ = useComponent(\"search-result\")\n .pipe(\n mountSearchResult(worker, { query$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const search$ = useComponent(\"search\")\n .pipe(\n mountSearch({ query$, reset$, result$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const navigation$ = useComponent(\"navigation\")\n .pipe(\n mountNavigation({ header$, main$, viewport$, screen$ }),\n shareReplay(1) // shareReplay because there might be late subscribers\n )\n\n const toc$ = useComponent(\"toc\")\n .pipe(\n mountTableOfContents({ header$, main$, viewport$, tablet$ }),\n shareReplay(1)\n )\n\n const tabs$ = useComponent(\"tabs\")\n .pipe(\n mountTabs({ header$, viewport$, screen$ }),\n shareReplay(1)\n )\n\n const hero$ = useComponent(\"hero\")\n .pipe(\n mountHero({ header$, viewport$ }),\n shareReplay(1)\n )\n\n const title$ = useComponent(\"header-title\")\n .pipe(\n mountHeaderTitle({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const keyboard$ = setupKeyboard()\n\n patchDetails({ document$, hash$ })\n patchScripts({ document$ })\n patchSource({ document$ })\n patchTables({ document$ })\n\n /* Force 1px scroll offset to trigger overflow scrolling */\n patchScrollfix({ document$ })\n\n /* Setup clipboard and dialog */\n const dialog$ = setupDialog()\n const clipboard$ = setupClipboard({ document$, dialog$ })\n\n /* ----------------------------------------------------------------------- */\n\n // Close drawer and search on hash change\n // put into navigation...\n // TODO: replace with popstate?\n hash$.subscribe(() => {\n useToggle(\"drawer\").subscribe(el => {\n setToggle(el, false)\n })\n })\n\n // put into search...\n hash$\n .pipe(\n switchMap(hash => useToggle(\"search\")\n .pipe(\n filter(x => x.checked), // only active\n tap(toggle => setToggle(toggle, false)),\n delay(125), // ensure that it runs after the body scroll reset...\n mapTo(hash)\n )\n )\n )\n .subscribe(hash => {\n getElement(`[id=\"${hash}\"]`)!.scrollIntoView()\n })\n\n // Scroll lock // document -> document$ => { body } !?\n // put into search...\n const toggle$ = useToggle(\"search\")\n combineLatest([\n toggle$.pipe(switchMap(watchToggle)),\n tablet$,\n ])\n .pipe(\n withLatestFrom(viewport$),\n switchMap(([[toggle, tablet], { offset: { y }}]) => {\n const active = toggle && !tablet\n return document$\n .pipe(\n delay(active ? 400 : 100), // TOOD: directly combine this with the hash!\n observeOn(animationFrameScheduler),\n tap(({ body }) => active\n ? setScrollLock(body, y)\n : resetScrollLock(body)\n )\n )\n })\n )\n .subscribe()\n\n /* ----------------------------------------------------------------------- */\n\n /**\n * Location change\n */\n interface State {\n url: URL\n data?: ViewportOffset\n }\n\n function isInternalLink(el: HTMLAnchorElement | URL) {\n return el.host === location.host && (\n // TODO: Improve regex\n !el.pathname || el.pathname === \"/\" || /\\/[\\w-]+(?:\\/?|\\.html)$/i.test(el.pathname) // TODO: provide some test cases\n )\n }\n\n // on same page!\n function isAnchorLink(el: HTMLAnchorElement | URL) {\n return el.pathname === location.pathname && el.hash.length > 0\n }\n\n function compareState(\n { url: a }: State, { url: b }: State\n ) {\n return a.href === b.href\n }\n\n // instant loading\n if (config.feature.instant) {\n\n /* Disable automatic scroll restoration, as it doesn't work nicely */\n if (\"scrollRestoration\" in history)\n history.scrollRestoration = \"manual\"\n\n /* Resolve relative links for stability */\n for (const selector of [\n `link[rel=\"shortcut icon\"]`,\n `link[rel=\"stylesheet\"]`\n ])\n for (const el of getElements(selector))\n el.href = el.href\n\n /* Intercept internal link clicks */\n const internal$ = fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n switchMap(ev => {\n if (ev.target instanceof HTMLElement) {\n const el = ev.target.closest(\"a\")\n if (el && isInternalLink(el)) {\n if (!isAnchorLink(el))\n ev.preventDefault()\n return of(el.href)\n }\n }\n return NEVER\n }),\n distinctUntilChanged(),\n map(href => ({ url: new URL(href) })),\n share()\n )\n\n /* Intercept internal links to dispatch */\n const dispatch$ = internal$\n .pipe(\n filter(({ url }) => !isAnchorLink(url)),\n share()\n )\n\n /* Intercept popstate events (history back and forward) */\n const popstate$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n data: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(dispatch$, popstate$)\n .pipe(\n pluck(\"url\")\n )\n .subscribe(location$)\n\n /* Add dispatched link to history */\n internal$\n .pipe(\n // TODO: must start with the current location and ignore the first emission\n distinctUntilChanged(compareState),\n filter(({ url }) => !isAnchorLink(url))\n )\n .subscribe(({ url }) => {\n // console.log(`History.Push ${url}`)\n history.pushState({}, \"\", url.toString())\n })\n\n // special case\n merge(internal$, popstate$)\n .pipe(\n bufferCount(2, 1),\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // })\n )\n .subscribe(([prev, next]) => {\n console.log(`<- ${prev.url}`)\n console.log(`-> ${next.url}`)\n\n if (\n prev.url.href.match(next.url.href) !== null &&\n isAnchorLink(prev.url)\n ) {\n // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging.\n setViewportOffset(next.data || { y: 0 })\n }\n // console.log(\"Potential Candidate\")\n })\n // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString()))\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // }),\n // map(([, next]) => next)\n // // distinctUntilChanged(compareLocationChange),\n // // filter(({ url }) => !isAnchorLink(url))\n // )\n // .subscribe(({ url }) => {\n // console.log(`Restore ${url}`)\n // })\n\n /* Persist viewport offset in history before hash change */\n viewport$\n .pipe(\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\"),\n )\n .subscribe(({ offset }) => {\n // console.log(\"Update\", offset)\n history.replaceState(offset, \"\")\n })\n\n /* */\n merge(dispatch$, popstate$)\n .pipe(\n sample(document$),\n withLatestFrom(document$),\n )\n .subscribe(([{ url, data }, { title, head }]) => {\n console.log(\"Done\", url.href, data)\n\n // trigger custom event\n document.dispatchEvent(new CustomEvent(\"DOMContentSwitch\"))\n\n // setDocumentTitle\n document.title = title\n\n // replace meta tags\n for (const selector of [\n `link[rel=\"canonical\"]`,\n `meta[name=\"author\"]`,\n `meta[name=\"description\"]`\n ]) {\n const next = getElement(selector, head)\n const prev = getElement(selector, document.head)\n if (\n typeof next !== \"undefined\" &&\n typeof prev !== \"undefined\"\n ) {\n prev.replaceWith(next)\n }\n }\n\n // search drawer close\n useToggle(\"search\").subscribe(el => {\n setToggle(el, false)\n })\n\n // // TODO: this doesnt work as expected\n if (url.hash) {\n console.log(\"hash data?\", data)\n const a = document.createElement(\"a\")\n a.href = url.hash\n a.click()\n } else {\n setViewportOffset(data || { y: 0 }) // push state!\n }\n })\n\n // internal$.subscribe(({ url }) => {\n // console.log(`Internal ${url}`)\n // })\n\n // dispatch$.subscribe(({ url }) => {\n // console.log(`Dispatch ${url}`)\n // })\n\n popstate$.subscribe(({ url }) => {\n console.log(`Popstate ${url.href}`, url)\n })\n }\n\n /* ----------------------------------------------------------------------- */\n\n // if we use a single tab outside of search, unhide all permalinks.\n // TODO: experimental. necessary!?\n keyboard$\n .pipe(\n filter(key => key.mode === \"global\" && [\"Tab\"].includes(key.type)),\n take(1)\n )\n .subscribe(() => {\n for (const link of getElements(\".headerlink\"))\n link.style.visibility = \"visible\"\n })\n\n /* ----------------------------------------------------------------------- */\n\n const state = {\n search$,\n clipboard$,\n location$,\n hash$,\n keyboard$,\n dialog$,\n main$,\n navigation$,\n toc$,\n tabs$,\n hero$,\n title$ // TODO: header title\n }\n\n const { ...rest } = state\n merge(...values(rest))\n .subscribe() // potential memleak <-- use takeUntil\n\n return {\n // agent,\n state\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n worker: {\n search: string /* Search worker URL */\n }\n feature: {\n instant: true /* Instant loading */\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Ensure that the given value is a valid configuration\n *\n * We could use `jsonschema` or any other schema validation framework, but that\n * would just add more bloat to the bundle, so we'll keep it plain and simple.\n *\n * @param config - Configuration\n *\n * @return Test result\n */\nexport function isConfig(config: any): config is Config {\n return typeof config === \"object\"\n && typeof config.base === \"string\"\n && typeof config.worker === \"object\"\n && typeof config.worker.search === \"string\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, from } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n map,\n pluck,\n shareReplay,\n switchMap,\n take,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { SearchIndexOptions } from \"integrations/search\"\nimport {\n WorkerHandler,\n watchWorker\n} from \"observables\"\n\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n base: string /* Base url */\n index?: Promise /* Promise resolving with index */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup search web worker\n *\n * This function will create a web worker to setup and query the search index\n * which is done using `lunr`. The index can be passed explicitly in order to\n * enable hacks like _localsearch_ via search index embedding as JSON. If no\n * index is given, this function will load it from the default location.\n *\n * @param url - Worker url\n * @param options - Options\n *\n * @return Worker handler\n */\nexport function setupSearchWorker(\n url: string, { base, index, location$ }: SetupOptions\n): WorkerHandler {\n const worker = new Worker(url)\n\n /* Ensure stable base URL */\n const origin$ = location$\n .pipe(\n take(1),\n map(({ href }) => new URL(base, href)\n .toString()\n .replace(/\\/$/, \"\")\n )\n )\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n withLatestFrom(origin$),\n map(([message, origin]) => {\n if (isSearchResultMessage(message)) {\n for (const { article, sections } of message.data) {\n article.location = `${origin}/${article.location}`\n for (const section of sections)\n section.location = `${origin}/${section.location}`\n }\n }\n return message\n }),\n shareReplay(1)\n )\n\n /* Fetch index if it wasn't passed explicitly */\n const index$ = typeof index !== \"undefined\"\n ? from(index)\n : origin$\n .pipe(\n switchMap(origin => ajax({\n url: `${origin}/search/search_index.json`,\n responseType: \"json\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\")\n ))\n )\n\n /* Send index to worker */\n index$\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return worker handler */\n return { tx$, rx$ }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n SearchQuery,\n WorkerHandler,\n setToggle,\n useToggle,\n watchSearchQuery\n} from \"observables\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchQueryMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search query from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchQuery(\n { tx$ }: WorkerHandler, options: MountOptions = {}\n): OperatorFunction {\n const toggle$ = useToggle(\"search\")\n return pipe(\n switchMap(el => {\n const query$ = watchSearchQuery(el, options)\n\n /* Subscribe worker to search query */\n query$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }) => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Toggle search on focus */\n query$\n .pipe(\n distinctUntilKeyChanged(\"focus\"),\n withLatestFrom(toggle$)\n )\n .subscribe(([{ focus }, toggle]) => {\n if (focus)\n setToggle(toggle, focus)\n })\n\n /* Return search query */\n return query$\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, combineLatest, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport { SearchQuery } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport interface Search {\n query: SearchQuery /* Search query */\n result: SearchResult[] /* Search result list */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n reset$: Observable /* Search reset observable */\n result$: Observable /* Search result observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearch(\n { query$, reset$, result$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(() => combineLatest([query$, result$, reset$])\n .pipe(\n map(([query, result]) => ({ query, result }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, of, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabs\n */\nexport interface Tabs {\n hidden: boolean /* Whether the tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Media screen observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount tabs from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTabs(\n { header$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* Mount tabs above screen breakpoint */\n if (screen) {\n return watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 10),\n map(hidden => ({ hidden }))\n )\n\n /* Mount tabs below screen breakpoint */\n } else {\n return of({ hidden: true })\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Hero\n */\nexport interface Hero {\n hidden: boolean /* Whether the hero is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount hero from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHero(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 20),\n map(hidden => ({ hidden }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n filter,\n map,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport {\n getElement,\n getElements,\n watchMedia\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n hash$: Observable /* Location hash observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `details` elements\n *\n * This function will ensure that all `details` tags are opened prior to\n * printing, so the whole content of the page is included.\n *\n * @param options - Options\n */\nexport function patchDetails(\n { document$, hash$ }: MountOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"details\"))\n )\n\n /* Open all details before printing */\n merge(\n watchMedia(\"print\").pipe(filter(identity)), /* Webkit */\n fromEvent(window, \"beforeprint\") /* IE, FF */\n )\n .pipe(\n switchMapTo(els$)\n )\n .subscribe(els => {\n for (const el of els)\n el.setAttribute(\"open\", \"\")\n })\n\n /* Open parent details and fix anchor jump */\n hash$\n .pipe(\n map(id => getElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\"),\n tap(el => {\n const details = el.closest(\"details\")\n if (details && !details.open)\n details.setAttribute(\"open\", \"\")\n })\n )\n .subscribe(el => el.scrollIntoView())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n filter,\n map,\n skip,\n switchMapTo,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport {\n getElement,\n getElements,\n watchMedia\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `script` elements\n *\n * This function must be run after a document switch, which means the first\n * emission must be ignored.\n *\n * @param options - Options\n */\nexport function patchScripts(\n { document$ }: MountOptions\n): void {\n const els$ = document$\n .pipe(\n skip(1),\n withLatestFrom(useComponent(\"container\")),\n map(([, el]) => getElements(\"script\", el))\n )\n\n /* Evaluate all scripts via replacement */\n els$.subscribe(els => {\n for (const el of els) {\n if (el.src || /(^|\\/javascript)$/i.test(el.type)) {\n const script = document.createElement(\"script\")\n const key = el.src ? \"src\" : \"innerText\"\n script[key] = el[key]\n el.replaceWith(script)\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderTable } from \"templates\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `table` elements\n *\n * This function will re-render all tables by wrapping them to improve overflow\n * scrolling on smaller screen sizes.\n *\n * @param options - Options\n */\nexport function patchTables(\n { document$ }: MountOptions\n): void {\n const sentinel = document.createElement(\"table\")\n document$\n .pipe(\n map(() => getElements(\"table:not([class])\"))\n )\n .subscribe(els => {\n for (const el of els) {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject, animationFrameScheduler, of } from \"rxjs\"\nimport {\n delay,\n map,\n observeOn,\n switchMap,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n duration?: number /* Display duration (default: 2s) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup dialog\n *\n * @param options - Options\n *\n * @return Dialog observable\n */\nexport function setupDialog(\n { duration }: SetupOptions = {}\n): Subject {\n const dialog$ = new Subject()\n\n /* Create dialog */\n const dialog = document.createElement(\"div\") // TODO: improve scoping\n dialog.classList.add(\"md-dialog\", \"md-typeset\")\n\n /* Display dialog */\n dialog$\n .pipe(\n switchMap(text => of(document.body) // useComponent(\"container\")\n .pipe(\n map(container => container.appendChild(dialog)),\n observeOn(animationFrameScheduler),\n delay(1), // Strangley it doesnt work when we push things to the new animation frame...\n tap(el => {\n el.innerHTML = text\n el.setAttribute(\"data-md-state\", \"open\")\n }),\n delay(duration || 2000),\n tap(el => el.removeAttribute(\"data-md-state\")),\n delay(400),\n tap(el => {\n el.innerHTML = \"\"\n el.remove()\n })\n )\n )\n )\n .subscribe()\n\n /* Return dialog subject */\n return dialog$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as ClipboardJS from \"clipboard\"\nimport { NEVER, Observable, Subject, fromEventPattern } from \"rxjs\"\nimport { mapTo, share, tap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderClipboard } from \"templates\"\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Observable /* Document observable */\n dialog$: Subject /* Dialog subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup clipboard\n *\n * This function implements the Clipboard.js integration and injects a button\n * into all code blocks when the document changes.\n *\n * @param options - Options\n *\n * @return Clipboard observable\n */\nexport function setupClipboard(\n { document$, dialog$ }: SetupOptions\n): Observable {\n if (!ClipboardJS.isSupported())\n return NEVER\n\n /* Inject 'copy-to-clipboard' buttons */\n document$.subscribe(() => {\n const blocks = getElements(\"pre > code\")\n for (const [index, block] of blocks.entries()) {\n const parent = block.parentElement!\n parent.id = `__code_${index}`\n parent.insertBefore(renderClipboard(parent.id), block)\n }\n })\n\n /* Initialize and setup clipboard */\n const clipboard$ = fromEventPattern(next => {\n new ClipboardJS(\".md-clipboard\").on(\"success\", next)\n })\n .pipe(\n share()\n )\n\n /* Display notification for clipboard event */\n clipboard$\n .pipe(\n tap(ev => ev.clearSelection()),\n mapTo(translate(\"clipboard.copied\"))\n )\n .subscribe(dialog$)\n\n /* Return clipboard */\n return clipboard$\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/javascripts/bundle.js b/material/assets/javascripts/bundle.js deleted file mode 100644 index a355b8ff3..000000000 --- a/material/assets/javascripts/bundle.js +++ /dev/null @@ -1,37587 +0,0 @@ -(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/assets/javascripts/index.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/clipboard/dist/clipboard.js": -/*!**************************************************!*\ - !*** ./node_modules/clipboard/dist/clipboard.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/*! - * clipboard.js v2.0.4 - * https://zenorocha.github.io/clipboard.js - * - * Licensed MIT © Zeno Rocha - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else {} -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _clipboardAction = __webpack_require__(1); - -var _clipboardAction2 = _interopRequireDefault(_clipboardAction); - -var _tinyEmitter = __webpack_require__(3); - -var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); - -var _goodListener = __webpack_require__(4); - -var _goodListener2 = _interopRequireDefault(_goodListener); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/** - * Base class which takes one or more elements, adds event listeners to them, - * and instantiates a new `ClipboardAction` on each click. - */ -var Clipboard = function (_Emitter) { - _inherits(Clipboard, _Emitter); - - /** - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger - * @param {Object} options - */ - function Clipboard(trigger, options) { - _classCallCheck(this, Clipboard); - - var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); - - _this.resolveOptions(options); - _this.listenClick(trigger); - return _this; - } - - /** - * Defines if attributes would be resolved using internal setter functions - * or custom functions that were passed in the constructor. - * @param {Object} options - */ - - - _createClass(Clipboard, [{ - key: 'resolveOptions', - value: function resolveOptions() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - this.action = typeof options.action === 'function' ? options.action : this.defaultAction; - this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; - this.text = typeof options.text === 'function' ? options.text : this.defaultText; - this.container = _typeof(options.container) === 'object' ? options.container : document.body; - } - - /** - * Adds a click event listener to the passed trigger. - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger - */ - - }, { - key: 'listenClick', - value: function listenClick(trigger) { - var _this2 = this; - - this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { - return _this2.onClick(e); - }); - } - - /** - * Defines a new `ClipboardAction` on each click event. - * @param {Event} e - */ - - }, { - key: 'onClick', - value: function onClick(e) { - var trigger = e.delegateTarget || e.currentTarget; - - if (this.clipboardAction) { - this.clipboardAction = null; - } - - this.clipboardAction = new _clipboardAction2.default({ - action: this.action(trigger), - target: this.target(trigger), - text: this.text(trigger), - container: this.container, - trigger: trigger, - emitter: this - }); - } - - /** - * Default `action` lookup function. - * @param {Element} trigger - */ - - }, { - key: 'defaultAction', - value: function defaultAction(trigger) { - return getAttributeValue('action', trigger); - } - - /** - * Default `target` lookup function. - * @param {Element} trigger - */ - - }, { - key: 'defaultTarget', - value: function defaultTarget(trigger) { - var selector = getAttributeValue('target', trigger); - - if (selector) { - return document.querySelector(selector); - } - } - - /** - * Returns the support of the given action, or all actions if no action is - * given. - * @param {String} [action] - */ - - }, { - key: 'defaultText', - - - /** - * Default `text` lookup function. - * @param {Element} trigger - */ - value: function defaultText(trigger) { - return getAttributeValue('text', trigger); - } - - /** - * Destroy lifecycle. - */ - - }, { - key: 'destroy', - value: function destroy() { - this.listener.destroy(); - - if (this.clipboardAction) { - this.clipboardAction.destroy(); - this.clipboardAction = null; - } - } - }], [{ - key: 'isSupported', - value: function isSupported() { - var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; - - var actions = typeof action === 'string' ? [action] : action; - var support = !!document.queryCommandSupported; - - actions.forEach(function (action) { - support = support && !!document.queryCommandSupported(action); - }); - - return support; - } - }]); - - return Clipboard; -}(_tinyEmitter2.default); - -/** - * Helper function to retrieve attribute value. - * @param {String} suffix - * @param {Element} element - */ - - -function getAttributeValue(suffix, element) { - var attribute = 'data-clipboard-' + suffix; - - if (!element.hasAttribute(attribute)) { - return; - } - - return element.getAttribute(attribute); -} - -module.exports = Clipboard; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _select = __webpack_require__(2); - -var _select2 = _interopRequireDefault(_select); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Inner class which performs selection from either `text` or `target` - * properties and then executes copy or cut operations. - */ -var ClipboardAction = function () { - /** - * @param {Object} options - */ - function ClipboardAction(options) { - _classCallCheck(this, ClipboardAction); - - this.resolveOptions(options); - this.initSelection(); - } - - /** - * Defines base properties passed from constructor. - * @param {Object} options - */ - - - _createClass(ClipboardAction, [{ - key: 'resolveOptions', - value: function resolveOptions() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - this.action = options.action; - this.container = options.container; - this.emitter = options.emitter; - this.target = options.target; - this.text = options.text; - this.trigger = options.trigger; - - this.selectedText = ''; - } - - /** - * Decides which selection strategy is going to be applied based - * on the existence of `text` and `target` properties. - */ - - }, { - key: 'initSelection', - value: function initSelection() { - if (this.text) { - this.selectFake(); - } else if (this.target) { - this.selectTarget(); - } - } - - /** - * Creates a fake textarea element, sets its value from `text` property, - * and makes a selection on it. - */ - - }, { - key: 'selectFake', - value: function selectFake() { - var _this = this; - - var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; - - this.removeFake(); - - this.fakeHandlerCallback = function () { - return _this.removeFake(); - }; - this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; - - this.fakeElem = document.createElement('textarea'); - // Prevent zooming on iOS - this.fakeElem.style.fontSize = '12pt'; - // Reset box model - this.fakeElem.style.border = '0'; - this.fakeElem.style.padding = '0'; - this.fakeElem.style.margin = '0'; - // Move element out of screen horizontally - this.fakeElem.style.position = 'absolute'; - this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; - // Move element to the same position vertically - var yPosition = window.pageYOffset || document.documentElement.scrollTop; - this.fakeElem.style.top = yPosition + 'px'; - - this.fakeElem.setAttribute('readonly', ''); - this.fakeElem.value = this.text; - - this.container.appendChild(this.fakeElem); - - this.selectedText = (0, _select2.default)(this.fakeElem); - this.copyText(); - } - - /** - * Only removes the fake element after another click event, that way - * a user can hit `Ctrl+C` to copy because selection still exists. - */ - - }, { - key: 'removeFake', - value: function removeFake() { - if (this.fakeHandler) { - this.container.removeEventListener('click', this.fakeHandlerCallback); - this.fakeHandler = null; - this.fakeHandlerCallback = null; - } - - if (this.fakeElem) { - this.container.removeChild(this.fakeElem); - this.fakeElem = null; - } - } - - /** - * Selects the content from element passed on `target` property. - */ - - }, { - key: 'selectTarget', - value: function selectTarget() { - this.selectedText = (0, _select2.default)(this.target); - this.copyText(); - } - - /** - * Executes the copy operation based on the current selection. - */ - - }, { - key: 'copyText', - value: function copyText() { - var succeeded = void 0; - - try { - succeeded = document.execCommand(this.action); - } catch (err) { - succeeded = false; - } - - this.handleResult(succeeded); - } - - /** - * Fires an event based on the copy operation result. - * @param {Boolean} succeeded - */ - - }, { - key: 'handleResult', - value: function handleResult(succeeded) { - this.emitter.emit(succeeded ? 'success' : 'error', { - action: this.action, - text: this.selectedText, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this) - }); - } - - /** - * Moves focus away from `target` and back to the trigger, removes current selection. - */ - - }, { - key: 'clearSelection', - value: function clearSelection() { - if (this.trigger) { - this.trigger.focus(); - } - - window.getSelection().removeAllRanges(); - } - - /** - * Sets the `action` to be performed which can be either 'copy' or 'cut'. - * @param {String} action - */ - - }, { - key: 'destroy', - - - /** - * Destroy lifecycle. - */ - value: function destroy() { - this.removeFake(); - } - }, { - key: 'action', - set: function set() { - var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; - - this._action = action; - - if (this._action !== 'copy' && this._action !== 'cut') { - throw new Error('Invalid "action" value, use either "copy" or "cut"'); - } - } - - /** - * Gets the `action` property. - * @return {String} - */ - , - get: function get() { - return this._action; - } - - /** - * Sets the `target` property using an element - * that will be have its content copied. - * @param {Element} target - */ - - }, { - key: 'target', - set: function set(target) { - if (target !== undefined) { - if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { - if (this.action === 'copy' && target.hasAttribute('disabled')) { - throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); - } - - if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { - throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); - } - - this._target = target; - } else { - throw new Error('Invalid "target" value, use a valid Element'); - } - } - } - - /** - * Gets the `target` property. - * @return {String|HTMLElement} - */ - , - get: function get() { - return this._target; - } - }]); - - return ClipboardAction; -}(); - -module.exports = ClipboardAction; - -/***/ }), -/* 2 */ -/***/ (function(module, exports) { - -function select(element) { - var selectedText; - - if (element.nodeName === 'SELECT') { - element.focus(); - - selectedText = element.value; - } - else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { - var isReadOnly = element.hasAttribute('readonly'); - - if (!isReadOnly) { - element.setAttribute('readonly', ''); - } - - element.select(); - element.setSelectionRange(0, element.value.length); - - if (!isReadOnly) { - element.removeAttribute('readonly'); - } - - selectedText = element.value; - } - else { - if (element.hasAttribute('contenteditable')) { - element.focus(); - } - - var selection = window.getSelection(); - var range = document.createRange(); - - range.selectNodeContents(element); - selection.removeAllRanges(); - selection.addRange(range); - - selectedText = selection.toString(); - } - - return selectedText; -} - -module.exports = select; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -function E () { - // Keep this empty so it's easier to inherit from - // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) -} - -E.prototype = { - on: function (name, callback, ctx) { - var e = this.e || (this.e = {}); - - (e[name] || (e[name] = [])).push({ - fn: callback, - ctx: ctx - }); - - return this; - }, - - once: function (name, callback, ctx) { - var self = this; - function listener () { - self.off(name, listener); - callback.apply(ctx, arguments); - }; - - listener._ = callback - return this.on(name, listener, ctx); - }, - - emit: function (name) { - var data = [].slice.call(arguments, 1); - var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); - var i = 0; - var len = evtArr.length; - - for (i; i < len; i++) { - evtArr[i].fn.apply(evtArr[i].ctx, data); - } - - return this; - }, - - off: function (name, callback) { - var e = this.e || (this.e = {}); - var evts = e[name]; - var liveEvents = []; - - if (evts && callback) { - for (var i = 0, len = evts.length; i < len; i++) { - if (evts[i].fn !== callback && evts[i].fn._ !== callback) - liveEvents.push(evts[i]); - } - } - - // Remove event from queue to prevent memory leak - // Suggested by https://github.com/lazd - // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 - - (liveEvents.length) - ? e[name] = liveEvents - : delete e[name]; - - return this; - } -}; - -module.exports = E; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -var is = __webpack_require__(5); -var delegate = __webpack_require__(6); - -/** - * Validates all params and calls the right - * listener function based on its target type. - * - * @param {String|HTMLElement|HTMLCollection|NodeList} target - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listen(target, type, callback) { - if (!target && !type && !callback) { - throw new Error('Missing required arguments'); - } - - if (!is.string(type)) { - throw new TypeError('Second argument must be a String'); - } - - if (!is.fn(callback)) { - throw new TypeError('Third argument must be a Function'); - } - - if (is.node(target)) { - return listenNode(target, type, callback); - } - else if (is.nodeList(target)) { - return listenNodeList(target, type, callback); - } - else if (is.string(target)) { - return listenSelector(target, type, callback); - } - else { - throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); - } -} - -/** - * Adds an event listener to a HTML element - * and returns a remove listener function. - * - * @param {HTMLElement} node - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNode(node, type, callback) { - node.addEventListener(type, callback); - - return { - destroy: function() { - node.removeEventListener(type, callback); - } - } -} - -/** - * Add an event listener to a list of HTML elements - * and returns a remove listener function. - * - * @param {NodeList|HTMLCollection} nodeList - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNodeList(nodeList, type, callback) { - Array.prototype.forEach.call(nodeList, function(node) { - node.addEventListener(type, callback); - }); - - return { - destroy: function() { - Array.prototype.forEach.call(nodeList, function(node) { - node.removeEventListener(type, callback); - }); - } - } -} - -/** - * Add an event listener to a selector - * and returns a remove listener function. - * - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenSelector(selector, type, callback) { - return delegate(document.body, selector, type, callback); -} - -module.exports = listen; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -/** - * Check if argument is a HTML element. - * - * @param {Object} value - * @return {Boolean} - */ -exports.node = function(value) { - return value !== undefined - && value instanceof HTMLElement - && value.nodeType === 1; -}; - -/** - * Check if argument is a list of HTML elements. - * - * @param {Object} value - * @return {Boolean} - */ -exports.nodeList = function(value) { - var type = Object.prototype.toString.call(value); - - return value !== undefined - && (type === '[object NodeList]' || type === '[object HTMLCollection]') - && ('length' in value) - && (value.length === 0 || exports.node(value[0])); -}; - -/** - * Check if argument is a string. - * - * @param {Object} value - * @return {Boolean} - */ -exports.string = function(value) { - return typeof value === 'string' - || value instanceof String; -}; - -/** - * Check if argument is a function. - * - * @param {Object} value - * @return {Boolean} - */ -exports.fn = function(value) { - var type = Object.prototype.toString.call(value); - - return type === '[object Function]'; -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -var closest = __webpack_require__(7); - -/** - * Delegates event to a selector. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @param {Boolean} useCapture - * @return {Object} - */ -function _delegate(element, selector, type, callback, useCapture) { - var listenerFn = listener.apply(this, arguments); - - element.addEventListener(type, listenerFn, useCapture); - - return { - destroy: function() { - element.removeEventListener(type, listenerFn, useCapture); - } - } -} - -/** - * Delegates event to a selector. - * - * @param {Element|String|Array} [elements] - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @param {Boolean} useCapture - * @return {Object} - */ -function delegate(elements, selector, type, callback, useCapture) { - // Handle the regular Element usage - if (typeof elements.addEventListener === 'function') { - return _delegate.apply(null, arguments); - } - - // Handle Element-less usage, it defaults to global delegation - if (typeof type === 'function') { - // Use `document` as the first parameter, then apply arguments - // This is a short way to .unshift `arguments` without running into deoptimizations - return _delegate.bind(null, document).apply(null, arguments); - } - - // Handle Selector-based usage - if (typeof elements === 'string') { - elements = document.querySelectorAll(elements); - } - - // Handle Array-like based usage - return Array.prototype.map.call(elements, function (element) { - return _delegate(element, selector, type, callback, useCapture); - }); -} - -/** - * Finds closest match and invokes callback. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Function} - */ -function listener(element, selector, type, callback) { - return function(e) { - e.delegateTarget = closest(e.target, selector); - - if (e.delegateTarget) { - callback.call(element, e); - } - } -} - -module.exports = delegate; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports) { - -var DOCUMENT_NODE_TYPE = 9; - -/** - * A polyfill for Element.matches() - */ -if (typeof Element !== 'undefined' && !Element.prototype.matches) { - var proto = Element.prototype; - - proto.matches = proto.matchesSelector || - proto.mozMatchesSelector || - proto.msMatchesSelector || - proto.oMatchesSelector || - proto.webkitMatchesSelector; -} - -/** - * Finds the closest parent that matches a selector. - * - * @param {Element} element - * @param {String} selector - * @return {Function} - */ -function closest (element, selector) { - while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { - if (typeof element.matches === 'function' && - element.matches(selector)) { - return element; - } - element = element.parentNode; - } -} - -module.exports = closest; - - -/***/ }) -/******/ ]); -}); - -/***/ }), - -/***/ "./node_modules/material-design-icons-svg/paths/content-copy.json": -/*!************************************************************************!*\ - !*** ./node_modules/material-design-icons-svg/paths/content-copy.json ***! - \************************************************************************/ -/*! exports provided: default */ -/***/ (function(module) { - -module.exports = JSON.parse("\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\""); - -/***/ }), - -/***/ "./node_modules/material-design-icons-svg/paths/file-search-outline.json": -/*!*******************************************************************************!*\ - !*** ./node_modules/material-design-icons-svg/paths/file-search-outline.json ***! - \*******************************************************************************/ -/*! exports provided: default */ -/***/ (function(module) { - -module.exports = JSON.parse("\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z\""); - -/***/ }), - -/***/ "./node_modules/ramda/es/F.js": -/*!************************************!*\ - !*** ./node_modules/ramda/es/F.js ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - - -/** - * A function that always returns `false`. Any passed in parameters are ignored. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Function - * @sig * -> Boolean - * @param {*} - * @return {Boolean} - * @see R.T - * @example - * - * R.F(); //=> false - */ -var F = function () { - return false; -}; -/* harmony default export */ __webpack_exports__["default"] = (F); - -/***/ }), - -/***/ "./node_modules/ramda/es/T.js": -/*!************************************!*\ - !*** ./node_modules/ramda/es/T.js ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - - -/** - * A function that always returns `true`. Any passed in parameters are ignored. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Function - * @sig * -> Boolean - * @param {*} - * @return {Boolean} - * @see R.F - * @example - * - * R.T(); //=> true - */ -var T = function () { - return true; -}; -/* harmony default export */ __webpack_exports__["default"] = (T); - -/***/ }), - -/***/ "./node_modules/ramda/es/__.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/__.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * A special placeholder value used to specify "gaps" within curried functions, - * allowing partial application of any combination of arguments, regardless of - * their positions. - * - * If `g` is a curried ternary function and `_` is `R.__`, the following are - * equivalent: - * - * - `g(1, 2, 3)` - * - `g(_, 2, 3)(1)` - * - `g(_, _, 3)(1)(2)` - * - `g(_, _, 3)(1, 2)` - * - `g(_, 2, _)(1, 3)` - * - `g(_, 2)(1)(3)` - * - `g(_, 2)(1, 3)` - * - `g(_, 2)(_, 3)(1)` - * - * @name __ - * @constant - * @memberOf R - * @since v0.6.0 - * @category Function - * @example - * - * const greet = R.replace('{name}', R.__, 'Hello, {name}!'); - * greet('Alice'); //=> 'Hello, Alice!' - */ -/* harmony default export */ __webpack_exports__["default"] = ({ '@@functional/placeholder': true }); - -/***/ }), - -/***/ "./node_modules/ramda/es/add.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/add.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Adds two values. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} a - * @param {Number} b - * @return {Number} - * @see R.subtract - * @example - * - * R.add(2, 3); //=> 5 - * R.add(7)(10); //=> 17 - */ -var add = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function add(a, b) { - return Number(a) + Number(b); -}); -/* harmony default export */ __webpack_exports__["default"] = (add); - -/***/ }), - -/***/ "./node_modules/ramda/es/addIndex.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/addIndex.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - - -/** - * Creates a new list iteration function from an existing one by adding two new - * parameters to its callback function: the current index, and the entire list. - * - * This would turn, for instance, [`R.map`](#map) function into one that - * more closely resembles `Array.prototype.map`. Note that this will only work - * for functions in which the iteration callback function is the first - * parameter, and where the list is the last parameter. (This latter might be - * unimportant if the list parameter is not used.) - * - * @func - * @memberOf R - * @since v0.15.0 - * @category Function - * @category List - * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *) - * @param {Function} fn A list iteration function that does not pass index or list to its callback - * @return {Function} An altered list iteration function that passes (item, index, list) to its callback - * @example - * - * const mapIndexed = R.addIndex(R.map); - * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); - * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] - */ -var addIndex = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function addIndex(fn) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(fn.length, function () { - var idx = 0; - var origFn = arguments[0]; - var list = arguments[arguments.length - 1]; - var args = Array.prototype.slice.call(arguments, 0); - args[0] = function () { - var result = origFn.apply(this, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments, [idx, list])); - idx += 1; - return result; - }; - return fn.apply(this, args); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (addIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/adjust.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/adjust.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - - -/** - * Applies a function to the value at the given index of an array, returning a - * new copy of the array with the element at the given index replaced with the - * result of the function application. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category List - * @sig Number -> (a -> a) -> [a] -> [a] - * @param {Number} idx The index. - * @param {Function} fn The function to apply. - * @param {Array|Arguments} list An array-like object whose value - * at the supplied index will be replaced. - * @return {Array} A copy of the supplied array-like object with - * the element at index `idx` replaced with the value - * returned by applying `fn` to the existing element. - * @see R.update - * @example - * - * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd'] - * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D'] - * @symb R.adjust(-1, f, [a, b]) = [a, f(b)] - * @symb R.adjust(0, f, [a, b]) = [f(a), b] - */ -var adjust = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function adjust(idx, fn, list) { - if (idx >= list.length || idx < -list.length) { - return list; - } - var start = idx < 0 ? list.length : 0; - var _idx = start + idx; - var _list = Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list); - _list[_idx] = fn(list[_idx]); - return _list; -}); -/* harmony default export */ __webpack_exports__["default"] = (adjust); - -/***/ }), - -/***/ "./node_modules/ramda/es/all.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/all.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xall_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xall.js */ "./node_modules/ramda/es/internal/_xall.js"); - - - - -/** - * Returns `true` if all elements of the list match the predicate, `false` if - * there are any that don't. - * - * Dispatches to the `all` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig (a -> Boolean) -> [a] -> Boolean - * @param {Function} fn The predicate function. - * @param {Array} list The array to consider. - * @return {Boolean} `true` if the predicate is satisfied by every element, `false` - * otherwise. - * @see R.any, R.none, R.transduce - * @example - * - * const equals3 = R.equals(3); - * R.all(equals3)([3, 3, 3, 3]); //=> true - * R.all(equals3)([3, 3, 1, 3]); //=> false - */ -var all = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['all'], _internal_xall_js__WEBPACK_IMPORTED_MODULE_2__["default"], function all(fn, list) { - var idx = 0; - while (idx < list.length) { - if (!fn(list[idx])) { - return false; - } - idx += 1; - } - return true; -})); -/* harmony default export */ __webpack_exports__["default"] = (all); - -/***/ }), - -/***/ "./node_modules/ramda/es/allPass.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/allPass.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - - - - -/** - * Takes a list of predicates and returns a predicate that returns true for a - * given list of arguments if every one of the provided predicates is satisfied - * by those arguments. - * - * The function returned is a curried function whose arity matches that of the - * highest-arity predicate. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Logic - * @sig [(*... -> Boolean)] -> (*... -> Boolean) - * @param {Array} predicates An array of predicates to check - * @return {Function} The combined predicate - * @see R.anyPass - * @example - * - * const isQueen = R.propEq('rank', 'Q'); - * const isSpade = R.propEq('suit', '♠︎'); - * const isQueenOfSpades = R.allPass([isQueen, isSpade]); - * - * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false - * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true - */ -var allPass = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function allPass(preds) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_2__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_3__["default"])('length', preds)), function () { - var idx = 0; - var len = preds.length; - while (idx < len) { - if (!preds[idx].apply(this, arguments)) { - return false; - } - idx += 1; - } - return true; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (allPass); - -/***/ }), - -/***/ "./node_modules/ramda/es/always.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/always.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Returns a function that always returns the given value. Note that for - * non-primitives the value returned is a reference to the original value. - * - * This function is known as `const`, `constant`, or `K` (for K combinator) in - * other languages and libraries. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig a -> (* -> a) - * @param {*} val The value to wrap in a function - * @return {Function} A Function :: * -> val. - * @example - * - * const t = R.always('Tee'); - * t(); //=> 'Tee' - */ -var always = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function always(val) { - return function () { - return val; - }; -}); -/* harmony default export */ __webpack_exports__["default"] = (always); - -/***/ }), - -/***/ "./node_modules/ramda/es/and.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/and.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if both arguments are `true`; `false` otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Logic - * @sig a -> b -> a | b - * @param {Any} a - * @param {Any} b - * @return {Any} the first argument if it is falsy, otherwise the second argument. - * @see R.both - * @example - * - * R.and(true, true); //=> true - * R.and(true, false); //=> false - * R.and(false, true); //=> false - * R.and(false, false); //=> false - */ -var and = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function and(a, b) { - return a && b; -}); -/* harmony default export */ __webpack_exports__["default"] = (and); - -/***/ }), - -/***/ "./node_modules/ramda/es/any.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/any.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xany_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xany.js */ "./node_modules/ramda/es/internal/_xany.js"); - - - - -/** - * Returns `true` if at least one of the elements of the list match the predicate, - * `false` otherwise. - * - * Dispatches to the `any` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig (a -> Boolean) -> [a] -> Boolean - * @param {Function} fn The predicate function. - * @param {Array} list The array to consider. - * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false` - * otherwise. - * @see R.all, R.none, R.transduce - * @example - * - * const lessThan0 = R.flip(R.lt)(0); - * const lessThan2 = R.flip(R.lt)(2); - * R.any(lessThan0)([1, 2]); //=> false - * R.any(lessThan2)([1, 2]); //=> true - */ -var any = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['any'], _internal_xany_js__WEBPACK_IMPORTED_MODULE_2__["default"], function any(fn, list) { - var idx = 0; - while (idx < list.length) { - if (fn(list[idx])) { - return true; - } - idx += 1; - } - return false; -})); -/* harmony default export */ __webpack_exports__["default"] = (any); - -/***/ }), - -/***/ "./node_modules/ramda/es/anyPass.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/anyPass.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - - - - -/** - * Takes a list of predicates and returns a predicate that returns true for a - * given list of arguments if at least one of the provided predicates is - * satisfied by those arguments. - * - * The function returned is a curried function whose arity matches that of the - * highest-arity predicate. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Logic - * @sig [(*... -> Boolean)] -> (*... -> Boolean) - * @param {Array} predicates An array of predicates to check - * @return {Function} The combined predicate - * @see R.allPass - * @example - * - * const isClub = R.propEq('suit', '♣'); - * const isSpade = R.propEq('suit', '♠'); - * const isBlackCard = R.anyPass([isClub, isSpade]); - * - * isBlackCard({rank: '10', suit: '♣'}); //=> true - * isBlackCard({rank: 'Q', suit: '♠'}); //=> true - * isBlackCard({rank: 'Q', suit: '♦'}); //=> false - */ -var anyPass = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function anyPass(preds) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_2__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_3__["default"])('length', preds)), function () { - var idx = 0; - var len = preds.length; - while (idx < len) { - if (preds[idx].apply(this, arguments)) { - return true; - } - idx += 1; - } - return false; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (anyPass); - -/***/ }), - -/***/ "./node_modules/ramda/es/ap.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/ap.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); - - - - - -/** - * ap applies a list of functions to a list of values. - * - * Dispatches to the `ap` method of the second argument, if present. Also - * treats curried functions as applicatives. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category Function - * @sig [a -> b] -> [a] -> [b] - * @sig Apply f => f (a -> b) -> f a -> f b - * @sig (r -> a -> b) -> (r -> a) -> (r -> b) - * @param {*} applyF - * @param {*} applyX - * @return {*} - * @example - * - * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6] - * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"] - * - * // R.ap can also be used as S combinator - * // when only two functions are passed - * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA' - * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)] - */ -var ap = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function ap(applyF, applyX) { - return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) { - return applyF(x)(applyX(x)); - } : Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (acc, f) { - return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(acc, Object(_map_js__WEBPACK_IMPORTED_MODULE_3__["default"])(f, applyX)); - }, [], applyF); -}); -/* harmony default export */ __webpack_exports__["default"] = (ap); - -/***/ }), - -/***/ "./node_modules/ramda/es/aperture.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/aperture.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_aperture_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_aperture.js */ "./node_modules/ramda/es/internal/_aperture.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xaperture_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xaperture.js */ "./node_modules/ramda/es/internal/_xaperture.js"); - - - - - -/** - * Returns a new list, composed of n-tuples of consecutive elements. If `n` is - * greater than the length of the list, an empty list is returned. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category List - * @sig Number -> [a] -> [[a]] - * @param {Number} n The size of the tuples to create - * @param {Array} list The list to split into `n`-length tuples - * @return {Array} The resulting list of `n`-length tuples - * @see R.transduce - * @example - * - * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] - * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] - * R.aperture(7, [1, 2, 3, 4, 5]); //=> [] - */ -var aperture = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_2__["default"])([], _internal_xaperture_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_aperture_js__WEBPACK_IMPORTED_MODULE_0__["default"])); -/* harmony default export */ __webpack_exports__["default"] = (aperture); - -/***/ }), - -/***/ "./node_modules/ramda/es/append.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/append.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns a new list containing the contents of the given list, followed by - * the given element. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> [a] - * @param {*} el The element to add to the end of the new list. - * @param {Array} list The list of elements to add a new item to. - * list. - * @return {Array} A new list containing the elements of the old list followed by `el`. - * @see R.prepend - * @example - * - * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests'] - * R.append('tests', []); //=> ['tests'] - * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] - */ -var append = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function append(el, list) { - return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list, [el]); -}); -/* harmony default export */ __webpack_exports__["default"] = (append); - -/***/ }), - -/***/ "./node_modules/ramda/es/apply.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/apply.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Applies function `fn` to the argument list `args`. This is useful for - * creating a fixed-arity function from a variadic function. `fn` should be a - * bound function if context is significant. - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Function - * @sig (*... -> a) -> [*] -> a - * @param {Function} fn The function which will be called with `args` - * @param {Array} args The arguments to call `fn` with - * @return {*} result The result, equivalent to `fn(...args)` - * @see R.call, R.unapply - * @example - * - * const nums = [1, 2, 3, -99, 42, 6, 7]; - * R.apply(Math.max, nums); //=> 42 - * @symb R.apply(f, [a, b, c]) = f(a, b, c) - */ -var apply = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function apply(fn, args) { - return fn.apply(this, args); -}); -/* harmony default export */ __webpack_exports__["default"] = (apply); - -/***/ }), - -/***/ "./node_modules/ramda/es/applySpec.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/applySpec.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _apply_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./apply.js */ "./node_modules/ramda/es/apply.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); -/* harmony import */ var _values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./values.js */ "./node_modules/ramda/es/values.js"); - - - - - - - - - -// Use custom mapValues function to avoid issues with specs that include a "map" key and R.map -// delegating calls to .map -function mapValues(fn, obj) { - return Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(obj).reduce(function (acc, key) { - acc[key] = fn(obj[key]); - return acc; - }, {}); -} - -/** - * Given a spec object recursively mapping properties to functions, creates a - * function producing an object of the same structure, by mapping each property - * to the result of calling its associated function with the supplied arguments. - * - * @func - * @memberOf R - * @since v0.20.0 - * @category Function - * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v}) - * @param {Object} spec an object recursively mapping properties to functions for - * producing the values for these properties. - * @return {Function} A function that returns an object of the same structure - * as `spec', with each property set to the value returned by calling its - * associated function with the supplied arguments. - * @see R.converge, R.juxt - * @example - * - * const getMetrics = R.applySpec({ - * sum: R.add, - * nested: { mul: R.multiply } - * }); - * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } - * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } } - */ -var applySpec = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function applySpec(spec) { - spec = mapValues(function (v) { - return typeof v == 'function' ? v : applySpec(v); - }, spec); - - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_4__["default"])('length', Object(_values_js__WEBPACK_IMPORTED_MODULE_7__["default"])(spec))), function () { - var args = arguments; - return mapValues(function (f) { - return Object(_apply_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f, args); - }, spec); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (applySpec); - -/***/ }), - -/***/ "./node_modules/ramda/es/applyTo.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/applyTo.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Takes a value and applies a function to it. - * - * This function is also known as the `thrush` combinator. - * - * @func - * @memberOf R - * @since v0.25.0 - * @category Function - * @sig a -> (a -> b) -> b - * @param {*} x The value - * @param {Function} f The function to apply - * @return {*} The result of applying `f` to `x` - * @example - * - * const t42 = R.applyTo(42); - * t42(R.identity); //=> 42 - * t42(R.add(1)); //=> 43 - */ -var applyTo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function applyTo(x, f) { - return f(x); -}); -/* harmony default export */ __webpack_exports__["default"] = (applyTo); - -/***/ }), - -/***/ "./node_modules/ramda/es/ascend.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/ascend.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Makes an ascending comparator function out of a function that returns a value - * that can be compared with `<` and `>`. - * - * @func - * @memberOf R - * @since v0.23.0 - * @category Function - * @sig Ord b => (a -> b) -> a -> a -> Number - * @param {Function} fn A function of arity one that returns a value that can be compared - * @param {*} a The first item to be compared. - * @param {*} b The second item to be compared. - * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0` - * @see R.descend - * @example - * - * const byAge = R.ascend(R.prop('age')); - * const people = [ - * { name: 'Emma', age: 70 }, - * { name: 'Peter', age: 78 }, - * { name: 'Mikhail', age: 62 }, - * ]; - * const peopleByYoungestFirst = R.sort(byAge, people); - * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] - */ -var ascend = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function ascend(fn, a, b) { - var aa = fn(a); - var bb = fn(b); - return aa < bb ? -1 : aa > bb ? 1 : 0; -}); -/* harmony default export */ __webpack_exports__["default"] = (ascend); - -/***/ }), - -/***/ "./node_modules/ramda/es/assoc.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/assoc.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Makes a shallow clone of an object, setting or overriding the specified - * property with the given value. Note that this copies and flattens prototype - * properties onto the new object as well. All non-primitive properties are - * copied by reference. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Object - * @sig String -> a -> {k: v} -> {k: v} - * @param {String} prop The property name to set - * @param {*} val The new value - * @param {Object} obj The object to clone - * @return {Object} A new object equivalent to the original except for the changed property. - * @see R.dissoc, R.pick - * @example - * - * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} - */ -var assoc = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function assoc(prop, val, obj) { - var result = {}; - for (var p in obj) { - result[p] = obj[p]; - } - result[prop] = val; - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (assoc); - -/***/ }), - -/***/ "./node_modules/ramda/es/assocPath.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/assocPath.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); -/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); -/* harmony import */ var _isNil_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/es/isNil.js"); - - - - - - - -/** - * Makes a shallow clone of an object, setting or overriding the nodes required - * to create the given path, and placing the specific value at the tail end of - * that path. Note that this copies and flattens prototype properties onto the - * new object as well. All non-primitive properties are copied by reference. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Object - * @typedefn Idx = String | Int - * @sig [Idx] -> a -> {a} -> {a} - * @param {Array} path the path to set - * @param {*} val The new value - * @param {Object} obj The object to clone - * @return {Object} A new object equivalent to the original except along the specified path. - * @see R.dissocPath - * @example - * - * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}} - * - * // Any missing or non-object keys in path will be overridden - * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} - */ -var assocPath = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function assocPath(path, val, obj) { - if (path.length === 0) { - return val; - } - var idx = path[0]; - if (path.length > 1) { - var nextObj = !Object(_isNil_js__WEBPACK_IMPORTED_MODULE_5__["default"])(obj) && Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, obj) ? obj[idx] : Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__["default"])(path[1]) ? [] : {}; - val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj); - } - if (Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__["default"])(idx) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { - var arr = [].concat(obj); - arr[idx] = val; - return arr; - } else { - return Object(_assoc_js__WEBPACK_IMPORTED_MODULE_4__["default"])(idx, val, obj); - } -}); -/* harmony default export */ __webpack_exports__["default"] = (assocPath); - -/***/ }), - -/***/ "./node_modules/ramda/es/binary.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/binary.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); - - - -/** - * Wraps a function of any arity (including nullary) in a function that accepts - * exactly 2 parameters. Any extraneous parameters will not be passed to the - * supplied function. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category Function - * @sig (* -> c) -> (a, b -> c) - * @param {Function} fn The function to wrap. - * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of - * arity 2. - * @see R.nAry, R.unary - * @example - * - * const takesThreeArgs = function(a, b, c) { - * return [a, b, c]; - * }; - * takesThreeArgs.length; //=> 3 - * takesThreeArgs(1, 2, 3); //=> [1, 2, 3] - * - * const takesTwoArgs = R.binary(takesThreeArgs); - * takesTwoArgs.length; //=> 2 - * // Only 2 arguments are passed to the wrapped function - * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] - * @symb R.binary(f)(a, b, c) = f(a, b) - */ -var binary = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function binary(fn) { - return Object(_nAry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(2, fn); -}); -/* harmony default export */ __webpack_exports__["default"] = (binary); - -/***/ }), - -/***/ "./node_modules/ramda/es/bind.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/bind.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Creates a function that is bound to a context. - * Note: `R.bind` does not provide the additional argument-binding capabilities of - * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). - * - * @func - * @memberOf R - * @since v0.6.0 - * @category Function - * @category Object - * @sig (* -> *) -> {*} -> (* -> *) - * @param {Function} fn The function to bind to context - * @param {Object} thisObj The context to bind `fn` to - * @return {Function} A function that will execute in the context of `thisObj`. - * @see R.partial - * @example - * - * const log = R.bind(console.log, console); - * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} - * // logs {a: 2} - * @symb R.bind(f, o)(a, b) = f.call(o, a, b) - */ -var bind = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function bind(fn, thisObj) { - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { - return fn.apply(thisObj, arguments); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (bind); - -/***/ }), - -/***/ "./node_modules/ramda/es/both.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/both.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); -/* harmony import */ var _and_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./and.js */ "./node_modules/ramda/es/and.js"); -/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); - - - - - -/** - * A function which calls the two provided functions and returns the `&&` - * of the results. - * It returns the result of the first function if it is false-y and the result - * of the second function otherwise. Note that this is short-circuited, - * meaning that the second function will not be invoked if the first returns a - * false-y value. - * - * In addition to functions, `R.both` also accepts any fantasy-land compatible - * applicative functor. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category Logic - * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) - * @param {Function} f A predicate - * @param {Function} g Another predicate - * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. - * @see R.and - * @example - * - * const gt10 = R.gt(R.__, 10) - * const lt20 = R.lt(R.__, 20) - * const f = R.both(gt10, lt20); - * f(15); //=> true - * f(30); //=> false - * - * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false) - * R.both([false, false, 'a'], [11]); //=> [false, false, 11] - */ -var both = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function both(f, g) { - return Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f) ? function _both() { - return f.apply(this, arguments) && g.apply(this, arguments); - } : Object(_lift_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_and_js__WEBPACK_IMPORTED_MODULE_2__["default"])(f, g); -}); -/* harmony default export */ __webpack_exports__["default"] = (both); - -/***/ }), - -/***/ "./node_modules/ramda/es/call.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/call.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); - - -/** - * Returns the result of calling its first argument with the remaining - * arguments. This is occasionally useful as a converging function for - * [`R.converge`](#converge): the first branch can produce a function while the - * remaining branches produce values to be passed to that function as its - * arguments. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Function - * @sig (*... -> a),*... -> a - * @param {Function} fn The function to apply to the remaining arguments. - * @param {...*} args Any number of positional arguments. - * @return {*} - * @see R.apply - * @example - * - * R.call(R.add, 1, 2); //=> 3 - * - * const indentN = R.pipe(R.repeat(' '), - * R.join(''), - * R.replace(/^(?!$)/gm)); - * - * const format = R.converge(R.call, [ - * R.pipe(R.prop('indent'), indentN), - * R.prop('value') - * ]); - * - * format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' - * @symb R.call(f, a, b) = f(a, b) - */ -var call = /*#__PURE__*/Object(_curry_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function call(fn) { - return fn.apply(this, Array.prototype.slice.call(arguments, 1)); -}); -/* harmony default export */ __webpack_exports__["default"] = (call); - -/***/ }), - -/***/ "./node_modules/ramda/es/chain.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/chain.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/es/internal/_makeFlat.js"); -/* harmony import */ var _internal_xchain_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xchain.js */ "./node_modules/ramda/es/internal/_xchain.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); - - - - - - -/** - * `chain` maps a function over a list and concatenates the results. `chain` - * is also known as `flatMap` in some libraries. - * - * Dispatches to the `chain` method of the second argument, if present, - * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain). - * - * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category List - * @sig Chain m => (a -> m b) -> m a -> m b - * @param {Function} fn The function to map with - * @param {Array} list The list to map over - * @return {Array} The result of flat-mapping `list` with `fn` - * @example - * - * const duplicate = n => [n, n]; - * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] - * - * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1] - */ -var chain = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['fantasy-land/chain', 'chain'], _internal_xchain_js__WEBPACK_IMPORTED_MODULE_3__["default"], function chain(fn, monad) { - if (typeof monad === 'function') { - return function (x) { - return fn(monad(x))(x); - }; - } - return Object(_internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_2__["default"])(false)(Object(_map_js__WEBPACK_IMPORTED_MODULE_4__["default"])(fn, monad)); -})); -/* harmony default export */ __webpack_exports__["default"] = (chain); - -/***/ }), - -/***/ "./node_modules/ramda/es/clamp.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/clamp.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Restricts a number to be within a range. - * - * Also works for other ordered types such as Strings and Dates. - * - * @func - * @memberOf R - * @since v0.20.0 - * @category Relation - * @sig Ord a => a -> a -> a -> a - * @param {Number} minimum The lower limit of the clamp (inclusive) - * @param {Number} maximum The upper limit of the clamp (inclusive) - * @param {Number} value Value to be clamped - * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise - * @example - * - * R.clamp(1, 10, -5) // => 1 - * R.clamp(1, 10, 15) // => 10 - * R.clamp(1, 10, 4) // => 4 - */ -var clamp = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function clamp(min, max, value) { - if (min > max) { - throw new Error('min must not be greater than max in clamp(min, max, value)'); - } - return value < min ? min : value > max ? max : value; -}); -/* harmony default export */ __webpack_exports__["default"] = (clamp); - -/***/ }), - -/***/ "./node_modules/ramda/es/clone.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/clone.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_clone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/es/internal/_clone.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - - -/** - * Creates a deep copy of the value which may contain (nested) `Array`s and - * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are - * assigned by reference rather than copied - * - * Dispatches to a `clone` method if present. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig {*} -> {*} - * @param {*} value The object or array to clone - * @return {*} A deeply cloned copy of `val` - * @example - * - * const objects = [{}, {}, {}]; - * const objectsClone = R.clone(objects); - * objects === objectsClone; //=> false - * objects[0] === objectsClone[0]; //=> false - */ -var clone = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function clone(value) { - return value != null && typeof value.clone === 'function' ? value.clone() : Object(_internal_clone_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value, [], [], true); -}); -/* harmony default export */ __webpack_exports__["default"] = (clone); - -/***/ }), - -/***/ "./node_modules/ramda/es/comparator.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/comparator.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Makes a comparator function out of a function that reports whether the first - * element is less than the second. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig ((a, b) -> Boolean) -> ((a, b) -> Number) - * @param {Function} pred A predicate function of arity two which will return `true` if the first argument - * is less than the second, `false` otherwise - * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0` - * @example - * - * const byAge = R.comparator((a, b) => a.age < b.age); - * const people = [ - * { name: 'Emma', age: 70 }, - * { name: 'Peter', age: 78 }, - * { name: 'Mikhail', age: 62 }, - * ]; - * const peopleByIncreasingAge = R.sort(byAge, people); - * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] - */ -var comparator = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function comparator(pred) { - return function (a, b) { - return pred(a, b) ? -1 : pred(b, a) ? 1 : 0; - }; -}); -/* harmony default export */ __webpack_exports__["default"] = (comparator); - -/***/ }), - -/***/ "./node_modules/ramda/es/complement.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/complement.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); -/* harmony import */ var _not_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./not.js */ "./node_modules/ramda/es/not.js"); - - - -/** - * Takes a function `f` and returns a function `g` such that if called with the same arguments - * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`. - * - * `R.complement` may be applied to any functor - * - * @func - * @memberOf R - * @since v0.12.0 - * @category Logic - * @sig (*... -> *) -> (*... -> Boolean) - * @param {Function} f - * @return {Function} - * @see R.not - * @example - * - * const isNotNil = R.complement(R.isNil); - * isNil(null); //=> true - * isNotNil(null); //=> false - * isNil(7); //=> false - * isNotNil(7); //=> true - */ -var complement = /*#__PURE__*/Object(_lift_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_not_js__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (complement); - -/***/ }), - -/***/ "./node_modules/ramda/es/compose.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/compose.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; }); -/* harmony import */ var _pipe_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/es/pipe.js"); -/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); - - - -/** - * Performs right-to-left function composition. The rightmost function may have - * any arity; the remaining functions must be unary. - * - * **Note:** The result of compose is not automatically curried. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z) - * @param {...Function} ...functions The functions to compose - * @return {Function} - * @see R.pipe - * @example - * - * const classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName - * const yellGreeting = R.compose(R.toUpper, classyGreeting); - * yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND" - * - * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 - * - * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b))) - */ -function compose() { - if (arguments.length === 0) { - throw new Error('compose requires at least one argument'); - } - return _pipe_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/composeK.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/composeK.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return composeK; }); -/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); -/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); - - - - -/** - * Returns the right-to-left Kleisli composition of the provided functions, - * each of which must return a value of a type supported by [`chain`](#chain). - * - * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), f)`. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Function - * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z) - * @param {...Function} ...functions The functions to compose - * @return {Function} - * @see R.pipeK - * @deprecated since v0.26.0 - * @example - * - * // get :: String -> Object -> Maybe * - * const get = R.curry((propName, obj) => Maybe(obj[propName])) - * - * // getStateCode :: Maybe String -> Maybe String - * const getStateCode = R.composeK( - * R.compose(Maybe.of, R.toUpper), - * get('state'), - * get('address'), - * get('user'), - * ); - * getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY") - * getStateCode({}); //=> Maybe.Nothing() - * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a))) - */ -function composeK() { - if (arguments.length === 0) { - throw new Error('composeK requires at least one argument'); - } - var init = Array.prototype.slice.call(arguments); - var last = init.pop(); - return Object(_compose_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_compose_js__WEBPACK_IMPORTED_MODULE_1__["default"].apply(this, Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_chain_js__WEBPACK_IMPORTED_MODULE_0__["default"], init)), last); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/composeP.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/composeP.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return composeP; }); -/* harmony import */ var _pipeP_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pipeP.js */ "./node_modules/ramda/es/pipeP.js"); -/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); - - - -/** - * Performs right-to-left composition of one or more Promise-returning - * functions. The rightmost function may have any arity; the remaining - * functions must be unary. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Function - * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z) - * @param {...Function} functions The functions to compose - * @return {Function} - * @see R.pipeP - * @deprecated since v0.26.0 - * @example - * - * const db = { - * users: { - * JOE: { - * name: 'Joe', - * followers: ['STEVE', 'SUZY'] - * } - * } - * } - * - * // We'll pretend to do a db lookup which returns a promise - * const lookupUser = (userId) => Promise.resolve(db.users[userId]) - * const lookupFollowers = (user) => Promise.resolve(user.followers) - * lookupUser('JOE').then(lookupFollowers) - * - * // followersForUser :: String -> Promise [UserId] - * const followersForUser = R.composeP(lookupFollowers, lookupUser); - * followersForUser('JOE').then(followers => console.log('Followers:', followers)) - * // Followers: ["STEVE","SUZY"] - */ -function composeP() { - if (arguments.length === 0) { - throw new Error('composeP requires at least one argument'); - } - return _pipeP_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/composeWith.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/composeWith.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _pipeWith_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/es/pipeWith.js"); -/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); - - - - -/** - * Performs right-to-left function composition using transforming function. The rightmost function may have - * any arity; the remaining functions must be unary. - * - * **Note:** The result of compose is not automatically curried. - * - * @func - * @memberOf R - * @category Function - * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z) - * @param {...Function} ...functions The functions to compose - * @return {Function} - * @see R.compose, R.pipeWith - * @example - * - * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res)); - * - * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2 - * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined - * - * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, f(i, ...args))) - */ -var composeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function composeWith(xf, list) { - return _pipeWith_js__WEBPACK_IMPORTED_MODULE_1__["default"].apply(this, [xf, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list)]); -}); -/* harmony default export */ __webpack_exports__["default"] = (composeWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/concat.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/concat.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); -/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); -/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); - - - - - - -/** - * Returns the result of concatenating the given lists or strings. - * - * Note: `R.concat` expects both arguments to be of the same type, - * unlike the native `Array.prototype.concat` method. It will throw - * an error if you `concat` an Array with a non-Array value. - * - * Dispatches to the `concat` method of the first argument, if present. - * Can also concatenate two members of a [fantasy-land - * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup). - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [a] -> [a] - * @sig String -> String -> String - * @param {Array|String} firstList The first list - * @param {Array|String} secondList The second list - * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of - * `secondList`. - * - * @example - * - * R.concat('ABC', 'DEF'); // 'ABCDEF' - * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] - * R.concat([], []); //=> [] - */ -var concat = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function concat(a, b) { - if (Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a)) { - if (Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b)) { - return a.concat(b); - } - throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(b) + ' is not an array'); - } - if (Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(a)) { - if (Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(b)) { - return a + b; - } - throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(b) + ' is not a string'); - } - if (a != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a['fantasy-land/concat'])) { - return a['fantasy-land/concat'](b); - } - if (a != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a.concat)) { - return a.concat(b); - } - throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a) + ' does not have a method named "concat" or "fantasy-land/concat"'); -}); -/* harmony default export */ __webpack_exports__["default"] = (concat); - -/***/ }), - -/***/ "./node_modules/ramda/es/cond.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/cond.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - - - - -/** - * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic. - * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments - * to `fn` are applied to each of the predicates in turn until one returns a - * "truthy" value, at which point `fn` returns the result of applying its - * arguments to the corresponding transformer. If none of the predicates - * matches, `fn` returns undefined. - * - * @func - * @memberOf R - * @since v0.6.0 - * @category Logic - * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *) - * @param {Array} pairs A list of [predicate, transformer] - * @return {Function} - * @see R.ifElse, R.unless, R.when - * @example - * - * const fn = R.cond([ - * [R.equals(0), R.always('water freezes at 0°C')], - * [R.equals(100), R.always('water boils at 100°C')], - * [R.T, temp => 'nothing special happens at ' + temp + '°C'] - * ]); - * fn(0); //=> 'water freezes at 0°C' - * fn(50); //=> 'nothing special happens at 50°C' - * fn(100); //=> 'water boils at 100°C' - */ -var cond = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function cond(pairs) { - var arity = Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (pair) { - return pair[0].length; - }, pairs)); - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arity, function () { - var idx = 0; - while (idx < pairs.length) { - if (pairs[idx][0].apply(this, arguments)) { - return pairs[idx][1].apply(this, arguments); - } - idx += 1; - } - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (cond); - -/***/ }), - -/***/ "./node_modules/ramda/es/construct.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/construct.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _constructN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/es/constructN.js"); - - - -/** - * Wraps a constructor function inside a curried function that can be called - * with the same arguments and returns the same type. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig (* -> {*}) -> (* -> {*}) - * @param {Function} fn The constructor function to wrap. - * @return {Function} A wrapped, curried constructor function. - * @see R.invoker - * @example - * - * // Constructor function - * function Animal(kind) { - * this.kind = kind; - * }; - * Animal.prototype.sighting = function() { - * return "It's a " + this.kind + "!"; - * } - * - * const AnimalConstructor = R.construct(Animal) - * - * // Notice we no longer need the 'new' keyword: - * AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}}; - * - * const animalTypes = ["Lion", "Tiger", "Bear"]; - * const animalSighting = R.invoker(0, 'sighting'); - * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor); - * R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] - */ -var construct = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function construct(Fn) { - return Object(_constructN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Fn.length, Fn); -}); -/* harmony default export */ __webpack_exports__["default"] = (construct); - -/***/ }), - -/***/ "./node_modules/ramda/es/constructN.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/constructN.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); -/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); - - - - -/** - * Wraps a constructor function inside a curried function that can be called - * with the same arguments and returns the same type. The arity of the function - * returned is specified to allow using variadic constructor functions. - * - * @func - * @memberOf R - * @since v0.4.0 - * @category Function - * @sig Number -> (* -> {*}) -> (* -> {*}) - * @param {Number} n The arity of the constructor function. - * @param {Function} Fn The constructor function to wrap. - * @return {Function} A wrapped, curried constructor function. - * @example - * - * // Variadic Constructor function - * function Salad() { - * this.ingredients = arguments; - * } - * - * Salad.prototype.recipe = function() { - * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients); - * return R.join('\n', instructions); - * }; - * - * const ThreeLayerSalad = R.constructN(3, Salad); - * - * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments. - * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup'); - * - * console.log(salad.recipe()); - * // Add a dollop of Mayonnaise - * // Add a dollop of Potato Chips - * // Add a dollop of Ketchup - */ -var constructN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function constructN(n, Fn) { - if (n > 10) { - throw new Error('Constructor with greater than ten arguments'); - } - if (n === 0) { - return function () { - return new Fn(); - }; - } - return Object(_curry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_nAry_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) { - switch (arguments.length) { - case 1: - return new Fn($0); - case 2: - return new Fn($0, $1); - case 3: - return new Fn($0, $1, $2); - case 4: - return new Fn($0, $1, $2, $3); - case 5: - return new Fn($0, $1, $2, $3, $4); - case 6: - return new Fn($0, $1, $2, $3, $4, $5); - case 7: - return new Fn($0, $1, $2, $3, $4, $5, $6); - case 8: - return new Fn($0, $1, $2, $3, $4, $5, $6, $7); - case 9: - return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8); - case 10: - return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9); - } - })); -}); -/* harmony default export */ __webpack_exports__["default"] = (constructN); - -/***/ }), - -/***/ "./node_modules/ramda/es/contains.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/contains.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns `true` if the specified value is equal, in [`R.equals`](#equals) - * terms, to at least one element of the given list; `false` otherwise. - * Works also with strings. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> Boolean - * @param {Object} a The item to compare against. - * @param {Array} list The array to consider. - * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. - * @see R.includes - * @deprecated since v0.26.0 - * @example - * - * R.contains(3, [1, 2, 3]); //=> true - * R.contains(4, [1, 2, 3]); //=> false - * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true - * R.contains([42], [[42]]); //=> true - * R.contains('ba', 'banana'); //=>true - */ -var contains = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (contains); - -/***/ }), - -/***/ "./node_modules/ramda/es/converge.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/converge.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - - - - - -/** - * Accepts a converging function and a list of branching functions and returns - * a new function. The arity of the new function is the same as the arity of - * the longest branching function. When invoked, this new function is applied - * to some arguments, and each branching function is applied to those same - * arguments. The results of each branching function are passed as arguments - * to the converging function to produce the return value. - * - * @func - * @memberOf R - * @since v0.4.2 - * @category Function - * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z) - * @param {Function} after A function. `after` will be invoked with the return values of - * `fn1` and `fn2` as its arguments. - * @param {Array} functions A list of functions. - * @return {Function} A new function. - * @see R.useWith - * @example - * - * const average = R.converge(R.divide, [R.sum, R.length]) - * average([1, 2, 3, 4, 5, 6, 7]) //=> 4 - * - * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) - * strangeConcat("Yodel") //=> "YODELyodel" - * - * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b)) - */ -var converge = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function converge(after, fns) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_4__["default"])('length', fns)), function () { - var args = arguments; - var context = this; - return after.apply(context, Object(_internal_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (fn) { - return fn.apply(context, args); - }, fns)); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (converge); - -/***/ }), - -/***/ "./node_modules/ramda/es/countBy.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/countBy.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); - - -/** - * Counts the elements of a list according to how many match each value of a - * key generated by the supplied function. Returns an object mapping the keys - * produced by `fn` to the number of occurrences in the list. Note that all - * keys are coerced to strings because of how JavaScript objects work. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig (a -> String) -> [a] -> {*} - * @param {Function} fn The function used to map values to keys. - * @param {Array} list The list to count elements from. - * @return {Object} An object mapping keys to number of occurrences in the list. - * @example - * - * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2]; - * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1} - * - * const letters = ['a', 'b', 'A', 'a', 'B', 'c']; - * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} - */ -var countBy = /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (acc, elem) { - return acc + 1; -}, 0); -/* harmony default export */ __webpack_exports__["default"] = (countBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/curry.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/curry.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - -/** - * Returns a curried equivalent of the provided function. The curried function - * has two unusual capabilities. First, its arguments needn't be provided one - * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the - * following are equivalent: - * - * - `g(1)(2)(3)` - * - `g(1)(2, 3)` - * - `g(1, 2)(3)` - * - `g(1, 2, 3)` - * - * Secondly, the special placeholder value [`R.__`](#__) may be used to specify - * "gaps", allowing partial application of any combination of arguments, - * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), - * the following are equivalent: - * - * - `g(1, 2, 3)` - * - `g(_, 2, 3)(1)` - * - `g(_, _, 3)(1)(2)` - * - `g(_, _, 3)(1, 2)` - * - `g(_, 2)(1)(3)` - * - `g(_, 2)(1, 3)` - * - `g(_, 2)(_, 3)(1)` - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig (* -> a) -> (* -> a) - * @param {Function} fn The function to curry. - * @return {Function} A new, curried function. - * @see R.curryN, R.partial - * @example - * - * const addFourNumbers = (a, b, c, d) => a + b + c + d; - * - * const curriedAddFourNumbers = R.curry(addFourNumbers); - * const f = curriedAddFourNumbers(1, 2); - * const g = f(3); - * g(4); //=> 10 - */ -var curry = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function curry(fn) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, fn); -}); -/* harmony default export */ __webpack_exports__["default"] = (curry); - -/***/ }), - -/***/ "./node_modules/ramda/es/curryN.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/curryN.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); - - - - - -/** - * Returns a curried equivalent of the provided function, with the specified - * arity. The curried function has two unusual capabilities. First, its - * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the - * following are equivalent: - * - * - `g(1)(2)(3)` - * - `g(1)(2, 3)` - * - `g(1, 2)(3)` - * - `g(1, 2, 3)` - * - * Secondly, the special placeholder value [`R.__`](#__) may be used to specify - * "gaps", allowing partial application of any combination of arguments, - * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), - * the following are equivalent: - * - * - `g(1, 2, 3)` - * - `g(_, 2, 3)(1)` - * - `g(_, _, 3)(1)(2)` - * - `g(_, _, 3)(1, 2)` - * - `g(_, 2)(1)(3)` - * - `g(_, 2)(1, 3)` - * - `g(_, 2)(_, 3)(1)` - * - * @func - * @memberOf R - * @since v0.5.0 - * @category Function - * @sig Number -> (* -> a) -> (* -> a) - * @param {Number} length The arity for the returned function. - * @param {Function} fn The function to curry. - * @return {Function} A new, curried function. - * @see R.curry - * @example - * - * const sumArgs = (...args) => R.sum(args); - * - * const curriedAddFourNumbers = R.curryN(4, sumArgs); - * const f = curriedAddFourNumbers(1, 2); - * const g = f(3); - * g(4); //=> 10 - */ -var curryN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function curryN(length, fn) { - if (length === 1) { - return Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn); - } - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(length, Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(length, [], fn)); -}); -/* harmony default export */ __webpack_exports__["default"] = (curryN); - -/***/ }), - -/***/ "./node_modules/ramda/es/dec.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/dec.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); - - -/** - * Decrements its argument. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Math - * @sig Number -> Number - * @param {Number} n - * @return {Number} n - 1 - * @see R.inc - * @example - * - * R.dec(42); //=> 41 - */ -var dec = /*#__PURE__*/Object(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"])(-1); -/* harmony default export */ __webpack_exports__["default"] = (dec); - -/***/ }), - -/***/ "./node_modules/ramda/es/defaultTo.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/defaultTo.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns the second argument if it is not `null`, `undefined` or `NaN`; - * otherwise the first argument is returned. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Logic - * @sig a -> b -> a | b - * @param {a} default The default value. - * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`. - * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value - * @example - * - * const defaultTo42 = R.defaultTo(42); - * - * defaultTo42(null); //=> 42 - * defaultTo42(undefined); //=> 42 - * defaultTo42(false); //=> false - * defaultTo42('Ramda'); //=> 'Ramda' - * // parseInt('string') results in NaN - * defaultTo42(parseInt('string')); //=> 42 - */ -var defaultTo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function defaultTo(d, v) { - return v == null || v !== v ? d : v; -}); -/* harmony default export */ __webpack_exports__["default"] = (defaultTo); - -/***/ }), - -/***/ "./node_modules/ramda/es/descend.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/descend.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Makes a descending comparator function out of a function that returns a value - * that can be compared with `<` and `>`. - * - * @func - * @memberOf R - * @since v0.23.0 - * @category Function - * @sig Ord b => (a -> b) -> a -> a -> Number - * @param {Function} fn A function of arity one that returns a value that can be compared - * @param {*} a The first item to be compared. - * @param {*} b The second item to be compared. - * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0` - * @see R.ascend - * @example - * - * const byAge = R.descend(R.prop('age')); - * const people = [ - * { name: 'Emma', age: 70 }, - * { name: 'Peter', age: 78 }, - * { name: 'Mikhail', age: 62 }, - * ]; - * const peopleByOldestFirst = R.sort(byAge, people); - * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }] - */ -var descend = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function descend(fn, a, b) { - var aa = fn(a); - var bb = fn(b); - return aa > bb ? -1 : aa < bb ? 1 : 0; -}); -/* harmony default export */ __webpack_exports__["default"] = (descend); - -/***/ }), - -/***/ "./node_modules/ramda/es/difference.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/difference.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_Set_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/es/internal/_Set.js"); - - - -/** - * Finds the set (i.e. no duplicates) of all elements in the first list not - * contained in the second list. Objects and Arrays are compared in terms of - * value equality, not reference equality. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig [*] -> [*] -> [*] - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The elements in `list1` that are not in `list2`. - * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without - * @example - * - * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] - * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] - * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] - */ -var difference = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function difference(first, second) { - var out = []; - var idx = 0; - var firstLen = first.length; - var secondLen = second.length; - var toFilterOut = new _internal_Set_js__WEBPACK_IMPORTED_MODULE_1__["default"](); - - for (var i = 0; i < secondLen; i += 1) { - toFilterOut.add(second[i]); - } - - while (idx < firstLen) { - if (toFilterOut.add(first[idx])) { - out[out.length] = first[idx]; - } - idx += 1; - } - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (difference); - -/***/ }), - -/***/ "./node_modules/ramda/es/differenceWith.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/differenceWith.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - - -/** - * Finds the set (i.e. no duplicates) of all elements in the first list not - * contained in the second list. Duplication is determined according to the - * value returned by applying the supplied predicate to two list elements. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] - * @param {Function} pred A predicate used to test whether two items are equal. - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The elements in `list1` that are not in `list2`. - * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith - * @example - * - * const cmp = (x, y) => x.a === y.a; - * const l1 = [{a: 1}, {a: 2}, {a: 3}]; - * const l2 = [{a: 3}, {a: 4}]; - * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] - */ -var differenceWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function differenceWith(pred, first, second) { - var out = []; - var idx = 0; - var firstLen = first.length; - while (idx < firstLen) { - if (!Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, first[idx], second) && !Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, first[idx], out)) { - out.push(first[idx]); - } - idx += 1; - } - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (differenceWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/dissoc.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/dissoc.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns a new object that does not contain a `prop` property. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Object - * @sig String -> {k: v} -> {k: v} - * @param {String} prop The name of the property to dissociate - * @param {Object} obj The object to clone - * @return {Object} A new object equivalent to the original but without the specified property - * @see R.assoc, R.omit - * @example - * - * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} - */ -var dissoc = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function dissoc(prop, obj) { - var result = {}; - for (var p in obj) { - result[p] = obj[p]; - } - delete result[prop]; - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (dissoc); - -/***/ }), - -/***/ "./node_modules/ramda/es/dissocPath.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/dissocPath.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); -/* harmony import */ var _dissoc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dissoc.js */ "./node_modules/ramda/es/dissoc.js"); -/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./remove.js */ "./node_modules/ramda/es/remove.js"); -/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); - - - - - - - - -/** - * Makes a shallow clone of an object, omitting the property at the given path. - * Note that this copies and flattens prototype properties onto the new object - * as well. All non-primitive properties are copied by reference. - * - * @func - * @memberOf R - * @since v0.11.0 - * @category Object - * @typedefn Idx = String | Int - * @sig [Idx] -> {k: v} -> {k: v} - * @param {Array} path The path to the value to omit - * @param {Object} obj The object to clone - * @return {Object} A new object without the property at path - * @see R.assocPath - * @example - * - * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} - */ -var dissocPath = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function dissocPath(path, obj) { - switch (path.length) { - case 0: - return obj; - case 1: - return Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(path[0]) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj) ? Object(_remove_js__WEBPACK_IMPORTED_MODULE_5__["default"])(path[0], 1, obj) : Object(_dissoc_js__WEBPACK_IMPORTED_MODULE_4__["default"])(path[0], obj); - default: - var head = path[0]; - var tail = Array.prototype.slice.call(path, 1); - if (obj[head] == null) { - return obj; - } else if (Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(head) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { - return Object(_update_js__WEBPACK_IMPORTED_MODULE_6__["default"])(head, dissocPath(tail, obj[head]), obj); - } else { - return Object(_assoc_js__WEBPACK_IMPORTED_MODULE_3__["default"])(head, dissocPath(tail, obj[head]), obj); - } - } -}); -/* harmony default export */ __webpack_exports__["default"] = (dissocPath); - -/***/ }), - -/***/ "./node_modules/ramda/es/divide.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/divide.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Divides two numbers. Equivalent to `a / b`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} a The first value. - * @param {Number} b The second value. - * @return {Number} The result of `a / b`. - * @see R.multiply - * @example - * - * R.divide(71, 100); //=> 0.71 - * - * const half = R.divide(R.__, 2); - * half(42); //=> 21 - * - * const reciprocal = R.divide(1); - * reciprocal(4); //=> 0.25 - */ -var divide = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function divide(a, b) { - return a / b; -}); -/* harmony default export */ __webpack_exports__["default"] = (divide); - -/***/ }), - -/***/ "./node_modules/ramda/es/drop.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/drop.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xdrop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdrop.js */ "./node_modules/ramda/es/internal/_xdrop.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - - -/** - * Returns all but the first `n` elements of the given list, string, or - * transducer/transformer (or object with a `drop` method). - * - * Dispatches to the `drop` method of the second argument, if present. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Number -> [a] -> [a] - * @sig Number -> String -> String - * @param {Number} n - * @param {*} list - * @return {*} A copy of list without the first `n` elements - * @see R.take, R.transduce, R.dropLast, R.dropWhile - * @example - * - * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] - * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] - * R.drop(3, ['foo', 'bar', 'baz']); //=> [] - * R.drop(4, ['foo', 'bar', 'baz']); //=> [] - * R.drop(3, 'ramda'); //=> 'da' - */ -var drop = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['drop'], _internal_xdrop_js__WEBPACK_IMPORTED_MODULE_2__["default"], function drop(n, xs) { - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Math.max(0, n), Infinity, xs); -})); -/* harmony default export */ __webpack_exports__["default"] = (drop); - -/***/ }), - -/***/ "./node_modules/ramda/es/dropLast.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/dropLast.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_dropLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dropLast.js */ "./node_modules/ramda/es/internal/_dropLast.js"); -/* harmony import */ var _internal_xdropLast_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xdropLast.js */ "./node_modules/ramda/es/internal/_xdropLast.js"); - - - - - -/** - * Returns a list containing all but the last `n` elements of the given `list`. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig Number -> [a] -> [a] - * @sig Number -> String -> String - * @param {Number} n The number of elements of `list` to skip. - * @param {Array} list The list of elements to consider. - * @return {Array} A copy of the list with only the first `list.length - n` elements - * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile - * @example - * - * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] - * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] - * R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] - * R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] - * R.dropLast(3, 'ramda'); //=> 'ra' - */ -var dropLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropLast_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_dropLast_js__WEBPACK_IMPORTED_MODULE_2__["default"])); -/* harmony default export */ __webpack_exports__["default"] = (dropLast); - -/***/ }), - -/***/ "./node_modules/ramda/es/dropLastWhile.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/dropLastWhile.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_dropLastWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dropLastWhile.js */ "./node_modules/ramda/es/internal/_dropLastWhile.js"); -/* harmony import */ var _internal_xdropLastWhile_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xdropLastWhile.js */ "./node_modules/ramda/es/internal/_xdropLastWhile.js"); - - - - - -/** - * Returns a new list excluding all the tailing elements of a given list which - * satisfy the supplied predicate function. It passes each value from the right - * to the supplied predicate function, skipping elements until the predicate - * function returns a `falsy` value. The predicate function is applied to one argument: - * *(value)*. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig (a -> Boolean) -> [a] -> [a] - * @sig (a -> Boolean) -> String -> String - * @param {Function} predicate The function to be called on each element - * @param {Array} xs The collection to iterate over. - * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`. - * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile - * @example - * - * const lteThree = x => x <= 3; - * - * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] - * - * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd' - */ -var dropLastWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropLastWhile_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_dropLastWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"])); -/* harmony default export */ __webpack_exports__["default"] = (dropLastWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/dropRepeats.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/dropRepeats.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js"); -/* harmony import */ var _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/es/dropRepeatsWith.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - - - - -/** - * Returns a new list without any consecutively repeating elements. - * [`R.equals`](#equals) is used to determine equality. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category List - * @sig [a] -> [a] - * @param {Array} list The array to consider. - * @return {Array} `list` without repeating elements. - * @see R.transduce - * @example - * - * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2] - */ -var dropRepeats = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], /*#__PURE__*/Object(_internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_4__["default"]), /*#__PURE__*/Object(_dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_4__["default"]))); -/* harmony default export */ __webpack_exports__["default"] = (dropRepeats); - -/***/ }), - -/***/ "./node_modules/ramda/es/dropRepeatsWith.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/dropRepeatsWith.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js"); -/* harmony import */ var _last_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./last.js */ "./node_modules/ramda/es/last.js"); - - - - - -/** - * Returns a new list without any consecutively repeating elements. Equality is - * determined by applying the supplied predicate to each pair of consecutive elements. The - * first element in a series of equal elements will be preserved. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category List - * @sig ((a, a) -> Boolean) -> [a] -> [a] - * @param {Function} pred A predicate used to test whether two items are equal. - * @param {Array} list The array to consider. - * @return {Array} `list` without repeating elements. - * @see R.transduce - * @example - * - * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; - * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] - */ -var dropRepeatsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__["default"], function dropRepeatsWith(pred, list) { - var result = []; - var idx = 1; - var len = list.length; - if (len !== 0) { - result[0] = list[0]; - while (idx < len) { - if (!pred(Object(_last_js__WEBPACK_IMPORTED_MODULE_3__["default"])(result), list[idx])) { - result[result.length] = list[idx]; - } - idx += 1; - } - } - return result; -})); -/* harmony default export */ __webpack_exports__["default"] = (dropRepeatsWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/dropWhile.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/dropWhile.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xdropWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropWhile.js */ "./node_modules/ramda/es/internal/_xdropWhile.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - - -/** - * Returns a new list excluding the leading elements of a given list which - * satisfy the supplied predicate function. It passes each value to the supplied - * predicate function, skipping elements while the predicate function returns - * `true`. The predicate function is applied to one argument: *(value)*. - * - * Dispatches to the `dropWhile` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category List - * @sig (a -> Boolean) -> [a] -> [a] - * @sig (a -> Boolean) -> String -> String - * @param {Function} fn The function called per iteration. - * @param {Array} xs The collection to iterate over. - * @return {Array} A new array. - * @see R.takeWhile, R.transduce, R.addIndex - * @example - * - * const lteTwo = x => x <= 2; - * - * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] - * - * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da' - */ -var dropWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['dropWhile'], _internal_xdropWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"], function dropWhile(pred, xs) { - var idx = 0; - var len = xs.length; - while (idx < len && pred(xs[idx])) { - idx += 1; - } - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(idx, Infinity, xs); -})); -/* harmony default export */ __webpack_exports__["default"] = (dropWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/either.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/either.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); -/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); -/* harmony import */ var _or_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./or.js */ "./node_modules/ramda/es/or.js"); - - - - - -/** - * A function wrapping calls to the two functions in an `||` operation, - * returning the result of the first function if it is truth-y and the result - * of the second function otherwise. Note that this is short-circuited, - * meaning that the second function will not be invoked if the first returns a - * truth-y value. - * - * In addition to functions, `R.either` also accepts any fantasy-land compatible - * applicative functor. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category Logic - * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) - * @param {Function} f a predicate - * @param {Function} g another predicate - * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together. - * @see R.or - * @example - * - * const gt10 = x => x > 10; - * const even = x => x % 2 === 0; - * const f = R.either(gt10, even); - * f(101); //=> true - * f(8); //=> true - * - * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55) - * R.either([false, false, 'a'], [11]) // => [11, 11, "a"] - */ -var either = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function either(f, g) { - return Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f) ? function _either() { - return f.apply(this, arguments) || g.apply(this, arguments); - } : Object(_lift_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_or_js__WEBPACK_IMPORTED_MODULE_3__["default"])(f, g); -}); -/* harmony default export */ __webpack_exports__["default"] = (either); - -/***/ }), - -/***/ "./node_modules/ramda/es/empty.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/empty.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_isArguments_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/es/internal/_isArguments.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); -/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); - - - - - - -/** - * Returns the empty value of its argument's type. Ramda defines the empty - * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other - * types are supported if they define `.empty`, - * `.prototype.empty` or implement the - * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid). - * - * Dispatches to the `empty` method of the first argument, if present. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category Function - * @sig a -> a - * @param {*} x - * @return {*} - * @example - * - * R.empty(Just(42)); //=> Nothing() - * R.empty([1, 2, 3]); //=> [] - * R.empty('unicorns'); //=> '' - * R.empty({x: 1, y: 2}); //=> {} - */ -var empty = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function empty(x) { - return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x) ? [] : Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x) ? '' : Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(x) ? {} : Object(_internal_isArguments_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x) ? function () { - return arguments; - }() : void 0 // else - ; -}); -/* harmony default export */ __webpack_exports__["default"] = (empty); - -/***/ }), - -/***/ "./node_modules/ramda/es/endsWith.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/endsWith.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); -/* harmony import */ var _takeLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/es/takeLast.js"); - - - - -/** - * Checks if a list ends with the provided sublist. - * - * Similarly, checks if a string ends with the provided substring. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category List - * @sig [a] -> [a] -> Boolean - * @sig String -> String -> Boolean - * @param {*} suffix - * @param {*} list - * @return {Boolean} - * @see R.startsWith - * @example - * - * R.endsWith('c', 'abc') //=> true - * R.endsWith('b', 'abc') //=> false - * R.endsWith(['c'], ['a', 'b', 'c']) //=> true - * R.endsWith(['b'], ['a', 'b', 'c']) //=> false - */ -var endsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (suffix, list) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_takeLast_js__WEBPACK_IMPORTED_MODULE_2__["default"])(suffix.length, list), suffix); -}); -/* harmony default export */ __webpack_exports__["default"] = (endsWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/eqBy.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/eqBy.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - -/** - * Takes a function and two values in its domain and returns `true` if the - * values map to the same value in the codomain; `false` otherwise. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category Relation - * @sig (a -> b) -> a -> a -> Boolean - * @param {Function} f - * @param {*} x - * @param {*} y - * @return {Boolean} - * @example - * - * R.eqBy(Math.abs, 5, -5); //=> true - */ -var eqBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function eqBy(f, x, y) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f(x), f(y)); -}); -/* harmony default export */ __webpack_exports__["default"] = (eqBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/eqProps.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/eqProps.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - -/** - * Reports whether two objects have the same value, in [`R.equals`](#equals) - * terms, for the specified property. Useful as a curried predicate. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig k -> {k: v} -> {k: v} -> Boolean - * @param {String} prop The name of the property to compare - * @param {Object} obj1 - * @param {Object} obj2 - * @return {Boolean} - * - * @example - * - * const o1 = { a: 1, b: 2, c: 3, d: 4 }; - * const o2 = { a: 10, b: 20, c: 3, d: 40 }; - * R.eqProps('a', o1, o2); //=> false - * R.eqProps('c', o1, o2); //=> true - */ -var eqProps = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function eqProps(prop, obj1, obj2) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj1[prop], obj2[prop]); -}); -/* harmony default export */ __webpack_exports__["default"] = (eqProps); - -/***/ }), - -/***/ "./node_modules/ramda/es/equals.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/equals.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_equals.js */ "./node_modules/ramda/es/internal/_equals.js"); - - - -/** - * Returns `true` if its arguments are equivalent, `false` otherwise. Handles - * cyclical data structures. - * - * Dispatches symmetrically to the `equals` methods of both arguments, if - * present. - * - * @func - * @memberOf R - * @since v0.15.0 - * @category Relation - * @sig a -> b -> Boolean - * @param {*} a - * @param {*} b - * @return {Boolean} - * @example - * - * R.equals(1, 1); //=> true - * R.equals(1, '1'); //=> false - * R.equals([1, 2, 3], [1, 2, 3]); //=> true - * - * const a = {}; a.v = a; - * const b = {}; b.v = b; - * R.equals(a, b); //=> true - */ -var equals = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function equals(a, b) { - return Object(_internal_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a, b, [], []); -}); -/* harmony default export */ __webpack_exports__["default"] = (equals); - -/***/ }), - -/***/ "./node_modules/ramda/es/evolve.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/evolve.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Creates a new object by recursively evolving a shallow copy of `object`, - * according to the `transformation` functions. All non-primitive properties - * are copied by reference. - * - * A `transformation` function will not be invoked if its corresponding key - * does not exist in the evolved object. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Object - * @sig {k: (v -> v)} -> {k: v} -> {k: v} - * @param {Object} transformations The object specifying transformation functions to apply - * to the object. - * @param {Object} object The object to be transformed. - * @return {Object} The transformed object. - * @example - * - * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123}; - * const transformations = { - * firstName: R.trim, - * lastName: R.trim, // Will not get invoked. - * data: {elapsed: R.add(1), remaining: R.add(-1)} - * }; - * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} - */ -var evolve = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function evolve(transformations, object) { - var result = object instanceof Array ? [] : {}; - var transformation, key, type; - for (key in object) { - transformation = transformations[key]; - type = typeof transformation; - result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key]; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (evolve); - -/***/ }), - -/***/ "./node_modules/ramda/es/filter.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/filter.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); -/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_xfilter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/_xfilter.js */ "./node_modules/ramda/es/internal/_xfilter.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - - - - - - -/** - * Takes a predicate and a `Filterable`, and returns a new filterable of the - * same type containing the members of the given filterable which satisfy the - * given predicate. Filterable objects include plain objects or any object - * that has a filter method such as `Array`. - * - * Dispatches to the `filter` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Filterable f => (a -> Boolean) -> f a -> f a - * @param {Function} pred - * @param {Array} filterable - * @return {Array} Filterable - * @see R.reject, R.transduce, R.addIndex - * @example - * - * const isEven = n => n % 2 === 0; - * - * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4] - * - * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} - */ -var filter = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['filter'], _internal_xfilter_js__WEBPACK_IMPORTED_MODULE_5__["default"], function (pred, filterable) { - return Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(filterable) ? Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(function (acc, key) { - if (pred(filterable[key])) { - acc[key] = filterable[key]; - } - return acc; - }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(filterable)) : - // else - Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, filterable); -})); -/* harmony default export */ __webpack_exports__["default"] = (filter); - -/***/ }), - -/***/ "./node_modules/ramda/es/find.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/find.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xfind_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfind.js */ "./node_modules/ramda/es/internal/_xfind.js"); - - - - -/** - * Returns the first element of the list which matches the predicate, or - * `undefined` if no element matches. - * - * Dispatches to the `find` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig (a -> Boolean) -> [a] -> a | undefined - * @param {Function} fn The predicate function used to determine if the element is the - * desired one. - * @param {Array} list The array to consider. - * @return {Object} The element found, or `undefined`. - * @see R.transduce - * @example - * - * const xs = [{a: 1}, {a: 2}, {a: 3}]; - * R.find(R.propEq('a', 2))(xs); //=> {a: 2} - * R.find(R.propEq('a', 4))(xs); //=> undefined - */ -var find = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['find'], _internal_xfind_js__WEBPACK_IMPORTED_MODULE_2__["default"], function find(fn, list) { - var idx = 0; - var len = list.length; - while (idx < len) { - if (fn(list[idx])) { - return list[idx]; - } - idx += 1; - } -})); -/* harmony default export */ __webpack_exports__["default"] = (find); - -/***/ }), - -/***/ "./node_modules/ramda/es/findIndex.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/findIndex.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xfindIndex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindIndex.js */ "./node_modules/ramda/es/internal/_xfindIndex.js"); - - - - -/** - * Returns the index of the first element of the list which matches the - * predicate, or `-1` if no element matches. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.1 - * @category List - * @sig (a -> Boolean) -> [a] -> Number - * @param {Function} fn The predicate function used to determine if the element is the - * desired one. - * @param {Array} list The array to consider. - * @return {Number} The index of the element found, or `-1`. - * @see R.transduce - * @example - * - * const xs = [{a: 1}, {a: 2}, {a: 3}]; - * R.findIndex(R.propEq('a', 2))(xs); //=> 1 - * R.findIndex(R.propEq('a', 4))(xs); //=> -1 - */ -var findIndex = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindIndex_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findIndex(fn, list) { - var idx = 0; - var len = list.length; - while (idx < len) { - if (fn(list[idx])) { - return idx; - } - idx += 1; - } - return -1; -})); -/* harmony default export */ __webpack_exports__["default"] = (findIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/findLast.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/findLast.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xfindLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindLast.js */ "./node_modules/ramda/es/internal/_xfindLast.js"); - - - - -/** - * Returns the last element of the list which matches the predicate, or - * `undefined` if no element matches. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.1 - * @category List - * @sig (a -> Boolean) -> [a] -> a | undefined - * @param {Function} fn The predicate function used to determine if the element is the - * desired one. - * @param {Array} list The array to consider. - * @return {Object} The element found, or `undefined`. - * @see R.transduce - * @example - * - * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; - * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1} - * R.findLast(R.propEq('a', 4))(xs); //=> undefined - */ -var findLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindLast_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findLast(fn, list) { - var idx = list.length - 1; - while (idx >= 0) { - if (fn(list[idx])) { - return list[idx]; - } - idx -= 1; - } -})); -/* harmony default export */ __webpack_exports__["default"] = (findLast); - -/***/ }), - -/***/ "./node_modules/ramda/es/findLastIndex.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/findLastIndex.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xfindLastIndex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindLastIndex.js */ "./node_modules/ramda/es/internal/_xfindLastIndex.js"); - - - - -/** - * Returns the index of the last element of the list which matches the - * predicate, or `-1` if no element matches. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.1 - * @category List - * @sig (a -> Boolean) -> [a] -> Number - * @param {Function} fn The predicate function used to determine if the element is the - * desired one. - * @param {Array} list The array to consider. - * @return {Number} The index of the element found, or `-1`. - * @see R.transduce - * @example - * - * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; - * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1 - * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 - */ -var findLastIndex = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindLastIndex_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findLastIndex(fn, list) { - var idx = list.length - 1; - while (idx >= 0) { - if (fn(list[idx])) { - return idx; - } - idx -= 1; - } - return -1; -})); -/* harmony default export */ __webpack_exports__["default"] = (findLastIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/flatten.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/flatten.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/es/internal/_makeFlat.js"); - - - -/** - * Returns a new list by pulling every item out of it (and all its sub-arrays) - * and putting them in a new array, depth-first. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [b] - * @param {Array} list The array to consider. - * @return {Array} The flattened list. - * @see R.unnest - * @example - * - * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); - * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] - */ -var flatten = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(true)); -/* harmony default export */ __webpack_exports__["default"] = (flatten); - -/***/ }), - -/***/ "./node_modules/ramda/es/flip.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/flip.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - -/** - * Returns a new function much like the supplied one, except that the first two - * arguments' order is reversed. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z) - * @param {Function} fn The function to invoke with its first two parameters reversed. - * @return {*} The result of invoking `fn` with its first two parameters' order reversed. - * @example - * - * const mergeThree = (a, b, c) => [].concat(a, b, c); - * - * mergeThree(1, 2, 3); //=> [1, 2, 3] - * - * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] - * @symb R.flip(f)(a, b, c) = f(b, a, c) - */ -var flip = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function flip(fn) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, function (a, b) { - var args = Array.prototype.slice.call(arguments, 0); - args[0] = b; - args[1] = a; - return fn.apply(this, args); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (flip); - -/***/ }), - -/***/ "./node_modules/ramda/es/forEach.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/forEach.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Iterate over an input `list`, calling a provided function `fn` for each - * element in the list. - * - * `fn` receives one argument: *(value)*. - * - * Note: `R.forEach` does not skip deleted or unassigned indices (sparse - * arrays), unlike the native `Array.prototype.forEach` method. For more - * details on this behavior, see: - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description - * - * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns - * the original array. In some libraries this function is named `each`. - * - * Dispatches to the `forEach` method of the second argument, if present. - * - * @func - * @memberOf R - * @since v0.1.1 - * @category List - * @sig (a -> *) -> [a] -> [a] - * @param {Function} fn The function to invoke. Receives one argument, `value`. - * @param {Array} list The list to iterate over. - * @return {Array} The original list. - * @see R.addIndex - * @example - * - * const printXPlusFive = x => console.log(x + 5); - * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] - * // logs 6 - * // logs 7 - * // logs 8 - * @symb R.forEach(f, [a, b, c]) = [a, b, c] - */ -var forEach = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('forEach', function forEach(fn, list) { - var len = list.length; - var idx = 0; - while (idx < len) { - fn(list[idx]); - idx += 1; - } - return list; -})); -/* harmony default export */ __webpack_exports__["default"] = (forEach); - -/***/ }), - -/***/ "./node_modules/ramda/es/forEachObjIndexed.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/forEachObjIndexed.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - -/** - * Iterate over an input `object`, calling a provided function `fn` for each - * key and value in the object. - * - * `fn` receives three argument: *(value, key, obj)*. - * - * @func - * @memberOf R - * @since v0.23.0 - * @category Object - * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a - * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`. - * @param {Object} obj The object to iterate over. - * @return {Object} The original object. - * @example - * - * const printKeyConcatValue = (value, key) => console.log(key + ':' + value); - * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2} - * // logs x:1 - * // logs y:2 - * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b} - */ -var forEachObjIndexed = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function forEachObjIndexed(fn, obj) { - var keyList = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); - var idx = 0; - while (idx < keyList.length) { - var key = keyList[idx]; - fn(obj[key], key, obj); - idx += 1; - } - return obj; -}); -/* harmony default export */ __webpack_exports__["default"] = (forEachObjIndexed); - -/***/ }), - -/***/ "./node_modules/ramda/es/fromPairs.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/fromPairs.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Creates a new object from a list key-value pairs. If a key appears in - * multiple pairs, the rightmost pair is included in the object. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category List - * @sig [[k,v]] -> {k: v} - * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object. - * @return {Object} The object made by pairing up `keys` and `values`. - * @see R.toPairs, R.pair - * @example - * - * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} - */ -var fromPairs = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function fromPairs(pairs) { - var result = {}; - var idx = 0; - while (idx < pairs.length) { - result[pairs[idx][0]] = pairs[idx][1]; - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (fromPairs); - -/***/ }), - -/***/ "./node_modules/ramda/es/groupBy.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/groupBy.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); - - - - -/** - * Splits a list into sub-lists stored in an object, based on the result of - * calling a String-returning function on each element, and grouping the - * results according to values returned. - * - * Dispatches to the `groupBy` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig (a -> String) -> [a] -> {String: [a]} - * @param {Function} fn Function :: a -> String - * @param {Array} list The array to group - * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements - * that produced that key when passed to `fn`. - * @see R.reduceBy, R.transduce - * @example - * - * const byGrade = R.groupBy(function(student) { - * const score = student.score; - * return score < 65 ? 'F' : - * score < 70 ? 'D' : - * score < 80 ? 'C' : - * score < 90 ? 'B' : 'A'; - * }); - * const students = [{name: 'Abby', score: 84}, - * {name: 'Eddy', score: 58}, - * // ... - * {name: 'Jack', score: 69}]; - * byGrade(students); - * // { - * // 'A': [{name: 'Dianne', score: 99}], - * // 'B': [{name: 'Abby', score: 84}] - * // // ..., - * // 'F': [{name: 'Eddy', score: 58}] - * // } - */ -var groupBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('groupBy', /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (acc, item) { - if (acc == null) { - acc = []; - } - acc.push(item); - return acc; -}, null))); -/* harmony default export */ __webpack_exports__["default"] = (groupBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/groupWith.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/groupWith.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Takes a list and returns a list of lists where each sublist's elements are - * all satisfied pairwise comparison according to the provided function. - * Only adjacent elements are passed to the comparison function. - * - * @func - * @memberOf R - * @since v0.21.0 - * @category List - * @sig ((a, a) → Boolean) → [a] → [[a]] - * @param {Function} fn Function for determining whether two given (adjacent) - * elements should be in the same group - * @param {Array} list The array to group. Also accepts a string, which will be - * treated as a list of characters. - * @return {List} A list that contains sublists of elements, - * whose concatenations are equal to the original list. - * @example - * - * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) - * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] - * - * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) - * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] - * - * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) - * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] - * - * R.groupWith(R.eqBy(isVowel), 'aestiou') - * //=> ['ae', 'st', 'iou'] - */ -var groupWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (fn, list) { - var res = []; - var idx = 0; - var len = list.length; - while (idx < len) { - var nextidx = idx + 1; - while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) { - nextidx += 1; - } - res.push(list.slice(idx, nextidx)); - idx = nextidx; - } - return res; -}); -/* harmony default export */ __webpack_exports__["default"] = (groupWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/gt.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/gt.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if the first argument is greater than the second; `false` - * otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> Boolean - * @param {*} a - * @param {*} b - * @return {Boolean} - * @see R.lt - * @example - * - * R.gt(2, 1); //=> true - * R.gt(2, 2); //=> false - * R.gt(2, 3); //=> false - * R.gt('a', 'z'); //=> false - * R.gt('z', 'a'); //=> true - */ -var gt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function gt(a, b) { - return a > b; -}); -/* harmony default export */ __webpack_exports__["default"] = (gt); - -/***/ }), - -/***/ "./node_modules/ramda/es/gte.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/gte.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if the first argument is greater than or equal to the second; - * `false` otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> Boolean - * @param {Number} a - * @param {Number} b - * @return {Boolean} - * @see R.lte - * @example - * - * R.gte(2, 1); //=> true - * R.gte(2, 2); //=> true - * R.gte(2, 3); //=> false - * R.gte('a', 'z'); //=> false - * R.gte('z', 'a'); //=> true - */ -var gte = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function gte(a, b) { - return a >= b; -}); -/* harmony default export */ __webpack_exports__["default"] = (gte); - -/***/ }), - -/***/ "./node_modules/ramda/es/has.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/has.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/es/hasPath.js"); - - - -/** - * Returns whether or not an object has an own property with the specified name - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Object - * @sig s -> {s: x} -> Boolean - * @param {String} prop The name of the property to check for. - * @param {Object} obj The object to query. - * @return {Boolean} Whether the property exists. - * @example - * - * const hasName = R.has('name'); - * hasName({name: 'alice'}); //=> true - * hasName({name: 'bob'}); //=> true - * hasName({}); //=> false - * - * const point = {x: 0, y: 0}; - * const pointHas = R.has(R.__, point); - * pointHas('x'); //=> true - * pointHas('y'); //=> true - * pointHas('z'); //=> false - */ -var has = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function has(prop, obj) { - return Object(_hasPath_js__WEBPACK_IMPORTED_MODULE_1__["default"])([prop], obj); -}); -/* harmony default export */ __webpack_exports__["default"] = (has); - -/***/ }), - -/***/ "./node_modules/ramda/es/hasIn.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/hasIn.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns whether or not an object or its prototype chain has a property with - * the specified name - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Object - * @sig s -> {s: x} -> Boolean - * @param {String} prop The name of the property to check for. - * @param {Object} obj The object to query. - * @return {Boolean} Whether the property exists. - * @example - * - * function Rectangle(width, height) { - * this.width = width; - * this.height = height; - * } - * Rectangle.prototype.area = function() { - * return this.width * this.height; - * }; - * - * const square = new Rectangle(2, 2); - * R.hasIn('width', square); //=> true - * R.hasIn('area', square); //=> true - */ -var hasIn = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function hasIn(prop, obj) { - return prop in obj; -}); -/* harmony default export */ __webpack_exports__["default"] = (hasIn); - -/***/ }), - -/***/ "./node_modules/ramda/es/hasPath.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/hasPath.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - - -/** - * Returns whether or not a path exists in an object. Only the object's - * own properties are checked. - * - * @func - * @memberOf R - * @since v0.26.0 - * @category Object - * @typedefn Idx = String | Int - * @sig [Idx] -> {a} -> Boolean - * @param {Array} path The path to use. - * @param {Object} obj The object to check the path in. - * @return {Boolean} Whether the path exists. - * @see R.has - * @example - * - * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true - * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true - * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false - * R.hasPath(['a', 'b'], {}); // => false - */ -var hasPath = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function hasPath(_path, obj) { - if (_path.length === 0) { - return false; - } - var val = obj; - var idx = 0; - while (idx < _path.length) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_path[idx], val)) { - val = val[_path[idx]]; - idx += 1; - } else { - return false; - } - } - return true; -}); -/* harmony default export */ __webpack_exports__["default"] = (hasPath); - -/***/ }), - -/***/ "./node_modules/ramda/es/head.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/head.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); - - -/** - * Returns the first element of the given list or string. In some libraries - * this function is named `first`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> a | Undefined - * @sig String -> String - * @param {Array|String} list - * @return {*} - * @see R.tail, R.init, R.last - * @example - * - * R.head(['fi', 'fo', 'fum']); //=> 'fi' - * R.head([]); //=> undefined - * - * R.head('abc'); //=> 'a' - * R.head(''); //=> '' - */ -var head = /*#__PURE__*/Object(_nth_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0); -/* harmony default export */ __webpack_exports__["default"] = (head); - -/***/ }), - -/***/ "./node_modules/ramda/es/identical.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/identical.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_objectIs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectIs.js */ "./node_modules/ramda/es/internal/_objectIs.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns true if its arguments are identical, false otherwise. Values are - * identical if they reference the same memory. `NaN` is identical to `NaN`; - * `0` and `-0` are not identical. - * - * Note this is merely a curried version of ES6 `Object.is`. - * - * @func - * @memberOf R - * @since v0.15.0 - * @category Relation - * @sig a -> a -> Boolean - * @param {*} a - * @param {*} b - * @return {Boolean} - * @example - * - * const o = {}; - * R.identical(o, o); //=> true - * R.identical(1, 1); //=> true - * R.identical(1, '1'); //=> false - * R.identical([], []); //=> false - * R.identical(0, -0); //=> false - * R.identical(NaN, NaN); //=> true - */ -var identical = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_objectIs_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (identical); - -/***/ }), - -/***/ "./node_modules/ramda/es/identity.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/identity.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); - - - -/** - * A function that does nothing but return the parameter supplied to it. Good - * as a default or placeholder function. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig a -> a - * @param {*} x The value to return. - * @return {*} The input value, `x`. - * @example - * - * R.identity(1); //=> 1 - * - * const obj = {}; - * R.identity(obj) === obj; //=> true - * @symb R.identity(a) = a - */ -var identity = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_identity_js__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (identity); - -/***/ }), - -/***/ "./node_modules/ramda/es/ifElse.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/ifElse.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - -/** - * Creates a function that will process either the `onTrue` or the `onFalse` - * function depending upon the result of the `condition` predicate. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Logic - * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *) - * @param {Function} condition A predicate function - * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value. - * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value. - * @return {Function} A new function that will process either the `onTrue` or the `onFalse` - * function depending upon the result of the `condition` predicate. - * @see R.unless, R.when, R.cond - * @example - * - * const incCount = R.ifElse( - * R.has('count'), - * R.over(R.lensProp('count'), R.inc), - * R.assoc('count', 1) - * ); - * incCount({}); //=> { count: 1 } - * incCount({ count: 1 }); //=> { count: 2 } - */ -var ifElse = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function ifElse(condition, onTrue, onFalse) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() { - return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (ifElse); - -/***/ }), - -/***/ "./node_modules/ramda/es/inc.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/inc.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); - - -/** - * Increments its argument. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Math - * @sig Number -> Number - * @param {Number} n - * @return {Number} n + 1 - * @see R.dec - * @example - * - * R.inc(42); //=> 43 - */ -var inc = /*#__PURE__*/Object(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1); -/* harmony default export */ __webpack_exports__["default"] = (inc); - -/***/ }), - -/***/ "./node_modules/ramda/es/includes.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/includes.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns `true` if the specified value is equal, in [`R.equals`](#equals) - * terms, to at least one element of the given list; `false` otherwise. - * Works also with strings. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> Boolean - * @param {Object} a The item to compare against. - * @param {Array} list The array to consider. - * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. - * @see R.any - * @example - * - * R.includes(3, [1, 2, 3]); //=> true - * R.includes(4, [1, 2, 3]); //=> false - * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true - * R.includes([42], [[42]]); //=> true - * R.includes('ba', 'banana'); //=>true - */ -var includes = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (includes); - -/***/ }), - -/***/ "./node_modules/ramda/es/index.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/index.js ***! - \****************************************/ -/*! exports provided: F, T, __, add, addIndex, adjust, all, allPass, always, and, any, anyPass, ap, aperture, append, apply, applySpec, applyTo, ascend, assoc, assocPath, binary, bind, both, call, chain, clamp, clone, comparator, complement, compose, composeK, composeP, composeWith, concat, cond, construct, constructN, contains, converge, countBy, curry, curryN, dec, defaultTo, descend, difference, differenceWith, dissoc, dissocPath, divide, drop, dropLast, dropLastWhile, dropRepeats, dropRepeatsWith, dropWhile, either, empty, endsWith, eqBy, eqProps, equals, evolve, filter, find, findIndex, findLast, findLastIndex, flatten, flip, forEach, forEachObjIndexed, fromPairs, groupBy, groupWith, gt, gte, has, hasIn, hasPath, head, identical, identity, ifElse, inc, includes, indexBy, indexOf, init, innerJoin, insert, insertAll, intersection, intersperse, into, invert, invertObj, invoker, is, isEmpty, isNil, join, juxt, keys, keysIn, last, lastIndexOf, length, lens, lensIndex, lensPath, lensProp, lift, liftN, lt, lte, map, mapAccum, mapAccumRight, mapObjIndexed, match, mathMod, max, maxBy, mean, median, memoizeWith, merge, mergeAll, mergeDeepLeft, mergeDeepRight, mergeDeepWith, mergeDeepWithKey, mergeLeft, mergeRight, mergeWith, mergeWithKey, min, minBy, modulo, move, multiply, nAry, negate, none, not, nth, nthArg, o, objOf, of, omit, once, or, otherwise, over, pair, partial, partialRight, partition, path, pathEq, pathOr, pathSatisfies, pick, pickAll, pickBy, pipe, pipeK, pipeP, pipeWith, pluck, prepend, product, project, prop, propEq, propIs, propOr, propSatisfies, props, range, reduce, reduceBy, reduceRight, reduceWhile, reduced, reject, remove, repeat, replace, reverse, scan, sequence, set, slice, sort, sortBy, sortWith, split, splitAt, splitEvery, splitWhen, startsWith, subtract, sum, symmetricDifference, symmetricDifferenceWith, tail, take, takeLast, takeLastWhile, takeWhile, tap, test, then, times, toLower, toPairs, toPairsIn, toString, toUpper, transduce, transpose, traverse, trim, tryCatch, type, unapply, unary, uncurryN, unfold, union, unionWith, uniq, uniqBy, uniqWith, unless, unnest, until, update, useWith, values, valuesIn, view, when, where, whereEq, without, xprod, zip, zipObj, zipWith, thunkify */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _F_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./F.js */ "./node_modules/ramda/es/F.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "F", function() { return _F_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); - -/* harmony import */ var _T_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./T.js */ "./node_modules/ramda/es/T.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "T", function() { return _T_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); - -/* harmony import */ var _js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./__.js */ "./node_modules/ramda/es/__.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__", function() { return _js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); - -/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "add", function() { return _add_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); - -/* harmony import */ var _addIndex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addIndex.js */ "./node_modules/ramda/es/addIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addIndex", function() { return _addIndex_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); - -/* harmony import */ var _adjust_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/es/adjust.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "adjust", function() { return _adjust_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); - -/* harmony import */ var _all_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./all.js */ "./node_modules/ramda/es/all.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "all", function() { return _all_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); - -/* harmony import */ var _allPass_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./allPass.js */ "./node_modules/ramda/es/allPass.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "allPass", function() { return _allPass_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); - -/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "always", function() { return _always_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); - -/* harmony import */ var _and_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./and.js */ "./node_modules/ramda/es/and.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "and", function() { return _and_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); - -/* harmony import */ var _any_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./any.js */ "./node_modules/ramda/es/any.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "any", function() { return _any_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); - -/* harmony import */ var _anyPass_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./anyPass.js */ "./node_modules/ramda/es/anyPass.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "anyPass", function() { return _anyPass_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); - -/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ap", function() { return _ap_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); - -/* harmony import */ var _aperture_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./aperture.js */ "./node_modules/ramda/es/aperture.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "aperture", function() { return _aperture_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); - -/* harmony import */ var _append_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./append.js */ "./node_modules/ramda/es/append.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "append", function() { return _append_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); - -/* harmony import */ var _apply_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./apply.js */ "./node_modules/ramda/es/apply.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "apply", function() { return _apply_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); - -/* harmony import */ var _applySpec_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./applySpec.js */ "./node_modules/ramda/es/applySpec.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applySpec", function() { return _applySpec_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); - -/* harmony import */ var _applyTo_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./applyTo.js */ "./node_modules/ramda/es/applyTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyTo", function() { return _applyTo_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); - -/* harmony import */ var _ascend_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ascend.js */ "./node_modules/ramda/es/ascend.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ascend", function() { return _ascend_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); - -/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assoc", function() { return _assoc_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); - -/* harmony import */ var _assocPath_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/es/assocPath.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assocPath", function() { return _assocPath_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); - -/* harmony import */ var _binary_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./binary.js */ "./node_modules/ramda/es/binary.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "binary", function() { return _binary_js__WEBPACK_IMPORTED_MODULE_21__["default"]; }); - -/* harmony import */ var _bind_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./bind.js */ "./node_modules/ramda/es/bind.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return _bind_js__WEBPACK_IMPORTED_MODULE_22__["default"]; }); - -/* harmony import */ var _both_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./both.js */ "./node_modules/ramda/es/both.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "both", function() { return _both_js__WEBPACK_IMPORTED_MODULE_23__["default"]; }); - -/* harmony import */ var _call_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./call.js */ "./node_modules/ramda/es/call.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "call", function() { return _call_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); - -/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return _chain_js__WEBPACK_IMPORTED_MODULE_25__["default"]; }); - -/* harmony import */ var _clamp_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./clamp.js */ "./node_modules/ramda/es/clamp.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clamp", function() { return _clamp_js__WEBPACK_IMPORTED_MODULE_26__["default"]; }); - -/* harmony import */ var _clone_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./clone.js */ "./node_modules/ramda/es/clone.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return _clone_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); - -/* harmony import */ var _comparator_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./comparator.js */ "./node_modules/ramda/es/comparator.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "comparator", function() { return _comparator_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); - -/* harmony import */ var _complement_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./complement.js */ "./node_modules/ramda/es/complement.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "complement", function() { return _complement_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); - -/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose_js__WEBPACK_IMPORTED_MODULE_30__["default"]; }); - -/* harmony import */ var _composeK_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./composeK.js */ "./node_modules/ramda/es/composeK.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeK", function() { return _composeK_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); - -/* harmony import */ var _composeP_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./composeP.js */ "./node_modules/ramda/es/composeP.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeP", function() { return _composeP_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); - -/* harmony import */ var _composeWith_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./composeWith.js */ "./node_modules/ramda/es/composeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeWith", function() { return _composeWith_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); - -/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _concat_js__WEBPACK_IMPORTED_MODULE_34__["default"]; }); - -/* harmony import */ var _cond_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./cond.js */ "./node_modules/ramda/es/cond.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cond", function() { return _cond_js__WEBPACK_IMPORTED_MODULE_35__["default"]; }); - -/* harmony import */ var _construct_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./construct.js */ "./node_modules/ramda/es/construct.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "construct", function() { return _construct_js__WEBPACK_IMPORTED_MODULE_36__["default"]; }); - -/* harmony import */ var _constructN_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/es/constructN.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "constructN", function() { return _constructN_js__WEBPACK_IMPORTED_MODULE_37__["default"]; }); - -/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./contains.js */ "./node_modules/ramda/es/contains.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_38__["default"]; }); - -/* harmony import */ var _converge_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./converge.js */ "./node_modules/ramda/es/converge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "converge", function() { return _converge_js__WEBPACK_IMPORTED_MODULE_39__["default"]; }); - -/* harmony import */ var _countBy_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./countBy.js */ "./node_modules/ramda/es/countBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return _countBy_js__WEBPACK_IMPORTED_MODULE_40__["default"]; }); - -/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curry", function() { return _curry_js__WEBPACK_IMPORTED_MODULE_41__["default"]; }); - -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curryN", function() { return _curryN_js__WEBPACK_IMPORTED_MODULE_42__["default"]; }); - -/* harmony import */ var _dec_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./dec.js */ "./node_modules/ramda/es/dec.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dec", function() { return _dec_js__WEBPACK_IMPORTED_MODULE_43__["default"]; }); - -/* harmony import */ var _defaultTo_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/es/defaultTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultTo", function() { return _defaultTo_js__WEBPACK_IMPORTED_MODULE_44__["default"]; }); - -/* harmony import */ var _descend_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./descend.js */ "./node_modules/ramda/es/descend.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "descend", function() { return _descend_js__WEBPACK_IMPORTED_MODULE_45__["default"]; }); - -/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./difference.js */ "./node_modules/ramda/es/difference.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return _difference_js__WEBPACK_IMPORTED_MODULE_46__["default"]; }); - -/* harmony import */ var _differenceWith_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/es/differenceWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "differenceWith", function() { return _differenceWith_js__WEBPACK_IMPORTED_MODULE_47__["default"]; }); - -/* harmony import */ var _dissoc_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./dissoc.js */ "./node_modules/ramda/es/dissoc.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dissoc", function() { return _dissoc_js__WEBPACK_IMPORTED_MODULE_48__["default"]; }); - -/* harmony import */ var _dissocPath_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./dissocPath.js */ "./node_modules/ramda/es/dissocPath.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dissocPath", function() { return _dissocPath_js__WEBPACK_IMPORTED_MODULE_49__["default"]; }); - -/* harmony import */ var _divide_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./divide.js */ "./node_modules/ramda/es/divide.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "divide", function() { return _divide_js__WEBPACK_IMPORTED_MODULE_50__["default"]; }); - -/* harmony import */ var _drop_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./drop.js */ "./node_modules/ramda/es/drop.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return _drop_js__WEBPACK_IMPORTED_MODULE_51__["default"]; }); - -/* harmony import */ var _dropLast_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./dropLast.js */ "./node_modules/ramda/es/dropLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropLast", function() { return _dropLast_js__WEBPACK_IMPORTED_MODULE_52__["default"]; }); - -/* harmony import */ var _dropLastWhile_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./dropLastWhile.js */ "./node_modules/ramda/es/dropLastWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropLastWhile", function() { return _dropLastWhile_js__WEBPACK_IMPORTED_MODULE_53__["default"]; }); - -/* harmony import */ var _dropRepeats_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./dropRepeats.js */ "./node_modules/ramda/es/dropRepeats.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropRepeats", function() { return _dropRepeats_js__WEBPACK_IMPORTED_MODULE_54__["default"]; }); - -/* harmony import */ var _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/es/dropRepeatsWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropRepeatsWith", function() { return _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_55__["default"]; }); - -/* harmony import */ var _dropWhile_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./dropWhile.js */ "./node_modules/ramda/es/dropWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropWhile", function() { return _dropWhile_js__WEBPACK_IMPORTED_MODULE_56__["default"]; }); - -/* harmony import */ var _either_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./either.js */ "./node_modules/ramda/es/either.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "either", function() { return _either_js__WEBPACK_IMPORTED_MODULE_57__["default"]; }); - -/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./empty.js */ "./node_modules/ramda/es/empty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _empty_js__WEBPACK_IMPORTED_MODULE_58__["default"]; }); - -/* harmony import */ var _endsWith_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./endsWith.js */ "./node_modules/ramda/es/endsWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endsWith", function() { return _endsWith_js__WEBPACK_IMPORTED_MODULE_59__["default"]; }); - -/* harmony import */ var _eqBy_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./eqBy.js */ "./node_modules/ramda/es/eqBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eqBy", function() { return _eqBy_js__WEBPACK_IMPORTED_MODULE_60__["default"]; }); - -/* harmony import */ var _eqProps_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./eqProps.js */ "./node_modules/ramda/es/eqProps.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eqProps", function() { return _eqProps_js__WEBPACK_IMPORTED_MODULE_61__["default"]; }); - -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "equals", function() { return _equals_js__WEBPACK_IMPORTED_MODULE_62__["default"]; }); - -/* harmony import */ var _evolve_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./evolve.js */ "./node_modules/ramda/es/evolve.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "evolve", function() { return _evolve_js__WEBPACK_IMPORTED_MODULE_63__["default"]; }); - -/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _filter_js__WEBPACK_IMPORTED_MODULE_64__["default"]; }); - -/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./find.js */ "./node_modules/ramda/es/find.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _find_js__WEBPACK_IMPORTED_MODULE_65__["default"]; }); - -/* harmony import */ var _findIndex_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./findIndex.js */ "./node_modules/ramda/es/findIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _findIndex_js__WEBPACK_IMPORTED_MODULE_66__["default"]; }); - -/* harmony import */ var _findLast_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./findLast.js */ "./node_modules/ramda/es/findLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findLast", function() { return _findLast_js__WEBPACK_IMPORTED_MODULE_67__["default"]; }); - -/* harmony import */ var _findLastIndex_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./findLastIndex.js */ "./node_modules/ramda/es/findLastIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return _findLastIndex_js__WEBPACK_IMPORTED_MODULE_68__["default"]; }); - -/* harmony import */ var _flatten_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./flatten.js */ "./node_modules/ramda/es/flatten.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return _flatten_js__WEBPACK_IMPORTED_MODULE_69__["default"]; }); - -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flip", function() { return _flip_js__WEBPACK_IMPORTED_MODULE_70__["default"]; }); - -/* harmony import */ var _forEach_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./forEach.js */ "./node_modules/ramda/es/forEach.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return _forEach_js__WEBPACK_IMPORTED_MODULE_71__["default"]; }); - -/* harmony import */ var _forEachObjIndexed_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./forEachObjIndexed.js */ "./node_modules/ramda/es/forEachObjIndexed.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEachObjIndexed", function() { return _forEachObjIndexed_js__WEBPACK_IMPORTED_MODULE_72__["default"]; }); - -/* harmony import */ var _fromPairs_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./fromPairs.js */ "./node_modules/ramda/es/fromPairs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromPairs", function() { return _fromPairs_js__WEBPACK_IMPORTED_MODULE_73__["default"]; }); - -/* harmony import */ var _groupBy_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./groupBy.js */ "./node_modules/ramda/es/groupBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _groupBy_js__WEBPACK_IMPORTED_MODULE_74__["default"]; }); - -/* harmony import */ var _groupWith_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./groupWith.js */ "./node_modules/ramda/es/groupWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupWith", function() { return _groupWith_js__WEBPACK_IMPORTED_MODULE_75__["default"]; }); - -/* harmony import */ var _gt_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./gt.js */ "./node_modules/ramda/es/gt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gt", function() { return _gt_js__WEBPACK_IMPORTED_MODULE_76__["default"]; }); - -/* harmony import */ var _gte_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./gte.js */ "./node_modules/ramda/es/gte.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gte", function() { return _gte_js__WEBPACK_IMPORTED_MODULE_77__["default"]; }); - -/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./has.js */ "./node_modules/ramda/es/has.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "has", function() { return _has_js__WEBPACK_IMPORTED_MODULE_78__["default"]; }); - -/* harmony import */ var _hasIn_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./hasIn.js */ "./node_modules/ramda/es/hasIn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hasIn", function() { return _hasIn_js__WEBPACK_IMPORTED_MODULE_79__["default"]; }); - -/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/es/hasPath.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hasPath", function() { return _hasPath_js__WEBPACK_IMPORTED_MODULE_80__["default"]; }); - -/* harmony import */ var _head_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./head.js */ "./node_modules/ramda/es/head.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "head", function() { return _head_js__WEBPACK_IMPORTED_MODULE_81__["default"]; }); - -/* harmony import */ var _identical_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./identical.js */ "./node_modules/ramda/es/identical.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identical", function() { return _identical_js__WEBPACK_IMPORTED_MODULE_82__["default"]; }); - -/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _identity_js__WEBPACK_IMPORTED_MODULE_83__["default"]; }); - -/* harmony import */ var _ifElse_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./ifElse.js */ "./node_modules/ramda/es/ifElse.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ifElse", function() { return _ifElse_js__WEBPACK_IMPORTED_MODULE_84__["default"]; }); - -/* harmony import */ var _inc_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./inc.js */ "./node_modules/ramda/es/inc.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "inc", function() { return _inc_js__WEBPACK_IMPORTED_MODULE_85__["default"]; }); - -/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./includes.js */ "./node_modules/ramda/es/includes.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return _includes_js__WEBPACK_IMPORTED_MODULE_86__["default"]; }); - -/* harmony import */ var _indexBy_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./indexBy.js */ "./node_modules/ramda/es/indexBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return _indexBy_js__WEBPACK_IMPORTED_MODULE_87__["default"]; }); - -/* harmony import */ var _indexOf_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./indexOf.js */ "./node_modules/ramda/es/indexOf.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return _indexOf_js__WEBPACK_IMPORTED_MODULE_88__["default"]; }); - -/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./init.js */ "./node_modules/ramda/es/init.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "init", function() { return _init_js__WEBPACK_IMPORTED_MODULE_89__["default"]; }); - -/* harmony import */ var _innerJoin_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./innerJoin.js */ "./node_modules/ramda/es/innerJoin.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "innerJoin", function() { return _innerJoin_js__WEBPACK_IMPORTED_MODULE_90__["default"]; }); - -/* harmony import */ var _insert_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./insert.js */ "./node_modules/ramda/es/insert.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "insert", function() { return _insert_js__WEBPACK_IMPORTED_MODULE_91__["default"]; }); - -/* harmony import */ var _insertAll_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./insertAll.js */ "./node_modules/ramda/es/insertAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "insertAll", function() { return _insertAll_js__WEBPACK_IMPORTED_MODULE_92__["default"]; }); - -/* harmony import */ var _intersection_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./intersection.js */ "./node_modules/ramda/es/intersection.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return _intersection_js__WEBPACK_IMPORTED_MODULE_93__["default"]; }); - -/* harmony import */ var _intersperse_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./intersperse.js */ "./node_modules/ramda/es/intersperse.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intersperse", function() { return _intersperse_js__WEBPACK_IMPORTED_MODULE_94__["default"]; }); - -/* harmony import */ var _into_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./into.js */ "./node_modules/ramda/es/into.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "into", function() { return _into_js__WEBPACK_IMPORTED_MODULE_95__["default"]; }); - -/* harmony import */ var _invert_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./invert.js */ "./node_modules/ramda/es/invert.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return _invert_js__WEBPACK_IMPORTED_MODULE_96__["default"]; }); - -/* harmony import */ var _invertObj_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./invertObj.js */ "./node_modules/ramda/es/invertObj.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invertObj", function() { return _invertObj_js__WEBPACK_IMPORTED_MODULE_97__["default"]; }); - -/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invoker", function() { return _invoker_js__WEBPACK_IMPORTED_MODULE_98__["default"]; }); - -/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./is.js */ "./node_modules/ramda/es/is.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "is", function() { return _is_js__WEBPACK_IMPORTED_MODULE_99__["default"]; }); - -/* harmony import */ var _isEmpty_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./isEmpty.js */ "./node_modules/ramda/es/isEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _isEmpty_js__WEBPACK_IMPORTED_MODULE_100__["default"]; }); - -/* harmony import */ var _isNil_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/es/isNil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNil", function() { return _isNil_js__WEBPACK_IMPORTED_MODULE_101__["default"]; }); - -/* harmony import */ var _join_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./join.js */ "./node_modules/ramda/es/join.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "join", function() { return _join_js__WEBPACK_IMPORTED_MODULE_102__["default"]; }); - -/* harmony import */ var _juxt_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/es/juxt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "juxt", function() { return _juxt_js__WEBPACK_IMPORTED_MODULE_103__["default"]; }); - -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return _keys_js__WEBPACK_IMPORTED_MODULE_104__["default"]; }); - -/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./keysIn.js */ "./node_modules/ramda/es/keysIn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keysIn", function() { return _keysIn_js__WEBPACK_IMPORTED_MODULE_105__["default"]; }); - -/* harmony import */ var _last_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./last.js */ "./node_modules/ramda/es/last.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _last_js__WEBPACK_IMPORTED_MODULE_106__["default"]; }); - -/* harmony import */ var _lastIndexOf_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./lastIndexOf.js */ "./node_modules/ramda/es/lastIndexOf.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return _lastIndexOf_js__WEBPACK_IMPORTED_MODULE_107__["default"]; }); - -/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./length.js */ "./node_modules/ramda/es/length.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "length", function() { return _length_js__WEBPACK_IMPORTED_MODULE_108__["default"]; }); - -/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lens", function() { return _lens_js__WEBPACK_IMPORTED_MODULE_109__["default"]; }); - -/* harmony import */ var _lensIndex_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./lensIndex.js */ "./node_modules/ramda/es/lensIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensIndex", function() { return _lensIndex_js__WEBPACK_IMPORTED_MODULE_110__["default"]; }); - -/* harmony import */ var _lensPath_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./lensPath.js */ "./node_modules/ramda/es/lensPath.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensPath", function() { return _lensPath_js__WEBPACK_IMPORTED_MODULE_111__["default"]; }); - -/* harmony import */ var _lensProp_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./lensProp.js */ "./node_modules/ramda/es/lensProp.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensProp", function() { return _lensProp_js__WEBPACK_IMPORTED_MODULE_112__["default"]; }); - -/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lift", function() { return _lift_js__WEBPACK_IMPORTED_MODULE_113__["default"]; }); - -/* harmony import */ var _liftN_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/es/liftN.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "liftN", function() { return _liftN_js__WEBPACK_IMPORTED_MODULE_114__["default"]; }); - -/* harmony import */ var _lt_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./lt.js */ "./node_modules/ramda/es/lt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lt", function() { return _lt_js__WEBPACK_IMPORTED_MODULE_115__["default"]; }); - -/* harmony import */ var _lte_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./lte.js */ "./node_modules/ramda/es/lte.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lte", function() { return _lte_js__WEBPACK_IMPORTED_MODULE_116__["default"]; }); - -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _map_js__WEBPACK_IMPORTED_MODULE_117__["default"]; }); - -/* harmony import */ var _mapAccum_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./mapAccum.js */ "./node_modules/ramda/es/mapAccum.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapAccum", function() { return _mapAccum_js__WEBPACK_IMPORTED_MODULE_118__["default"]; }); - -/* harmony import */ var _mapAccumRight_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./mapAccumRight.js */ "./node_modules/ramda/es/mapAccumRight.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapAccumRight", function() { return _mapAccumRight_js__WEBPACK_IMPORTED_MODULE_119__["default"]; }); - -/* harmony import */ var _mapObjIndexed_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./mapObjIndexed.js */ "./node_modules/ramda/es/mapObjIndexed.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapObjIndexed", function() { return _mapObjIndexed_js__WEBPACK_IMPORTED_MODULE_120__["default"]; }); - -/* harmony import */ var _match_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./match.js */ "./node_modules/ramda/es/match.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "match", function() { return _match_js__WEBPACK_IMPORTED_MODULE_121__["default"]; }); - -/* harmony import */ var _mathMod_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./mathMod.js */ "./node_modules/ramda/es/mathMod.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mathMod", function() { return _mathMod_js__WEBPACK_IMPORTED_MODULE_122__["default"]; }); - -/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _max_js__WEBPACK_IMPORTED_MODULE_123__["default"]; }); - -/* harmony import */ var _maxBy_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./maxBy.js */ "./node_modules/ramda/es/maxBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "maxBy", function() { return _maxBy_js__WEBPACK_IMPORTED_MODULE_124__["default"]; }); - -/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./mean.js */ "./node_modules/ramda/es/mean.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mean", function() { return _mean_js__WEBPACK_IMPORTED_MODULE_125__["default"]; }); - -/* harmony import */ var _median_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./median.js */ "./node_modules/ramda/es/median.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "median", function() { return _median_js__WEBPACK_IMPORTED_MODULE_126__["default"]; }); - -/* harmony import */ var _memoizeWith_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./memoizeWith.js */ "./node_modules/ramda/es/memoizeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "memoizeWith", function() { return _memoizeWith_js__WEBPACK_IMPORTED_MODULE_127__["default"]; }); - -/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./merge.js */ "./node_modules/ramda/es/merge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _merge_js__WEBPACK_IMPORTED_MODULE_128__["default"]; }); - -/* harmony import */ var _mergeAll_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./mergeAll.js */ "./node_modules/ramda/es/mergeAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _mergeAll_js__WEBPACK_IMPORTED_MODULE_129__["default"]; }); - -/* harmony import */ var _mergeDeepLeft_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ./mergeDeepLeft.js */ "./node_modules/ramda/es/mergeDeepLeft.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepLeft", function() { return _mergeDeepLeft_js__WEBPACK_IMPORTED_MODULE_130__["default"]; }); - -/* harmony import */ var _mergeDeepRight_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ./mergeDeepRight.js */ "./node_modules/ramda/es/mergeDeepRight.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepRight", function() { return _mergeDeepRight_js__WEBPACK_IMPORTED_MODULE_131__["default"]; }); - -/* harmony import */ var _mergeDeepWith_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(/*! ./mergeDeepWith.js */ "./node_modules/ramda/es/mergeDeepWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepWith", function() { return _mergeDeepWith_js__WEBPACK_IMPORTED_MODULE_132__["default"]; }); - -/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepWithKey", function() { return _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_133__["default"]; }); - -/* harmony import */ var _mergeLeft_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(/*! ./mergeLeft.js */ "./node_modules/ramda/es/mergeLeft.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeLeft", function() { return _mergeLeft_js__WEBPACK_IMPORTED_MODULE_134__["default"]; }); - -/* harmony import */ var _mergeRight_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(/*! ./mergeRight.js */ "./node_modules/ramda/es/mergeRight.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeRight", function() { return _mergeRight_js__WEBPACK_IMPORTED_MODULE_135__["default"]; }); - -/* harmony import */ var _mergeWith_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(/*! ./mergeWith.js */ "./node_modules/ramda/es/mergeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _mergeWith_js__WEBPACK_IMPORTED_MODULE_136__["default"]; }); - -/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWithKey", function() { return _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_137__["default"]; }); - -/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ./min.js */ "./node_modules/ramda/es/min.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _min_js__WEBPACK_IMPORTED_MODULE_138__["default"]; }); - -/* harmony import */ var _minBy_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ./minBy.js */ "./node_modules/ramda/es/minBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "minBy", function() { return _minBy_js__WEBPACK_IMPORTED_MODULE_139__["default"]; }); - -/* harmony import */ var _modulo_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ./modulo.js */ "./node_modules/ramda/es/modulo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "modulo", function() { return _modulo_js__WEBPACK_IMPORTED_MODULE_140__["default"]; }); - -/* harmony import */ var _move_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ./move.js */ "./node_modules/ramda/es/move.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "move", function() { return _move_js__WEBPACK_IMPORTED_MODULE_141__["default"]; }); - -/* harmony import */ var _multiply_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/es/multiply.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multiply", function() { return _multiply_js__WEBPACK_IMPORTED_MODULE_142__["default"]; }); - -/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nAry", function() { return _nAry_js__WEBPACK_IMPORTED_MODULE_143__["default"]; }); - -/* harmony import */ var _negate_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ./negate.js */ "./node_modules/ramda/es/negate.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return _negate_js__WEBPACK_IMPORTED_MODULE_144__["default"]; }); - -/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ./none.js */ "./node_modules/ramda/es/none.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "none", function() { return _none_js__WEBPACK_IMPORTED_MODULE_145__["default"]; }); - -/* harmony import */ var _not_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ./not.js */ "./node_modules/ramda/es/not.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "not", function() { return _not_js__WEBPACK_IMPORTED_MODULE_146__["default"]; }); - -/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nth", function() { return _nth_js__WEBPACK_IMPORTED_MODULE_147__["default"]; }); - -/* harmony import */ var _nthArg_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ./nthArg.js */ "./node_modules/ramda/es/nthArg.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nthArg", function() { return _nthArg_js__WEBPACK_IMPORTED_MODULE_148__["default"]; }); - -/* harmony import */ var _o_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ./o.js */ "./node_modules/ramda/es/o.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "o", function() { return _o_js__WEBPACK_IMPORTED_MODULE_149__["default"]; }); - -/* harmony import */ var _objOf_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ./objOf.js */ "./node_modules/ramda/es/objOf.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "objOf", function() { return _objOf_js__WEBPACK_IMPORTED_MODULE_150__["default"]; }); - -/* harmony import */ var _of_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ./of.js */ "./node_modules/ramda/es/of.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _of_js__WEBPACK_IMPORTED_MODULE_151__["default"]; }); - -/* harmony import */ var _omit_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ./omit.js */ "./node_modules/ramda/es/omit.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return _omit_js__WEBPACK_IMPORTED_MODULE_152__["default"]; }); - -/* harmony import */ var _once_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ./once.js */ "./node_modules/ramda/es/once.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "once", function() { return _once_js__WEBPACK_IMPORTED_MODULE_153__["default"]; }); - -/* harmony import */ var _or_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ./or.js */ "./node_modules/ramda/es/or.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "or", function() { return _or_js__WEBPACK_IMPORTED_MODULE_154__["default"]; }); - -/* harmony import */ var _otherwise_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ./otherwise.js */ "./node_modules/ramda/es/otherwise.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "otherwise", function() { return _otherwise_js__WEBPACK_IMPORTED_MODULE_155__["default"]; }); - -/* harmony import */ var _over_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ./over.js */ "./node_modules/ramda/es/over.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "over", function() { return _over_js__WEBPACK_IMPORTED_MODULE_156__["default"]; }); - -/* harmony import */ var _pair_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ./pair.js */ "./node_modules/ramda/es/pair.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pair", function() { return _pair_js__WEBPACK_IMPORTED_MODULE_157__["default"]; }); - -/* harmony import */ var _partial_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ./partial.js */ "./node_modules/ramda/es/partial.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return _partial_js__WEBPACK_IMPORTED_MODULE_158__["default"]; }); - -/* harmony import */ var _partialRight_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ./partialRight.js */ "./node_modules/ramda/es/partialRight.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partialRight", function() { return _partialRight_js__WEBPACK_IMPORTED_MODULE_159__["default"]; }); - -/* harmony import */ var _partition_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ./partition.js */ "./node_modules/ramda/es/partition.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _partition_js__WEBPACK_IMPORTED_MODULE_160__["default"]; }); - -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "path", function() { return _path_js__WEBPACK_IMPORTED_MODULE_161__["default"]; }); - -/* harmony import */ var _pathEq_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(/*! ./pathEq.js */ "./node_modules/ramda/es/pathEq.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathEq", function() { return _pathEq_js__WEBPACK_IMPORTED_MODULE_162__["default"]; }); - -/* harmony import */ var _pathOr_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(/*! ./pathOr.js */ "./node_modules/ramda/es/pathOr.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathOr", function() { return _pathOr_js__WEBPACK_IMPORTED_MODULE_163__["default"]; }); - -/* harmony import */ var _pathSatisfies_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(/*! ./pathSatisfies.js */ "./node_modules/ramda/es/pathSatisfies.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathSatisfies", function() { return _pathSatisfies_js__WEBPACK_IMPORTED_MODULE_164__["default"]; }); - -/* harmony import */ var _pick_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(/*! ./pick.js */ "./node_modules/ramda/es/pick.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return _pick_js__WEBPACK_IMPORTED_MODULE_165__["default"]; }); - -/* harmony import */ var _pickAll_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/es/pickAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pickAll", function() { return _pickAll_js__WEBPACK_IMPORTED_MODULE_166__["default"]; }); - -/* harmony import */ var _pickBy_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(/*! ./pickBy.js */ "./node_modules/ramda/es/pickBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pickBy", function() { return _pickBy_js__WEBPACK_IMPORTED_MODULE_167__["default"]; }); - -/* harmony import */ var _pipe_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/es/pipe.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _pipe_js__WEBPACK_IMPORTED_MODULE_168__["default"]; }); - -/* harmony import */ var _pipeK_js__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(/*! ./pipeK.js */ "./node_modules/ramda/es/pipeK.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeK", function() { return _pipeK_js__WEBPACK_IMPORTED_MODULE_169__["default"]; }); - -/* harmony import */ var _pipeP_js__WEBPACK_IMPORTED_MODULE_170__ = __webpack_require__(/*! ./pipeP.js */ "./node_modules/ramda/es/pipeP.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeP", function() { return _pipeP_js__WEBPACK_IMPORTED_MODULE_170__["default"]; }); - -/* harmony import */ var _pipeWith_js__WEBPACK_IMPORTED_MODULE_171__ = __webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/es/pipeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeWith", function() { return _pipeWith_js__WEBPACK_IMPORTED_MODULE_171__["default"]; }); - -/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_172__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _pluck_js__WEBPACK_IMPORTED_MODULE_172__["default"]; }); - -/* harmony import */ var _prepend_js__WEBPACK_IMPORTED_MODULE_173__ = __webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/es/prepend.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return _prepend_js__WEBPACK_IMPORTED_MODULE_173__["default"]; }); - -/* harmony import */ var _product_js__WEBPACK_IMPORTED_MODULE_174__ = __webpack_require__(/*! ./product.js */ "./node_modules/ramda/es/product.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "product", function() { return _product_js__WEBPACK_IMPORTED_MODULE_174__["default"]; }); - -/* harmony import */ var _project_js__WEBPACK_IMPORTED_MODULE_175__ = __webpack_require__(/*! ./project.js */ "./node_modules/ramda/es/project.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "project", function() { return _project_js__WEBPACK_IMPORTED_MODULE_175__["default"]; }); - -/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_176__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return _prop_js__WEBPACK_IMPORTED_MODULE_176__["default"]; }); - -/* harmony import */ var _propEq_js__WEBPACK_IMPORTED_MODULE_177__ = __webpack_require__(/*! ./propEq.js */ "./node_modules/ramda/es/propEq.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propEq", function() { return _propEq_js__WEBPACK_IMPORTED_MODULE_177__["default"]; }); - -/* harmony import */ var _propIs_js__WEBPACK_IMPORTED_MODULE_178__ = __webpack_require__(/*! ./propIs.js */ "./node_modules/ramda/es/propIs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propIs", function() { return _propIs_js__WEBPACK_IMPORTED_MODULE_178__["default"]; }); - -/* harmony import */ var _propOr_js__WEBPACK_IMPORTED_MODULE_179__ = __webpack_require__(/*! ./propOr.js */ "./node_modules/ramda/es/propOr.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propOr", function() { return _propOr_js__WEBPACK_IMPORTED_MODULE_179__["default"]; }); - -/* harmony import */ var _propSatisfies_js__WEBPACK_IMPORTED_MODULE_180__ = __webpack_require__(/*! ./propSatisfies.js */ "./node_modules/ramda/es/propSatisfies.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propSatisfies", function() { return _propSatisfies_js__WEBPACK_IMPORTED_MODULE_180__["default"]; }); - -/* harmony import */ var _props_js__WEBPACK_IMPORTED_MODULE_181__ = __webpack_require__(/*! ./props.js */ "./node_modules/ramda/es/props.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "props", function() { return _props_js__WEBPACK_IMPORTED_MODULE_181__["default"]; }); - -/* harmony import */ var _range_js__WEBPACK_IMPORTED_MODULE_182__ = __webpack_require__(/*! ./range.js */ "./node_modules/ramda/es/range.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _range_js__WEBPACK_IMPORTED_MODULE_182__["default"]; }); - -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_183__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _reduce_js__WEBPACK_IMPORTED_MODULE_183__["default"]; }); - -/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_184__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceBy", function() { return _reduceBy_js__WEBPACK_IMPORTED_MODULE_184__["default"]; }); - -/* harmony import */ var _reduceRight_js__WEBPACK_IMPORTED_MODULE_185__ = __webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/es/reduceRight.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return _reduceRight_js__WEBPACK_IMPORTED_MODULE_185__["default"]; }); - -/* harmony import */ var _reduceWhile_js__WEBPACK_IMPORTED_MODULE_186__ = __webpack_require__(/*! ./reduceWhile.js */ "./node_modules/ramda/es/reduceWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceWhile", function() { return _reduceWhile_js__WEBPACK_IMPORTED_MODULE_186__["default"]; }); - -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_187__ = __webpack_require__(/*! ./reduced.js */ "./node_modules/ramda/es/reduced.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduced", function() { return _reduced_js__WEBPACK_IMPORTED_MODULE_187__["default"]; }); - -/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_188__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return _reject_js__WEBPACK_IMPORTED_MODULE_188__["default"]; }); - -/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_189__ = __webpack_require__(/*! ./remove.js */ "./node_modules/ramda/es/remove.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return _remove_js__WEBPACK_IMPORTED_MODULE_189__["default"]; }); - -/* harmony import */ var _repeat_js__WEBPACK_IMPORTED_MODULE_190__ = __webpack_require__(/*! ./repeat.js */ "./node_modules/ramda/es/repeat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _repeat_js__WEBPACK_IMPORTED_MODULE_190__["default"]; }); - -/* harmony import */ var _replace_js__WEBPACK_IMPORTED_MODULE_191__ = __webpack_require__(/*! ./replace.js */ "./node_modules/ramda/es/replace.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "replace", function() { return _replace_js__WEBPACK_IMPORTED_MODULE_191__["default"]; }); - -/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_192__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reverse", function() { return _reverse_js__WEBPACK_IMPORTED_MODULE_192__["default"]; }); - -/* harmony import */ var _scan_js__WEBPACK_IMPORTED_MODULE_193__ = __webpack_require__(/*! ./scan.js */ "./node_modules/ramda/es/scan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _scan_js__WEBPACK_IMPORTED_MODULE_193__["default"]; }); - -/* harmony import */ var _sequence_js__WEBPACK_IMPORTED_MODULE_194__ = __webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/es/sequence.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequence", function() { return _sequence_js__WEBPACK_IMPORTED_MODULE_194__["default"]; }); - -/* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_195__ = __webpack_require__(/*! ./set.js */ "./node_modules/ramda/es/set.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "set", function() { return _set_js__WEBPACK_IMPORTED_MODULE_195__["default"]; }); - -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_196__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return _slice_js__WEBPACK_IMPORTED_MODULE_196__["default"]; }); - -/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_197__ = __webpack_require__(/*! ./sort.js */ "./node_modules/ramda/es/sort.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sort", function() { return _sort_js__WEBPACK_IMPORTED_MODULE_197__["default"]; }); - -/* harmony import */ var _sortBy_js__WEBPACK_IMPORTED_MODULE_198__ = __webpack_require__(/*! ./sortBy.js */ "./node_modules/ramda/es/sortBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return _sortBy_js__WEBPACK_IMPORTED_MODULE_198__["default"]; }); - -/* harmony import */ var _sortWith_js__WEBPACK_IMPORTED_MODULE_199__ = __webpack_require__(/*! ./sortWith.js */ "./node_modules/ramda/es/sortWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortWith", function() { return _sortWith_js__WEBPACK_IMPORTED_MODULE_199__["default"]; }); - -/* harmony import */ var _split_js__WEBPACK_IMPORTED_MODULE_200__ = __webpack_require__(/*! ./split.js */ "./node_modules/ramda/es/split.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "split", function() { return _split_js__WEBPACK_IMPORTED_MODULE_200__["default"]; }); - -/* harmony import */ var _splitAt_js__WEBPACK_IMPORTED_MODULE_201__ = __webpack_require__(/*! ./splitAt.js */ "./node_modules/ramda/es/splitAt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitAt", function() { return _splitAt_js__WEBPACK_IMPORTED_MODULE_201__["default"]; }); - -/* harmony import */ var _splitEvery_js__WEBPACK_IMPORTED_MODULE_202__ = __webpack_require__(/*! ./splitEvery.js */ "./node_modules/ramda/es/splitEvery.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitEvery", function() { return _splitEvery_js__WEBPACK_IMPORTED_MODULE_202__["default"]; }); - -/* harmony import */ var _splitWhen_js__WEBPACK_IMPORTED_MODULE_203__ = __webpack_require__(/*! ./splitWhen.js */ "./node_modules/ramda/es/splitWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitWhen", function() { return _splitWhen_js__WEBPACK_IMPORTED_MODULE_203__["default"]; }); - -/* harmony import */ var _startsWith_js__WEBPACK_IMPORTED_MODULE_204__ = __webpack_require__(/*! ./startsWith.js */ "./node_modules/ramda/es/startsWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startsWith", function() { return _startsWith_js__WEBPACK_IMPORTED_MODULE_204__["default"]; }); - -/* harmony import */ var _subtract_js__WEBPACK_IMPORTED_MODULE_205__ = __webpack_require__(/*! ./subtract.js */ "./node_modules/ramda/es/subtract.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subtract", function() { return _subtract_js__WEBPACK_IMPORTED_MODULE_205__["default"]; }); - -/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_206__ = __webpack_require__(/*! ./sum.js */ "./node_modules/ramda/es/sum.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return _sum_js__WEBPACK_IMPORTED_MODULE_206__["default"]; }); - -/* harmony import */ var _symmetricDifference_js__WEBPACK_IMPORTED_MODULE_207__ = __webpack_require__(/*! ./symmetricDifference.js */ "./node_modules/ramda/es/symmetricDifference.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symmetricDifference", function() { return _symmetricDifference_js__WEBPACK_IMPORTED_MODULE_207__["default"]; }); - -/* harmony import */ var _symmetricDifferenceWith_js__WEBPACK_IMPORTED_MODULE_208__ = __webpack_require__(/*! ./symmetricDifferenceWith.js */ "./node_modules/ramda/es/symmetricDifferenceWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symmetricDifferenceWith", function() { return _symmetricDifferenceWith_js__WEBPACK_IMPORTED_MODULE_208__["default"]; }); - -/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_209__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return _tail_js__WEBPACK_IMPORTED_MODULE_209__["default"]; }); - -/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_210__ = __webpack_require__(/*! ./take.js */ "./node_modules/ramda/es/take.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _take_js__WEBPACK_IMPORTED_MODULE_210__["default"]; }); - -/* harmony import */ var _takeLast_js__WEBPACK_IMPORTED_MODULE_211__ = __webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/es/takeLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _takeLast_js__WEBPACK_IMPORTED_MODULE_211__["default"]; }); - -/* harmony import */ var _takeLastWhile_js__WEBPACK_IMPORTED_MODULE_212__ = __webpack_require__(/*! ./takeLastWhile.js */ "./node_modules/ramda/es/takeLastWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLastWhile", function() { return _takeLastWhile_js__WEBPACK_IMPORTED_MODULE_212__["default"]; }); - -/* harmony import */ var _takeWhile_js__WEBPACK_IMPORTED_MODULE_213__ = __webpack_require__(/*! ./takeWhile.js */ "./node_modules/ramda/es/takeWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _takeWhile_js__WEBPACK_IMPORTED_MODULE_213__["default"]; }); - -/* harmony import */ var _tap_js__WEBPACK_IMPORTED_MODULE_214__ = __webpack_require__(/*! ./tap.js */ "./node_modules/ramda/es/tap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _tap_js__WEBPACK_IMPORTED_MODULE_214__["default"]; }); - -/* harmony import */ var _test_js__WEBPACK_IMPORTED_MODULE_215__ = __webpack_require__(/*! ./test.js */ "./node_modules/ramda/es/test.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "test", function() { return _test_js__WEBPACK_IMPORTED_MODULE_215__["default"]; }); - -/* harmony import */ var _then_js__WEBPACK_IMPORTED_MODULE_216__ = __webpack_require__(/*! ./then.js */ "./node_modules/ramda/es/then.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "then", function() { return _then_js__WEBPACK_IMPORTED_MODULE_216__["default"]; }); - -/* harmony import */ var _times_js__WEBPACK_IMPORTED_MODULE_217__ = __webpack_require__(/*! ./times.js */ "./node_modules/ramda/es/times.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "times", function() { return _times_js__WEBPACK_IMPORTED_MODULE_217__["default"]; }); - -/* harmony import */ var _toLower_js__WEBPACK_IMPORTED_MODULE_218__ = __webpack_require__(/*! ./toLower.js */ "./node_modules/ramda/es/toLower.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toLower", function() { return _toLower_js__WEBPACK_IMPORTED_MODULE_218__["default"]; }); - -/* harmony import */ var _toPairs_js__WEBPACK_IMPORTED_MODULE_219__ = __webpack_require__(/*! ./toPairs.js */ "./node_modules/ramda/es/toPairs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toPairs", function() { return _toPairs_js__WEBPACK_IMPORTED_MODULE_219__["default"]; }); - -/* harmony import */ var _toPairsIn_js__WEBPACK_IMPORTED_MODULE_220__ = __webpack_require__(/*! ./toPairsIn.js */ "./node_modules/ramda/es/toPairsIn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toPairsIn", function() { return _toPairsIn_js__WEBPACK_IMPORTED_MODULE_220__["default"]; }); - -/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_221__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toString", function() { return _toString_js__WEBPACK_IMPORTED_MODULE_221__["default"]; }); - -/* harmony import */ var _toUpper_js__WEBPACK_IMPORTED_MODULE_222__ = __webpack_require__(/*! ./toUpper.js */ "./node_modules/ramda/es/toUpper.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toUpper", function() { return _toUpper_js__WEBPACK_IMPORTED_MODULE_222__["default"]; }); - -/* harmony import */ var _transduce_js__WEBPACK_IMPORTED_MODULE_223__ = __webpack_require__(/*! ./transduce.js */ "./node_modules/ramda/es/transduce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transduce", function() { return _transduce_js__WEBPACK_IMPORTED_MODULE_223__["default"]; }); - -/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_224__ = __webpack_require__(/*! ./transpose.js */ "./node_modules/ramda/es/transpose.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return _transpose_js__WEBPACK_IMPORTED_MODULE_224__["default"]; }); - -/* harmony import */ var _traverse_js__WEBPACK_IMPORTED_MODULE_225__ = __webpack_require__(/*! ./traverse.js */ "./node_modules/ramda/es/traverse.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "traverse", function() { return _traverse_js__WEBPACK_IMPORTED_MODULE_225__["default"]; }); - -/* harmony import */ var _trim_js__WEBPACK_IMPORTED_MODULE_226__ = __webpack_require__(/*! ./trim.js */ "./node_modules/ramda/es/trim.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "trim", function() { return _trim_js__WEBPACK_IMPORTED_MODULE_226__["default"]; }); - -/* harmony import */ var _tryCatch_js__WEBPACK_IMPORTED_MODULE_227__ = __webpack_require__(/*! ./tryCatch.js */ "./node_modules/ramda/es/tryCatch.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryCatch", function() { return _tryCatch_js__WEBPACK_IMPORTED_MODULE_227__["default"]; }); - -/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_228__ = __webpack_require__(/*! ./type.js */ "./node_modules/ramda/es/type.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "type", function() { return _type_js__WEBPACK_IMPORTED_MODULE_228__["default"]; }); - -/* harmony import */ var _unapply_js__WEBPACK_IMPORTED_MODULE_229__ = __webpack_require__(/*! ./unapply.js */ "./node_modules/ramda/es/unapply.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unapply", function() { return _unapply_js__WEBPACK_IMPORTED_MODULE_229__["default"]; }); - -/* harmony import */ var _unary_js__WEBPACK_IMPORTED_MODULE_230__ = __webpack_require__(/*! ./unary.js */ "./node_modules/ramda/es/unary.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unary", function() { return _unary_js__WEBPACK_IMPORTED_MODULE_230__["default"]; }); - -/* harmony import */ var _uncurryN_js__WEBPACK_IMPORTED_MODULE_231__ = __webpack_require__(/*! ./uncurryN.js */ "./node_modules/ramda/es/uncurryN.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uncurryN", function() { return _uncurryN_js__WEBPACK_IMPORTED_MODULE_231__["default"]; }); - -/* harmony import */ var _unfold_js__WEBPACK_IMPORTED_MODULE_232__ = __webpack_require__(/*! ./unfold.js */ "./node_modules/ramda/es/unfold.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unfold", function() { return _unfold_js__WEBPACK_IMPORTED_MODULE_232__["default"]; }); - -/* harmony import */ var _union_js__WEBPACK_IMPORTED_MODULE_233__ = __webpack_require__(/*! ./union.js */ "./node_modules/ramda/es/union.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "union", function() { return _union_js__WEBPACK_IMPORTED_MODULE_233__["default"]; }); - -/* harmony import */ var _unionWith_js__WEBPACK_IMPORTED_MODULE_234__ = __webpack_require__(/*! ./unionWith.js */ "./node_modules/ramda/es/unionWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unionWith", function() { return _unionWith_js__WEBPACK_IMPORTED_MODULE_234__["default"]; }); - -/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_235__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return _uniq_js__WEBPACK_IMPORTED_MODULE_235__["default"]; }); - -/* harmony import */ var _uniqBy_js__WEBPACK_IMPORTED_MODULE_236__ = __webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/es/uniqBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqBy", function() { return _uniqBy_js__WEBPACK_IMPORTED_MODULE_236__["default"]; }); - -/* harmony import */ var _uniqWith_js__WEBPACK_IMPORTED_MODULE_237__ = __webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/es/uniqWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqWith", function() { return _uniqWith_js__WEBPACK_IMPORTED_MODULE_237__["default"]; }); - -/* harmony import */ var _unless_js__WEBPACK_IMPORTED_MODULE_238__ = __webpack_require__(/*! ./unless.js */ "./node_modules/ramda/es/unless.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unless", function() { return _unless_js__WEBPACK_IMPORTED_MODULE_238__["default"]; }); - -/* harmony import */ var _unnest_js__WEBPACK_IMPORTED_MODULE_239__ = __webpack_require__(/*! ./unnest.js */ "./node_modules/ramda/es/unnest.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unnest", function() { return _unnest_js__WEBPACK_IMPORTED_MODULE_239__["default"]; }); - -/* harmony import */ var _until_js__WEBPACK_IMPORTED_MODULE_240__ = __webpack_require__(/*! ./until.js */ "./node_modules/ramda/es/until.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "until", function() { return _until_js__WEBPACK_IMPORTED_MODULE_240__["default"]; }); - -/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_241__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "update", function() { return _update_js__WEBPACK_IMPORTED_MODULE_241__["default"]; }); - -/* harmony import */ var _useWith_js__WEBPACK_IMPORTED_MODULE_242__ = __webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/es/useWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useWith", function() { return _useWith_js__WEBPACK_IMPORTED_MODULE_242__["default"]; }); - -/* harmony import */ var _values_js__WEBPACK_IMPORTED_MODULE_243__ = __webpack_require__(/*! ./values.js */ "./node_modules/ramda/es/values.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "values", function() { return _values_js__WEBPACK_IMPORTED_MODULE_243__["default"]; }); - -/* harmony import */ var _valuesIn_js__WEBPACK_IMPORTED_MODULE_244__ = __webpack_require__(/*! ./valuesIn.js */ "./node_modules/ramda/es/valuesIn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "valuesIn", function() { return _valuesIn_js__WEBPACK_IMPORTED_MODULE_244__["default"]; }); - -/* harmony import */ var _view_js__WEBPACK_IMPORTED_MODULE_245__ = __webpack_require__(/*! ./view.js */ "./node_modules/ramda/es/view.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "view", function() { return _view_js__WEBPACK_IMPORTED_MODULE_245__["default"]; }); - -/* harmony import */ var _when_js__WEBPACK_IMPORTED_MODULE_246__ = __webpack_require__(/*! ./when.js */ "./node_modules/ramda/es/when.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "when", function() { return _when_js__WEBPACK_IMPORTED_MODULE_246__["default"]; }); - -/* harmony import */ var _where_js__WEBPACK_IMPORTED_MODULE_247__ = __webpack_require__(/*! ./where.js */ "./node_modules/ramda/es/where.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "where", function() { return _where_js__WEBPACK_IMPORTED_MODULE_247__["default"]; }); - -/* harmony import */ var _whereEq_js__WEBPACK_IMPORTED_MODULE_248__ = __webpack_require__(/*! ./whereEq.js */ "./node_modules/ramda/es/whereEq.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "whereEq", function() { return _whereEq_js__WEBPACK_IMPORTED_MODULE_248__["default"]; }); - -/* harmony import */ var _without_js__WEBPACK_IMPORTED_MODULE_249__ = __webpack_require__(/*! ./without.js */ "./node_modules/ramda/es/without.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "without", function() { return _without_js__WEBPACK_IMPORTED_MODULE_249__["default"]; }); - -/* harmony import */ var _xprod_js__WEBPACK_IMPORTED_MODULE_250__ = __webpack_require__(/*! ./xprod.js */ "./node_modules/ramda/es/xprod.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "xprod", function() { return _xprod_js__WEBPACK_IMPORTED_MODULE_250__["default"]; }); - -/* harmony import */ var _zip_js__WEBPACK_IMPORTED_MODULE_251__ = __webpack_require__(/*! ./zip.js */ "./node_modules/ramda/es/zip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _zip_js__WEBPACK_IMPORTED_MODULE_251__["default"]; }); - -/* harmony import */ var _zipObj_js__WEBPACK_IMPORTED_MODULE_252__ = __webpack_require__(/*! ./zipObj.js */ "./node_modules/ramda/es/zipObj.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipObj", function() { return _zipObj_js__WEBPACK_IMPORTED_MODULE_252__["default"]; }); - -/* harmony import */ var _zipWith_js__WEBPACK_IMPORTED_MODULE_253__ = __webpack_require__(/*! ./zipWith.js */ "./node_modules/ramda/es/zipWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _zipWith_js__WEBPACK_IMPORTED_MODULE_253__["default"]; }); - -/* harmony import */ var _thunkify_js__WEBPACK_IMPORTED_MODULE_254__ = __webpack_require__(/*! ./thunkify.js */ "./node_modules/ramda/es/thunkify.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thunkify", function() { return _thunkify_js__WEBPACK_IMPORTED_MODULE_254__["default"]; }); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "./node_modules/ramda/es/indexBy.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/indexBy.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); - - -/** - * Given a function that generates a key, turns a list of objects into an - * object indexing the objects by the given key. Note that if multiple - * objects generate the same value for the indexing key only the last value - * will be included in the generated object. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig (a -> String) -> [{k: v}] -> {k: {k: v}} - * @param {Function} fn Function :: a -> String - * @param {Array} array The array of objects to index - * @return {Object} An object indexing each array element by the given property. - * @example - * - * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}]; - * R.indexBy(R.prop('id'), list); - * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} - */ -var indexBy = /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (acc, elem) { - return elem; -}, null); -/* harmony default export */ __webpack_exports__["default"] = (indexBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/indexOf.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/indexOf.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_indexOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_indexOf.js */ "./node_modules/ramda/es/internal/_indexOf.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); - - - - -/** - * Returns the position of the first occurrence of an item in an array, or -1 - * if the item is not included in the array. [`R.equals`](#equals) is used to - * determine equality. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> Number - * @param {*} target The item to find. - * @param {Array} xs The array to search in. - * @return {Number} the index of the target, or -1 if the target is not found. - * @see R.lastIndexOf - * @example - * - * R.indexOf(3, [1,2,3,4]); //=> 2 - * R.indexOf(10, [1,2,3,4]); //=> -1 - */ -var indexOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function indexOf(target, xs) { - return typeof xs.indexOf === 'function' && !Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xs) ? xs.indexOf(target) : Object(_internal_indexOf_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xs, target, 0); -}); -/* harmony default export */ __webpack_exports__["default"] = (indexOf); - -/***/ }), - -/***/ "./node_modules/ramda/es/init.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/init.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - -/** - * Returns all but the last element of the given list or string. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category List - * @sig [a] -> [a] - * @sig String -> String - * @param {*} list - * @return {*} - * @see R.last, R.head, R.tail - * @example - * - * R.init([1, 2, 3]); //=> [1, 2] - * R.init([1, 2]); //=> [1] - * R.init([1]); //=> [] - * R.init([]); //=> [] - * - * R.init('abc'); //=> 'ab' - * R.init('ab'); //=> 'a' - * R.init('a'); //=> '' - * R.init(''); //=> '' - */ -var init = /*#__PURE__*/Object(_slice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, -1); -/* harmony default export */ __webpack_exports__["default"] = (init); - -/***/ }), - -/***/ "./node_modules/ramda/es/innerJoin.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/innerJoin.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); - - - - -/** - * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list - * `xs'` comprising each of the elements of `xs` which is equal to one or more - * elements of `ys` according to `pred`. - * - * `pred` must be a binary function expecting an element from each list. - * - * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should - * not be significant, but since `xs'` is ordered the implementation guarantees - * that its values are in the same order as they appear in `xs`. Duplicates are - * not removed, so `xs'` may contain duplicates if `xs` contains duplicates. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Relation - * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a] - * @param {Function} pred - * @param {Array} xs - * @param {Array} ys - * @return {Array} - * @see R.intersection - * @example - * - * R.innerJoin( - * (record, id) => record.id === id, - * [{id: 824, name: 'Richie Furay'}, - * {id: 956, name: 'Dewey Martin'}, - * {id: 313, name: 'Bruce Palmer'}, - * {id: 456, name: 'Stephen Stills'}, - * {id: 177, name: 'Neil Young'}], - * [177, 456, 999] - * ); - * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] - */ -var innerJoin = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function innerJoin(pred, xs, ys) { - return Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (x) { - return Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, x, ys); - }, xs); -}); -/* harmony default export */ __webpack_exports__["default"] = (innerJoin); - -/***/ }), - -/***/ "./node_modules/ramda/es/insert.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/insert.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Inserts the supplied element into the list, at the specified `index`. _Note that - - * this is not destructive_: it returns a copy of the list with the changes. - * No lists have been harmed in the application of this function. - * - * @func - * @memberOf R - * @since v0.2.2 - * @category List - * @sig Number -> a -> [a] -> [a] - * @param {Number} index The position to insert the element - * @param {*} elt The element to insert into the Array - * @param {Array} list The list to insert into - * @return {Array} A new Array with `elt` inserted at `index`. - * @example - * - * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4] - */ -var insert = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function insert(idx, elt, list) { - idx = idx < list.length && idx >= 0 ? idx : list.length; - var result = Array.prototype.slice.call(list, 0); - result.splice(idx, 0, elt); - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (insert); - -/***/ }), - -/***/ "./node_modules/ramda/es/insertAll.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/insertAll.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Inserts the sub-list into the list, at the specified `index`. _Note that this is not - * destructive_: it returns a copy of the list with the changes. - * No lists have been harmed in the application of this function. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category List - * @sig Number -> [a] -> [a] -> [a] - * @param {Number} index The position to insert the sub-list - * @param {Array} elts The sub-list to insert into the Array - * @param {Array} list The list to insert the sub-list into - * @return {Array} A new Array with `elts` inserted starting at `index`. - * @example - * - * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4] - */ -var insertAll = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function insertAll(idx, elts, list) { - idx = idx < list.length && idx >= 0 ? idx : list.length; - return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx)); -}); -/* harmony default export */ __webpack_exports__["default"] = (insertAll); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_Set.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/internal/_Set.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); - - -var _Set = /*#__PURE__*/function () { - function _Set() { - /* globals Set */ - this._nativeSet = typeof Set === 'function' ? new Set() : null; - this._items = {}; - } - - // until we figure out why jsdoc chokes on this - // @param item The item to add to the Set - // @returns {boolean} true if the item did not exist prior, otherwise false - // - _Set.prototype.add = function (item) { - return !hasOrAdd(item, true, this); - }; - - // - // @param item The item to check for existence in the Set - // @returns {boolean} true if the item exists in the Set, otherwise false - // - _Set.prototype.has = function (item) { - return hasOrAdd(item, false, this); - }; - - // - // Combines the logic for checking whether an item is a member of the set and - // for adding a new item to the set. - // - // @param item The item to check or add to the Set instance. - // @param shouldAdd If true, the item will be added to the set if it doesn't - // already exist. - // @param set The set instance to check or add to. - // @return {boolean} true if the item already existed, otherwise false. - // - return _Set; -}(); - -function hasOrAdd(item, shouldAdd, set) { - var type = typeof item; - var prevSize, newSize; - switch (type) { - case 'string': - case 'number': - // distinguish between +0 and -0 - if (item === 0 && 1 / item === -Infinity) { - if (set._items['-0']) { - return true; - } else { - if (shouldAdd) { - set._items['-0'] = true; - } - return false; - } - } - // these types can all utilise the native Set - if (set._nativeSet !== null) { - if (shouldAdd) { - prevSize = set._nativeSet.size; - set._nativeSet.add(item); - newSize = set._nativeSet.size; - return newSize === prevSize; - } else { - return set._nativeSet.has(item); - } - } else { - if (!(type in set._items)) { - if (shouldAdd) { - set._items[type] = {}; - set._items[type][item] = true; - } - return false; - } else if (item in set._items[type]) { - return true; - } else { - if (shouldAdd) { - set._items[type][item] = true; - } - return false; - } - } - - case 'boolean': - // set._items['boolean'] holds a two element array - // representing [ falseExists, trueExists ] - if (type in set._items) { - var bIdx = item ? 1 : 0; - if (set._items[type][bIdx]) { - return true; - } else { - if (shouldAdd) { - set._items[type][bIdx] = true; - } - return false; - } - } else { - if (shouldAdd) { - set._items[type] = item ? [false, true] : [true, false]; - } - return false; - } - - case 'function': - // compare functions for reference equality - if (set._nativeSet !== null) { - if (shouldAdd) { - prevSize = set._nativeSet.size; - set._nativeSet.add(item); - newSize = set._nativeSet.size; - return newSize === prevSize; - } else { - return set._nativeSet.has(item); - } - } else { - if (!(type in set._items)) { - if (shouldAdd) { - set._items[type] = [item]; - } - return false; - } - if (!Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(item, set._items[type])) { - if (shouldAdd) { - set._items[type].push(item); - } - return false; - } - return true; - } - - case 'undefined': - if (set._items[type]) { - return true; - } else { - if (shouldAdd) { - set._items[type] = true; - } - return false; - } - - case 'object': - if (item === null) { - if (!set._items['null']) { - if (shouldAdd) { - set._items['null'] = true; - } - return false; - } - return true; - } - /* falls through */ - default: - // reduce the search size of heterogeneous sets by creating buckets - // for each type. - type = Object.prototype.toString.call(item); - if (!(type in set._items)) { - if (shouldAdd) { - set._items[type] = [item]; - } - return false; - } - // scan through all previously applied items - if (!Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(item, set._items[type])) { - if (shouldAdd) { - set._items[type].push(item); - } - return false; - } - return true; - } -} - -// A simple Set type that honours R.equals semantics -/* harmony default export */ __webpack_exports__["default"] = (_Set); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_aperture.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_aperture.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _aperture; }); -function _aperture(n, list) { - var idx = 0; - var limit = list.length - (n - 1); - var acc = new Array(limit >= 0 ? limit : 0); - while (idx < limit) { - acc[idx] = Array.prototype.slice.call(list, idx, idx + n); - idx += 1; - } - return acc; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_arity.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_arity.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _arity; }); -function _arity(n, fn) { - /* eslint-disable no-unused-vars */ - switch (n) { - case 0: - return function () { - return fn.apply(this, arguments); - }; - case 1: - return function (a0) { - return fn.apply(this, arguments); - }; - case 2: - return function (a0, a1) { - return fn.apply(this, arguments); - }; - case 3: - return function (a0, a1, a2) { - return fn.apply(this, arguments); - }; - case 4: - return function (a0, a1, a2, a3) { - return fn.apply(this, arguments); - }; - case 5: - return function (a0, a1, a2, a3, a4) { - return fn.apply(this, arguments); - }; - case 6: - return function (a0, a1, a2, a3, a4, a5) { - return fn.apply(this, arguments); - }; - case 7: - return function (a0, a1, a2, a3, a4, a5, a6) { - return fn.apply(this, arguments); - }; - case 8: - return function (a0, a1, a2, a3, a4, a5, a6, a7) { - return fn.apply(this, arguments); - }; - case 9: - return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { - return fn.apply(this, arguments); - }; - case 10: - return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { - return fn.apply(this, arguments); - }; - default: - throw new Error('First argument to _arity must be a non-negative integer no greater than ten'); - } -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_arrayFromIterator.js": -/*!**************************************************************!*\ - !*** ./node_modules/ramda/es/internal/_arrayFromIterator.js ***! - \**************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _arrayFromIterator; }); -function _arrayFromIterator(iter) { - var list = []; - var next; - while (!(next = iter.next()).done) { - list.push(next.value); - } - return list; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_assertPromise.js": -/*!**********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_assertPromise.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _assertPromise; }); -/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); -/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_toString.js */ "./node_modules/ramda/es/internal/_toString.js"); - - - -function _assertPromise(name, p) { - if (p == null || !Object(_isFunction_js__WEBPACK_IMPORTED_MODULE_0__["default"])(p.then)) { - throw new TypeError('`' + name + '` expected a Promise, received ' + Object(_toString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p, [])); - } -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_checkForMethod.js": -/*!***********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_checkForMethod.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _checkForMethod; }); -/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); - - -/** - * This checks whether a function has a [methodname] function. If it isn't an - * array it will execute that function otherwise it will default to the ramda - * implementation. - * - * @private - * @param {Function} fn ramda implemtation - * @param {String} methodname property to check for a custom implementation - * @return {Object} Whatever the return value of the method is. - */ -function _checkForMethod(methodname, fn) { - return function () { - var length = arguments.length; - if (length === 0) { - return fn(); - } - var obj = arguments[length - 1]; - return Object(_isArray_js__WEBPACK_IMPORTED_MODULE_0__["default"])(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1)); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_clone.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_clone.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _clone; }); -/* harmony import */ var _cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_cloneRegExp.js */ "./node_modules/ramda/es/internal/_cloneRegExp.js"); -/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type.js */ "./node_modules/ramda/es/type.js"); - - - -/** - * Copies an object. - * - * @private - * @param {*} value The value to be copied - * @param {Array} refFrom Array containing the source references - * @param {Array} refTo Array containing the copied source references - * @param {Boolean} deep Whether or not to perform deep cloning. - * @return {*} The copied value. - */ -function _clone(value, refFrom, refTo, deep) { - var copy = function copy(copiedValue) { - var len = refFrom.length; - var idx = 0; - while (idx < len) { - if (value === refFrom[idx]) { - return refTo[idx]; - } - idx += 1; - } - refFrom[idx + 1] = value; - refTo[idx + 1] = copiedValue; - for (var key in value) { - copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key]; - } - return copiedValue; - }; - switch (Object(_type_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)) { - case 'Object': - return copy({}); - case 'Array': - return copy([]); - case 'Date': - return new Date(value.valueOf()); - case 'RegExp': - return Object(_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value); - default: - return value; - } -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_cloneRegExp.js": -/*!********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_cloneRegExp.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _cloneRegExp; }); -function _cloneRegExp(pattern) { - return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '')); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_complement.js": -/*!*******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_complement.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _complement; }); -function _complement(f) { - return function () { - return !f.apply(this, arguments); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_concat.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_concat.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _concat; }); -/** - * Private `concat` function to merge two array-like objects. - * - * @private - * @param {Array|Arguments} [set1=[]] An array-like object. - * @param {Array|Arguments} [set2=[]] An array-like object. - * @return {Array} A new, merged array. - * @example - * - * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] - */ -function _concat(set1, set2) { - set1 = set1 || []; - set2 = set2 || []; - var idx; - var len1 = set1.length; - var len2 = set2.length; - var result = []; - - idx = 0; - while (idx < len1) { - result[result.length] = set1[idx]; - idx += 1; - } - idx = 0; - while (idx < len2) { - result[result.length] = set2[idx]; - idx += 1; - } - return result; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_createPartialApplicator.js": -/*!********************************************************************!*\ - !*** ./node_modules/ramda/es/internal/_createPartialApplicator.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _createPartialApplicator; }); -/* harmony import */ var _arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -function _createPartialApplicator(concat) { - return Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (fn, args) { - return Object(_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.max(0, fn.length - args.length), function () { - return fn.apply(this, concat(args, arguments)); - }); - }); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_curry1.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_curry1.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry1; }); -/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); - - -/** - * Optimized internal one-arity curry function. - * - * @private - * @category Function - * @param {Function} fn The function to curry. - * @return {Function} The curried function. - */ -function _curry1(fn) { - return function f1(a) { - if (arguments.length === 0 || Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a)) { - return f1; - } else { - return fn.apply(this, arguments); - } - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_curry2.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_curry2.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry2; }); -/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); - - - -/** - * Optimized internal two-arity curry function. - * - * @private - * @category Function - * @param {Function} fn The function to curry. - * @return {Function} The curried function. - */ -function _curry2(fn) { - return function f2(a, b) { - switch (arguments.length) { - case 0: - return f2; - case 1: - return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) ? f2 : Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { - return fn(a, _b); - }); - default: - return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b) ? f2 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_a) { - return fn(_a, b); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { - return fn(a, _b); - }) : fn(a, b); - } - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_curry3.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_curry3.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry3; }); -/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); - - - - -/** - * Optimized internal three-arity curry function. - * - * @private - * @category Function - * @param {Function} fn The function to curry. - * @return {Function} The curried function. - */ -function _curry3(fn) { - return function f3(a, b, c) { - switch (arguments.length) { - case 0: - return f3; - case 1: - return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? f3 : Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { - return fn(a, _b, _c); - }); - case 2: - return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? f3 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _c) { - return fn(_a, b, _c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { - return fn(a, _b, _c); - }) : Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_c) { - return fn(a, b, _c); - }); - default: - return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? f3 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _b) { - return fn(_a, _b, c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _c) { - return fn(_a, b, _c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { - return fn(a, _b, _c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_a) { - return fn(_a, b, c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { - return fn(a, _b, c); - }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_c) { - return fn(a, b, _c); - }) : fn(a, b, c); - } - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_curryN.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_curryN.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curryN; }); -/* harmony import */ var _arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); - - - -/** - * Internal curryN function. - * - * @private - * @category Function - * @param {Number} length The arity of the curried function. - * @param {Array} received An array of arguments received thus far. - * @param {Function} fn The function to curry. - * @return {Function} The curried function. - */ -function _curryN(length, received, fn) { - return function () { - var combined = []; - var argsIdx = 0; - var left = length; - var combinedIdx = 0; - while (combinedIdx < received.length || argsIdx < arguments.length) { - var result; - if (combinedIdx < received.length && (!Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(received[combinedIdx]) || argsIdx >= arguments.length)) { - result = received[combinedIdx]; - } else { - result = arguments[argsIdx]; - argsIdx += 1; - } - combined[combinedIdx] = result; - if (!Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(result)) { - left -= 1; - } - combinedIdx += 1; - } - return left <= 0 ? fn.apply(this, combined) : Object(_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(left, _curryN(length, combined, fn)); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_dispatchable.js": -/*!*********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_dispatchable.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _dispatchable; }); -/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _isTransformer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); - - - -/** - * Returns a function that dispatches with different strategies based on the - * object in list position (last argument). If it is an array, executes [fn]. - * Otherwise, if it has a function with one of the given method names, it will - * execute that function (functor case). Otherwise, if it is a transformer, - * uses transducer [xf] to return a new transformer (transducer case). - * Otherwise, it will default to executing [fn]. - * - * @private - * @param {Array} methodNames properties to check for a custom implementation - * @param {Function} xf transducer to initialize if object is transformer - * @param {Function} fn default ramda implementation - * @return {Function} A function that dispatches on object in list position - */ -function _dispatchable(methodNames, xf, fn) { - return function () { - if (arguments.length === 0) { - return fn(); - } - var args = Array.prototype.slice.call(arguments, 0); - var obj = args.pop(); - if (!Object(_isArray_js__WEBPACK_IMPORTED_MODULE_0__["default"])(obj)) { - var idx = 0; - while (idx < methodNames.length) { - if (typeof obj[methodNames[idx]] === 'function') { - return obj[methodNames[idx]].apply(obj, args); - } - idx += 1; - } - if (Object(_isTransformer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj)) { - var transducer = xf.apply(null, args); - return transducer(obj); - } - } - return fn.apply(this, arguments); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_dropLast.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_dropLast.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dropLast; }); -/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../take.js */ "./node_modules/ramda/es/take.js"); - - -function dropLast(n, xs) { - return Object(_take_js__WEBPACK_IMPORTED_MODULE_0__["default"])(n < xs.length ? xs.length - n : 0, xs); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_dropLastWhile.js": -/*!**********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_dropLastWhile.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dropLastWhile; }); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../slice.js */ "./node_modules/ramda/es/slice.js"); - - -function dropLastWhile(pred, xs) { - var idx = xs.length - 1; - while (idx >= 0 && pred(xs[idx])) { - idx -= 1; - } - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, idx + 1, xs); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_equals.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_equals.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _equals; }); -/* harmony import */ var _arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arrayFromIterator.js */ "./node_modules/ramda/es/internal/_arrayFromIterator.js"); -/* harmony import */ var _includesWith_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); -/* harmony import */ var _functionName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_functionName.js */ "./node_modules/ramda/es/internal/_functionName.js"); -/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _objectIs_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_objectIs.js */ "./node_modules/ramda/es/internal/_objectIs.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys.js */ "./node_modules/ramda/es/keys.js"); -/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type.js */ "./node_modules/ramda/es/type.js"); - - - - - - - - -/** - * private _uniqContentEquals function. - * That function is checking equality of 2 iterator contents with 2 assumptions - * - iterators lengths are the same - * - iterators values are unique - * - * false-positive result will be returned for comparision of, e.g. - * - [1,2,3] and [1,2,3,4] - * - [1,1,1] and [1,2,3] - * */ - -function _uniqContentEquals(aIterator, bIterator, stackA, stackB) { - var a = Object(_arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(aIterator); - var b = Object(_arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bIterator); - - function eq(_a, _b) { - return _equals(_a, _b, stackA.slice(), stackB.slice()); - } - - // if *a* array contains any element that is not included in *b* - return !Object(_includesWith_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (b, aItem) { - return !Object(_includesWith_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eq, aItem, b); - }, b, a); -} - -function _equals(a, b, stackA, stackB) { - if (Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a, b)) { - return true; - } - - var typeA = Object(_type_js__WEBPACK_IMPORTED_MODULE_6__["default"])(a); - - if (typeA !== Object(_type_js__WEBPACK_IMPORTED_MODULE_6__["default"])(b)) { - return false; - } - - if (a == null || b == null) { - return false; - } - - if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') { - return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a); - } - - if (typeof a.equals === 'function' || typeof b.equals === 'function') { - return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a); - } - - switch (typeA) { - case 'Arguments': - case 'Array': - case 'Object': - if (typeof a.constructor === 'function' && Object(_functionName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a.constructor) === 'Promise') { - return a === b; - } - break; - case 'Boolean': - case 'Number': - case 'String': - if (!(typeof a === typeof b && Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a.valueOf(), b.valueOf()))) { - return false; - } - break; - case 'Date': - if (!Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a.valueOf(), b.valueOf())) { - return false; - } - break; - case 'Error': - return a.name === b.name && a.message === b.message; - case 'RegExp': - if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) { - return false; - } - break; - } - - var idx = stackA.length - 1; - while (idx >= 0) { - if (stackA[idx] === a) { - return stackB[idx] === b; - } - idx -= 1; - } - - switch (typeA) { - case 'Map': - if (a.size !== b.size) { - return false; - } - - return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b])); - case 'Set': - if (a.size !== b.size) { - return false; - } - - return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b])); - case 'Arguments': - case 'Array': - case 'Object': - case 'Boolean': - case 'Number': - case 'String': - case 'Date': - case 'Error': - case 'RegExp': - case 'Int8Array': - case 'Uint8Array': - case 'Uint8ClampedArray': - case 'Int16Array': - case 'Uint16Array': - case 'Int32Array': - case 'Uint32Array': - case 'Float32Array': - case 'Float64Array': - case 'ArrayBuffer': - break; - default: - // Values of other types are only equal if identical. - return false; - } - - var keysA = Object(_keys_js__WEBPACK_IMPORTED_MODULE_5__["default"])(a); - if (keysA.length !== Object(_keys_js__WEBPACK_IMPORTED_MODULE_5__["default"])(b).length) { - return false; - } - - var extendedStackA = stackA.concat([a]); - var extendedStackB = stackB.concat([b]); - - idx = keysA.length - 1; - while (idx >= 0) { - var key = keysA[idx]; - if (!(Object(_has_js__WEBPACK_IMPORTED_MODULE_3__["default"])(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) { - return false; - } - idx -= 1; - } - return true; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_filter.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_filter.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _filter; }); -function _filter(fn, list) { - var idx = 0; - var len = list.length; - var result = []; - - while (idx < len) { - if (fn(list[idx])) { - result[result.length] = list[idx]; - } - idx += 1; - } - return result; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_flatCat.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_flatCat.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _forceReduced_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_forceReduced.js */ "./node_modules/ramda/es/internal/_forceReduced.js"); -/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - - -var preservingReduced = function (xf) { - return { - '@@transducer/init': _xfBase_js__WEBPACK_IMPORTED_MODULE_3__["default"].init, - '@@transducer/result': function (result) { - return xf['@@transducer/result'](result); - }, - '@@transducer/step': function (result, input) { - var ret = xf['@@transducer/step'](result, input); - return ret['@@transducer/reduced'] ? Object(_forceReduced_js__WEBPACK_IMPORTED_MODULE_0__["default"])(ret) : ret; - } - }; -}; - -var _flatCat = function _xcat(xf) { - var rxf = preservingReduced(xf); - return { - '@@transducer/init': _xfBase_js__WEBPACK_IMPORTED_MODULE_3__["default"].init, - '@@transducer/result': function (result) { - return rxf['@@transducer/result'](result); - }, - '@@transducer/step': function (result, input) { - return !Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__["default"])(input) ? Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(rxf, result, [input]) : Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(rxf, result, input); - } - }; -}; - -/* harmony default export */ __webpack_exports__["default"] = (_flatCat); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_forceReduced.js": -/*!*********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_forceReduced.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _forceReduced; }); -function _forceReduced(x) { - return { - '@@transducer/value': x, - '@@transducer/reduced': true - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_functionName.js": -/*!*********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_functionName.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _functionName; }); -function _functionName(f) { - // String(x => x) evaluates to "x => x", so the pattern may not match. - var match = String(f).match(/^function (\w*)/); - return match == null ? '' : match[1]; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_has.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/internal/_has.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _has; }); -function _has(prop, obj) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_identity.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_identity.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _identity; }); -function _identity(x) { - return x; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_includes.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_includes.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _includes; }); -/* harmony import */ var _indexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_indexOf.js */ "./node_modules/ramda/es/internal/_indexOf.js"); - - -function _includes(a, list) { - return Object(_indexOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list, a, 0) >= 0; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_includesWith.js": -/*!*********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_includesWith.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _includesWith; }); -function _includesWith(pred, x, list) { - var idx = 0; - var len = list.length; - - while (idx < len) { - if (pred(x, list[idx])) { - return true; - } - idx += 1; - } - return false; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_indexOf.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_indexOf.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _indexOf; }); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../equals.js */ "./node_modules/ramda/es/equals.js"); - - -function _indexOf(list, a, idx) { - var inf, item; - // Array.prototype.indexOf doesn't exist below IE9 - if (typeof list.indexOf === 'function') { - switch (typeof a) { - case 'number': - if (a === 0) { - // manually crawl the list to distinguish between +0 and -0 - inf = 1 / a; - while (idx < list.length) { - item = list[idx]; - if (item === 0 && 1 / item === inf) { - return idx; - } - idx += 1; - } - return -1; - } else if (a !== a) { - // NaN - while (idx < list.length) { - item = list[idx]; - if (typeof item === 'number' && item !== item) { - return idx; - } - idx += 1; - } - return -1; - } - // non-zero numbers can utilise Set - return list.indexOf(a, idx); - - // all these types can utilise Set - case 'string': - case 'boolean': - case 'function': - case 'undefined': - return list.indexOf(a, idx); - - case 'object': - if (a === null) { - // null can utilise Set - return list.indexOf(a, idx); - } - } - } - // anything else not covered above, defer to R.equals - while (idx < list.length) { - if (Object(_equals_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list[idx], a)) { - return idx; - } - idx += 1; - } - return -1; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isArguments.js": -/*!********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isArguments.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - -var toString = Object.prototype.toString; -var _isArguments = /*#__PURE__*/function () { - return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) { - return toString.call(x) === '[object Arguments]'; - } : function _isArguments(x) { - return Object(_has_js__WEBPACK_IMPORTED_MODULE_0__["default"])('callee', x); - }; -}(); - -/* harmony default export */ __webpack_exports__["default"] = (_isArguments); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isArray.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isArray.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * Tests whether or not an object is an array. - * - * @private - * @param {*} val The object to test. - * @return {Boolean} `true` if `val` is an array, `false` otherwise. - * @example - * - * _isArray([]); //=> true - * _isArray(null); //=> false - * _isArray({}); //=> false - */ -/* harmony default export */ __webpack_exports__["default"] = (Array.isArray || function _isArray(val) { - return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]'; -}); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isArrayLike.js": -/*!********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isArrayLike.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _isString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); - - - - -/** - * Tests whether or not an object is similar to an array. - * - * @private - * @category Type - * @category List - * @sig * -> Boolean - * @param {*} x The object to test. - * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise. - * @example - * - * _isArrayLike([]); //=> true - * _isArrayLike(true); //=> false - * _isArrayLike({}); //=> false - * _isArrayLike({length: 10}); //=> false - * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true - */ -var _isArrayLike = /*#__PURE__*/Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isArrayLike(x) { - if (Object(_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x)) { - return true; - } - if (!x) { - return false; - } - if (typeof x !== 'object') { - return false; - } - if (Object(_isString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x)) { - return false; - } - if (x.nodeType === 1) { - return !!x.length; - } - if (x.length === 0) { - return true; - } - if (x.length > 0) { - return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1); - } - return false; -}); -/* harmony default export */ __webpack_exports__["default"] = (_isArrayLike); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isFunction.js": -/*!*******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isFunction.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isFunction; }); -function _isFunction(x) { - return Object.prototype.toString.call(x) === '[object Function]'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isInteger.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isInteger.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * Determine if the passed argument is an integer. - * - * @private - * @param {*} n - * @category Type - * @return {Boolean} - */ -/* harmony default export */ __webpack_exports__["default"] = (Number.isInteger || function _isInteger(n) { - return n << 0 === n; -}); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isNumber.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isNumber.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isNumber; }); -function _isNumber(x) { - return Object.prototype.toString.call(x) === '[object Number]'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isObject.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isObject.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isObject; }); -function _isObject(x) { - return Object.prototype.toString.call(x) === '[object Object]'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isPlaceholder.js": -/*!**********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isPlaceholder.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isPlaceholder; }); -function _isPlaceholder(a) { - return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isRegExp.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isRegExp.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isRegExp; }); -function _isRegExp(x) { - return Object.prototype.toString.call(x) === '[object RegExp]'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isString.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isString.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isString; }); -function _isString(x) { - return Object.prototype.toString.call(x) === '[object String]'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_isTransformer.js": -/*!**********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_isTransformer.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isTransformer; }); -function _isTransformer(obj) { - return obj != null && typeof obj['@@transducer/step'] === 'function'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_makeFlat.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_makeFlat.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _makeFlat; }); -/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); - - -/** - * `_makeFlat` is a helper function that returns a one-level or fully recursive - * function based on the flag passed in. - * - * @private - */ -function _makeFlat(recursive) { - return function flatt(list) { - var value, jlen, j; - var result = []; - var idx = 0; - var ilen = list.length; - - while (idx < ilen) { - if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list[idx])) { - value = recursive ? flatt(list[idx]) : list[idx]; - j = 0; - jlen = value.length; - while (j < jlen) { - result[result.length] = value[j]; - j += 1; - } - } else { - result[result.length] = list[idx]; - } - idx += 1; - } - return result; - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_map.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/internal/_map.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _map; }); -function _map(fn, functor) { - var idx = 0; - var len = functor.length; - var result = Array(len); - while (idx < len) { - result[idx] = fn(functor[idx]); - idx += 1; - } - return result; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_objectAssign.js": -/*!*********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_objectAssign.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - -// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign -function _objectAssign(target) { - if (target == null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - var output = Object(target); - var idx = 1; - var length = arguments.length; - while (idx < length) { - var source = arguments[idx]; - if (source != null) { - for (var nextKey in source) { - if (Object(_has_js__WEBPACK_IMPORTED_MODULE_0__["default"])(nextKey, source)) { - output[nextKey] = source[nextKey]; - } - } - } - idx += 1; - } - return output; -} - -/* harmony default export */ __webpack_exports__["default"] = (typeof Object.assign === 'function' ? Object.assign : _objectAssign); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_objectIs.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_objectIs.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is -function _objectIs(a, b) { - // SameValue algorithm - if (a === b) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return a !== 0 || 1 / a === 1 / b; - } else { - // Step 6.a: NaN == NaN - return a !== a && b !== b; - } -} - -/* harmony default export */ __webpack_exports__["default"] = (typeof Object.is === 'function' ? Object.is : _objectIs); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_of.js": -/*!***********************************************!*\ - !*** ./node_modules/ramda/es/internal/_of.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _of; }); -function _of(x) { - return [x]; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_pipe.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/internal/_pipe.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _pipe; }); -function _pipe(f, g) { - return function () { - return g.call(this, f.apply(this, arguments)); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_pipeP.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_pipeP.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _pipeP; }); -function _pipeP(f, g) { - return function () { - var ctx = this; - return f.apply(ctx, arguments).then(function (x) { - return g.call(ctx, x); - }); - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_quote.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_quote.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _quote; }); -function _quote(s) { - var escaped = s.replace(/\\/g, '\\\\').replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace - .replace(/\f/g, '\\f').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\t/g, '\\t').replace(/\v/g, '\\v').replace(/\0/g, '\\0'); - - return '"' + escaped.replace(/"/g, '\\"') + '"'; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_reduce.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_reduce.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _reduce; }); -/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); -/* harmony import */ var _xwrap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xwrap.js */ "./node_modules/ramda/es/internal/_xwrap.js"); -/* harmony import */ var _bind_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../bind.js */ "./node_modules/ramda/es/bind.js"); - - - - -function _arrayReduce(xf, acc, list) { - var idx = 0; - var len = list.length; - while (idx < len) { - acc = xf['@@transducer/step'](acc, list[idx]); - if (acc && acc['@@transducer/reduced']) { - acc = acc['@@transducer/value']; - break; - } - idx += 1; - } - return xf['@@transducer/result'](acc); -} - -function _iterableReduce(xf, acc, iter) { - var step = iter.next(); - while (!step.done) { - acc = xf['@@transducer/step'](acc, step.value); - if (acc && acc['@@transducer/reduced']) { - acc = acc['@@transducer/value']; - break; - } - step = iter.next(); - } - return xf['@@transducer/result'](acc); -} - -function _methodReduce(xf, acc, obj, methodName) { - return xf['@@transducer/result'](obj[methodName](Object(_bind_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xf['@@transducer/step'], xf), acc)); -} - -var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator'; - -function _reduce(fn, acc, list) { - if (typeof fn === 'function') { - fn = Object(_xwrap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn); - } - if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list)) { - return _arrayReduce(fn, acc, list); - } - if (typeof list['fantasy-land/reduce'] === 'function') { - return _methodReduce(fn, acc, list, 'fantasy-land/reduce'); - } - if (list[symIterator] != null) { - return _iterableReduce(fn, acc, list[symIterator]()); - } - if (typeof list.next === 'function') { - return _iterableReduce(fn, acc, list); - } - if (typeof list.reduce === 'function') { - return _methodReduce(fn, acc, list, 'reduce'); - } - - throw new TypeError('reduce: list must be array or iterable'); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_reduced.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_reduced.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _reduced; }); -function _reduced(x) { - return x && x['@@transducer/reduced'] ? x : { - '@@transducer/value': x, - '@@transducer/reduced': true - }; -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_stepCat.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_stepCat.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _stepCat; }); -/* harmony import */ var _objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); -/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); -/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); -/* harmony import */ var _isTransformer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); -/* harmony import */ var _objOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../objOf.js */ "./node_modules/ramda/es/objOf.js"); - - - - - - -var _stepCatArray = { - '@@transducer/init': Array, - '@@transducer/step': function (xs, x) { - xs.push(x); - return xs; - }, - '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] -}; -var _stepCatString = { - '@@transducer/init': String, - '@@transducer/step': function (a, b) { - return a + b; - }, - '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] -}; -var _stepCatObject = { - '@@transducer/init': Object, - '@@transducer/step': function (result, input) { - return Object(_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])(result, Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(input) ? Object(_objOf_js__WEBPACK_IMPORTED_MODULE_4__["default"])(input[0], input[1]) : input); - }, - '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] -}; - -function _stepCat(obj) { - if (Object(_isTransformer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(obj)) { - return obj; - } - if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { - return _stepCatArray; - } - if (typeof obj === 'string') { - return _stepCatString; - } - if (typeof obj === 'object') { - return _stepCatObject; - } - throw new Error('Cannot create transformer for ' + obj); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_toISOString.js": -/*!********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_toISOString.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * Polyfill from . - */ -var pad = function pad(n) { - return (n < 10 ? '0' : '') + n; -}; - -var _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) { - return d.toISOString(); -} : function _toISOString(d) { - return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z'; -}; - -/* harmony default export */ __webpack_exports__["default"] = (_toISOString); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_toString.js": -/*!*****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_toString.js ***! - \*****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _toString; }); -/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_map.js */ "./node_modules/ramda/es/internal/_map.js"); -/* harmony import */ var _quote_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_quote.js */ "./node_modules/ramda/es/internal/_quote.js"); -/* harmony import */ var _toISOString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_toISOString.js */ "./node_modules/ramda/es/internal/_toISOString.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys.js */ "./node_modules/ramda/es/keys.js"); -/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reject.js */ "./node_modules/ramda/es/reject.js"); - - - - - - - -function _toString(x, seen) { - var recur = function recur(y) { - var xs = seen.concat([x]); - return Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(y, xs) ? '' : _toString(y, xs); - }; - - // mapPairs :: (Object, [String]) -> [String] - var mapPairs = function (obj, keys) { - return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k) { - return Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(k) + ': ' + recur(obj[k]); - }, keys.slice().sort()); - }; - - switch (Object.prototype.toString.call(x)) { - case '[object Arguments]': - return '(function() { return arguments; }(' + Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(recur, x).join(', ') + '))'; - case '[object Array]': - return '[' + Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(recur, x).concat(mapPairs(x, Object(_reject_js__WEBPACK_IMPORTED_MODULE_5__["default"])(function (k) { - return (/^\d+$/.test(k) - ); - }, Object(_keys_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x)))).join(', ') + ']'; - case '[object Boolean]': - return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString(); - case '[object Date]': - return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_toISOString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(x))) + ')'; - case '[object Null]': - return 'null'; - case '[object Number]': - return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10); - case '[object String]': - return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x); - case '[object Undefined]': - return 'undefined'; - default: - if (typeof x.toString === 'function') { - var repr = x.toString(); - if (repr !== '[object Object]') { - return repr; - } - } - return '{' + mapPairs(x, Object(_keys_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x)).join(', ') + '}'; - } -} - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xall.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xall.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XAll = /*#__PURE__*/function () { - function XAll(f, xf) { - this.xf = xf; - this.f = f; - this.all = true; - } - XAll.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XAll.prototype['@@transducer/result'] = function (result) { - if (this.all) { - result = this.xf['@@transducer/step'](result, true); - } - return this.xf['@@transducer/result'](result); - }; - XAll.prototype['@@transducer/step'] = function (result, input) { - if (!this.f(input)) { - this.all = false; - result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, false)); - } - return result; - }; - - return XAll; -}(); - -var _xall = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xall(f, xf) { - return new XAll(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xall); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xany.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xany.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XAny = /*#__PURE__*/function () { - function XAny(f, xf) { - this.xf = xf; - this.f = f; - this.any = false; - } - XAny.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XAny.prototype['@@transducer/result'] = function (result) { - if (!this.any) { - result = this.xf['@@transducer/step'](result, false); - } - return this.xf['@@transducer/result'](result); - }; - XAny.prototype['@@transducer/step'] = function (result, input) { - if (this.f(input)) { - this.any = true; - result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, true)); - } - return result; - }; - - return XAny; -}(); - -var _xany = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xany(f, xf) { - return new XAny(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xany); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xaperture.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xaperture.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XAperture = /*#__PURE__*/function () { - function XAperture(n, xf) { - this.xf = xf; - this.pos = 0; - this.full = false; - this.acc = new Array(n); - } - XAperture.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XAperture.prototype['@@transducer/result'] = function (result) { - this.acc = null; - return this.xf['@@transducer/result'](result); - }; - XAperture.prototype['@@transducer/step'] = function (result, input) { - this.store(input); - return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; - }; - XAperture.prototype.store = function (input) { - this.acc[this.pos] = input; - this.pos += 1; - if (this.pos === this.acc.length) { - this.pos = 0; - this.full = true; - } - }; - XAperture.prototype.getCopy = function () { - return Object(_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos)); - }; - - return XAperture; -}(); - -var _xaperture = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function _xaperture(n, xf) { - return new XAperture(n, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xaperture); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xchain.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xchain.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _flatCat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_flatCat.js */ "./node_modules/ramda/es/internal/_flatCat.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../map.js */ "./node_modules/ramda/es/map.js"); - - - - -var _xchain = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xchain(f, xf) { - return Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(f, Object(_flatCat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xf)); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xchain); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xdrop.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xdrop.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XDrop = /*#__PURE__*/function () { - function XDrop(n, xf) { - this.xf = xf; - this.n = n; - } - XDrop.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XDrop.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XDrop.prototype['@@transducer/step'] = function (result, input) { - if (this.n > 0) { - this.n -= 1; - return result; - } - return this.xf['@@transducer/step'](result, input); - }; - - return XDrop; -}(); - -var _xdrop = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdrop(n, xf) { - return new XDrop(n, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xdrop); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xdropLast.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xdropLast.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XDropLast = /*#__PURE__*/function () { - function XDropLast(n, xf) { - this.xf = xf; - this.pos = 0; - this.full = false; - this.acc = new Array(n); - } - XDropLast.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XDropLast.prototype['@@transducer/result'] = function (result) { - this.acc = null; - return this.xf['@@transducer/result'](result); - }; - XDropLast.prototype['@@transducer/step'] = function (result, input) { - if (this.full) { - result = this.xf['@@transducer/step'](result, this.acc[this.pos]); - } - this.store(input); - return result; - }; - XDropLast.prototype.store = function (input) { - this.acc[this.pos] = input; - this.pos += 1; - if (this.pos === this.acc.length) { - this.pos = 0; - this.full = true; - } - }; - - return XDropLast; -}(); - -var _xdropLast = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropLast(n, xf) { - return new XDropLast(n, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xdropLast); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xdropLastWhile.js": -/*!***********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xdropLastWhile.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XDropLastWhile = /*#__PURE__*/function () { - function XDropLastWhile(fn, xf) { - this.f = fn; - this.retained = []; - this.xf = xf; - } - XDropLastWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XDropLastWhile.prototype['@@transducer/result'] = function (result) { - this.retained = null; - return this.xf['@@transducer/result'](result); - }; - XDropLastWhile.prototype['@@transducer/step'] = function (result, input) { - return this.f(input) ? this.retain(result, input) : this.flush(result, input); - }; - XDropLastWhile.prototype.flush = function (result, input) { - result = Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'], result, this.retained); - this.retained = []; - return this.xf['@@transducer/step'](result, input); - }; - XDropLastWhile.prototype.retain = function (result, input) { - this.retained.push(input); - return result; - }; - - return XDropLastWhile; -}(); - -var _xdropLastWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropLastWhile(fn, xf) { - return new XDropLastWhile(fn, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xdropLastWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js": -/*!*************************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xdropRepeatsWith.js ***! - \*************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XDropRepeatsWith = /*#__PURE__*/function () { - function XDropRepeatsWith(pred, xf) { - this.xf = xf; - this.pred = pred; - this.lastValue = undefined; - this.seenFirstValue = false; - } - - XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) { - var sameAsLast = false; - if (!this.seenFirstValue) { - this.seenFirstValue = true; - } else if (this.pred(this.lastValue, input)) { - sameAsLast = true; - } - this.lastValue = input; - return sameAsLast ? result : this.xf['@@transducer/step'](result, input); - }; - - return XDropRepeatsWith; -}(); - -var _xdropRepeatsWith = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropRepeatsWith(pred, xf) { - return new XDropRepeatsWith(pred, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xdropRepeatsWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xdropWhile.js": -/*!*******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xdropWhile.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XDropWhile = /*#__PURE__*/function () { - function XDropWhile(f, xf) { - this.xf = xf; - this.f = f; - } - XDropWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XDropWhile.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XDropWhile.prototype['@@transducer/step'] = function (result, input) { - if (this.f) { - if (this.f(input)) { - return result; - } - this.f = null; - } - return this.xf['@@transducer/step'](result, input); - }; - - return XDropWhile; -}(); - -var _xdropWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropWhile(f, xf) { - return new XDropWhile(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xdropWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfBase.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfBase.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ({ - init: function () { - return this.xf['@@transducer/init'](); - }, - result: function (result) { - return this.xf['@@transducer/result'](result); - } -}); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfilter.js": -/*!****************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfilter.js ***! - \****************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XFilter = /*#__PURE__*/function () { - function XFilter(f, xf) { - this.xf = xf; - this.f = f; - } - XFilter.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XFilter.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XFilter.prototype['@@transducer/step'] = function (result, input) { - return this.f(input) ? this.xf['@@transducer/step'](result, input) : result; - }; - - return XFilter; -}(); - -var _xfilter = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfilter(f, xf) { - return new XFilter(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xfilter); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfind.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfind.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XFind = /*#__PURE__*/function () { - function XFind(f, xf) { - this.xf = xf; - this.f = f; - this.found = false; - } - XFind.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XFind.prototype['@@transducer/result'] = function (result) { - if (!this.found) { - result = this.xf['@@transducer/step'](result, void 0); - } - return this.xf['@@transducer/result'](result); - }; - XFind.prototype['@@transducer/step'] = function (result, input) { - if (this.f(input)) { - this.found = true; - result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, input)); - } - return result; - }; - - return XFind; -}(); - -var _xfind = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfind(f, xf) { - return new XFind(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xfind); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfindIndex.js": -/*!*******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfindIndex.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XFindIndex = /*#__PURE__*/function () { - function XFindIndex(f, xf) { - this.xf = xf; - this.f = f; - this.idx = -1; - this.found = false; - } - XFindIndex.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XFindIndex.prototype['@@transducer/result'] = function (result) { - if (!this.found) { - result = this.xf['@@transducer/step'](result, -1); - } - return this.xf['@@transducer/result'](result); - }; - XFindIndex.prototype['@@transducer/step'] = function (result, input) { - this.idx += 1; - if (this.f(input)) { - this.found = true; - result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, this.idx)); - } - return result; - }; - - return XFindIndex; -}(); - -var _xfindIndex = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindIndex(f, xf) { - return new XFindIndex(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xfindIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfindLast.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfindLast.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XFindLast = /*#__PURE__*/function () { - function XFindLast(f, xf) { - this.xf = xf; - this.f = f; - } - XFindLast.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XFindLast.prototype['@@transducer/result'] = function (result) { - return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last)); - }; - XFindLast.prototype['@@transducer/step'] = function (result, input) { - if (this.f(input)) { - this.last = input; - } - return result; - }; - - return XFindLast; -}(); - -var _xfindLast = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindLast(f, xf) { - return new XFindLast(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xfindLast); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xfindLastIndex.js": -/*!***********************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xfindLastIndex.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XFindLastIndex = /*#__PURE__*/function () { - function XFindLastIndex(f, xf) { - this.xf = xf; - this.f = f; - this.idx = -1; - this.lastIdx = -1; - } - XFindLastIndex.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XFindLastIndex.prototype['@@transducer/result'] = function (result) { - return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx)); - }; - XFindLastIndex.prototype['@@transducer/step'] = function (result, input) { - this.idx += 1; - if (this.f(input)) { - this.lastIdx = this.idx; - } - return result; - }; - - return XFindLastIndex; -}(); - -var _xfindLastIndex = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindLastIndex(f, xf) { - return new XFindLastIndex(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xfindLastIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xmap.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xmap.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XMap = /*#__PURE__*/function () { - function XMap(f, xf) { - this.xf = xf; - this.f = f; - } - XMap.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XMap.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XMap.prototype['@@transducer/step'] = function (result, input) { - return this.xf['@@transducer/step'](result, this.f(input)); - }; - - return XMap; -}(); - -var _xmap = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xmap(f, xf) { - return new XMap(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xmap); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xreduceBy.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xreduceBy.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); -/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XReduceBy = /*#__PURE__*/function () { - function XReduceBy(valueFn, valueAcc, keyFn, xf) { - this.valueFn = valueFn; - this.valueAcc = valueAcc; - this.keyFn = keyFn; - this.xf = xf; - this.inputs = {}; - } - XReduceBy.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XReduceBy.prototype['@@transducer/result'] = function (result) { - var key; - for (key in this.inputs) { - if (Object(_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(key, this.inputs)) { - result = this.xf['@@transducer/step'](result, this.inputs[key]); - if (result['@@transducer/reduced']) { - result = result['@@transducer/value']; - break; - } - } - } - this.inputs = null; - return this.xf['@@transducer/result'](result); - }; - XReduceBy.prototype['@@transducer/step'] = function (result, input) { - var key = this.keyFn(input); - this.inputs[key] = this.inputs[key] || [key, this.valueAcc]; - this.inputs[key][1] = this.valueFn(this.inputs[key][1], input); - return result; - }; - - return XReduceBy; -}(); - -var _xreduceBy = /*#__PURE__*/Object(_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) { - return new XReduceBy(valueFn, valueAcc, keyFn, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xreduceBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xtake.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xtake.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XTake = /*#__PURE__*/function () { - function XTake(n, xf) { - this.xf = xf; - this.n = n; - this.i = 0; - } - XTake.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XTake.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].result; - XTake.prototype['@@transducer/step'] = function (result, input) { - this.i += 1; - var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input); - return this.n >= 0 && this.i >= this.n ? Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(ret) : ret; - }; - - return XTake; -}(); - -var _xtake = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtake(n, xf) { - return new XTake(n, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xtake); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xtakeWhile.js": -/*!*******************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xtakeWhile.js ***! - \*******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - - -var XTakeWhile = /*#__PURE__*/function () { - function XTakeWhile(f, xf) { - this.xf = xf; - this.f = f; - } - XTakeWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; - XTakeWhile.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].result; - XTakeWhile.prototype['@@transducer/step'] = function (result, input) { - return this.f(input) ? this.xf['@@transducer/step'](result, input) : Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(result); - }; - - return XTakeWhile; -}(); - -var _xtakeWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtakeWhile(f, xf) { - return new XTakeWhile(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xtakeWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xtap.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xtap.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); - - - -var XTap = /*#__PURE__*/function () { - function XTap(f, xf) { - this.xf = xf; - this.f = f; - } - XTap.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; - XTap.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; - XTap.prototype['@@transducer/step'] = function (result, input) { - this.f(input); - return this.xf['@@transducer/step'](result, input); - }; - - return XTap; -}(); - -var _xtap = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtap(f, xf) { - return new XTap(f, xf); -}); -/* harmony default export */ __webpack_exports__["default"] = (_xtap); - -/***/ }), - -/***/ "./node_modules/ramda/es/internal/_xwrap.js": -/*!**************************************************!*\ - !*** ./node_modules/ramda/es/internal/_xwrap.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _xwrap; }); -var XWrap = /*#__PURE__*/function () { - function XWrap(fn) { - this.f = fn; - } - XWrap.prototype['@@transducer/init'] = function () { - throw new Error('init not implemented on XWrap'); - }; - XWrap.prototype['@@transducer/result'] = function (acc) { - return acc; - }; - XWrap.prototype['@@transducer/step'] = function (acc, x) { - return this.f(acc, x); - }; - - return XWrap; -}(); - -function _xwrap(fn) { - return new XWrap(fn); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/intersection.js": -/*!***********************************************!*\ - !*** ./node_modules/ramda/es/intersection.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); -/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); - - - - - - -/** - * Combines two lists into a set (i.e. no duplicates) composed of those - * elements common to both lists. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig [*] -> [*] -> [*] - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The list of elements found in both `list1` and `list2`. - * @see R.innerJoin - * @example - * - * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3] - */ -var intersection = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function intersection(list1, list2) { - var lookupList, filteredList; - if (list1.length > list2.length) { - lookupList = list1; - filteredList = list2; - } else { - lookupList = list2; - filteredList = list1; - } - return Object(_uniq_js__WEBPACK_IMPORTED_MODULE_4__["default"])(Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_flip_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(lookupList), filteredList)); -}); -/* harmony default export */ __webpack_exports__["default"] = (intersection); - -/***/ }), - -/***/ "./node_modules/ramda/es/intersperse.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/intersperse.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Creates a new list with the separator interposed between elements. - * - * Dispatches to the `intersperse` method of the second argument, if present. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category List - * @sig a -> [a] -> [a] - * @param {*} separator The element to add to the list. - * @param {Array} list The list to be interposed. - * @return {Array} The new list. - * @example - * - * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's'] - */ -var intersperse = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('intersperse', function intersperse(separator, list) { - var out = []; - var idx = 0; - var length = list.length; - while (idx < length) { - if (idx === length - 1) { - out.push(list[idx]); - } else { - out.push(list[idx], separator); - } - idx += 1; - } - return out; -})); -/* harmony default export */ __webpack_exports__["default"] = (intersperse); - -/***/ }), - -/***/ "./node_modules/ramda/es/into.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/into.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_clone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/es/internal/_clone.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_isTransformer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_stepCat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_stepCat.js */ "./node_modules/ramda/es/internal/_stepCat.js"); - - - - - - -/** - * Transforms the items of the list with the transducer and appends the - * transformed items to the accumulator using an appropriate iterator function - * based on the accumulator type. - * - * The accumulator can be an array, string, object or a transformer. Iterated - * items will be appended to arrays and concatenated to strings. Objects will - * be merged directly or 2-item arrays will be merged as key, value pairs. - * - * The accumulator can also be a transformer object that provides a 2-arity - * reducing iterator function, step, 0-arity initial value function, init, and - * 1-arity result extraction function result. The step function is used as the - * iterator function in reduce. The result function is used to convert the - * final accumulator into the return type and in most cases is R.identity. The - * init function is used to provide the initial accumulator. - * - * The iteration is performed with [`R.reduce`](#reduce) after initializing the - * transducer. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category List - * @sig a -> (b -> b) -> [c] -> a - * @param {*} acc The initial accumulator value. - * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.transduce - * @example - * - * const numbers = [1, 2, 3, 4]; - * const transducer = R.compose(R.map(R.add(1)), R.take(2)); - * - * R.into([], transducer, numbers); //=> [2, 3] - * - * const intoArray = R.into([]); - * intoArray(transducer, numbers); //=> [2, 3] - */ -var into = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function into(acc, xf, list) { - return Object(_internal_isTransformer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(acc) ? Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(xf(acc), acc['@@transducer/init'](), list) : Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(xf(Object(_internal_stepCat_js__WEBPACK_IMPORTED_MODULE_4__["default"])(acc)), Object(_internal_clone_js__WEBPACK_IMPORTED_MODULE_0__["default"])(acc, [], [], false), list); -}); -/* harmony default export */ __webpack_exports__["default"] = (into); - -/***/ }), - -/***/ "./node_modules/ramda/es/invert.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/invert.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - - -/** - * Same as [`R.invertObj`](#invertObj), however this accounts for objects with - * duplicate values by putting the values into an array. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Object - * @sig {s: x} -> {x: [ s, ... ]} - * @param {Object} obj The object or array to invert - * @return {Object} out A new object with keys in an array. - * @see R.invertObj - * @example - * - * const raceResultsByFirstName = { - * first: 'alice', - * second: 'jake', - * third: 'alice', - * }; - * R.invert(raceResultsByFirstName); - * //=> { 'alice': ['first', 'third'], 'jake':['second'] } - */ -var invert = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invert(obj) { - var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj); - var len = props.length; - var idx = 0; - var out = {}; - - while (idx < len) { - var key = props[idx]; - var val = obj[key]; - var list = Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, out) ? out[val] : out[val] = []; - list[list.length] = key; - idx += 1; - } - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (invert); - -/***/ }), - -/***/ "./node_modules/ramda/es/invertObj.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/invertObj.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - -/** - * Returns a new object with the keys of the given object as values, and the - * values of the given object, which are coerced to strings, as keys. Note - * that the last key found is preferred when handling the same value. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Object - * @sig {s: x} -> {x: s} - * @param {Object} obj The object or array to invert - * @return {Object} out A new object - * @see R.invert - * @example - * - * const raceResults = { - * first: 'alice', - * second: 'jake' - * }; - * R.invertObj(raceResults); - * //=> { 'alice': 'first', 'jake':'second' } - * - * // Alternatively: - * const raceResults = ['alice', 'jake']; - * R.invertObj(raceResults); - * //=> { 'alice': '0', 'jake':'1' } - */ -var invertObj = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invertObj(obj) { - var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); - var len = props.length; - var idx = 0; - var out = {}; - - while (idx < len) { - var key = props[idx]; - out[obj[key]] = key; - idx += 1; - } - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (invertObj); - -/***/ }), - -/***/ "./node_modules/ramda/es/invoker.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/invoker.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); - - - - - -/** - * Turns a named method with a specified arity into a function that can be - * called directly supplied with arguments and a target object. - * - * The returned function is curried and accepts `arity + 1` parameters where - * the final parameter is the target object. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *) - * @param {Number} arity Number of arguments the returned function should take - * before the target object. - * @param {String} method Name of the method to call. - * @return {Function} A new curried function. - * @see R.construct - * @example - * - * const sliceFrom = R.invoker(1, 'slice'); - * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm' - * const sliceFrom6 = R.invoker(2, 'slice')(6); - * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh' - * @symb R.invoker(0, 'method')(o) = o['method']() - * @symb R.invoker(1, 'method')(a, o) = o['method'](a) - * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b) - */ -var invoker = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invoker(arity, method) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(arity + 1, function () { - var target = arguments[arity]; - if (target != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(target[method])) { - return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity)); - } - throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target) + ' does not have a method named "' + method + '"'); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (invoker); - -/***/ }), - -/***/ "./node_modules/ramda/es/is.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/is.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * See if an object (`val`) is an instance of the supplied constructor. This - * function will check up the inheritance chain, if any. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category Type - * @sig (* -> {*}) -> a -> Boolean - * @param {Object} ctor A constructor - * @param {*} val The value to test - * @return {Boolean} - * @example - * - * R.is(Object, {}); //=> true - * R.is(Number, 1); //=> true - * R.is(Object, 1); //=> false - * R.is(String, 's'); //=> true - * R.is(String, new String('')); //=> true - * R.is(Object, new String('')); //=> true - * R.is(Object, 's'); //=> false - * R.is(Number, {}); //=> false - */ -var is = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function is(Ctor, val) { - return val != null && val.constructor === Ctor || val instanceof Ctor; -}); -/* harmony default export */ __webpack_exports__["default"] = (is); - -/***/ }), - -/***/ "./node_modules/ramda/es/isEmpty.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/isEmpty.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty.js */ "./node_modules/ramda/es/empty.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - - -/** - * Returns `true` if the given value is its type's empty value; `false` - * otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Logic - * @sig a -> Boolean - * @param {*} x - * @return {Boolean} - * @see R.empty - * @example - * - * R.isEmpty([1, 2, 3]); //=> false - * R.isEmpty([]); //=> true - * R.isEmpty(''); //=> true - * R.isEmpty(null); //=> false - * R.isEmpty({}); //=> true - * R.isEmpty({length: 0}); //=> false - */ -var isEmpty = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isEmpty(x) { - return x != null && Object(_equals_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x, Object(_empty_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x)); -}); -/* harmony default export */ __webpack_exports__["default"] = (isEmpty); - -/***/ }), - -/***/ "./node_modules/ramda/es/isNil.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/isNil.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Checks if the input value is `null` or `undefined`. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Type - * @sig * -> Boolean - * @param {*} x The value to test. - * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`. - * @example - * - * R.isNil(null); //=> true - * R.isNil(undefined); //=> true - * R.isNil(0); //=> false - * R.isNil([]); //=> false - */ -var isNil = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isNil(x) { - return x == null; -}); -/* harmony default export */ __webpack_exports__["default"] = (isNil); - -/***/ }), - -/***/ "./node_modules/ramda/es/join.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/join.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); - - -/** - * Returns a string made by inserting the `separator` between each element and - * concatenating all the elements into a single string. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig String -> [a] -> String - * @param {Number|String} separator The string used to separate the elements. - * @param {Array} xs The elements to join into a string. - * @return {String} str The string made by concatenating `xs` with `separator`. - * @see R.split - * @example - * - * const spacer = R.join(' '); - * spacer(['a', 2, 3.4]); //=> 'a 2 3.4' - * R.join('|', [1, 2, 3]); //=> '1|2|3' - */ -var join = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, 'join'); -/* harmony default export */ __webpack_exports__["default"] = (join); - -/***/ }), - -/***/ "./node_modules/ramda/es/juxt.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/juxt.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _converge_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./converge.js */ "./node_modules/ramda/es/converge.js"); - - - -/** - * juxt applies a list of functions to a list of values. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Function - * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n]) - * @param {Array} fns An array of functions - * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters. - * @see R.applySpec - * @example - * - * const getRange = R.juxt([Math.min, Math.max]); - * getRange(3, 4, 9, -3); //=> [-3, 9] - * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)] - */ -var juxt = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function juxt(fns) { - return Object(_converge_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function () { - return Array.prototype.slice.call(arguments, 0); - }, fns); -}); -/* harmony default export */ __webpack_exports__["default"] = (juxt); - -/***/ }), - -/***/ "./node_modules/ramda/es/keys.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/keys.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _internal_isArguments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/es/internal/_isArguments.js"); - - - - -// cover IE < 9 keys issues -var hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// Safari bug -var hasArgsEnumBug = /*#__PURE__*/function () { - 'use strict'; - - return arguments.propertyIsEnumerable('length'); -}(); - -var contains = function contains(list, item) { - var idx = 0; - while (idx < list.length) { - if (list[idx] === item) { - return true; - } - idx += 1; - } - return false; -}; - -/** - * Returns a list containing the names of all the enumerable own properties of - * the supplied object. - * Note that the order of the output array is not guaranteed to be consistent - * across different JS platforms. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig {k: v} -> [k] - * @param {Object} obj The object to extract properties from - * @return {Array} An array of the object's own properties. - * @see R.keysIn, R.values - * @example - * - * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] - */ -var keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keys(obj) { - return Object(obj) !== obj ? [] : Object.keys(obj); -}) : /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keys(obj) { - if (Object(obj) !== obj) { - return []; - } - var prop, nIdx; - var ks = []; - var checkArgsLength = hasArgsEnumBug && Object(_internal_isArguments_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj); - for (prop in obj) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj) && (!checkArgsLength || prop !== 'length')) { - ks[ks.length] = prop; - } - } - if (hasEnumBug) { - nIdx = nonEnumerableProps.length - 1; - while (nIdx >= 0) { - prop = nonEnumerableProps[nIdx]; - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj) && !contains(ks, prop)) { - ks[ks.length] = prop; - } - nIdx -= 1; - } - } - return ks; -}); -/* harmony default export */ __webpack_exports__["default"] = (keys); - -/***/ }), - -/***/ "./node_modules/ramda/es/keysIn.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/keysIn.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Returns a list containing the names of all the properties of the supplied - * object, including prototype properties. - * Note that the order of the output array is not guaranteed to be consistent - * across different JS platforms. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category Object - * @sig {k: v} -> [k] - * @param {Object} obj The object to extract properties from - * @return {Array} An array of the object's own and prototype properties. - * @see R.keys, R.valuesIn - * @example - * - * const F = function() { this.x = 'X'; }; - * F.prototype.y = 'Y'; - * const f = new F(); - * R.keysIn(f); //=> ['x', 'y'] - */ -var keysIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keysIn(obj) { - var prop; - var ks = []; - for (prop in obj) { - ks[ks.length] = prop; - } - return ks; -}); -/* harmony default export */ __webpack_exports__["default"] = (keysIn); - -/***/ }), - -/***/ "./node_modules/ramda/es/last.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/last.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); - - -/** - * Returns the last element of the given list or string. - * - * @func - * @memberOf R - * @since v0.1.4 - * @category List - * @sig [a] -> a | Undefined - * @sig String -> String - * @param {*} list - * @return {*} - * @see R.init, R.head, R.tail - * @example - * - * R.last(['fi', 'fo', 'fum']); //=> 'fum' - * R.last([]); //=> undefined - * - * R.last('abc'); //=> 'c' - * R.last(''); //=> '' - */ -var last = /*#__PURE__*/Object(_nth_js__WEBPACK_IMPORTED_MODULE_0__["default"])(-1); -/* harmony default export */ __webpack_exports__["default"] = (last); - -/***/ }), - -/***/ "./node_modules/ramda/es/lastIndexOf.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/lastIndexOf.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - - -/** - * Returns the position of the last occurrence of an item in an array, or -1 if - * the item is not included in the array. [`R.equals`](#equals) is used to - * determine equality. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> Number - * @param {*} target The item to find. - * @param {Array} xs The array to search in. - * @return {Number} the index of the target, or -1 if the target is not found. - * @see R.indexOf - * @example - * - * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 - * R.lastIndexOf(10, [1,2,3,4]); //=> -1 - */ -var lastIndexOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lastIndexOf(target, xs) { - if (typeof xs.lastIndexOf === 'function' && !Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xs)) { - return xs.lastIndexOf(target); - } else { - var idx = xs.length - 1; - while (idx >= 0) { - if (Object(_equals_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xs[idx], target)) { - return idx; - } - idx -= 1; - } - return -1; - } -}); -/* harmony default export */ __webpack_exports__["default"] = (lastIndexOf); - -/***/ }), - -/***/ "./node_modules/ramda/es/length.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/length.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/es/internal/_isNumber.js"); - - - -/** - * Returns the number of elements in the array by returning `list.length`. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category List - * @sig [a] -> Number - * @param {Array} list The array to inspect. - * @return {Number} The length of the array. - * @example - * - * R.length([]); //=> 0 - * R.length([1, 2, 3]); //=> 3 - */ -var length = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function length(list) { - return list != null && Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list.length) ? list.length : NaN; -}); -/* harmony default export */ __webpack_exports__["default"] = (length); - -/***/ }), - -/***/ "./node_modules/ramda/es/lens.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/lens.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); - - - -/** - * Returns a lens for the given getter and setter functions. The getter "gets" - * the value of the focus; the setter "sets" the value of the focus. The setter - * should not mutate the data structure. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig (s -> a) -> ((a, s) -> s) -> Lens s a - * @param {Function} getter - * @param {Function} setter - * @return {Lens} - * @see R.view, R.set, R.over, R.lensIndex, R.lensProp - * @example - * - * const xLens = R.lens(R.prop('x'), R.assoc('x')); - * - * R.view(xLens, {x: 1, y: 2}); //=> 1 - * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} - * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} - */ -var lens = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lens(getter, setter) { - return function (toFunctorFn) { - return function (target) { - return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (focus) { - return setter(focus, target); - }, toFunctorFn(getter(target))); - }; - }; -}); -/* harmony default export */ __webpack_exports__["default"] = (lens); - -/***/ }), - -/***/ "./node_modules/ramda/es/lensIndex.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/lensIndex.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); -/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); -/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); - - - - - -/** - * Returns a lens whose focus is the specified index. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig Number -> Lens s a - * @param {Number} n - * @return {Lens} - * @see R.view, R.set, R.over - * @example - * - * const headLens = R.lensIndex(0); - * - * R.view(headLens, ['a', 'b', 'c']); //=> 'a' - * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] - * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c'] - */ -var lensIndex = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensIndex(n) { - return Object(_lens_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_nth_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n), Object(_update_js__WEBPACK_IMPORTED_MODULE_3__["default"])(n)); -}); -/* harmony default export */ __webpack_exports__["default"] = (lensIndex); - -/***/ }), - -/***/ "./node_modules/ramda/es/lensPath.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/lensPath.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _assocPath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/es/assocPath.js"); -/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); - - - - - -/** - * Returns a lens whose focus is the specified path. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Object - * @typedefn Idx = String | Int - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig [Idx] -> Lens s a - * @param {Array} path The path to use. - * @return {Lens} - * @see R.view, R.set, R.over - * @example - * - * const xHeadYLens = R.lensPath(['x', 0, 'y']); - * - * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); - * //=> 2 - * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); - * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]} - * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); - * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} - */ -var lensPath = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensPath(p) { - return Object(_lens_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_path_js__WEBPACK_IMPORTED_MODULE_3__["default"])(p), Object(_assocPath_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p)); -}); -/* harmony default export */ __webpack_exports__["default"] = (lensPath); - -/***/ }), - -/***/ "./node_modules/ramda/es/lensProp.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/lensProp.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); -/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); -/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); - - - - - -/** - * Returns a lens whose focus is the specified property. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig String -> Lens s a - * @param {String} k - * @return {Lens} - * @see R.view, R.set, R.over - * @example - * - * const xLens = R.lensProp('x'); - * - * R.view(xLens, {x: 1, y: 2}); //=> 1 - * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} - * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} - */ -var lensProp = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensProp(k) { - return Object(_lens_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_prop_js__WEBPACK_IMPORTED_MODULE_3__["default"])(k), Object(_assoc_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k)); -}); -/* harmony default export */ __webpack_exports__["default"] = (lensProp); - -/***/ }), - -/***/ "./node_modules/ramda/es/lift.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/lift.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _liftN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/es/liftN.js"); - - - -/** - * "lifts" a function of arity > 1 so that it may "map over" a list, Function or other - * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Function - * @sig (*... -> *) -> ([*]... -> [*]) - * @param {Function} fn The function to lift into higher context - * @return {Function} The lifted function. - * @see R.liftN - * @example - * - * const madd3 = R.lift((a, b, c) => a + b + c); - * - * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] - * - * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); - * - * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24] - */ -var lift = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lift(fn) { - return Object(_liftN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, fn); -}); -/* harmony default export */ __webpack_exports__["default"] = (lift); - -/***/ }), - -/***/ "./node_modules/ramda/es/liftN.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/liftN.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); - - - - - - -/** - * "lifts" a function to be the specified arity, so that it may "map over" that - * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Function - * @sig Number -> (*... -> *) -> ([*]... -> [*]) - * @param {Function} fn The function to lift into higher context - * @return {Function} The lifted function. - * @see R.lift, R.ap - * @example - * - * const madd3 = R.liftN(3, (...args) => R.sum(args)); - * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] - */ -var liftN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function liftN(arity, fn) { - var lifted = Object(_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arity, fn); - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arity, function () { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_ap_js__WEBPACK_IMPORTED_MODULE_2__["default"], Object(_map_js__WEBPACK_IMPORTED_MODULE_4__["default"])(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (liftN); - -/***/ }), - -/***/ "./node_modules/ramda/es/lt.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/lt.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if the first argument is less than the second; `false` - * otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> Boolean - * @param {*} a - * @param {*} b - * @return {Boolean} - * @see R.gt - * @example - * - * R.lt(2, 1); //=> false - * R.lt(2, 2); //=> false - * R.lt(2, 3); //=> true - * R.lt('a', 'z'); //=> true - * R.lt('z', 'a'); //=> false - */ -var lt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lt(a, b) { - return a < b; -}); -/* harmony default export */ __webpack_exports__["default"] = (lt); - -/***/ }), - -/***/ "./node_modules/ramda/es/lte.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/lte.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if the first argument is less than or equal to the second; - * `false` otherwise. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> Boolean - * @param {Number} a - * @param {Number} b - * @return {Boolean} - * @see R.gte - * @example - * - * R.lte(2, 1); //=> false - * R.lte(2, 2); //=> true - * R.lte(2, 3); //=> true - * R.lte('a', 'z'); //=> true - * R.lte('z', 'a'); //=> false - */ -var lte = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lte(a, b) { - return a <= b; -}); -/* harmony default export */ __webpack_exports__["default"] = (lte); - -/***/ }), - -/***/ "./node_modules/ramda/es/map.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/map.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_xmap_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_xmap.js */ "./node_modules/ramda/es/internal/_xmap.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - - - - - - -/** - * Takes a function and - * a [functor](https://github.com/fantasyland/fantasy-land#functor), - * applies the function to each of the functor's values, and returns - * a functor of the same shape. - * - * Ramda provides suitable `map` implementations for `Array` and `Object`, - * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`. - * - * Dispatches to the `map` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * Also treats functions as functors and will compose them together. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Functor f => (a -> b) -> f a -> f b - * @param {Function} fn The function to be called on every element of the input `list`. - * @param {Array} list The list to be iterated over. - * @return {Array} The new list. - * @see R.transduce, R.addIndex - * @example - * - * const double = x => x * 2; - * - * R.map(double, [1, 2, 3]); //=> [2, 4, 6] - * - * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} - * @symb R.map(f, [a, b]) = [f(a), f(b)] - * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) } - * @symb R.map(f, functor_o) = functor_o.map(f) - */ -var map = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['fantasy-land/map', 'map'], _internal_xmap_js__WEBPACK_IMPORTED_MODULE_4__["default"], function map(fn, functor) { - switch (Object.prototype.toString.call(functor)) { - case '[object Function]': - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_5__["default"])(functor.length, function () { - return fn.call(this, functor.apply(this, arguments)); - }); - case '[object Object]': - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (acc, key) { - acc[key] = fn(functor[key]); - return acc; - }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(functor)); - default: - return Object(_internal_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(fn, functor); - } -})); -/* harmony default export */ __webpack_exports__["default"] = (map); - -/***/ }), - -/***/ "./node_modules/ramda/es/mapAccum.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/mapAccum.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * The `mapAccum` function behaves like a combination of map and reduce; it - * applies a function to each element of a list, passing an accumulating - * parameter from left to right, and returning a final value of this - * accumulator together with the new list. - * - * The iterator function receives two arguments, *acc* and *value*, and should - * return a tuple *[acc, value]*. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category List - * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) - * @param {Function} fn The function to be called on every element of the input `list`. - * @param {*} acc The accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.scan, R.addIndex, R.mapAccumRight - * @example - * - * const digits = ['1', '2', '3', '4']; - * const appender = (a, b) => [a + b, a + b]; - * - * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']] - * @symb R.mapAccum(f, a, [b, c, d]) = [ - * f(f(f(a, b)[0], c)[0], d)[0], - * [ - * f(a, b)[1], - * f(f(a, b)[0], c)[1], - * f(f(f(a, b)[0], c)[0], d)[1] - * ] - * ] - */ -var mapAccum = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapAccum(fn, acc, list) { - var idx = 0; - var len = list.length; - var result = []; - var tuple = [acc]; - while (idx < len) { - tuple = fn(tuple[0], list[idx]); - result[idx] = tuple[1]; - idx += 1; - } - return [tuple[0], result]; -}); -/* harmony default export */ __webpack_exports__["default"] = (mapAccum); - -/***/ }), - -/***/ "./node_modules/ramda/es/mapAccumRight.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/mapAccumRight.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * The `mapAccumRight` function behaves like a combination of map and reduce; it - * applies a function to each element of a list, passing an accumulating - * parameter from right to left, and returning a final value of this - * accumulator together with the new list. - * - * Similar to [`mapAccum`](#mapAccum), except moves through the input list from - * the right to the left. - * - * The iterator function receives two arguments, *acc* and *value*, and should - * return a tuple *[acc, value]*. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category List - * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) - * @param {Function} fn The function to be called on every element of the input `list`. - * @param {*} acc The accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.addIndex, R.mapAccum - * @example - * - * const digits = ['1', '2', '3', '4']; - * const appender = (a, b) => [b + a, b + a]; - * - * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']] - * @symb R.mapAccumRight(f, a, [b, c, d]) = [ - * f(f(f(a, d)[0], c)[0], b)[0], - * [ - * f(a, d)[1], - * f(f(a, d)[0], c)[1], - * f(f(f(a, d)[0], c)[0], b)[1] - * ] - * ] - */ -var mapAccumRight = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapAccumRight(fn, acc, list) { - var idx = list.length - 1; - var result = []; - var tuple = [acc]; - while (idx >= 0) { - tuple = fn(tuple[0], list[idx]); - result[idx] = tuple[1]; - idx -= 1; - } - return [tuple[0], result]; -}); -/* harmony default export */ __webpack_exports__["default"] = (mapAccumRight); - -/***/ }), - -/***/ "./node_modules/ramda/es/mapObjIndexed.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/mapObjIndexed.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - - -/** - * An Object-specific version of [`map`](#map). The function is applied to three - * arguments: *(value, key, obj)*. If only the value is significant, use - * [`map`](#map) instead. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Object - * @sig ((*, String, Object) -> *) -> Object -> Object - * @param {Function} fn - * @param {Object} obj - * @return {Object} - * @see R.map - * @example - * - * const xyz = { x: 1, y: 2, z: 3 }; - * const prependKeyAndDouble = (num, key, obj) => key + (num * 2); - * - * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' } - */ -var mapObjIndexed = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapObjIndexed(fn, obj) { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (acc, key) { - acc[key] = fn(obj[key], key, obj); - return acc; - }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)); -}); -/* harmony default export */ __webpack_exports__["default"] = (mapObjIndexed); - -/***/ }), - -/***/ "./node_modules/ramda/es/match.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/match.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Tests a regular expression against a String. Note that this function will - * return an empty array when there are no matches. This differs from - * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) - * which returns `null` when there are no matches. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category String - * @sig RegExp -> String -> [String | Undefined] - * @param {RegExp} rx A regular expression. - * @param {String} str The string to match against - * @return {Array} The list of matches or empty array. - * @see R.test - * @example - * - * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] - * R.match(/a/, 'b'); //=> [] - * R.match(/a/, null); //=> TypeError: null does not have a method named "match" - */ -var match = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function match(rx, str) { - return str.match(rx) || []; -}); -/* harmony default export */ __webpack_exports__["default"] = (match); - -/***/ }), - -/***/ "./node_modules/ramda/es/mathMod.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/mathMod.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); - - - -/** - * `mathMod` behaves like the modulo operator should mathematically, unlike the - * `%` operator (and by extension, [`R.modulo`](#modulo)). So while - * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer - * arguments, and returns NaN when the modulus is zero or negative. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} m The dividend. - * @param {Number} p the modulus. - * @return {Number} The result of `b mod a`. - * @see R.modulo - * @example - * - * R.mathMod(-17, 5); //=> 3 - * R.mathMod(17, 5); //=> 2 - * R.mathMod(17, -5); //=> NaN - * R.mathMod(17, 0); //=> NaN - * R.mathMod(17.2, 5); //=> NaN - * R.mathMod(17, 5.3); //=> NaN - * - * const clock = R.mathMod(R.__, 12); - * clock(15); //=> 3 - * clock(24); //=> 0 - * - * const seventeenMod = R.mathMod(17); - * seventeenMod(3); //=> 2 - * seventeenMod(4); //=> 1 - * seventeenMod(10); //=> 7 - */ -var mathMod = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mathMod(m, p) { - if (!Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(m)) { - return NaN; - } - if (!Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p) || p < 1) { - return NaN; - } - return (m % p + p) % p; -}); -/* harmony default export */ __webpack_exports__["default"] = (mathMod); - -/***/ }), - -/***/ "./node_modules/ramda/es/max.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/max.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns the larger of its two arguments. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> a - * @param {*} a - * @param {*} b - * @return {*} - * @see R.maxBy, R.min - * @example - * - * R.max(789, 123); //=> 789 - * R.max('a', 'b'); //=> 'b' - */ -var max = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function max(a, b) { - return b > a ? b : a; -}); -/* harmony default export */ __webpack_exports__["default"] = (max); - -/***/ }), - -/***/ "./node_modules/ramda/es/maxBy.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/maxBy.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Takes a function and two values, and returns whichever value produces the - * larger result when passed to the provided function. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Relation - * @sig Ord b => (a -> b) -> a -> a -> a - * @param {Function} f - * @param {*} a - * @param {*} b - * @return {*} - * @see R.max, R.minBy - * @example - * - * // square :: Number -> Number - * const square = n => n * n; - * - * R.maxBy(square, -3, 2); //=> -3 - * - * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 - * R.reduce(R.maxBy(square), 0, []); //=> 0 - */ -var maxBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function maxBy(f, a, b) { - return f(b) > f(a) ? b : a; -}); -/* harmony default export */ __webpack_exports__["default"] = (maxBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/mean.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/mean.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sum.js */ "./node_modules/ramda/es/sum.js"); - - - -/** - * Returns the mean of the given list of numbers. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Math - * @sig [Number] -> Number - * @param {Array} list - * @return {Number} - * @see R.median - * @example - * - * R.mean([2, 7, 9]); //=> 6 - * R.mean([]); //=> NaN - */ -var mean = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mean(list) { - return Object(_sum_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) / list.length; -}); -/* harmony default export */ __webpack_exports__["default"] = (mean); - -/***/ }), - -/***/ "./node_modules/ramda/es/median.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/median.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mean.js */ "./node_modules/ramda/es/mean.js"); - - - -/** - * Returns the median of the given list of numbers. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Math - * @sig [Number] -> Number - * @param {Array} list - * @return {Number} - * @see R.mean - * @example - * - * R.median([2, 9, 7]); //=> 7 - * R.median([7, 2, 10, 9]); //=> 8 - * R.median([]); //=> NaN - */ -var median = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function median(list) { - var len = list.length; - if (len === 0) { - return NaN; - } - var width = 2 - len % 2; - var idx = (len - width) / 2; - return Object(_mean_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Array.prototype.slice.call(list, 0).sort(function (a, b) { - return a < b ? -1 : a > b ? 1 : 0; - }).slice(idx, idx + width)); -}); -/* harmony default export */ __webpack_exports__["default"] = (median); - -/***/ }), - -/***/ "./node_modules/ramda/es/memoizeWith.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/memoizeWith.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - - - -/** - * Creates a new function that, when invoked, caches the result of calling `fn` - * for a given argument set and returns the result. Subsequent calls to the - * memoized `fn` with the same argument set will not result in an additional - * call to `fn`; instead, the cached result for that set of arguments will be - * returned. - * - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Function - * @sig (*... -> String) -> (*... -> a) -> (*... -> a) - * @param {Function} fn The function to generate the cache key. - * @param {Function} fn The function to memoize. - * @return {Function} Memoized version of `fn`. - * @example - * - * let count = 0; - * const factorial = R.memoizeWith(R.identity, n => { - * count += 1; - * return R.product(R.range(1, n + 1)); - * }); - * factorial(5); //=> 120 - * factorial(5); //=> 120 - * factorial(5); //=> 120 - * count; //=> 1 - */ -var memoizeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function memoizeWith(mFn, fn) { - var cache = {}; - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { - var key = mFn.apply(this, arguments); - if (!Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_2__["default"])(key, cache)) { - cache[key] = fn.apply(this, arguments); - } - return cache[key]; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (memoizeWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/merge.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/merge.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Create a new object with the own properties of the first object merged with - * the own properties of the second object. If a key exists in both objects, - * the value from the second object will be used. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig {k: v} -> {k: v} -> {k: v} - * @param {Object} l - * @param {Object} r - * @return {Object} - * @see R.mergeRight, R.mergeDeepRight, R.mergeWith, R.mergeWithKey - * @deprecated - * @example - * - * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); - * //=> { 'name': 'fred', 'age': 40 } - * - * const withDefaults = R.merge({x: 0, y: 0}); - * withDefaults({y: 2}); //=> {x: 0, y: 2} - * @symb R.merge(a, b) = {...a, ...b} - */ -var merge = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function merge(l, r) { - return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, l, r); -}); -/* harmony default export */ __webpack_exports__["default"] = (merge); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeAll.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/mergeAll.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - - -/** - * Merges a list of objects together into one object. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category List - * @sig [{k: v}] -> {k: v} - * @param {Array} list An array of objects - * @return {Object} A merged object. - * @see R.reduce - * @example - * - * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3} - * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} - * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 } - */ -var mergeAll = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeAll(list) { - return _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(null, [{}].concat(list)); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeAll); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeDeepLeft.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/mergeDeepLeft.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); - - - -/** - * Creates a new object with the own properties of the first object merged with - * the own properties of the second object. If a key exists in both objects: - * - and both values are objects, the two values will be recursively merged - * - otherwise the value from the first object will be used. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Object - * @sig {a} -> {a} -> {a} - * @param {Object} lObj - * @param {Object} rObj - * @return {Object} - * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey - * @example - * - * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, - * { age: 40, contact: { email: 'baa@example.com' }}); - * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} - */ -var mergeDeepLeft = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepLeft(lObj, rObj) { - return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { - return lVal; - }, lObj, rObj); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeDeepLeft); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeDeepRight.js": -/*!*************************************************!*\ - !*** ./node_modules/ramda/es/mergeDeepRight.js ***! - \*************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); - - - -/** - * Creates a new object with the own properties of the first object merged with - * the own properties of the second object. If a key exists in both objects: - * - and both values are objects, the two values will be recursively merged - * - otherwise the value from the second object will be used. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Object - * @sig {a} -> {a} -> {a} - * @param {Object} lObj - * @param {Object} rObj - * @return {Object} - * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey - * @example - * - * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, - * { age: 40, contact: { email: 'baa@example.com' }}); - * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} - */ -var mergeDeepRight = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepRight(lObj, rObj) { - return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { - return rVal; - }, lObj, rObj); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeDeepRight); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeDeepWith.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/mergeDeepWith.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); - - - -/** - * Creates a new object with the own properties of the two provided objects. - * If a key exists in both objects: - * - and both associated values are also objects then the values will be - * recursively merged. - * - otherwise the provided function is applied to associated values using the - * resulting value as the new value associated with the key. - * If a key only exists in one object, the value will be associated with the key - * of the resulting object. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Object - * @sig ((a, a) -> a) -> {a} -> {a} -> {a} - * @param {Function} fn - * @param {Object} lObj - * @param {Object} rObj - * @return {Object} - * @see R.mergeWith, R.mergeDeepWithKey - * @example - * - * R.mergeDeepWith(R.concat, - * { a: true, c: { values: [10, 20] }}, - * { b: true, c: { values: [15, 35] }}); - * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} - */ -var mergeDeepWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepWith(fn, lObj, rObj) { - return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { - return fn(lVal, rVal); - }, lObj, rObj); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeDeepWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeDeepWithKey.js": -/*!***************************************************!*\ - !*** ./node_modules/ramda/es/mergeDeepWithKey.js ***! - \***************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); -/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); - - - - -/** - * Creates a new object with the own properties of the two provided objects. - * If a key exists in both objects: - * - and both associated values are also objects then the values will be - * recursively merged. - * - otherwise the provided function is applied to the key and associated values - * using the resulting value as the new value associated with the key. - * If a key only exists in one object, the value will be associated with the key - * of the resulting object. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Object - * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} - * @param {Function} fn - * @param {Object} lObj - * @param {Object} rObj - * @return {Object} - * @see R.mergeWithKey, R.mergeDeepWith - * @example - * - * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r - * R.mergeDeepWithKey(concatValues, - * { a: true, c: { thing: 'foo', values: [10, 20] }}, - * { b: true, c: { thing: 'bar', values: [15, 35] }}); - * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} - */ -var mergeDeepWithKey = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepWithKey(fn, lObj, rObj) { - return Object(_mergeWithKey_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (k, lVal, rVal) { - if (Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(lVal) && Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(rVal)) { - return mergeDeepWithKey(fn, lVal, rVal); - } else { - return fn(k, lVal, rVal); - } - }, lObj, rObj); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeDeepWithKey); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeLeft.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/mergeLeft.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Create a new object with the own properties of the first object merged with - * the own properties of the second object. If a key exists in both objects, - * the value from the first object will be used. - * - * @func - * @memberOf R - * @category Object - * @sig {k: v} -> {k: v} -> {k: v} - * @param {Object} l - * @param {Object} r - * @return {Object} - * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey - * @example - * - * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 }); - * //=> { 'name': 'fred', 'age': 40 } - * - * const resetToDefault = R.mergeLeft({x: 0}); - * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} - * @symb R.mergeLeft(a, b) = {...b, ...a} - */ -var mergeLeft = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeLeft(l, r) { - return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, r, l); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeLeft); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeRight.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/mergeRight.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Create a new object with the own properties of the first object merged with - * the own properties of the second object. If a key exists in both objects, - * the value from the second object will be used. - * - * @func - * @memberOf R - * @category Object - * @sig {k: v} -> {k: v} -> {k: v} - * @param {Object} l - * @param {Object} r - * @return {Object} - * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey - * @example - * - * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); - * //=> { 'name': 'fred', 'age': 40 } - * - * const withDefaults = R.mergeRight({x: 0, y: 0}); - * withDefaults({y: 2}); //=> {x: 0, y: 2} - * @symb R.mergeRight(a, b) = {...a, ...b} - */ -var mergeRight = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeRight(l, r) { - return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, l, r); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeRight); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeWith.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/mergeWith.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); - - - -/** - * Creates a new object with the own properties of the two provided objects. If - * a key exists in both objects, the provided function is applied to the values - * associated with the key in each object, with the result being used as the - * value associated with the key in the returned object. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Object - * @sig ((a, a) -> a) -> {a} -> {a} -> {a} - * @param {Function} fn - * @param {Object} l - * @param {Object} r - * @return {Object} - * @see R.mergeDeepWith, R.merge, R.mergeWithKey - * @example - * - * R.mergeWith(R.concat, - * { a: true, values: [10, 20] }, - * { b: true, values: [15, 35] }); - * //=> { a: true, b: true, values: [10, 20, 15, 35] } - */ -var mergeWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeWith(fn, l, r) { - return Object(_mergeWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_, _l, _r) { - return fn(_l, _r); - }, l, r); -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/mergeWithKey.js": -/*!***********************************************!*\ - !*** ./node_modules/ramda/es/mergeWithKey.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - - -/** - * Creates a new object with the own properties of the two provided objects. If - * a key exists in both objects, the provided function is applied to the key - * and the values associated with the key in each object, with the result being - * used as the value associated with the key in the returned object. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Object - * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} - * @param {Function} fn - * @param {Object} l - * @param {Object} r - * @return {Object} - * @see R.mergeDeepWithKey, R.merge, R.mergeWith - * @example - * - * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r - * R.mergeWithKey(concatValues, - * { a: true, thing: 'foo', values: [10, 20] }, - * { b: true, thing: 'bar', values: [15, 35] }); - * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } - * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 } - */ -var mergeWithKey = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeWithKey(fn, l, r) { - var result = {}; - var k; - - for (k in l) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, l)) { - result[k] = Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, r) ? fn(k, l[k], r[k]) : l[k]; - } - } - - for (k in r) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, r) && !Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, result)) { - result[k] = r[k]; - } - } - - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (mergeWithKey); - -/***/ }), - -/***/ "./node_modules/ramda/es/min.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/min.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns the smaller of its two arguments. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord a => a -> a -> a - * @param {*} a - * @param {*} b - * @return {*} - * @see R.minBy, R.max - * @example - * - * R.min(789, 123); //=> 123 - * R.min('a', 'b'); //=> 'a' - */ -var min = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function min(a, b) { - return b < a ? b : a; -}); -/* harmony default export */ __webpack_exports__["default"] = (min); - -/***/ }), - -/***/ "./node_modules/ramda/es/minBy.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/minBy.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Takes a function and two values, and returns whichever value produces the - * smaller result when passed to the provided function. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Relation - * @sig Ord b => (a -> b) -> a -> a -> a - * @param {Function} f - * @param {*} a - * @param {*} b - * @return {*} - * @see R.min, R.maxBy - * @example - * - * // square :: Number -> Number - * const square = n => n * n; - * - * R.minBy(square, -3, 2); //=> 2 - * - * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 - * R.reduce(R.minBy(square), Infinity, []); //=> Infinity - */ -var minBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function minBy(f, a, b) { - return f(b) < f(a) ? b : a; -}); -/* harmony default export */ __webpack_exports__["default"] = (minBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/modulo.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/modulo.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Divides the first parameter by the second and returns the remainder. Note - * that this function preserves the JavaScript-style behavior for modulo. For - * mathematical modulo see [`mathMod`](#mathMod). - * - * @func - * @memberOf R - * @since v0.1.1 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} a The value to the divide. - * @param {Number} b The pseudo-modulus - * @return {Number} The result of `b % a`. - * @see R.mathMod - * @example - * - * R.modulo(17, 3); //=> 2 - * // JS behavior: - * R.modulo(-17, 3); //=> -2 - * R.modulo(17, -3); //=> 2 - * - * const isOdd = R.modulo(R.__, 2); - * isOdd(42); //=> 0 - * isOdd(21); //=> 1 - */ -var modulo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function modulo(a, b) { - return a % b; -}); -/* harmony default export */ __webpack_exports__["default"] = (modulo); - -/***/ }), - -/***/ "./node_modules/ramda/es/move.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/move.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Move an item, at index `from`, to index `to`, in a list of elements. - * A new list will be created containing the new elements order. - * - * @func - * @memberOf R - * @category List - * @sig Number -> Number -> [a] -> [a] - * @param {Number} from The source index - * @param {Number} to The destination index - * @param {Array} list The list which will serve to realise the move - * @return {Array} The new list reordered - * @example - * - * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f'] - * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation - */ -var move = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (from, to, list) { - var length = list.length; - var result = list.slice(); - var positiveFrom = from < 0 ? length + from : from; - var positiveTo = to < 0 ? length + to : to; - var item = result.splice(positiveFrom, 1); - - return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length)); -}); - -/* harmony default export */ __webpack_exports__["default"] = (move); - -/***/ }), - -/***/ "./node_modules/ramda/es/multiply.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/multiply.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Multiplies two numbers. Equivalent to `a * b` but curried. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} a The first value. - * @param {Number} b The second value. - * @return {Number} The result of `a * b`. - * @see R.divide - * @example - * - * const double = R.multiply(2); - * const triple = R.multiply(3); - * double(3); //=> 6 - * triple(4); //=> 12 - * R.multiply(2, 5); //=> 10 - */ -var multiply = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function multiply(a, b) { - return a * b; -}); -/* harmony default export */ __webpack_exports__["default"] = (multiply); - -/***/ }), - -/***/ "./node_modules/ramda/es/nAry.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/nAry.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Wraps a function of any arity (including nullary) in a function that accepts - * exactly `n` parameters. Any extraneous parameters will not be passed to the - * supplied function. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig Number -> (* -> a) -> (* -> a) - * @param {Number} n The desired arity of the new function. - * @param {Function} fn The function to wrap. - * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of - * arity `n`. - * @see R.binary, R.unary - * @example - * - * const takesTwoArgs = (a, b) => [a, b]; - * - * takesTwoArgs.length; //=> 2 - * takesTwoArgs(1, 2); //=> [1, 2] - * - * const takesOneArg = R.nAry(1, takesTwoArgs); - * takesOneArg.length; //=> 1 - * // Only `n` arguments are passed to the wrapped function - * takesOneArg(1, 2); //=> [1, undefined] - * @symb R.nAry(0, f)(a, b) = f() - * @symb R.nAry(1, f)(a, b) = f(a) - * @symb R.nAry(2, f)(a, b) = f(a, b) - */ -var nAry = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nAry(n, fn) { - switch (n) { - case 0: - return function () { - return fn.call(this); - }; - case 1: - return function (a0) { - return fn.call(this, a0); - }; - case 2: - return function (a0, a1) { - return fn.call(this, a0, a1); - }; - case 3: - return function (a0, a1, a2) { - return fn.call(this, a0, a1, a2); - }; - case 4: - return function (a0, a1, a2, a3) { - return fn.call(this, a0, a1, a2, a3); - }; - case 5: - return function (a0, a1, a2, a3, a4) { - return fn.call(this, a0, a1, a2, a3, a4); - }; - case 6: - return function (a0, a1, a2, a3, a4, a5) { - return fn.call(this, a0, a1, a2, a3, a4, a5); - }; - case 7: - return function (a0, a1, a2, a3, a4, a5, a6) { - return fn.call(this, a0, a1, a2, a3, a4, a5, a6); - }; - case 8: - return function (a0, a1, a2, a3, a4, a5, a6, a7) { - return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7); - }; - case 9: - return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { - return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8); - }; - case 10: - return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { - return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); - }; - default: - throw new Error('First argument to nAry must be a non-negative integer no greater than ten'); - } -}); -/* harmony default export */ __webpack_exports__["default"] = (nAry); - -/***/ }), - -/***/ "./node_modules/ramda/es/negate.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/negate.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Negates its argument. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Math - * @sig Number -> Number - * @param {Number} n - * @return {Number} - * @example - * - * R.negate(42); //=> -42 - */ -var negate = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function negate(n) { - return -n; -}); -/* harmony default export */ __webpack_exports__["default"] = (negate); - -/***/ }), - -/***/ "./node_modules/ramda/es/none.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/none.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_complement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/es/internal/_complement.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _all_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./all.js */ "./node_modules/ramda/es/all.js"); - - - - -/** - * Returns `true` if no elements of the list match the predicate, `false` - * otherwise. - * - * Dispatches to the `all` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category List - * @sig (a -> Boolean) -> [a] -> Boolean - * @param {Function} fn The predicate function. - * @param {Array} list The array to consider. - * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise. - * @see R.all, R.any - * @example - * - * const isEven = n => n % 2 === 0; - * const isOdd = n => n % 2 === 1; - * - * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true - * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false - */ -var none = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function none(fn, input) { - return Object(_all_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_internal_complement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn), input); -}); -/* harmony default export */ __webpack_exports__["default"] = (none); - -/***/ }), - -/***/ "./node_modules/ramda/es/not.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/not.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * A function that returns the `!` of its argument. It will return `true` when - * passed false-y value, and `false` when passed a truth-y one. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Logic - * @sig * -> Boolean - * @param {*} a any value - * @return {Boolean} the logical inverse of passed argument. - * @see R.complement - * @example - * - * R.not(true); //=> false - * R.not(false); //=> true - * R.not(0); //=> true - * R.not(1); //=> false - */ -var not = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function not(a) { - return !a; -}); -/* harmony default export */ __webpack_exports__["default"] = (not); - -/***/ }), - -/***/ "./node_modules/ramda/es/nth.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/nth.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); - - - -/** - * Returns the nth element of the given list or string. If n is negative the - * element at index length + n is returned. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Number -> [a] -> a | Undefined - * @sig Number -> String -> String - * @param {Number} offset - * @param {*} list - * @return {*} - * @example - * - * const list = ['foo', 'bar', 'baz', 'quux']; - * R.nth(1, list); //=> 'bar' - * R.nth(-1, list); //=> 'quux' - * R.nth(-99, list); //=> undefined - * - * R.nth(2, 'abc'); //=> 'c' - * R.nth(3, 'abc'); //=> '' - * @symb R.nth(-1, [a, b, c]) = c - * @symb R.nth(0, [a, b, c]) = a - * @symb R.nth(1, [a, b, c]) = b - */ -var nth = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nth(offset, list) { - var idx = offset < 0 ? list.length + offset : offset; - return Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) ? list.charAt(idx) : list[idx]; -}); -/* harmony default export */ __webpack_exports__["default"] = (nth); - -/***/ }), - -/***/ "./node_modules/ramda/es/nthArg.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/nthArg.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); - - - - -/** - * Returns a function which returns its nth argument. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category Function - * @sig Number -> *... -> * - * @param {Number} n - * @return {Function} - * @example - * - * R.nthArg(1)('a', 'b', 'c'); //=> 'b' - * R.nthArg(-1)('a', 'b', 'c'); //=> 'c' - * @symb R.nthArg(-1)(a, b, c) = c - * @symb R.nthArg(0)(a, b, c) = a - * @symb R.nthArg(1)(a, b, c) = b - */ -var nthArg = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nthArg(n) { - var arity = n < 0 ? 1 : n + 1; - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arity, function () { - return Object(_nth_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n, arguments); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (nthArg); - -/***/ }), - -/***/ "./node_modules/ramda/es/o.js": -/*!************************************!*\ - !*** ./node_modules/ramda/es/o.js ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * `o` is a curried composition function that returns a unary function. - * Like [`compose`](#compose), `o` performs right-to-left function composition. - * Unlike [`compose`](#compose), the rightmost function passed to `o` will be - * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is - * limited to accepting only 2 unary functions. The name o was chosen because - * of its similarity to the mathematical composition operator ∘. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category Function - * @sig (b -> c) -> (a -> b) -> a -> c - * @param {Function} f - * @param {Function} g - * @return {Function} - * @see R.compose, R.pipe - * @example - * - * const classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + name.last - * const yellGreeting = R.o(R.toUpper, classyGreeting); - * yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND" - * - * R.o(R.multiply(10), R.add(10))(-4) //=> 60 - * - * @symb R.o(f, g, x) = f(g(x)) - */ -var o = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function o(f, g, x) { - return f(g(x)); -}); -/* harmony default export */ __webpack_exports__["default"] = (o); - -/***/ }), - -/***/ "./node_modules/ramda/es/objOf.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/objOf.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Creates an object containing a single key:value pair. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category Object - * @sig String -> a -> {String:a} - * @param {String} key - * @param {*} val - * @return {Object} - * @see R.pair - * @example - * - * const matchPhrases = R.compose( - * R.objOf('must'), - * R.map(R.objOf('match_phrase')) - * ); - * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} - */ -var objOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function objOf(key, val) { - var obj = {}; - obj[key] = val; - return obj; -}); -/* harmony default export */ __webpack_exports__["default"] = (objOf); - -/***/ }), - -/***/ "./node_modules/ramda/es/of.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/of.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_of_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_of.js */ "./node_modules/ramda/es/internal/_of.js"); - - - -/** - * Returns a singleton array containing the value provided. - * - * Note this `of` is different from the ES6 `of`; See - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of - * - * @func - * @memberOf R - * @since v0.3.0 - * @category Function - * @sig a -> [a] - * @param {*} x any value - * @return {Array} An array wrapping `x`. - * @example - * - * R.of(null); //=> [null] - * R.of([42]); //=> [[42]] - */ -var of = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_of_js__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (of); - -/***/ }), - -/***/ "./node_modules/ramda/es/omit.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/omit.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns a partial copy of an object omitting the keys specified. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig [String] -> {String: *} -> {String: *} - * @param {Array} names an array of String property names to omit from the new object - * @param {Object} obj The object to copy from - * @return {Object} A new object with properties from `names` not on it. - * @see R.pick - * @example - * - * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} - */ -var omit = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function omit(names, obj) { - var result = {}; - var index = {}; - var idx = 0; - var len = names.length; - - while (idx < len) { - index[names[idx]] = 1; - idx += 1; - } - - for (var prop in obj) { - if (!index.hasOwnProperty(prop)) { - result[prop] = obj[prop]; - } - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (omit); - -/***/ }), - -/***/ "./node_modules/ramda/es/once.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/once.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - - -/** - * Accepts a function `fn` and returns a function that guards invocation of - * `fn` such that `fn` can only ever be called once, no matter how many times - * the returned function is invoked. The first value calculated is returned in - * subsequent invocations. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig (a... -> b) -> (a... -> b) - * @param {Function} fn The function to wrap in a call-only-once wrapper. - * @return {Function} The wrapped function. - * @example - * - * const addOneOnce = R.once(x => x + 1); - * addOneOnce(10); //=> 11 - * addOneOnce(addOneOnce(50)); //=> 11 - */ -var once = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function once(fn) { - var called = false; - var result; - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { - if (called) { - return result; - } - called = true; - result = fn.apply(this, arguments); - return result; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (once); - -/***/ }), - -/***/ "./node_modules/ramda/es/or.js": -/*!*************************************!*\ - !*** ./node_modules/ramda/es/or.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns `true` if one or both of its arguments are `true`. Returns `false` - * if both arguments are `false`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Logic - * @sig a -> b -> a | b - * @param {Any} a - * @param {Any} b - * @return {Any} the first argument if truthy, otherwise the second argument. - * @see R.either - * @example - * - * R.or(true, true); //=> true - * R.or(true, false); //=> true - * R.or(false, true); //=> true - * R.or(false, false); //=> false - */ -var or = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function or(a, b) { - return a || b; -}); -/* harmony default export */ __webpack_exports__["default"] = (or); - -/***/ }), - -/***/ "./node_modules/ramda/es/otherwise.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/otherwise.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/es/internal/_assertPromise.js"); - - - -/** - * Returns the result of applying the onFailure function to the value inside - * a failed promise. This is useful for handling rejected promises - * inside function compositions. - * - * @func - * @memberOf R - * @category Function - * @sig (e -> b) -> (Promise e a) -> (Promise e b) - * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b) - * @param {Function} onFailure The function to apply. Can return a value or a promise of a value. - * @param {Promise} p - * @return {Promise} The result of calling `p.then(null, onFailure)` - * @see R.then - * @example - * - * var failedFetch = (id) => Promise.reject('bad ID'); - * var useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' }) - * - * //recoverFromFailure :: String -> Promise ({firstName, lastName}) - * var recoverFromFailure = R.pipe( - * failedFetch, - * R.otherwise(useDefault), - * R.then(R.pick(['firstName', 'lastName'])), - * ); - * recoverFromFailure(12345).then(console.log) - */ -var otherwise = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function otherwise(f, p) { - Object(_internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__["default"])('otherwise', p); - - return p.then(null, f); -}); -/* harmony default export */ __webpack_exports__["default"] = (otherwise); - -/***/ }), - -/***/ "./node_modules/ramda/es/over.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/over.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -// `Identity` is a functor that holds a single value, where `map` simply -// transforms the held value with the provided function. -var Identity = function (x) { - return { value: x, map: function (f) { - return Identity(f(x)); - } }; -}; - -/** - * Returns the result of "setting" the portion of the given data structure - * focused by the given lens to the result of applying the given function to - * the focused value. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig Lens s a -> (a -> a) -> s -> s - * @param {Lens} lens - * @param {*} v - * @param {*} x - * @return {*} - * @see R.prop, R.lensIndex, R.lensProp - * @example - * - * const headLens = R.lensIndex(0); - * - * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz'] - */ -var over = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function over(lens, f, x) { - // The value returned by the getter function is first transformed with `f`, - // then set as the value of an `Identity`. This is then mapped over with the - // setter function of the lens. - return lens(function (y) { - return Identity(f(y)); - })(x).value; -}); -/* harmony default export */ __webpack_exports__["default"] = (over); - -/***/ }), - -/***/ "./node_modules/ramda/es/pair.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/pair.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category List - * @sig a -> b -> (a,b) - * @param {*} fst - * @param {*} snd - * @return {Array} - * @see R.objOf, R.of - * @example - * - * R.pair('foo', 'bar'); //=> ['foo', 'bar'] - */ -var pair = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pair(fst, snd) { - return [fst, snd]; -}); -/* harmony default export */ __webpack_exports__["default"] = (pair); - -/***/ }), - -/***/ "./node_modules/ramda/es/partial.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/partial.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/es/internal/_createPartialApplicator.js"); - - - -/** - * Takes a function `f` and a list of arguments, and returns a function `g`. - * When applied, `g` returns the result of applying `f` to the arguments - * provided initially followed by the arguments provided to `g`. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Function - * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x) - * @param {Function} f - * @param {Array} args - * @return {Function} - * @see R.partialRight, R.curry - * @example - * - * const multiply2 = (a, b) => a * b; - * const double = R.partial(multiply2, [2]); - * double(2); //=> 4 - * - * const greet = (salutation, title, firstName, lastName) => - * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; - * - * const sayHello = R.partial(greet, ['Hello']); - * const sayHelloToMs = R.partial(sayHello, ['Ms.']); - * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' - * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d) - */ -var partial = /*#__PURE__*/Object(_internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (partial); - -/***/ }), - -/***/ "./node_modules/ramda/es/partialRight.js": -/*!***********************************************!*\ - !*** ./node_modules/ramda/es/partialRight.js ***! - \***********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/es/internal/_createPartialApplicator.js"); -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); - - - - -/** - * Takes a function `f` and a list of arguments, and returns a function `g`. - * When applied, `g` returns the result of applying `f` to the arguments - * provided to `g` followed by the arguments provided initially. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Function - * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x) - * @param {Function} f - * @param {Array} args - * @return {Function} - * @see R.partial - * @example - * - * const greet = (salutation, title, firstName, lastName) => - * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; - * - * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']); - * - * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' - * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b) - */ -var partialRight = /*#__PURE__*/Object(_internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_flip_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])); -/* harmony default export */ __webpack_exports__["default"] = (partialRight); - -/***/ }), - -/***/ "./node_modules/ramda/es/partition.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/partition.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); -/* harmony import */ var _juxt_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/es/juxt.js"); -/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); - - - - -/** - * Takes a predicate and a list or other `Filterable` object and returns the - * pair of filterable objects of the same type of elements which do and do not - * satisfy, the predicate, respectively. Filterable objects include plain objects or any object - * that has a filter method such as `Array`. - * - * @func - * @memberOf R - * @since v0.1.4 - * @category List - * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a] - * @param {Function} pred A predicate to determine which side the element belongs to. - * @param {Array} filterable the list (or other filterable) to partition. - * @return {Array} An array, containing first the subset of elements that satisfy the - * predicate, and second the subset of elements that do not satisfy. - * @see R.filter, R.reject - * @example - * - * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']); - * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ] - * - * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' }); - * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] - */ -var partition = /*#__PURE__*/Object(_juxt_js__WEBPACK_IMPORTED_MODULE_1__["default"])([_filter_js__WEBPACK_IMPORTED_MODULE_0__["default"], _reject_js__WEBPACK_IMPORTED_MODULE_2__["default"]]); -/* harmony default export */ __webpack_exports__["default"] = (partition); - -/***/ }), - -/***/ "./node_modules/ramda/es/path.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/path.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Retrieve the value at a given path. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category Object - * @typedefn Idx = String | Int - * @sig [Idx] -> {a} -> a | Undefined - * @param {Array} path The path to use. - * @param {Object} obj The object to retrieve the nested property from. - * @return {*} The data at `path`. - * @see R.prop - * @example - * - * R.path(['a', 'b'], {a: {b: 2}}); //=> 2 - * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined - */ -var path = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function path(paths, obj) { - var val = obj; - var idx = 0; - while (idx < paths.length) { - if (val == null) { - return; - } - val = val[paths[idx]]; - idx += 1; - } - return val; -}); -/* harmony default export */ __webpack_exports__["default"] = (path); - -/***/ }), - -/***/ "./node_modules/ramda/es/pathEq.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/pathEq.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); - - - - -/** - * Determines whether a nested path on an object has a specific value, in - * [`R.equals`](#equals) terms. Most likely used to filter a list. - * - * @func - * @memberOf R - * @since v0.7.0 - * @category Relation - * @typedefn Idx = String | Int - * @sig [Idx] -> a -> {a} -> Boolean - * @param {Array} path The path of the nested property to use - * @param {*} val The value to compare the nested property with - * @param {Object} obj The object to check the nested property in - * @return {Boolean} `true` if the value equals the nested object property, - * `false` otherwise. - * @example - * - * const user1 = { address: { zipCode: 90210 } }; - * const user2 = { address: { zipCode: 55555 } }; - * const user3 = { name: 'Bob' }; - * const users = [ user1, user2, user3 ]; - * const isFamous = R.pathEq(['address', 'zipCode'], 90210); - * R.filter(isFamous, users); //=> [ user1 ] - */ -var pathEq = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathEq(_path, val, obj) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_path, obj), val); -}); -/* harmony default export */ __webpack_exports__["default"] = (pathEq); - -/***/ }), - -/***/ "./node_modules/ramda/es/pathOr.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/pathOr.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _defaultTo_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/es/defaultTo.js"); -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); - - - - -/** - * If the given, non-null object has a value at the given path, returns the - * value at that path. Otherwise returns the provided default value. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category Object - * @typedefn Idx = String | Int - * @sig a -> [Idx] -> {a} -> a - * @param {*} d The default value. - * @param {Array} p The path to use. - * @param {Object} obj The object to retrieve the nested property from. - * @return {*} The data at `path` of the supplied object or the default value. - * @example - * - * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2 - * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" - */ -var pathOr = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathOr(d, p, obj) { - return Object(_defaultTo_js__WEBPACK_IMPORTED_MODULE_1__["default"])(d, Object(_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])(p, obj)); -}); -/* harmony default export */ __webpack_exports__["default"] = (pathOr); - -/***/ }), - -/***/ "./node_modules/ramda/es/pathSatisfies.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/pathSatisfies.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); - - - -/** - * Returns `true` if the specified object property at given path satisfies the - * given predicate; `false` otherwise. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Logic - * @typedefn Idx = String | Int - * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean - * @param {Function} pred - * @param {Array} propPath - * @param {*} obj - * @return {Boolean} - * @see R.propSatisfies, R.path - * @example - * - * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true - */ -var pathSatisfies = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathSatisfies(pred, propPath, obj) { - return propPath.length > 0 && pred(Object(_path_js__WEBPACK_IMPORTED_MODULE_1__["default"])(propPath, obj)); -}); -/* harmony default export */ __webpack_exports__["default"] = (pathSatisfies); - -/***/ }), - -/***/ "./node_modules/ramda/es/pick.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/pick.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns a partial copy of an object containing only the keys specified. If - * the key does not exist, the property is ignored. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig [k] -> {k: v} -> {k: v} - * @param {Array} names an array of String property names to copy onto a new object - * @param {Object} obj The object to copy from - * @return {Object} A new object with only properties from `names` on it. - * @see R.omit, R.props - * @example - * - * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} - * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} - */ -var pick = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pick(names, obj) { - var result = {}; - var idx = 0; - while (idx < names.length) { - if (names[idx] in obj) { - result[names[idx]] = obj[names[idx]]; - } - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (pick); - -/***/ }), - -/***/ "./node_modules/ramda/es/pickAll.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/pickAll.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Similar to `pick` except that this one includes a `key: undefined` pair for - * properties that don't exist. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig [k] -> {k: v} -> {k: v} - * @param {Array} names an array of String property names to copy onto a new object - * @param {Object} obj The object to copy from - * @return {Object} A new object with only properties from `names` on it. - * @see R.pick - * @example - * - * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} - * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} - */ -var pickAll = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pickAll(names, obj) { - var result = {}; - var idx = 0; - var len = names.length; - while (idx < len) { - var name = names[idx]; - result[name] = obj[name]; - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (pickAll); - -/***/ }), - -/***/ "./node_modules/ramda/es/pickBy.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/pickBy.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns a partial copy of an object containing only the keys that satisfy - * the supplied predicate. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Object - * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v} - * @param {Function} pred A predicate to determine whether or not a key - * should be included on the output object. - * @param {Object} obj The object to copy from - * @return {Object} A new object with only properties that satisfy `pred` - * on it. - * @see R.pick, R.filter - * @example - * - * const isUpperCase = (val, key) => key.toUpperCase() === key; - * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} - */ -var pickBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pickBy(test, obj) { - var result = {}; - for (var prop in obj) { - if (test(obj[prop], prop, obj)) { - result[prop] = obj[prop]; - } - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (pickBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/pipe.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/pipe.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipe; }); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_pipe_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_pipe.js */ "./node_modules/ramda/es/internal/_pipe.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); -/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); - - - - - -/** - * Performs left-to-right function composition. The leftmost function may have - * any arity; the remaining functions must be unary. - * - * In some libraries this function is named `sequence`. - * - * **Note:** The result of pipe is not automatically curried. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) - * @param {...Function} functions - * @return {Function} - * @see R.compose - * @example - * - * const f = R.pipe(Math.pow, R.negate, R.inc); - * - * f(3, 4); // -(3^4) + 1 - * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b))) - */ -function pipe() { - if (arguments.length === 0) { - throw new Error('pipe requires at least one argument'); - } - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments[0].length, Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_pipe_js__WEBPACK_IMPORTED_MODULE_1__["default"], arguments[0], Object(_tail_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arguments))); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/pipeK.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/pipeK.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipeK; }); -/* harmony import */ var _composeK_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./composeK.js */ "./node_modules/ramda/es/composeK.js"); -/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); - - - -/** - * Returns the left-to-right Kleisli composition of the provided functions, - * each of which must return a value of a type supported by [`chain`](#chain). - * - * `R.pipeK(f, g, h)` is equivalent to `R.pipe(f, R.chain(g), R.chain(h))`. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Function - * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z) - * @param {...Function} - * @return {Function} - * @see R.composeK - * @deprecated since v0.26.0 - * @example - * - * // parseJson :: String -> Maybe * - * // get :: String -> Object -> Maybe * - * - * // getStateCode :: Maybe String -> Maybe String - * const getStateCode = R.pipeK( - * parseJson, - * get('user'), - * get('address'), - * get('state'), - * R.compose(Maybe.of, R.toUpper) - * ); - * - * getStateCode('{"user":{"address":{"state":"ny"}}}'); - * //=> Just('NY') - * getStateCode('[Invalid JSON]'); - * //=> Nothing() - * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a))) - */ -function pipeK() { - if (arguments.length === 0) { - throw new Error('pipeK requires at least one argument'); - } - return _composeK_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/pipeP.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/pipeP.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipeP; }); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_pipeP_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_pipeP.js */ "./node_modules/ramda/es/internal/_pipeP.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); -/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); - - - - - -/** - * Performs left-to-right composition of one or more Promise-returning - * functions. The leftmost function may have any arity; the remaining functions - * must be unary. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category Function - * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z) - * @param {...Function} functions - * @return {Function} - * @see R.composeP - * @deprecated since v0.26.0 - * @example - * - * // followersForUser :: String -> Promise [User] - * const followersForUser = R.pipeP(db.getUserById, db.getFollowers); - */ -function pipeP() { - if (arguments.length === 0) { - throw new Error('pipeP requires at least one argument'); - } - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments[0].length, Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_pipeP_js__WEBPACK_IMPORTED_MODULE_1__["default"], arguments[0], Object(_tail_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arguments))); -} - -/***/ }), - -/***/ "./node_modules/ramda/es/pipeWith.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/pipeWith.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _head_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./head.js */ "./node_modules/ramda/es/head.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); -/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); - - - - - - - -/** - * Performs left-to-right function composition using transforming function. The leftmost function may have - * any arity; the remaining functions must be unary. - * - * **Note:** The result of pipeWith is not automatically curried. - * - * @func - * @memberOf R - * @category Function - * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z) - * @param {...Function} functions - * @return {Function} - * @see R.composeWith, R.pipe - * @example - * - * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res)); - * const f = pipeWhileNotNil([Math.pow, R.negate, R.inc]) - * - * f(3, 4); // -(3^4) + 1 - * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, f(g, ...args))) - */ -var pipeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function pipeWith(xf, list) { - if (list.length <= 0) { - return _identity_js__WEBPACK_IMPORTED_MODULE_5__["default"]; - } - - var headList = Object(_head_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list); - var tailList = Object(_tail_js__WEBPACK_IMPORTED_MODULE_4__["default"])(list); - - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(headList.length, function () { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (result, f) { - return xf.call(this, f, result); - }, headList.apply(this, arguments), tailList); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (pipeWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/pluck.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/pluck.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); - - - - -/** - * Returns a new list by plucking the same named property off all objects in - * the list supplied. - * - * `pluck` will work on - * any [functor](https://github.com/fantasyland/fantasy-land#functor) in - * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Functor f => k -> f {k: v} -> f v - * @param {Number|String} key The key name to pluck off of each object. - * @param {Array} f The array or functor to consider. - * @return {Array} The list of values for the given key. - * @see R.props - * @example - * - * var getAges = R.pluck('age'); - * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27] - * - * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3] - * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} - * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5] - * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5] - */ -var pluck = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pluck(p, list) { - return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_prop_js__WEBPACK_IMPORTED_MODULE_2__["default"])(p), list); -}); -/* harmony default export */ __webpack_exports__["default"] = (pluck); - -/***/ }), - -/***/ "./node_modules/ramda/es/prepend.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/prepend.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns a new list with the given element at the front, followed by the - * contents of the list. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig a -> [a] -> [a] - * @param {*} el The item to add to the head of the output list. - * @param {Array} list The array to add to the tail of the output list. - * @return {Array} A new array. - * @see R.append - * @example - * - * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] - */ -var prepend = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function prepend(el, list) { - return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])([el], list); -}); -/* harmony default export */ __webpack_exports__["default"] = (prepend); - -/***/ }), - -/***/ "./node_modules/ramda/es/product.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/product.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _multiply_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/es/multiply.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - -/** - * Multiplies together all the elements of a list. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig [Number] -> Number - * @param {Array} list An array of numbers - * @return {Number} The product of all the numbers in the list. - * @see R.reduce - * @example - * - * R.product([2,4,6,8,100,1]); //=> 38400 - */ -var product = /*#__PURE__*/Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_multiply_js__WEBPACK_IMPORTED_MODULE_0__["default"], 1); -/* harmony default export */ __webpack_exports__["default"] = (product); - -/***/ }), - -/***/ "./node_modules/ramda/es/project.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/project.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); -/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); -/* harmony import */ var _pickAll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/es/pickAll.js"); -/* harmony import */ var _useWith_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/es/useWith.js"); - - - - - -/** - * Reasonable analog to SQL `select` statement. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @category Relation - * @sig [k] -> [{k: v}] -> [{k: v}] - * @param {Array} props The property names to project - * @param {Array} objs The objects to query - * @return {Array} An array of objects with just the `props` properties. - * @example - * - * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2}; - * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7}; - * const kids = [abby, fred]; - * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] - */ -var project = /*#__PURE__*/Object(_useWith_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_internal_map_js__WEBPACK_IMPORTED_MODULE_0__["default"], [_pickAll_js__WEBPACK_IMPORTED_MODULE_2__["default"], _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"]]); // passing `identity` gives correct arity -/* harmony default export */ __webpack_exports__["default"] = (project); - -/***/ }), - -/***/ "./node_modules/ramda/es/prop.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/prop.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); - - - -/** - * Returns a function that when supplied an object returns the indicated - * property of that object, if it exists. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig s -> {s: a} -> a | Undefined - * @param {String} p The property name - * @param {Object} obj The object to query - * @return {*} The value at `obj.p`. - * @see R.path - * @example - * - * R.prop('x', {x: 100}); //=> 100 - * R.prop('x', {}); //=> undefined - * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4 - */ - -var prop = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function prop(p, obj) { - return Object(_path_js__WEBPACK_IMPORTED_MODULE_1__["default"])([p], obj); -}); -/* harmony default export */ __webpack_exports__["default"] = (prop); - -/***/ }), - -/***/ "./node_modules/ramda/es/propEq.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/propEq.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); - - - -/** - * Returns `true` if the specified object property is equal, in - * [`R.equals`](#equals) terms, to the given value; `false` otherwise. - * You can test multiple properties with [`R.whereEq`](#whereEq). - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig String -> a -> Object -> Boolean - * @param {String} name - * @param {*} val - * @param {*} obj - * @return {Boolean} - * @see R.whereEq, R.propSatisfies, R.equals - * @example - * - * const abby = {name: 'Abby', age: 7, hair: 'blond'}; - * const fred = {name: 'Fred', age: 12, hair: 'brown'}; - * const rusty = {name: 'Rusty', age: 10, hair: 'brown'}; - * const alois = {name: 'Alois', age: 15, disposition: 'surly'}; - * const kids = [abby, fred, rusty, alois]; - * const hasBrownHair = R.propEq('hair', 'brown'); - * R.filter(hasBrownHair, kids); //=> [fred, rusty] - */ -var propEq = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propEq(name, val, obj) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, obj[name]); -}); -/* harmony default export */ __webpack_exports__["default"] = (propEq); - -/***/ }), - -/***/ "./node_modules/ramda/es/propIs.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/propIs.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is.js */ "./node_modules/ramda/es/is.js"); - - - -/** - * Returns `true` if the specified object property is of the given type; - * `false` otherwise. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Type - * @sig Type -> String -> Object -> Boolean - * @param {Function} type - * @param {String} name - * @param {*} obj - * @return {Boolean} - * @see R.is, R.propSatisfies - * @example - * - * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true - * R.propIs(Number, 'x', {x: 'foo'}); //=> false - * R.propIs(Number, 'x', {}); //=> false - */ -var propIs = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propIs(type, name, obj) { - return Object(_is_js__WEBPACK_IMPORTED_MODULE_1__["default"])(type, obj[name]); -}); -/* harmony default export */ __webpack_exports__["default"] = (propIs); - -/***/ }), - -/***/ "./node_modules/ramda/es/propOr.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/propOr.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _pathOr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pathOr.js */ "./node_modules/ramda/es/pathOr.js"); - - - -/** - * If the given, non-null object has an own property with the specified name, - * returns the value of that property. Otherwise returns the provided default - * value. - * - * @func - * @memberOf R - * @since v0.6.0 - * @category Object - * @sig a -> String -> Object -> a - * @param {*} val The default value. - * @param {String} p The name of the property to return. - * @param {Object} obj The object to query. - * @return {*} The value of given property of the supplied object or the default value. - * @example - * - * const alice = { - * name: 'ALICE', - * age: 101 - * }; - * const favorite = R.prop('favoriteLibrary'); - * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary'); - * - * favorite(alice); //=> undefined - * favoriteWithDefault(alice); //=> 'Ramda' - */ -var propOr = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propOr(val, p, obj) { - return Object(_pathOr_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, [p], obj); -}); -/* harmony default export */ __webpack_exports__["default"] = (propOr); - -/***/ }), - -/***/ "./node_modules/ramda/es/propSatisfies.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/propSatisfies.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Returns `true` if the specified object property satisfies the given - * predicate; `false` otherwise. You can test multiple properties with - * [`R.where`](#where). - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Logic - * @sig (a -> Boolean) -> String -> {String: a} -> Boolean - * @param {Function} pred - * @param {String} name - * @param {*} obj - * @return {Boolean} - * @see R.where, R.propEq, R.propIs - * @example - * - * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true - */ -var propSatisfies = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propSatisfies(pred, name, obj) { - return pred(obj[name]); -}); -/* harmony default export */ __webpack_exports__["default"] = (propSatisfies); - -/***/ }), - -/***/ "./node_modules/ramda/es/props.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/props.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Acts as multiple `prop`: array of keys in, array of values out. Preserves - * order. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig [k] -> {k: v} -> [v] - * @param {Array} ps The property names to fetch - * @param {Object} obj The object to query - * @return {Array} The corresponding values or partially applied function. - * @example - * - * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2] - * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2] - * - * const fullName = R.compose(R.join(' '), R.props(['first', 'last'])); - * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' - */ -var props = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function props(ps, obj) { - var len = ps.length; - var out = []; - var idx = 0; - - while (idx < len) { - out[idx] = obj[ps[idx]]; - idx += 1; - } - - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (props); - -/***/ }), - -/***/ "./node_modules/ramda/es/range.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/range.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/es/internal/_isNumber.js"); - - - -/** - * Returns a list of numbers from `from` (inclusive) to `to` (exclusive). - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Number -> Number -> [Number] - * @param {Number} from The first number in the list. - * @param {Number} to One more than the last number in the list. - * @return {Array} The list of numbers in the set `[a, b)`. - * @example - * - * R.range(1, 5); //=> [1, 2, 3, 4] - * R.range(50, 53); //=> [50, 51, 52] - */ -var range = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function range(from, to) { - if (!(Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(from) && Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(to))) { - throw new TypeError('Both arguments to range must be numbers'); - } - var result = []; - var n = from; - while (n < to) { - result.push(n); - n += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (range); - -/***/ }), - -/***/ "./node_modules/ramda/es/reduce.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/reduce.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); - - - -/** - * Returns a single item by iterating through the list, successively calling - * the iterator function and passing it an accumulator value and the current - * value from the array, and then passing the result to the next call. - * - * The iterator function receives two values: *(acc, value)*. It may use - * [`R.reduced`](#reduced) to shortcut the iteration. - * - * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function - * is *(value, acc)*. - * - * Note: `R.reduce` does not skip deleted or unassigned indices (sparse - * arrays), unlike the native `Array.prototype.reduce` method. For more details - * on this behavior, see: - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description - * - * Dispatches to the `reduce` method of the third argument, if present. When - * doing so, it is up to the user to handle the [`R.reduced`](#reduced) - * shortcuting, as this is not implemented by `reduce`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig ((a, b) -> a) -> a -> [b] -> a - * @param {Function} fn The iterator function. Receives two values, the accumulator and the - * current element from the array. - * @param {*} acc The accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.reduced, R.addIndex, R.reduceRight - * @example - * - * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 - * // - -10 - * // / \ / \ - * // - 4 -6 4 - * // / \ / \ - * // - 3 ==> -3 3 - * // / \ / \ - * // - 2 -1 2 - * // / \ / \ - * // 0 1 0 1 - * - * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d) - */ -var reduce = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (reduce); - -/***/ }), - -/***/ "./node_modules/ramda/es/reduceBy.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/reduceBy.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_xreduceBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_xreduceBy.js */ "./node_modules/ramda/es/internal/_xreduceBy.js"); - - - - - - -/** - * Groups the elements of the list according to the result of calling - * the String-returning function `keyFn` on each element and reduces the elements - * of each group to a single value via the reducer function `valueFn`. - * - * This function is basically a more general [`groupBy`](#groupBy) function. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.20.0 - * @category List - * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a} - * @param {Function} valueFn The function that reduces the elements of each group to a single - * value. Receives two values, accumulator for a particular group and the current element. - * @param {*} acc The (initial) accumulator value for each group. - * @param {Function} keyFn The function that maps the list's element into a key. - * @param {Array} list The array to group. - * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of - * `valueFn` for elements which produced that key when passed to `keyFn`. - * @see R.groupBy, R.reduce - * @example - * - * const groupNames = (acc, {name}) => acc.concat(name) - * const toGrade = ({score}) => - * score < 65 ? 'F' : - * score < 70 ? 'D' : - * score < 80 ? 'C' : - * score < 90 ? 'B' : 'A' - * - * var students = [ - * {name: 'Abby', score: 83}, - * {name: 'Bart', score: 62}, - * {name: 'Curt', score: 88}, - * {name: 'Dora', score: 92}, - * ] - * - * reduceBy(groupNames, [], toGrade, students) - * //=> {"A": ["Dora"], "B": ["Abby", "Curt"], "F": ["Bart"]} - */ -var reduceBy = /*#__PURE__*/Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xreduceBy_js__WEBPACK_IMPORTED_MODULE_4__["default"], function reduceBy(valueFn, valueAcc, keyFn, list) { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (acc, elt) { - var key = keyFn(elt); - acc[key] = valueFn(Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_2__["default"])(key, acc) ? acc[key] : valueAcc, elt); - return acc; - }, {}, list); -})); -/* harmony default export */ __webpack_exports__["default"] = (reduceBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/reduceRight.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/reduceRight.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Returns a single item by iterating through the list, successively calling - * the iterator function and passing it an accumulator value and the current - * value from the array, and then passing the result to the next call. - * - * Similar to [`reduce`](#reduce), except moves through the input list from the - * right to the left. - * - * The iterator function receives two values: *(value, acc)*, while the arguments' - * order of `reduce`'s iterator function is *(acc, value)*. - * - * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse - * arrays), unlike the native `Array.prototype.reduceRight` method. For more details - * on this behavior, see: - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig ((a, b) -> b) -> b -> [a] -> b - * @param {Function} fn The iterator function. Receives two values, the current element from the array - * and the accumulator. - * @param {*} acc The accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.reduce, R.addIndex - * @example - * - * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 - * // - -2 - * // / \ / \ - * // 1 - 1 3 - * // / \ / \ - * // 2 - ==> 2 -1 - * // / \ / \ - * // 3 - 3 4 - * // / \ / \ - * // 4 0 4 0 - * - * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a))) - */ -var reduceRight = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function reduceRight(fn, acc, list) { - var idx = list.length - 1; - while (idx >= 0) { - acc = fn(list[idx], acc); - idx -= 1; - } - return acc; -}); -/* harmony default export */ __webpack_exports__["default"] = (reduceRight); - -/***/ }), - -/***/ "./node_modules/ramda/es/reduceWhile.js": -/*!**********************************************!*\ - !*** ./node_modules/ramda/es/reduceWhile.js ***! - \**********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_reduced_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); - - - - -/** - * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating - * through the list, successively calling the iterator function. `reduceWhile` - * also takes a predicate that is evaluated before each step. If the predicate - * returns `false`, it "short-circuits" the iteration and returns the current - * value of the accumulator. - * - * @func - * @memberOf R - * @since v0.22.0 - * @category List - * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a - * @param {Function} pred The predicate. It is passed the accumulator and the - * current element. - * @param {Function} fn The iterator function. Receives two values, the - * accumulator and the current element. - * @param {*} a The accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.reduce, R.reduced - * @example - * - * const isOdd = (acc, x) => x % 2 === 1; - * const xs = [1, 3, 5, 60, 777, 800]; - * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 - * - * const ys = [2, 4, 6] - * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111 - */ -var reduceWhile = /*#__PURE__*/Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], function _reduceWhile(pred, fn, a, list) { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (acc, x) { - return pred(acc, x) ? fn(acc, x) : Object(_internal_reduced_js__WEBPACK_IMPORTED_MODULE_2__["default"])(acc); - }, a, list); -}); -/* harmony default export */ __webpack_exports__["default"] = (reduceWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/reduced.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/reduced.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); - - - -/** - * Returns a value wrapped to indicate that it is the final value of the reduce - * and transduce functions. The returned value should be considered a black - * box: the internal structure is not guaranteed to be stable. - * - * Note: this optimization is only available to the below functions: - * - [`reduce`](#reduce) - * - [`reduceWhile`](#reduceWhile) - * - [`transduce`](#transduce) - * - * @func - * @memberOf R - * @since v0.15.0 - * @category List - * @sig a -> * - * @param {*} x The final value of the reduce. - * @return {*} The wrapped value. - * @see R.reduce, R.reduceWhile, R.transduce - * @example - * - * R.reduce( - * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), - * [], - * [1, 2, 3, 4, 5]) // [1, 2, 3] - */ -var reduced = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (reduced); - -/***/ }), - -/***/ "./node_modules/ramda/es/reject.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/reject.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_complement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/es/internal/_complement.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); - - - - -/** - * The complement of [`filter`](#filter). - * - * Acts as a transducer if a transformer is given in list position. Filterable - * objects include plain objects or any object that has a filter method such - * as `Array`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Filterable f => (a -> Boolean) -> f a -> f a - * @param {Function} pred - * @param {Array} filterable - * @return {Array} - * @see R.filter, R.transduce, R.addIndex - * @example - * - * const isOdd = (n) => n % 2 === 1; - * - * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4] - * - * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} - */ -var reject = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function reject(pred, filterable) { - return Object(_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_internal_complement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred), filterable); -}); -/* harmony default export */ __webpack_exports__["default"] = (reject); - -/***/ }), - -/***/ "./node_modules/ramda/es/remove.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/remove.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Removes the sub-list of `list` starting at index `start` and containing - * `count` elements. _Note that this is not destructive_: it returns a copy of - * the list with the changes. - * No lists have been harmed in the application of this function. - * - * @func - * @memberOf R - * @since v0.2.2 - * @category List - * @sig Number -> Number -> [a] -> [a] - * @param {Number} start The position to start removing elements - * @param {Number} count The number of elements to remove - * @param {Array} list The list to remove from - * @return {Array} A new Array with `count` elements from `start` removed. - * @see R.without - * @example - * - * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8] - */ -var remove = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function remove(start, count, list) { - var result = Array.prototype.slice.call(list, 0); - result.splice(start, count); - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (remove); - -/***/ }), - -/***/ "./node_modules/ramda/es/repeat.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/repeat.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); -/* harmony import */ var _times_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./times.js */ "./node_modules/ramda/es/times.js"); - - - - -/** - * Returns a fixed list of size `n` containing a specified identical value. - * - * @func - * @memberOf R - * @since v0.1.1 - * @category List - * @sig a -> n -> [a] - * @param {*} value The value to repeat. - * @param {Number} n The desired size of the output list. - * @return {Array} A new array containing `n` `value`s. - * @see R.times - * @example - * - * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi'] - * - * const obj = {}; - * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}] - * repeatedObjs[0] === repeatedObjs[1]; //=> true - * @symb R.repeat(a, 0) = [] - * @symb R.repeat(a, 1) = [a] - * @symb R.repeat(a, 2) = [a, a] - */ -var repeat = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function repeat(value, n) { - return Object(_times_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_always_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value), n); -}); -/* harmony default export */ __webpack_exports__["default"] = (repeat); - -/***/ }), - -/***/ "./node_modules/ramda/es/replace.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/replace.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Replace a substring or regex match in a string with a replacement. - * - * The first two parameters correspond to the parameters of the - * `String.prototype.replace()` function, so the second parameter can also be a - * function. - * - * @func - * @memberOf R - * @since v0.7.0 - * @category String - * @sig RegExp|String -> String -> String -> String - * @param {RegExp|String} pattern A regular expression or a substring to match. - * @param {String} replacement The string to replace the matches with. - * @param {String} str The String to do the search and replacement in. - * @return {String} The result. - * @example - * - * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo' - * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo' - * - * // Use the "g" (global) flag to replace all occurrences: - * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' - */ -var replace = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function replace(regex, replacement, str) { - return str.replace(regex, replacement); -}); -/* harmony default export */ __webpack_exports__["default"] = (replace); - -/***/ }), - -/***/ "./node_modules/ramda/es/reverse.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/reverse.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); - - - -/** - * Returns a new list or string with the elements or characters in reverse - * order. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [a] - * @sig String -> String - * @param {Array|String} list - * @return {Array|String} - * @example - * - * R.reverse([1, 2, 3]); //=> [3, 2, 1] - * R.reverse([1, 2]); //=> [2, 1] - * R.reverse([1]); //=> [1] - * R.reverse([]); //=> [] - * - * R.reverse('abc'); //=> 'cba' - * R.reverse('ab'); //=> 'ba' - * R.reverse('a'); //=> 'a' - * R.reverse(''); //=> '' - */ -var reverse = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function reverse(list) { - return Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse(); -}); -/* harmony default export */ __webpack_exports__["default"] = (reverse); - -/***/ }), - -/***/ "./node_modules/ramda/es/scan.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/scan.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Scan is similar to [`reduce`](#reduce), but returns a list of successively - * reduced values from the left - * - * @func - * @memberOf R - * @since v0.10.0 - * @category List - * @sig ((a, b) -> a) -> a -> [b] -> [a] - * @param {Function} fn The iterator function. Receives two values, the accumulator and the - * current element from the array - * @param {*} acc The accumulator value. - * @param {Array} list The list to iterate over. - * @return {Array} A list of all intermediately reduced values. - * @see R.reduce, R.mapAccum - * @example - * - * const numbers = [1, 2, 3, 4]; - * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24] - * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)] - */ -var scan = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function scan(fn, acc, list) { - var idx = 0; - var len = list.length; - var result = [acc]; - while (idx < len) { - acc = fn(acc, list[idx]); - result[idx + 1] = acc; - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (scan); - -/***/ }), - -/***/ "./node_modules/ramda/es/sequence.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/sequence.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony import */ var _prepend_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/es/prepend.js"); -/* harmony import */ var _reduceRight_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/es/reduceRight.js"); - - - - - - -/** - * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) - * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an - * Applicative of Traversable. - * - * Dispatches to the `sequence` method of the second argument, if present. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a) - * @param {Function} of - * @param {*} traversable - * @return {*} - * @see R.traverse - * @example - * - * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) - * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() - * - * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] - * R.sequence(R.of, Nothing()); //=> [Nothing()] - */ -var sequence = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sequence(of, traversable) { - return typeof traversable.sequence === 'function' ? traversable.sequence(of) : Object(_reduceRight_js__WEBPACK_IMPORTED_MODULE_4__["default"])(function (x, acc) { - return Object(_ap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_prepend_js__WEBPACK_IMPORTED_MODULE_3__["default"], x), acc); - }, of([]), traversable); -}); -/* harmony default export */ __webpack_exports__["default"] = (sequence); - -/***/ }), - -/***/ "./node_modules/ramda/es/set.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/set.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); -/* harmony import */ var _over_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./over.js */ "./node_modules/ramda/es/over.js"); - - - - -/** - * Returns the result of "setting" the portion of the given data structure - * focused by the given lens to the given value. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig Lens s a -> a -> s -> s - * @param {Lens} lens - * @param {*} v - * @param {*} x - * @return {*} - * @see R.prop, R.lensIndex, R.lensProp - * @example - * - * const xLens = R.lensProp('x'); - * - * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} - * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} - */ -var set = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function set(lens, v, x) { - return Object(_over_js__WEBPACK_IMPORTED_MODULE_2__["default"])(lens, Object(_always_js__WEBPACK_IMPORTED_MODULE_1__["default"])(v), x); -}); -/* harmony default export */ __webpack_exports__["default"] = (set); - -/***/ }), - -/***/ "./node_modules/ramda/es/slice.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/slice.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - - -/** - * Returns the elements of the given list or string (or object with a `slice` - * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). - * - * Dispatches to the `slice` method of the third argument, if present. - * - * @func - * @memberOf R - * @since v0.1.4 - * @category List - * @sig Number -> Number -> [a] -> [a] - * @sig Number -> Number -> String -> String - * @param {Number} fromIndex The start index (inclusive). - * @param {Number} toIndex The end index (exclusive). - * @param {*} list - * @return {*} - * @example - * - * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] - * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] - * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] - * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] - * R.slice(0, 3, 'ramda'); //=> 'ram' - */ -var slice = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('slice', function slice(fromIndex, toIndex, list) { - return Array.prototype.slice.call(list, fromIndex, toIndex); -})); -/* harmony default export */ __webpack_exports__["default"] = (slice); - -/***/ }), - -/***/ "./node_modules/ramda/es/sort.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/sort.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Returns a copy of the list, sorted according to the comparator function, - * which should accept two values at a time and return a negative number if the - * first value is smaller, a positive number if it's larger, and zero if they - * are equal. Please note that this is a **copy** of the list. It does not - * modify the original. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig ((a, a) -> Number) -> [a] -> [a] - * @param {Function} comparator A sorting function :: a -> b -> Int - * @param {Array} list The list to sort - * @return {Array} a new array with its elements sorted by the comparator function. - * @example - * - * const diff = function(a, b) { return a - b; }; - * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] - */ -var sort = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sort(comparator, list) { - return Array.prototype.slice.call(list, 0).sort(comparator); -}); -/* harmony default export */ __webpack_exports__["default"] = (sort); - -/***/ }), - -/***/ "./node_modules/ramda/es/sortBy.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/sortBy.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Sorts the list according to the supplied function. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig Ord b => (a -> b) -> [a] -> [a] - * @param {Function} fn - * @param {Array} list The list to sort. - * @return {Array} A new list sorted by the keys generated by `fn`. - * @example - * - * const sortByFirstItem = R.sortBy(R.prop(0)); - * const pairs = [[-1, 1], [-2, 2], [-3, 3]]; - * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]] - * - * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name'))); - * const alice = { - * name: 'ALICE', - * age: 101 - * }; - * const bob = { - * name: 'Bob', - * age: -10 - * }; - * const clara = { - * name: 'clara', - * age: 314.159 - * }; - * const people = [clara, bob, alice]; - * sortByNameCaseInsensitive(people); //=> [alice, bob, clara] - */ -var sortBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sortBy(fn, list) { - return Array.prototype.slice.call(list, 0).sort(function (a, b) { - var aa = fn(a); - var bb = fn(b); - return aa < bb ? -1 : aa > bb ? 1 : 0; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (sortBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/sortWith.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/sortWith.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Sorts a list according to a list of comparators. - * - * @func - * @memberOf R - * @since v0.23.0 - * @category Relation - * @sig [(a, a) -> Number] -> [a] -> [a] - * @param {Array} functions A list of comparator functions. - * @param {Array} list The list to sort. - * @return {Array} A new list sorted according to the comarator functions. - * @example - * - * const alice = { - * name: 'alice', - * age: 40 - * }; - * const bob = { - * name: 'bob', - * age: 30 - * }; - * const clara = { - * name: 'clara', - * age: 40 - * }; - * const people = [clara, bob, alice]; - * const ageNameSort = R.sortWith([ - * R.descend(R.prop('age')), - * R.ascend(R.prop('name')) - * ]); - * ageNameSort(people); //=> [alice, clara, bob] - */ -var sortWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sortWith(fns, list) { - return Array.prototype.slice.call(list, 0).sort(function (a, b) { - var result = 0; - var i = 0; - while (result === 0 && i < fns.length) { - result = fns[i](a, b); - i += 1; - } - return result; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (sortWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/split.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/split.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); - - -/** - * Splits a string into an array of strings based on the given - * separator. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category String - * @sig (String | RegExp) -> String -> [String] - * @param {String|RegExp} sep The pattern. - * @param {String} str The string to separate into an array. - * @return {Array} The array of strings from `str` separated by `str`. - * @see R.join - * @example - * - * const pathComponents = R.split('/'); - * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node'] - * - * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] - */ -var split = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, 'split'); -/* harmony default export */ __webpack_exports__["default"] = (split); - -/***/ }), - -/***/ "./node_modules/ramda/es/splitAt.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/splitAt.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./length.js */ "./node_modules/ramda/es/length.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - -/** - * Splits a given list or string at a given index. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig Number -> [a] -> [[a], [a]] - * @sig Number -> String -> [String, String] - * @param {Number} index The index where the array/string is split. - * @param {Array|String} array The array/string to be split. - * @return {Array} - * @example - * - * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] - * R.splitAt(5, 'hello world'); //=> ['hello', ' world'] - * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r'] - */ -var splitAt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitAt(index, array) { - return [Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(0, index, array), Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(index, Object(_length_js__WEBPACK_IMPORTED_MODULE_1__["default"])(array), array)]; -}); -/* harmony default export */ __webpack_exports__["default"] = (splitAt); - -/***/ }), - -/***/ "./node_modules/ramda/es/splitEvery.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/splitEvery.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - -/** - * Splits a collection into slices of the specified length. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig Number -> [a] -> [[a]] - * @sig Number -> String -> [String] - * @param {Number} n - * @param {Array} list - * @return {Array} - * @example - * - * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] - * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz'] - */ -var splitEvery = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitEvery(n, list) { - if (n <= 0) { - throw new Error('First argument to splitEvery must be a positive integer'); - } - var result = []; - var idx = 0; - while (idx < list.length) { - result.push(Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, idx += n, list)); - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (splitEvery); - -/***/ }), - -/***/ "./node_modules/ramda/es/splitWhen.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/splitWhen.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Takes a list and a predicate and returns a pair of lists with the following properties: - * - * - the result of concatenating the two output lists is equivalent to the input list; - * - none of the elements of the first output list satisfies the predicate; and - * - if the second output list is non-empty, its first element satisfies the predicate. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig (a -> Boolean) -> [a] -> [[a], [a]] - * @param {Function} pred The predicate that determines where the array is split. - * @param {Array} list The array to be split. - * @return {Array} - * @example - * - * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] - */ -var splitWhen = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitWhen(pred, list) { - var idx = 0; - var len = list.length; - var prefix = []; - - while (idx < len && !pred(list[idx])) { - prefix.push(list[idx]); - idx += 1; - } - - return [prefix, Array.prototype.slice.call(list, idx)]; -}); -/* harmony default export */ __webpack_exports__["default"] = (splitWhen); - -/***/ }), - -/***/ "./node_modules/ramda/es/startsWith.js": -/*!*********************************************!*\ - !*** ./node_modules/ramda/es/startsWith.js ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); -/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take.js */ "./node_modules/ramda/es/take.js"); - - - - -/** - * Checks if a list starts with the provided sublist. - * - * Similarly, checks if a string starts with the provided substring. - * - * @func - * @memberOf R - * @since v0.24.0 - * @category List - * @sig [a] -> [a] -> Boolean - * @sig String -> String -> Boolean - * @param {*} prefix - * @param {*} list - * @return {Boolean} - * @see R.endsWith - * @example - * - * R.startsWith('a', 'abc') //=> true - * R.startsWith('b', 'abc') //=> false - * R.startsWith(['a'], ['a', 'b', 'c']) //=> true - * R.startsWith(['b'], ['a', 'b', 'c']) //=> false - */ -var startsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prefix, list) { - return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_take_js__WEBPACK_IMPORTED_MODULE_2__["default"])(prefix.length, list), prefix); -}); -/* harmony default export */ __webpack_exports__["default"] = (startsWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/subtract.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/subtract.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Subtracts its second argument from its first argument. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig Number -> Number -> Number - * @param {Number} a The first value. - * @param {Number} b The second value. - * @return {Number} The result of `a - b`. - * @see R.add - * @example - * - * R.subtract(10, 8); //=> 2 - * - * const minus5 = R.subtract(R.__, 5); - * minus5(17); //=> 12 - * - * const complementaryAngle = R.subtract(90); - * complementaryAngle(30); //=> 60 - * complementaryAngle(72); //=> 18 - */ -var subtract = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function subtract(a, b) { - return Number(a) - Number(b); -}); -/* harmony default export */ __webpack_exports__["default"] = (subtract); - -/***/ }), - -/***/ "./node_modules/ramda/es/sum.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/sum.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); -/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); - - - -/** - * Adds together all the elements of a list. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Math - * @sig [Number] -> Number - * @param {Array} list An array of numbers - * @return {Number} The sum of all the numbers in the list. - * @see R.reduce - * @example - * - * R.sum([2,4,6,8,100,1]); //=> 121 - */ -var sum = /*#__PURE__*/Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"], 0); -/* harmony default export */ __webpack_exports__["default"] = (sum); - -/***/ }), - -/***/ "./node_modules/ramda/es/symmetricDifference.js": -/*!******************************************************!*\ - !*** ./node_modules/ramda/es/symmetricDifference.js ***! - \******************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); -/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./difference.js */ "./node_modules/ramda/es/difference.js"); - - - - -/** - * Finds the set (i.e. no duplicates) of all elements contained in the first or - * second list, but not both. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Relation - * @sig [*] -> [*] -> [*] - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The elements in `list1` or `list2`, but not both. - * @see R.symmetricDifferenceWith, R.difference, R.differenceWith - * @example - * - * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] - * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2] - */ -var symmetricDifference = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function symmetricDifference(list1, list2) { - return Object(_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_difference_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list1, list2), Object(_difference_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list2, list1)); -}); -/* harmony default export */ __webpack_exports__["default"] = (symmetricDifference); - -/***/ }), - -/***/ "./node_modules/ramda/es/symmetricDifferenceWith.js": -/*!**********************************************************!*\ - !*** ./node_modules/ramda/es/symmetricDifferenceWith.js ***! - \**********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); -/* harmony import */ var _differenceWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/es/differenceWith.js"); - - - - -/** - * Finds the set (i.e. no duplicates) of all elements contained in the first or - * second list, but not both. Duplication is determined according to the value - * returned by applying the supplied predicate to two list elements. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category Relation - * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] - * @param {Function} pred A predicate used to test whether two items are equal. - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The elements in `list1` or `list2`, but not both. - * @see R.symmetricDifference, R.difference, R.differenceWith - * @example - * - * const eqA = R.eqBy(R.prop('a')); - * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; - * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}]; - * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] - */ -var symmetricDifferenceWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function symmetricDifferenceWith(pred, list1, list2) { - return Object(_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_differenceWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, list1, list2), Object(_differenceWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, list2, list1)); -}); -/* harmony default export */ __webpack_exports__["default"] = (symmetricDifferenceWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/tail.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/tail.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - -/** - * Returns all but the first element of the given list or string (or object - * with a `tail` method). - * - * Dispatches to the `slice` method of the first argument, if present. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [a] - * @sig String -> String - * @param {*} list - * @return {*} - * @see R.head, R.init, R.last - * @example - * - * R.tail([1, 2, 3]); //=> [2, 3] - * R.tail([1, 2]); //=> [2] - * R.tail([1]); //=> [] - * R.tail([]); //=> [] - * - * R.tail('abc'); //=> 'bc' - * R.tail('ab'); //=> 'b' - * R.tail('a'); //=> '' - * R.tail(''); //=> '' - */ -var tail = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('tail', /*#__PURE__*/Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(1, Infinity))); -/* harmony default export */ __webpack_exports__["default"] = (tail); - -/***/ }), - -/***/ "./node_modules/ramda/es/take.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/take.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xtake_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtake.js */ "./node_modules/ramda/es/internal/_xtake.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - - -/** - * Returns the first `n` elements of the given list, string, or - * transducer/transformer (or object with a `take` method). - * - * Dispatches to the `take` method of the second argument, if present. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig Number -> [a] -> [a] - * @sig Number -> String -> String - * @param {Number} n - * @param {*} list - * @return {*} - * @see R.drop - * @example - * - * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] - * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] - * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] - * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] - * R.take(3, 'ramda'); //=> 'ram' - * - * const personnel = [ - * 'Dave Brubeck', - * 'Paul Desmond', - * 'Eugene Wright', - * 'Joe Morello', - * 'Gerry Mulligan', - * 'Bob Bates', - * 'Joe Dodge', - * 'Ron Crotty' - * ]; - * - * const takeFive = R.take(5); - * takeFive(personnel); - * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan'] - * @symb R.take(-1, [a, b]) = [a, b] - * @symb R.take(0, [a, b]) = [] - * @symb R.take(1, [a, b]) = [a] - * @symb R.take(2, [a, b]) = [a, b] - */ -var take = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['take'], _internal_xtake_js__WEBPACK_IMPORTED_MODULE_2__["default"], function take(n, xs) { - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(0, n < 0 ? Infinity : n, xs); -})); -/* harmony default export */ __webpack_exports__["default"] = (take); - -/***/ }), - -/***/ "./node_modules/ramda/es/takeLast.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/takeLast.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _drop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drop.js */ "./node_modules/ramda/es/drop.js"); - - - -/** - * Returns a new list containing the last `n` elements of the given list. - * If `n > list.length`, returns a list of `list.length` elements. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig Number -> [a] -> [a] - * @sig Number -> String -> String - * @param {Number} n The number of elements to return. - * @param {Array} xs The collection to consider. - * @return {Array} - * @see R.dropLast - * @example - * - * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] - * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] - * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] - * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] - * R.takeLast(3, 'ramda'); //=> 'mda' - */ -var takeLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function takeLast(n, xs) { - return Object(_drop_js__WEBPACK_IMPORTED_MODULE_1__["default"])(n >= 0 ? xs.length - n : 0, xs); -}); -/* harmony default export */ __webpack_exports__["default"] = (takeLast); - -/***/ }), - -/***/ "./node_modules/ramda/es/takeLastWhile.js": -/*!************************************************!*\ - !*** ./node_modules/ramda/es/takeLastWhile.js ***! - \************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - -/** - * Returns a new list containing the last `n` elements of a given list, passing - * each value to the supplied predicate function, and terminating when the - * predicate function returns `false`. Excludes the element that caused the - * predicate function to fail. The predicate function is passed one argument: - * *(value)*. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig (a -> Boolean) -> [a] -> [a] - * @sig (a -> Boolean) -> String -> String - * @param {Function} fn The function called per iteration. - * @param {Array} xs The collection to iterate over. - * @return {Array} A new array. - * @see R.dropLastWhile, R.addIndex - * @example - * - * const isNotOne = x => x !== 1; - * - * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] - * - * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda' - */ -var takeLastWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function takeLastWhile(fn, xs) { - var idx = xs.length - 1; - while (idx >= 0 && fn(xs[idx])) { - idx -= 1; - } - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx + 1, Infinity, xs); -}); -/* harmony default export */ __webpack_exports__["default"] = (takeLastWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/takeWhile.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/takeWhile.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xtakeWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtakeWhile.js */ "./node_modules/ramda/es/internal/_xtakeWhile.js"); -/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); - - - - - -/** - * Returns a new list containing the first `n` elements of a given list, - * passing each value to the supplied predicate function, and terminating when - * the predicate function returns `false`. Excludes the element that caused the - * predicate function to fail. The predicate function is passed one argument: - * *(value)*. - * - * Dispatches to the `takeWhile` method of the second argument, if present. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig (a -> Boolean) -> [a] -> [a] - * @sig (a -> Boolean) -> String -> String - * @param {Function} fn The function called per iteration. - * @param {Array} xs The collection to iterate over. - * @return {Array} A new array. - * @see R.dropWhile, R.transduce, R.addIndex - * @example - * - * const isNotFour = x => x !== 4; - * - * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] - * - * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram' - */ -var takeWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['takeWhile'], _internal_xtakeWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"], function takeWhile(fn, xs) { - var idx = 0; - var len = xs.length; - while (idx < len && fn(xs[idx])) { - idx += 1; - } - return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(0, idx, xs); -})); -/* harmony default export */ __webpack_exports__["default"] = (takeWhile); - -/***/ }), - -/***/ "./node_modules/ramda/es/tap.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/tap.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); -/* harmony import */ var _internal_xtap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtap.js */ "./node_modules/ramda/es/internal/_xtap.js"); - - - - -/** - * Runs the given function with the supplied object, then returns the object. - * - * Acts as a transducer if a transformer is given as second parameter. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig (a -> *) -> a -> a - * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away. - * @param {*} x - * @return {*} `x`. - * @example - * - * const sayX = x => console.log('x is ' + x); - * R.tap(sayX, 100); //=> 100 - * // logs 'x is 100' - * @symb R.tap(f, a) = a - */ -var tap = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xtap_js__WEBPACK_IMPORTED_MODULE_2__["default"], function tap(fn, x) { - fn(x); - return x; -})); -/* harmony default export */ __webpack_exports__["default"] = (tap); - -/***/ }), - -/***/ "./node_modules/ramda/es/test.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/test.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_cloneRegExp.js */ "./node_modules/ramda/es/internal/_cloneRegExp.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_isRegExp_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isRegExp.js */ "./node_modules/ramda/es/internal/_isRegExp.js"); -/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); - - - - - -/** - * Determines whether a given string matches a given regular expression. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category String - * @sig RegExp -> String -> Boolean - * @param {RegExp} pattern - * @param {String} str - * @return {Boolean} - * @see R.match - * @example - * - * R.test(/^x/, 'xyz'); //=> true - * R.test(/^y/, 'xyz'); //=> false - */ -var test = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function test(pattern, str) { - if (!Object(_internal_isRegExp_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pattern)) { - throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + Object(_toString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(pattern)); - } - return Object(_internal_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pattern).test(str); -}); -/* harmony default export */ __webpack_exports__["default"] = (test); - -/***/ }), - -/***/ "./node_modules/ramda/es/then.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/then.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/es/internal/_assertPromise.js"); - - - -/** - * Returns the result of applying the onSuccess function to the value inside - * a successfully resolved promise. This is useful for working with promises - * inside function compositions. - * - * @func - * @memberOf R - * @category Function - * @sig (a -> b) -> (Promise e a) -> (Promise e b) - * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b) - * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value. - * @param {Promise} p - * @return {Promise} The result of calling `p.then(onSuccess)` - * @see R.otherwise - * @example - * - * var makeQuery = (email) => ({ query: { email }}); - * - * //getMemberName :: String -> Promise ({firstName, lastName}) - * var getMemberName = R.pipe( - * makeQuery, - * fetchMember, - * R.then(R.pick(['firstName', 'lastName'])) - * ); - */ -var then = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function then(f, p) { - Object(_internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__["default"])('then', p); - - return p.then(f); -}); -/* harmony default export */ __webpack_exports__["default"] = (then); - -/***/ }), - -/***/ "./node_modules/ramda/es/thunkify.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/thunkify.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - - -/** - * Creates a thunk out of a function. A thunk delays a calculation until - * its result is needed, providing lazy evaluation of arguments. - * - * @func - * @memberOf R - * @category Function - * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k) - * @param {Function} fn A function to wrap in a thunk - * @return {Function} Expects arguments for `fn` and returns a new function - * that, when called, applies those arguments to `fn`. - * @see R.partial, R.partialRight - * @example - * - * R.thunkify(R.identity)(42)(); //=> 42 - * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42 - */ -var thunkify = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function thunkify(fn) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function createThunk() { - var fnArgs = arguments; - return function invokeThunk() { - return fn.apply(this, fnArgs); - }; - }); -}); - -/* harmony default export */ __webpack_exports__["default"] = (thunkify); - -/***/ }), - -/***/ "./node_modules/ramda/es/times.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/times.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Calls an input function `n` times, returning an array containing the results - * of those function calls. - * - * `fn` is passed one argument: The current value of `n`, which begins at `0` - * and is gradually incremented to `n - 1`. - * - * @func - * @memberOf R - * @since v0.2.3 - * @category List - * @sig (Number -> a) -> Number -> [a] - * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`. - * @param {Number} n A value between `0` and `n - 1`. Increments after each function call. - * @return {Array} An array containing the return values of all calls to `fn`. - * @see R.repeat - * @example - * - * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4] - * @symb R.times(f, 0) = [] - * @symb R.times(f, 1) = [f(0)] - * @symb R.times(f, 2) = [f(0), f(1)] - */ -var times = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function times(fn, n) { - var len = Number(n); - var idx = 0; - var list; - - if (len < 0 || isNaN(len)) { - throw new RangeError('n must be a non-negative number'); - } - list = new Array(len); - while (idx < len) { - list[idx] = fn(idx); - idx += 1; - } - return list; -}); -/* harmony default export */ __webpack_exports__["default"] = (times); - -/***/ }), - -/***/ "./node_modules/ramda/es/toLower.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/toLower.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); - - -/** - * The lower case version of a string. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category String - * @sig String -> String - * @param {String} str The string to lower case. - * @return {String} The lower case version of `str`. - * @see R.toUpper - * @example - * - * R.toLower('XYZ'); //=> 'xyz' - */ -var toLower = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, 'toLowerCase'); -/* harmony default export */ __webpack_exports__["default"] = (toLower); - -/***/ }), - -/***/ "./node_modules/ramda/es/toPairs.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/toPairs.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - - -/** - * Converts an object into an array of key, value arrays. Only the object's - * own properties are used. - * Note that the order of the output array is not guaranteed to be consistent - * across different JS platforms. - * - * @func - * @memberOf R - * @since v0.4.0 - * @category Object - * @sig {String: *} -> [[String,*]] - * @param {Object} obj The object to extract from - * @return {Array} An array of key, value arrays from the object's own properties. - * @see R.fromPairs - * @example - * - * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] - */ -var toPairs = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toPairs(obj) { - var pairs = []; - for (var prop in obj) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj)) { - pairs[pairs.length] = [prop, obj[prop]]; - } - } - return pairs; -}); -/* harmony default export */ __webpack_exports__["default"] = (toPairs); - -/***/ }), - -/***/ "./node_modules/ramda/es/toPairsIn.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/toPairsIn.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Converts an object into an array of key, value arrays. The object's own - * properties and prototype properties are used. Note that the order of the - * output array is not guaranteed to be consistent across different JS - * platforms. - * - * @func - * @memberOf R - * @since v0.4.0 - * @category Object - * @sig {String: *} -> [[String,*]] - * @param {Object} obj The object to extract from - * @return {Array} An array of key, value arrays from the object's own - * and prototype properties. - * @example - * - * const F = function() { this.x = 'X'; }; - * F.prototype.y = 'Y'; - * const f = new F(); - * R.toPairsIn(f); //=> [['x','X'], ['y','Y']] - */ -var toPairsIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toPairsIn(obj) { - var pairs = []; - for (var prop in obj) { - pairs[pairs.length] = [prop, obj[prop]]; - } - return pairs; -}); -/* harmony default export */ __webpack_exports__["default"] = (toPairsIn); - -/***/ }), - -/***/ "./node_modules/ramda/es/toString.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/toString.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _internal_toString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_toString.js */ "./node_modules/ramda/es/internal/_toString.js"); - - - -/** - * Returns the string representation of the given value. `eval`'ing the output - * should result in a value equivalent to the input value. Many of the built-in - * `toString` methods do not satisfy this requirement. - * - * If the given value is an `[object Object]` with a `toString` method other - * than `Object.prototype.toString`, this method is invoked with no arguments - * to produce the return value. This means user-defined constructor functions - * can provide a suitable `toString` method. For example: - * - * function Point(x, y) { - * this.x = x; - * this.y = y; - * } - * - * Point.prototype.toString = function() { - * return 'new Point(' + this.x + ', ' + this.y + ')'; - * }; - * - * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)' - * - * @func - * @memberOf R - * @since v0.14.0 - * @category String - * @sig * -> String - * @param {*} val - * @return {String} - * @example - * - * R.toString(42); //=> '42' - * R.toString('abc'); //=> '"abc"' - * R.toString([1, 2, 3]); //=> '[1, 2, 3]' - * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}' - * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' - */ -var toString = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toString(val) { - return Object(_internal_toString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, []); -}); -/* harmony default export */ __webpack_exports__["default"] = (toString); - -/***/ }), - -/***/ "./node_modules/ramda/es/toUpper.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/toUpper.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); - - -/** - * The upper case version of a string. - * - * @func - * @memberOf R - * @since v0.9.0 - * @category String - * @sig String -> String - * @param {String} str The string to upper case. - * @return {String} The upper case version of `str`. - * @see R.toLower - * @example - * - * R.toUpper('abc'); //=> 'ABC' - */ -var toUpper = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, 'toUpperCase'); -/* harmony default export */ __webpack_exports__["default"] = (toUpper); - -/***/ }), - -/***/ "./node_modules/ramda/es/transduce.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/transduce.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); -/* harmony import */ var _internal_xwrap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_xwrap.js */ "./node_modules/ramda/es/internal/_xwrap.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - - -/** - * Initializes a transducer using supplied iterator function. Returns a single - * item by iterating through the list, successively calling the transformed - * iterator function and passing it an accumulator value and the current value - * from the array, and then passing the result to the next call. - * - * The iterator function receives two values: *(acc, value)*. It will be - * wrapped as a transformer to initialize the transducer. A transformer can be - * passed directly in place of an iterator function. In both cases, iteration - * may be stopped early with the [`R.reduced`](#reduced) function. - * - * A transducer is a function that accepts a transformer and returns a - * transformer and can be composed directly. - * - * A transformer is an an object that provides a 2-arity reducing iterator - * function, step, 0-arity initial value function, init, and 1-arity result - * extraction function, result. The step function is used as the iterator - * function in reduce. The result function is used to convert the final - * accumulator into the return type and in most cases is - * [`R.identity`](#identity). The init function can be used to provide an - * initial accumulator, but is ignored by transduce. - * - * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. - * - * @func - * @memberOf R - * @since v0.12.0 - * @category List - * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a - * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. - * @param {Function} fn The iterator function. Receives two values, the accumulator and the - * current element from the array. Wrapped as transformer, if necessary, and used to - * initialize the transducer - * @param {*} acc The initial accumulator value. - * @param {Array} list The list to iterate over. - * @return {*} The final, accumulated value. - * @see R.reduce, R.reduced, R.into - * @example - * - * const numbers = [1, 2, 3, 4]; - * const transducer = R.compose(R.map(R.add(1)), R.take(2)); - * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] - * - * const isOdd = (x) => x % 2 === 1; - * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); - * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] - */ -var transduce = /*#__PURE__*/Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(4, function transduce(xf, fn, acc, list) { - return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xf(typeof fn === 'function' ? Object(_internal_xwrap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn) : fn), acc, list); -}); -/* harmony default export */ __webpack_exports__["default"] = (transduce); - -/***/ }), - -/***/ "./node_modules/ramda/es/transpose.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/transpose.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Transposes the rows and columns of a 2D list. - * When passed a list of `n` lists of length `x`, - * returns a list of `x` lists of length `n`. - * - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig [[a]] -> [[a]] - * @param {Array} list A 2D list - * @return {Array} A 2D list - * @example - * - * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] - * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] - * - * // If some of the rows are shorter than the following rows, their elements are skipped: - * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] - * @symb R.transpose([[a], [b], [c]]) = [a, b, c] - * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] - * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] - */ -var transpose = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function transpose(outerlist) { - var i = 0; - var result = []; - while (i < outerlist.length) { - var innerlist = outerlist[i]; - var j = 0; - while (j < innerlist.length) { - if (typeof result[j] === 'undefined') { - result[j] = []; - } - result[j].push(innerlist[j]); - j += 1; - } - i += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (transpose); - -/***/ }), - -/***/ "./node_modules/ramda/es/traverse.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/traverse.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony import */ var _sequence_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/es/sequence.js"); - - - - -/** - * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning - * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable), - * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative - * into an Applicative of Traversable. - * - * Dispatches to the `traverse` method of the third argument, if present. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b) - * @param {Function} of - * @param {Function} f - * @param {*} traversable - * @return {*} - * @see R.sequence - * @example - * - * // Returns `Maybe.Nothing` if the given divisor is `0` - * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d) - * - * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2]) - * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing - */ -var traverse = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function traverse(of, f, traversable) { - return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : Object(_sequence_js__WEBPACK_IMPORTED_MODULE_2__["default"])(of, Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f, traversable)); -}); -/* harmony default export */ __webpack_exports__["default"] = (traverse); - -/***/ }), - -/***/ "./node_modules/ramda/es/trim.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/trim.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; -var zeroWidth = '\u200b'; -var hasProtoTrim = typeof String.prototype.trim === 'function'; -/** - * Removes (strips) whitespace from both ends of the string. - * - * @func - * @memberOf R - * @since v0.6.0 - * @category String - * @sig String -> String - * @param {String} str The string to trim. - * @return {String} Trimmed version of `str`. - * @example - * - * R.trim(' xyz '); //=> 'xyz' - * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] - */ -var trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function trim(str) { - var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); - var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); - return str.replace(beginRx, '').replace(endRx, ''); -}) : /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function trim(str) { - return str.trim(); -}); -/* harmony default export */ __webpack_exports__["default"] = (trim); - -/***/ }), - -/***/ "./node_modules/ramda/es/tryCatch.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/tryCatch.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - - -/** - * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned - * function evaluates the `tryer`; if it does not throw, it simply returns the - * result. If the `tryer` *does* throw, the returned function evaluates the - * `catcher` function and returns its result. Note that for effective - * composition with this function, both the `tryer` and `catcher` functions - * must return the same type of results. - * - * @func - * @memberOf R - * @since v0.20.0 - * @category Function - * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a) - * @param {Function} tryer The function that may throw. - * @param {Function} catcher The function that will be evaluated if `tryer` throws. - * @return {Function} A new function that will catch exceptions and send then to the catcher. - * @example - * - * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true - * R.tryCatch(() => { throw 'foo'}, R.always('catched'))('bar') // => 'catched' - * R.tryCatch(R.times(R.identity), R.always([]))('s') // => [] - `` */ -var tryCatch = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function _tryCatch(tryer, catcher) { - return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(tryer.length, function () { - try { - return tryer.apply(this, arguments); - } catch (e) { - return catcher.apply(this, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])([e], arguments)); - } - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (tryCatch); - -/***/ }), - -/***/ "./node_modules/ramda/es/type.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/type.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Gives a single-word string description of the (native) type of a value, - * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not - * attempt to distinguish user Object types any further, reporting them all as - * 'Object'. - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Type - * @sig (* -> {*}) -> String - * @param {*} val The value to test - * @return {String} - * @example - * - * R.type({}); //=> "Object" - * R.type(1); //=> "Number" - * R.type(false); //=> "Boolean" - * R.type('s'); //=> "String" - * R.type(null); //=> "Null" - * R.type([]); //=> "Array" - * R.type(/[A-z]/); //=> "RegExp" - * R.type(() => {}); //=> "Function" - * R.type(undefined); //=> "Undefined" - */ -var type = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function type(val) { - return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1); -}); -/* harmony default export */ __webpack_exports__["default"] = (type); - -/***/ }), - -/***/ "./node_modules/ramda/es/unapply.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/unapply.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Takes a function `fn`, which takes a single array argument, and returns a - * function which: - * - * - takes any number of positional arguments; - * - passes these arguments to `fn` as an array; and - * - returns the result. - * - * In other words, `R.unapply` derives a variadic function from a function which - * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply). - * - * @func - * @memberOf R - * @since v0.8.0 - * @category Function - * @sig ([*...] -> a) -> (*... -> a) - * @param {Function} fn - * @return {Function} - * @see R.apply - * @example - * - * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]' - * @symb R.unapply(f)(a, b) = f([a, b]) - */ -var unapply = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unapply(fn) { - return function () { - return fn(Array.prototype.slice.call(arguments, 0)); - }; -}); -/* harmony default export */ __webpack_exports__["default"] = (unapply); - -/***/ }), - -/***/ "./node_modules/ramda/es/unary.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/unary.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); - - - -/** - * Wraps a function of any arity (including nullary) in a function that accepts - * exactly 1 parameter. Any extraneous parameters will not be passed to the - * supplied function. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category Function - * @sig (* -> b) -> (a -> b) - * @param {Function} fn The function to wrap. - * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of - * arity 1. - * @see R.binary, R.nAry - * @example - * - * const takesTwoArgs = function(a, b) { - * return [a, b]; - * }; - * takesTwoArgs.length; //=> 2 - * takesTwoArgs(1, 2); //=> [1, 2] - * - * const takesOneArg = R.unary(takesTwoArgs); - * takesOneArg.length; //=> 1 - * // Only 1 argument is passed to the wrapped function - * takesOneArg(1, 2); //=> [1, undefined] - * @symb R.unary(f)(a, b, c) = f(a) - */ -var unary = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unary(fn) { - return Object(_nAry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(1, fn); -}); -/* harmony default export */ __webpack_exports__["default"] = (unary); - -/***/ }), - -/***/ "./node_modules/ramda/es/uncurryN.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/uncurryN.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - -/** - * Returns a function of arity `n` from a (manually) curried function. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Function - * @sig Number -> (a -> b) -> (a -> c) - * @param {Number} length The arity for the returned function. - * @param {Function} fn The function to uncurry. - * @return {Function} A new function. - * @see R.curry - * @example - * - * const addFour = a => b => c => d => a + b + c + d; - * - * const uncurriedAddFour = R.uncurryN(4, addFour); - * uncurriedAddFour(1, 2, 3, 4); //=> 10 - */ -var uncurryN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function uncurryN(depth, fn) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(depth, function () { - var currentDepth = 1; - var value = fn; - var idx = 0; - var endIdx; - while (currentDepth <= depth && typeof value === 'function') { - endIdx = currentDepth === depth ? arguments.length : idx + value.length; - value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); - currentDepth += 1; - idx = endIdx; - } - return value; - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (uncurryN); - -/***/ }), - -/***/ "./node_modules/ramda/es/unfold.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/unfold.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Builds a list from a seed value. Accepts an iterator function, which returns - * either false to stop iteration or an array of length 2 containing the value - * to add to the resulting list and the seed to be used in the next call to the - * iterator function. - * - * The iterator function receives one argument: *(seed)*. - * - * @func - * @memberOf R - * @since v0.10.0 - * @category List - * @sig (a -> [b]) -> * -> [b] - * @param {Function} fn The iterator function. receives one argument, `seed`, and returns - * either false to quit iteration or an array of length two to proceed. The element - * at index 0 of this array will be added to the resulting array, and the element - * at index 1 will be passed to the next call to `fn`. - * @param {*} seed The seed value. - * @return {Array} The final list. - * @example - * - * const f = n => n > 50 ? false : [-n, n + 10]; - * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50] - * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...] - */ -var unfold = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unfold(fn, seed) { - var pair = fn(seed); - var result = []; - while (pair && pair.length) { - result[result.length] = pair[0]; - pair = fn(pair[1]); - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (unfold); - -/***/ }), - -/***/ "./node_modules/ramda/es/union.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/union.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); -/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); - - - - - -/** - * Combines two lists into a set (i.e. no duplicates) composed of the elements - * of each list. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig [*] -> [*] -> [*] - * @param {Array} as The first list. - * @param {Array} bs The second list. - * @return {Array} The first and second lists concatenated, with - * duplicates removed. - * @example - * - * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4] - */ -var union = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_compose_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_uniq_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])); -/* harmony default export */ __webpack_exports__["default"] = (union); - -/***/ }), - -/***/ "./node_modules/ramda/es/unionWith.js": -/*!********************************************!*\ - !*** ./node_modules/ramda/es/unionWith.js ***! - \********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _uniqWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/es/uniqWith.js"); - - - - -/** - * Combines two lists into a set (i.e. no duplicates) composed of the elements - * of each list. Duplication is determined according to the value returned by - * applying the supplied predicate to two list elements. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Relation - * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*] - * @param {Function} pred A predicate used to test whether two items are equal. - * @param {Array} list1 The first list. - * @param {Array} list2 The second list. - * @return {Array} The first and second lists concatenated, with - * duplicates removed. - * @see R.union - * @example - * - * const l1 = [{a: 1}, {a: 2}]; - * const l2 = [{a: 1}, {a: 4}]; - * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] - */ -var unionWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function unionWith(pred, list1, list2) { - return Object(_uniqWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list1, list2)); -}); -/* harmony default export */ __webpack_exports__["default"] = (unionWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/uniq.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/uniq.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); -/* harmony import */ var _uniqBy_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/es/uniqBy.js"); - - - -/** - * Returns a new list containing only one copy of each element in the original - * list. [`R.equals`](#equals) is used to determine equality. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [a] - * @param {Array} list The array to consider. - * @return {Array} The list of unique items. - * @example - * - * R.uniq([1, 1, 2, 1]); //=> [1, 2] - * R.uniq([1, '1']); //=> [1, '1'] - * R.uniq([[42], [42]]); //=> [[42]] - */ -var uniq = /*#__PURE__*/Object(_uniqBy_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_identity_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (uniq); - -/***/ }), - -/***/ "./node_modules/ramda/es/uniqBy.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/uniqBy.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Set_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/es/internal/_Set.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns a new list containing only one copy of each element in the original - * list, based upon the value returned by applying the supplied function to - * each list element. Prefers the first item if the supplied function produces - * the same value on two items. [`R.equals`](#equals) is used for comparison. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category List - * @sig (a -> b) -> [a] -> [a] - * @param {Function} fn A function used to produce a value to use during comparisons. - * @param {Array} list The array to consider. - * @return {Array} The list of unique items. - * @example - * - * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10] - */ -var uniqBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function uniqBy(fn, list) { - var set = new _internal_Set_js__WEBPACK_IMPORTED_MODULE_0__["default"](); - var result = []; - var idx = 0; - var appliedItem, item; - - while (idx < list.length) { - item = list[idx]; - appliedItem = fn(item); - if (set.add(appliedItem)) { - result.push(item); - } - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (uniqBy); - -/***/ }), - -/***/ "./node_modules/ramda/es/uniqWith.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/uniqWith.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - - -/** - * Returns a new list containing only one copy of each element in the original - * list, based upon the value returned by applying the supplied predicate to - * two list elements. Prefers the first item if two items compare equal based - * on the predicate. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category List - * @sig ((a, a) -> Boolean) -> [a] -> [a] - * @param {Function} pred A predicate used to test whether two items are equal. - * @param {Array} list The array to consider. - * @return {Array} The list of unique items. - * @example - * - * const strEq = R.eqBy(String); - * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2] - * R.uniqWith(strEq)([{}, {}]); //=> [{}] - * R.uniqWith(strEq)([1, '1', 1]); //=> [1] - * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] - */ -var uniqWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function uniqWith(pred, list) { - var idx = 0; - var len = list.length; - var result = []; - var item; - while (idx < len) { - item = list[idx]; - if (!Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, item, result)) { - result[result.length] = item; - } - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (uniqWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/unless.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/unless.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Tests the final argument by passing it to the given predicate function. If - * the predicate is not satisfied, the function will return the result of - * calling the `whenFalseFn` function with the same argument. If the predicate - * is satisfied, the argument is returned as is. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category Logic - * @sig (a -> Boolean) -> (a -> a) -> a -> a - * @param {Function} pred A predicate function - * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates - * to a falsy value. - * @param {*} x An object to test with the `pred` function and - * pass to `whenFalseFn` if necessary. - * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`. - * @see R.ifElse, R.when, R.cond - * @example - * - * let safeInc = R.unless(R.isNil, R.inc); - * safeInc(null); //=> null - * safeInc(1); //=> 2 - */ -var unless = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unless(pred, whenFalseFn, x) { - return pred(x) ? x : whenFalseFn(x); -}); -/* harmony default export */ __webpack_exports__["default"] = (unless); - -/***/ }), - -/***/ "./node_modules/ramda/es/unnest.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/unnest.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); -/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); - - - -/** - * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from - * any [Chain](https://github.com/fantasyland/fantasy-land#chain). - * - * @func - * @memberOf R - * @since v0.3.0 - * @category List - * @sig Chain c => c (c a) -> c a - * @param {*} list - * @return {*} - * @see R.flatten, R.chain - * @example - * - * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] - * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] - */ -var unnest = /*#__PURE__*/Object(_chain_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_identity_js__WEBPACK_IMPORTED_MODULE_0__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (unnest); - -/***/ }), - -/***/ "./node_modules/ramda/es/until.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/until.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Takes a predicate, a transformation function, and an initial value, - * and returns a value of the same type as the initial value. - * It does so by applying the transformation until the predicate is satisfied, - * at which point it returns the satisfactory value. - * - * @func - * @memberOf R - * @since v0.20.0 - * @category Logic - * @sig (a -> Boolean) -> (a -> a) -> a -> a - * @param {Function} pred A predicate function - * @param {Function} fn The iterator function - * @param {*} init Initial value - * @return {*} Final value that satisfies predicate - * @example - * - * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128 - */ -var until = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function until(pred, fn, init) { - var val = init; - while (!pred(val)) { - val = fn(val); - } - return val; -}); -/* harmony default export */ __webpack_exports__["default"] = (until); - -/***/ }), - -/***/ "./node_modules/ramda/es/update.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/update.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); -/* harmony import */ var _adjust_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/es/adjust.js"); -/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); - - - - -/** - * Returns a new copy of the array with the element at the provided index - * replaced with the given value. - * - * @func - * @memberOf R - * @since v0.14.0 - * @category List - * @sig Number -> a -> [a] -> [a] - * @param {Number} idx The index to update. - * @param {*} x The value to exist at the given index of the returned array. - * @param {Array|Arguments} list The source array-like object to be updated. - * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`. - * @see R.adjust - * @example - * - * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c'] - * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_'] - * @symb R.update(-1, a, [b, c]) = [b, a] - * @symb R.update(0, a, [b, c]) = [a, c] - * @symb R.update(1, a, [b, c]) = [b, a] - */ -var update = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function update(idx, x, list) { - return Object(_adjust_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, Object(_always_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x), list); -}); -/* harmony default export */ __webpack_exports__["default"] = (update); - -/***/ }), - -/***/ "./node_modules/ramda/es/useWith.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/useWith.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); - - - -/** - * Accepts a function `fn` and a list of transformer functions and returns a - * new curried function. When the new function is invoked, it calls the - * function `fn` with parameters consisting of the result of calling each - * supplied handler on successive arguments to the new function. - * - * If more arguments are passed to the returned function than transformer - * functions, those arguments are passed directly to `fn` as additional - * parameters. If you expect additional arguments that don't need to be - * transformed, although you can ignore them, it's best to pass an identity - * function so that the new function reports the correct arity. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Function - * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) - * @param {Function} fn The function to wrap. - * @param {Array} transformers A list of transformer functions - * @return {Function} The wrapped function. - * @see R.converge - * @example - * - * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 - * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 - * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 - * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 - * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) - */ -var useWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function useWith(fn, transformers) { - return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(transformers.length, function () { - var args = []; - var idx = 0; - while (idx < transformers.length) { - args.push(transformers[idx].call(this, arguments[idx])); - idx += 1; - } - return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); - }); -}); -/* harmony default export */ __webpack_exports__["default"] = (useWith); - -/***/ }), - -/***/ "./node_modules/ramda/es/values.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/values.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); -/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); - - - -/** - * Returns a list of all the enumerable own properties of the supplied object. - * Note that the order of the output array is not guaranteed across different - * JS platforms. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category Object - * @sig {k: v} -> [v] - * @param {Object} obj The object to extract values from - * @return {Array} An array of the values of the object's own properties. - * @see R.valuesIn, R.keys - * @example - * - * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] - */ -var values = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function values(obj) { - var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); - var len = props.length; - var vals = []; - var idx = 0; - while (idx < len) { - vals[idx] = obj[props[idx]]; - idx += 1; - } - return vals; -}); -/* harmony default export */ __webpack_exports__["default"] = (values); - -/***/ }), - -/***/ "./node_modules/ramda/es/valuesIn.js": -/*!*******************************************!*\ - !*** ./node_modules/ramda/es/valuesIn.js ***! - \*******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); - - -/** - * Returns a list of all the properties, including prototype properties, of the - * supplied object. - * Note that the order of the output array is not guaranteed to be consistent - * across different JS platforms. - * - * @func - * @memberOf R - * @since v0.2.0 - * @category Object - * @sig {k: v} -> [v] - * @param {Object} obj The object to extract values from - * @return {Array} An array of the values of the object's own and prototype properties. - * @see R.values, R.keysIn - * @example - * - * const F = function() { this.x = 'X'; }; - * F.prototype.y = 'Y'; - * const f = new F(); - * R.valuesIn(f); //=> ['X', 'Y'] - */ -var valuesIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function valuesIn(obj) { - var prop; - var vs = []; - for (prop in obj) { - vs[vs.length] = obj[prop]; - } - return vs; -}); -/* harmony default export */ __webpack_exports__["default"] = (valuesIn); - -/***/ }), - -/***/ "./node_modules/ramda/es/view.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/view.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -// `Const` is a functor that effectively ignores the function given to `map`. -var Const = function (x) { - return { value: x, 'fantasy-land/map': function () { - return this; - } }; -}; - -/** - * Returns a "view" of the given data structure, determined by the given lens. - * The lens's focus determines which portion of the data structure is visible. - * - * @func - * @memberOf R - * @since v0.16.0 - * @category Object - * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s - * @sig Lens s a -> s -> a - * @param {Lens} lens - * @param {*} x - * @return {*} - * @see R.prop, R.lensIndex, R.lensProp - * @example - * - * const xLens = R.lensProp('x'); - * - * R.view(xLens, {x: 1, y: 2}); //=> 1 - * R.view(xLens, {x: 4, y: 2}); //=> 4 - */ -var view = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function view(lens, x) { - // Using `Const` effectively ignores the setter function of the `lens`, - // leaving the value returned by the getter function unmodified. - return lens(Const)(x).value; -}); -/* harmony default export */ __webpack_exports__["default"] = (view); - -/***/ }), - -/***/ "./node_modules/ramda/es/when.js": -/*!***************************************!*\ - !*** ./node_modules/ramda/es/when.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Tests the final argument by passing it to the given predicate function. If - * the predicate is satisfied, the function will return the result of calling - * the `whenTrueFn` function with the same argument. If the predicate is not - * satisfied, the argument is returned as is. - * - * @func - * @memberOf R - * @since v0.18.0 - * @category Logic - * @sig (a -> Boolean) -> (a -> a) -> a -> a - * @param {Function} pred A predicate function - * @param {Function} whenTrueFn A function to invoke when the `condition` - * evaluates to a truthy value. - * @param {*} x An object to test with the `pred` function and - * pass to `whenTrueFn` if necessary. - * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`. - * @see R.ifElse, R.unless, R.cond - * @example - * - * // truncate :: String -> String - * const truncate = R.when( - * R.propSatisfies(R.gt(R.__, 10), 'length'), - * R.pipe(R.take(10), R.append('…'), R.join('')) - * ); - * truncate('12345'); //=> '12345' - * truncate('0123456789ABC'); //=> '0123456789…' - */ -var when = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function when(pred, whenTrueFn, x) { - return pred(x) ? whenTrueFn(x) : x; -}); -/* harmony default export */ __webpack_exports__["default"] = (when); - -/***/ }), - -/***/ "./node_modules/ramda/es/where.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/where.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); - - - -/** - * Takes a spec object and a test object; returns true if the test satisfies - * the spec. Each of the spec's own properties must be a predicate function. - * Each predicate is applied to the value of the corresponding property of the - * test object. `where` returns true if all the predicates return true, false - * otherwise. - * - * `where` is well suited to declaratively expressing constraints for other - * functions such as [`filter`](#filter) and [`find`](#find). - * - * @func - * @memberOf R - * @since v0.1.1 - * @category Object - * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean - * @param {Object} spec - * @param {Object} testObj - * @return {Boolean} - * @see R.propSatisfies, R.whereEq - * @example - * - * // pred :: Object -> Boolean - * const pred = R.where({ - * a: R.equals('foo'), - * b: R.complement(R.equals('bar')), - * x: R.gt(R.__, 10), - * y: R.lt(R.__, 20) - * }); - * - * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true - * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false - * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false - * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false - * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false - */ -var where = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function where(spec, testObj) { - for (var prop in spec) { - if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, spec) && !spec[prop](testObj[prop])) { - return false; - } - } - return true; -}); -/* harmony default export */ __webpack_exports__["default"] = (where); - -/***/ }), - -/***/ "./node_modules/ramda/es/whereEq.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/whereEq.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); -/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); -/* harmony import */ var _where_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./where.js */ "./node_modules/ramda/es/where.js"); - - - - - -/** - * Takes a spec object and a test object; returns true if the test satisfies - * the spec, false otherwise. An object satisfies the spec if, for each of the - * spec's own properties, accessing that property of the object gives the same - * value (in [`R.equals`](#equals) terms) as accessing that property of the - * spec. - * - * `whereEq` is a specialization of [`where`](#where). - * - * @func - * @memberOf R - * @since v0.14.0 - * @category Object - * @sig {String: *} -> {String: *} -> Boolean - * @param {Object} spec - * @param {Object} testObj - * @return {Boolean} - * @see R.propEq, R.where - * @example - * - * // pred :: Object -> Boolean - * const pred = R.whereEq({a: 1, b: 2}); - * - * pred({a: 1}); //=> false - * pred({a: 1, b: 2}); //=> true - * pred({a: 1, b: 2, c: 3}); //=> true - * pred({a: 1, b: 1}); //=> false - */ -var whereEq = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function whereEq(spec, testObj) { - return Object(_where_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"], spec), testObj); -}); -/* harmony default export */ __webpack_exports__["default"] = (whereEq); - -/***/ }), - -/***/ "./node_modules/ramda/es/without.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/without.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); -/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); - - - - - -/** - * Returns a new list without values in the first argument. - * [`R.equals`](#equals) is used to determine equality. - * - * Acts as a transducer if a transformer is given in list position. - * - * @func - * @memberOf R - * @since v0.19.0 - * @category List - * @sig [a] -> [a] -> [a] - * @param {Array} list1 The values to be removed from `list2`. - * @param {Array} list2 The array to remove values from. - * @return {Array} The new array without values in `list1`. - * @see R.transduce, R.difference, R.remove - * @example - * - * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4] - */ -var without = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (xs, list) { - return Object(_reject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Object(_flip_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xs), list); -}); -/* harmony default export */ __webpack_exports__["default"] = (without); - -/***/ }), - -/***/ "./node_modules/ramda/es/xprod.js": -/*!****************************************!*\ - !*** ./node_modules/ramda/es/xprod.js ***! - \****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Creates a new list out of the two supplied by creating each possible pair - * from the lists. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [b] -> [[a,b]] - * @param {Array} as The first list. - * @param {Array} bs The second list. - * @return {Array} The list made by combining each possible pair from - * `as` and `bs` into pairs (`[a, b]`). - * @example - * - * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']] - * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]] - */ -var xprod = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function xprod(a, b) { - // = xprodWith(prepend); (takes about 3 times as long...) - var idx = 0; - var ilen = a.length; - var j; - var jlen = b.length; - var result = []; - while (idx < ilen) { - j = 0; - while (j < jlen) { - result[result.length] = [a[idx], b[j]]; - j += 1; - } - idx += 1; - } - return result; -}); -/* harmony default export */ __webpack_exports__["default"] = (xprod); - -/***/ }), - -/***/ "./node_modules/ramda/es/zip.js": -/*!**************************************!*\ - !*** ./node_modules/ramda/es/zip.js ***! - \**************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Creates a new list out of the two supplied by pairing up equally-positioned - * items from both lists. The returned list is truncated to the length of the - * shorter of the two input lists. - * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`. - * - * @func - * @memberOf R - * @since v0.1.0 - * @category List - * @sig [a] -> [b] -> [[a,b]] - * @param {Array} list1 The first array to consider. - * @param {Array} list2 The second array to consider. - * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`. - * @example - * - * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']] - * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]] - */ -var zip = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zip(a, b) { - var rv = []; - var idx = 0; - var len = Math.min(a.length, b.length); - while (idx < len) { - rv[idx] = [a[idx], b[idx]]; - idx += 1; - } - return rv; -}); -/* harmony default export */ __webpack_exports__["default"] = (zip); - -/***/ }), - -/***/ "./node_modules/ramda/es/zipObj.js": -/*!*****************************************!*\ - !*** ./node_modules/ramda/es/zipObj.js ***! - \*****************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); - - -/** - * Creates a new object out of a list of keys and a list of values. - * Key/value pairing is truncated to the length of the shorter of the two lists. - * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`. - * - * @func - * @memberOf R - * @since v0.3.0 - * @category List - * @sig [String] -> [*] -> {String: *} - * @param {Array} keys The array that will be properties on the output object. - * @param {Array} values The list of values on the output object. - * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`. - * @example - * - * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} - */ -var zipObj = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zipObj(keys, values) { - var idx = 0; - var len = Math.min(keys.length, values.length); - var out = {}; - while (idx < len) { - out[keys[idx]] = values[idx]; - idx += 1; - } - return out; -}); -/* harmony default export */ __webpack_exports__["default"] = (zipObj); - -/***/ }), - -/***/ "./node_modules/ramda/es/zipWith.js": -/*!******************************************!*\ - !*** ./node_modules/ramda/es/zipWith.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); - - -/** - * Creates a new list out of the two supplied by applying the function to each - * equally-positioned pair in the lists. The returned list is truncated to the - * length of the shorter of the two input lists. - * - * @function - * @memberOf R - * @since v0.1.0 - * @category List - * @sig ((a, b) -> c) -> [a] -> [b] -> [c] - * @param {Function} fn The function used to combine the two elements into one value. - * @param {Array} list1 The first array to consider. - * @param {Array} list2 The second array to consider. - * @return {Array} The list made by combining same-indexed elements of `list1` and `list2` - * using `fn`. - * @example - * - * const f = (x, y) => { - * // ... - * }; - * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']); - * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')] - * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)] - */ -var zipWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zipWith(fn, a, b) { - var rv = []; - var idx = 0; - var len = Math.min(a.length, b.length); - while (idx < len) { - rv[idx] = fn(a[idx], b[idx]); - idx += 1; - } - return rv; -}); -/* harmony default export */ __webpack_exports__["default"] = (zipWith); - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/ajax/index.js": -/*!***********************************************!*\ - !*** ./node_modules/rxjs/_esm5/ajax/index.js ***! - \***********************************************/ -/*! exports provided: ajax, AjaxResponse, AjaxError, AjaxTimeoutError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_observable_dom_ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/observable/dom/ajax */ "./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ajax", function() { return _internal_observable_dom_ajax__WEBPACK_IMPORTED_MODULE_0__["ajax"]; }); - -/* harmony import */ var _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/observable/dom/AjaxObservable */ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxResponse", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxResponse"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxError", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxError"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxTimeoutError", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxTimeoutError"]; }); - -/** PURE_IMPORTS_START PURE_IMPORTS_END */ - - -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/index.js": -/*!******************************************!*\ - !*** ./node_modules/rxjs/_esm5/index.js ***! - \******************************************/ -/*! exports provided: Observable, ConnectableObservable, GroupedObservable, observable, Subject, BehaviorSubject, ReplaySubject, AsyncSubject, asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, VirtualTimeScheduler, VirtualAction, Scheduler, Subscription, Subscriber, Notification, NotificationKind, pipe, noop, identity, isObservable, ArgumentOutOfRangeError, EmptyError, ObjectUnsubscribedError, UnsubscriptionError, TimeoutError, bindCallback, bindNodeCallback, combineLatest, concat, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, iif, interval, merge, never, of, onErrorResumeNext, pairs, partition, race, range, throwError, timer, using, zip, scheduled, EMPTY, NEVER, config */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]; }); - -/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/observable/ConnectableObservable */ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"]; }); - -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/operators/groupBy */ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__["GroupedObservable"]; }); - -/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__["observable"]; }); - -/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]; }); - -/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/BehaviorSubject */ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]; }); - -/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["ReplaySubject"]; }); - -/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["AsyncSubject"]; }); - -/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/scheduler/asap */ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; }); - -/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internal/scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; }); - -/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internal/scheduler/queue */ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; }); - -/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./internal/scheduler/animationFrame */ "./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; }); - -/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./internal/scheduler/VirtualTimeScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualTimeScheduler"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualAction"]; }); - -/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internal/Scheduler */ "./node_modules/rxjs/_esm5/internal/Scheduler.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["Scheduler"]; }); - -/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internal/Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["Subscription"]; }); - -/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internal/Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["Subscriber"]; }); - -/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internal/Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["NotificationKind"]; }); - -/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internal/util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["pipe"]; }); - -/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internal/util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["noop"]; }); - -/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internal/util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["identity"]; }); - -/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internal/util/isObservable */ "./node_modules/rxjs/_esm5/internal/util/isObservable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["isObservable"]; }); - -/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./internal/util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__["ArgumentOutOfRangeError"]; }); - -/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internal/util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__["EmptyError"]; }); - -/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./internal/util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__["ObjectUnsubscribedError"]; }); - -/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internal/util/UnsubscriptionError */ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__["UnsubscriptionError"]; }); - -/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internal/util/TimeoutError */ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__["TimeoutError"]; }); - -/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./internal/observable/bindCallback */ "./node_modules/rxjs/_esm5/internal/observable/bindCallback.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__["bindCallback"]; }); - -/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./internal/observable/bindNodeCallback */ "./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__["bindNodeCallback"]; }); - -/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./internal/observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__["combineLatest"]; }); - -/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./internal/observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__["concat"]; }); - -/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./internal/observable/defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__["defer"]; }); - -/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./internal/observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["empty"]; }); - -/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./internal/observable/forkJoin */ "./node_modules/rxjs/_esm5/internal/observable/forkJoin.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__["forkJoin"]; }); - -/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./internal/observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__["from"]; }); - -/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./internal/observable/fromEvent */ "./node_modules/rxjs/_esm5/internal/observable/fromEvent.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__["fromEvent"]; }); - -/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./internal/observable/fromEventPattern */ "./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__["fromEventPattern"]; }); - -/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./internal/observable/generate */ "./node_modules/rxjs/_esm5/internal/observable/generate.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__["generate"]; }); - -/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./internal/observable/iif */ "./node_modules/rxjs/_esm5/internal/observable/iif.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__["iif"]; }); - -/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./internal/observable/interval */ "./node_modules/rxjs/_esm5/internal/observable/interval.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__["interval"]; }); - -/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./internal/observable/merge */ "./node_modules/rxjs/_esm5/internal/observable/merge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__["merge"]; }); - -/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./internal/observable/never */ "./node_modules/rxjs/_esm5/internal/observable/never.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["never"]; }); - -/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./internal/observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__["of"]; }); - -/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./internal/observable/onErrorResumeNext */ "./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__["onErrorResumeNext"]; }); - -/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./internal/observable/pairs */ "./node_modules/rxjs/_esm5/internal/observable/pairs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; }); - -/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./internal/observable/partition */ "./node_modules/rxjs/_esm5/internal/observable/partition.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__["partition"]; }); - -/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./internal/observable/race */ "./node_modules/rxjs/_esm5/internal/observable/race.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__["race"]; }); - -/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./internal/observable/range */ "./node_modules/rxjs/_esm5/internal/observable/range.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__["range"]; }); - -/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./internal/observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__["throwError"]; }); - -/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./internal/observable/timer */ "./node_modules/rxjs/_esm5/internal/observable/timer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__["timer"]; }); - -/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./internal/observable/using */ "./node_modules/rxjs/_esm5/internal/observable/using.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__["using"]; }); - -/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./internal/observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__["zip"]; }); - -/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./internal/scheduled/scheduled */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__["scheduled"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["EMPTY"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["NEVER"]; }); - -/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./internal/config */ "./node_modules/rxjs/_esm5/internal/config.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_52__["config"]; }); - -/** PURE_IMPORTS_START PURE_IMPORTS_END */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js": -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/AsyncSubject.js ***! - \**********************************************************/ -/*! exports provided: AsyncSubject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ - - - -var AsyncSubject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncSubject, _super); - function AsyncSubject() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.value = null; - _this.hasNext = false; - _this.hasCompleted = false; - return _this; - } - AsyncSubject.prototype._subscribe = function (subscriber) { - if (this.hasError) { - subscriber.error(this.thrownError); - return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY; - } - else if (this.hasCompleted && this.hasNext) { - subscriber.next(this.value); - subscriber.complete(); - return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY; - } - return _super.prototype._subscribe.call(this, subscriber); - }; - AsyncSubject.prototype.next = function (value) { - if (!this.hasCompleted) { - this.value = value; - this.hasNext = true; - } - }; - AsyncSubject.prototype.error = function (error) { - if (!this.hasCompleted) { - _super.prototype.error.call(this, error); - } - }; - AsyncSubject.prototype.complete = function () { - this.hasCompleted = true; - if (this.hasNext) { - _super.prototype.next.call(this, this.value); - } - _super.prototype.complete.call(this); - }; - return AsyncSubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); - -//# sourceMappingURL=AsyncSubject.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/BehaviorSubject.js ***! - \*************************************************************/ -/*! exports provided: BehaviorSubject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); -/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ - - - -var BehaviorSubject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BehaviorSubject, _super); - function BehaviorSubject(_value) { - var _this = _super.call(this) || this; - _this._value = _value; - return _this; - } - Object.defineProperty(BehaviorSubject.prototype, "value", { - get: function () { - return this.getValue(); - }, - enumerable: true, - configurable: true - }); - BehaviorSubject.prototype._subscribe = function (subscriber) { - var subscription = _super.prototype._subscribe.call(this, subscriber); - if (subscription && !subscription.closed) { - subscriber.next(this._value); - } - return subscription; - }; - BehaviorSubject.prototype.getValue = function () { - if (this.hasError) { - throw this.thrownError; - } - else if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__["ObjectUnsubscribedError"](); - } - else { - return this._value; - } - }; - BehaviorSubject.prototype.next = function (value) { - _super.prototype.next.call(this, this._value = value); - }; - return BehaviorSubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); - -//# sourceMappingURL=BehaviorSubject.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/InnerSubscriber.js ***! - \*************************************************************/ -/*! exports provided: InnerSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerSubscriber", function() { return InnerSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -var InnerSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerSubscriber, _super); - function InnerSubscriber(parent, outerValue, outerIndex) { - var _this = _super.call(this) || this; - _this.parent = parent; - _this.outerValue = outerValue; - _this.outerIndex = outerIndex; - _this.index = 0; - return _this; - } - InnerSubscriber.prototype._next = function (value) { - this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); - }; - InnerSubscriber.prototype._error = function (error) { - this.parent.notifyError(error, this); - this.unsubscribe(); - }; - InnerSubscriber.prototype._complete = function () { - this.parent.notifyComplete(this); - this.unsubscribe(); - }; - return InnerSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); - -//# sourceMappingURL=InnerSubscriber.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Notification.js": -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Notification.js ***! - \**********************************************************/ -/*! exports provided: NotificationKind, Notification */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return NotificationKind; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); -/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ - - - -var NotificationKind; -/*@__PURE__*/ (function (NotificationKind) { - NotificationKind["NEXT"] = "N"; - NotificationKind["ERROR"] = "E"; - NotificationKind["COMPLETE"] = "C"; -})(NotificationKind || (NotificationKind = {})); -var Notification = /*@__PURE__*/ (function () { - function Notification(kind, value, error) { - this.kind = kind; - this.value = value; - this.error = error; - this.hasValue = kind === 'N'; - } - Notification.prototype.observe = function (observer) { - switch (this.kind) { - case 'N': - return observer.next && observer.next(this.value); - case 'E': - return observer.error && observer.error(this.error); - case 'C': - return observer.complete && observer.complete(); - } - }; - Notification.prototype.do = function (next, error, complete) { - var kind = this.kind; - switch (kind) { - case 'N': - return next && next(this.value); - case 'E': - return error && error(this.error); - case 'C': - return complete && complete(); - } - }; - Notification.prototype.accept = function (nextOrObserver, error, complete) { - if (nextOrObserver && typeof nextOrObserver.next === 'function') { - return this.observe(nextOrObserver); - } - else { - return this.do(nextOrObserver, error, complete); - } - }; - Notification.prototype.toObservable = function () { - var kind = this.kind; - switch (kind) { - case 'N': - return Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__["of"])(this.value); - case 'E': - return Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__["throwError"])(this.error); - case 'C': - return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_0__["empty"])(); - } - throw new Error('unexpected notification kind value'); - }; - Notification.createNext = function (value) { - if (typeof value !== 'undefined') { - return new Notification('N', value); - } - return Notification.undefinedValueNotification; - }; - Notification.createError = function (err) { - return new Notification('E', undefined, err); - }; - Notification.createComplete = function () { - return Notification.completeNotification; - }; - Notification.completeNotification = new Notification('C'); - Notification.undefinedValueNotification = new Notification('N', undefined); - return Notification; -}()); - -//# sourceMappingURL=Notification.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Observable.js": -/*!********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Observable.js ***! - \********************************************************/ -/*! exports provided: Observable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return Observable; }); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); -/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/toSubscriber */ "./node_modules/rxjs/_esm5/internal/util/toSubscriber.js"); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); -/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ - - - - - -var Observable = /*@__PURE__*/ (function () { - function Observable(subscribe) { - this._isScalar = false; - if (subscribe) { - this._subscribe = subscribe; - } - } - Observable.prototype.lift = function (operator) { - var observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - }; - Observable.prototype.subscribe = function (observerOrNext, error, complete) { - var operator = this.operator; - var sink = Object(_util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__["toSubscriber"])(observerOrNext, error, complete); - if (operator) { - sink.add(operator.call(sink, this.source)); - } - else { - sink.add(this.source || (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? - this._subscribe(sink) : - this._trySubscribe(sink)); - } - if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) { - if (sink.syncErrorThrowable) { - sink.syncErrorThrowable = false; - if (sink.syncErrorThrown) { - throw sink.syncErrorValue; - } - } - } - return sink; - }; - Observable.prototype._trySubscribe = function (sink) { - try { - return this._subscribe(sink); - } - catch (err) { - if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) { - sink.syncErrorThrown = true; - sink.syncErrorValue = err; - } - if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_0__["canReportError"])(sink)) { - sink.error(err); - } - else { - console.warn(err); - } - } - }; - Observable.prototype.forEach = function (next, promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var subscription; - subscription = _this.subscribe(function (value) { - try { - next(value); - } - catch (err) { - reject(err); - if (subscription) { - subscription.unsubscribe(); - } - } - }, reject, resolve); - }); - }; - Observable.prototype._subscribe = function (subscriber) { - var source = this.source; - return source && source.subscribe(subscriber); - }; - Observable.prototype[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]] = function () { - return this; - }; - Observable.prototype.pipe = function () { - var operations = []; - for (var _i = 0; _i < arguments.length; _i++) { - operations[_i] = arguments[_i]; - } - if (operations.length === 0) { - return this; - } - return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipeFromArray"])(operations)(this); - }; - Observable.prototype.toPromise = function (promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var value; - _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); - }); - }; - Observable.create = function (subscribe) { - return new Observable(subscribe); - }; - return Observable; -}()); - -function getPromiseCtor(promiseCtor) { - if (!promiseCtor) { - promiseCtor = _config__WEBPACK_IMPORTED_MODULE_4__["config"].Promise || Promise; - } - if (!promiseCtor) { - throw new Error('no Promise impl found'); - } - return promiseCtor; -} -//# sourceMappingURL=Observable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Observer.js": -/*!******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Observer.js ***! - \******************************************************/ -/*! exports provided: empty */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); -/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ - - -var empty = { - closed: true, - next: function (value) { }, - error: function (err) { - if (_config__WEBPACK_IMPORTED_MODULE_0__["config"].useDeprecatedSynchronousErrorHandling) { - throw err; - } - else { - Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__["hostReportError"])(err); - } - }, - complete: function () { } -}; -//# sourceMappingURL=Observer.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/OuterSubscriber.js ***! - \*************************************************************/ -/*! exports provided: OuterSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OuterSubscriber", function() { return OuterSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -var OuterSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OuterSubscriber, _super); - function OuterSubscriber() { - return _super !== null && _super.apply(this, arguments) || this; - } - OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - OuterSubscriber.prototype.notifyError = function (error, innerSub) { - this.destination.error(error); - }; - OuterSubscriber.prototype.notifyComplete = function (innerSub) { - this.destination.complete(); - }; - return OuterSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); - -//# sourceMappingURL=OuterSubscriber.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/ReplaySubject.js ***! - \***********************************************************/ -/*! exports provided: ReplaySubject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scheduler/queue */ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operators/observeOn */ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js"); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SubjectSubscription */ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js"); -/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ - - - - - - - -var ReplaySubject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ReplaySubject, _super); - function ReplaySubject(bufferSize, windowTime, scheduler) { - if (bufferSize === void 0) { - bufferSize = Number.POSITIVE_INFINITY; - } - if (windowTime === void 0) { - windowTime = Number.POSITIVE_INFINITY; - } - var _this = _super.call(this) || this; - _this.scheduler = scheduler; - _this._events = []; - _this._infiniteTimeWindow = false; - _this._bufferSize = bufferSize < 1 ? 1 : bufferSize; - _this._windowTime = windowTime < 1 ? 1 : windowTime; - if (windowTime === Number.POSITIVE_INFINITY) { - _this._infiniteTimeWindow = true; - _this.next = _this.nextInfiniteTimeWindow; - } - else { - _this.next = _this.nextTimeWindow; - } - return _this; - } - ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) { - var _events = this._events; - _events.push(value); - if (_events.length > this._bufferSize) { - _events.shift(); - } - _super.prototype.next.call(this, value); - }; - ReplaySubject.prototype.nextTimeWindow = function (value) { - this._events.push(new ReplayEvent(this._getNow(), value)); - this._trimBufferThenGetEvents(); - _super.prototype.next.call(this, value); - }; - ReplaySubject.prototype._subscribe = function (subscriber) { - var _infiniteTimeWindow = this._infiniteTimeWindow; - var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents(); - var scheduler = this.scheduler; - var len = _events.length; - var subscription; - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__["ObjectUnsubscribedError"](); - } - else if (this.isStopped || this.hasError) { - subscription = _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; - } - else { - this.observers.push(subscriber); - subscription = new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__["SubjectSubscription"](this, subscriber); - } - if (scheduler) { - subscriber.add(subscriber = new _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__["ObserveOnSubscriber"](subscriber, scheduler)); - } - if (_infiniteTimeWindow) { - for (var i = 0; i < len && !subscriber.closed; i++) { - subscriber.next(_events[i]); - } - } - else { - for (var i = 0; i < len && !subscriber.closed; i++) { - subscriber.next(_events[i].value); - } - } - if (this.hasError) { - subscriber.error(this.thrownError); - } - else if (this.isStopped) { - subscriber.complete(); - } - return subscription; - }; - ReplaySubject.prototype._getNow = function () { - return (this.scheduler || _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__["queue"]).now(); - }; - ReplaySubject.prototype._trimBufferThenGetEvents = function () { - var now = this._getNow(); - var _bufferSize = this._bufferSize; - var _windowTime = this._windowTime; - var _events = this._events; - var eventsCount = _events.length; - var spliceCount = 0; - while (spliceCount < eventsCount) { - if ((now - _events[spliceCount].time) < _windowTime) { - break; - } - spliceCount++; - } - if (eventsCount > _bufferSize) { - spliceCount = Math.max(spliceCount, eventsCount - _bufferSize); - } - if (spliceCount > 0) { - _events.splice(0, spliceCount); - } - return _events; - }; - return ReplaySubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); - -var ReplayEvent = /*@__PURE__*/ (function () { - function ReplayEvent(time, value) { - this.time = time; - this.value = value; - } - return ReplayEvent; -}()); -//# sourceMappingURL=ReplaySubject.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Scheduler.js": -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Scheduler.js ***! - \*******************************************************/ -/*! exports provided: Scheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return Scheduler; }); -var Scheduler = /*@__PURE__*/ (function () { - function Scheduler(SchedulerAction, now) { - if (now === void 0) { - now = Scheduler.now; - } - this.SchedulerAction = SchedulerAction; - this.now = now; - } - Scheduler.prototype.schedule = function (work, delay, state) { - if (delay === void 0) { - delay = 0; - } - return new this.SchedulerAction(this, work).schedule(state, delay); - }; - Scheduler.now = function () { return Date.now(); }; - return Scheduler; -}()); - -//# sourceMappingURL=Scheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Subject.js": -/*!*****************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Subject.js ***! - \*****************************************************/ -/*! exports provided: SubjectSubscriber, Subject, AnonymousSubject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscriber", function() { return SubjectSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnonymousSubject", function() { return AnonymousSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SubjectSubscription */ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js"); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); -/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ - - - - - - - -var SubjectSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscriber, _super); - function SubjectSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - return _this; - } - return SubjectSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); - -var Subject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subject, _super); - function Subject() { - var _this = _super.call(this) || this; - _this.observers = []; - _this.closed = false; - _this.isStopped = false; - _this.hasError = false; - _this.thrownError = null; - return _this; - } - Subject.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__["rxSubscriber"]] = function () { - return new SubjectSubscriber(this); - }; - Subject.prototype.lift = function (operator) { - var subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - }; - Subject.prototype.next = function (value) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); - } - if (!this.isStopped) { - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].next(value); - } - } - }; - Subject.prototype.error = function (err) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); - } - this.hasError = true; - this.thrownError = err; - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].error(err); - } - this.observers.length = 0; - }; - Subject.prototype.complete = function () { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); - } - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].complete(); - } - this.observers.length = 0; - }; - Subject.prototype.unsubscribe = function () { - this.isStopped = true; - this.closed = true; - this.observers = null; - }; - Subject.prototype._trySubscribe = function (subscriber) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); - } - else { - return _super.prototype._trySubscribe.call(this, subscriber); - } - }; - Subject.prototype._subscribe = function (subscriber) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); - } - else if (this.hasError) { - subscriber.error(this.thrownError); - return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; - } - else if (this.isStopped) { - subscriber.complete(); - return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; - } - else { - this.observers.push(subscriber); - return new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__["SubjectSubscription"](this, subscriber); - } - }; - Subject.prototype.asObservable = function () { - var observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"](); - observable.source = this; - return observable; - }; - Subject.create = function (destination, source) { - return new AnonymousSubject(destination, source); - }; - return Subject; -}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"])); - -var AnonymousSubject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnonymousSubject, _super); - function AnonymousSubject(destination, source) { - var _this = _super.call(this) || this; - _this.destination = destination; - _this.source = source; - return _this; - } - AnonymousSubject.prototype.next = function (value) { - var destination = this.destination; - if (destination && destination.next) { - destination.next(value); - } - }; - AnonymousSubject.prototype.error = function (err) { - var destination = this.destination; - if (destination && destination.error) { - this.destination.error(err); - } - }; - AnonymousSubject.prototype.complete = function () { - var destination = this.destination; - if (destination && destination.complete) { - this.destination.complete(); - } - }; - AnonymousSubject.prototype._subscribe = function (subscriber) { - var source = this.source; - if (source) { - return this.source.subscribe(subscriber); - } - else { - return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; - } - }; - return AnonymousSubject; -}(Subject)); - -//# sourceMappingURL=Subject.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/SubjectSubscription.js ***! - \*****************************************************************/ -/*! exports provided: SubjectSubscription */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ - - -var SubjectSubscription = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscription, _super); - function SubjectSubscription(subject, subscriber) { - var _this = _super.call(this) || this; - _this.subject = subject; - _this.subscriber = subscriber; - _this.closed = false; - return _this; - } - SubjectSubscription.prototype.unsubscribe = function () { - if (this.closed) { - return; - } - this.closed = true; - var subject = this.subject; - var observers = subject.observers; - this.subject = null; - if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { - return; - } - var subscriberIndex = observers.indexOf(this.subscriber); - if (subscriberIndex !== -1) { - observers.splice(subscriberIndex, 1); - } - }; - return SubjectSubscription; -}(_Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"])); - -//# sourceMappingURL=SubjectSubscription.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Subscriber.js": -/*!********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Subscriber.js ***! - \********************************************************/ -/*! exports provided: Subscriber, SafeSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return Subscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeSubscriber", function() { return SafeSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Observer */ "./node_modules/rxjs/_esm5/internal/Observer.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); -/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ - - - - - - - -var Subscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subscriber, _super); - function Subscriber(destinationOrNext, error, complete) { - var _this = _super.call(this) || this; - _this.syncErrorValue = null; - _this.syncErrorThrown = false; - _this.syncErrorThrowable = false; - _this.isStopped = false; - switch (arguments.length) { - case 0: - _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]; - break; - case 1: - if (!destinationOrNext) { - _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]; - break; - } - if (typeof destinationOrNext === 'object') { - if (destinationOrNext instanceof Subscriber) { - _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; - _this.destination = destinationOrNext; - destinationOrNext.add(_this); - } - else { - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext); - } - break; - } - default: - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete); - break; - } - return _this; - } - Subscriber.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__["rxSubscriber"]] = function () { return this; }; - Subscriber.create = function (next, error, complete) { - var subscriber = new Subscriber(next, error, complete); - subscriber.syncErrorThrowable = false; - return subscriber; - }; - Subscriber.prototype.next = function (value) { - if (!this.isStopped) { - this._next(value); - } - }; - Subscriber.prototype.error = function (err) { - if (!this.isStopped) { - this.isStopped = true; - this._error(err); - } - }; - Subscriber.prototype.complete = function () { - if (!this.isStopped) { - this.isStopped = true; - this._complete(); - } - }; - Subscriber.prototype.unsubscribe = function () { - if (this.closed) { - return; - } - this.isStopped = true; - _super.prototype.unsubscribe.call(this); - }; - Subscriber.prototype._next = function (value) { - this.destination.next(value); - }; - Subscriber.prototype._error = function (err) { - this.destination.error(err); - this.unsubscribe(); - }; - Subscriber.prototype._complete = function () { - this.destination.complete(); - this.unsubscribe(); - }; - Subscriber.prototype._unsubscribeAndRecycle = function () { - var _parentOrParents = this._parentOrParents; - this._parentOrParents = null; - this.unsubscribe(); - this.closed = false; - this.isStopped = false; - this._parentOrParents = _parentOrParents; - return this; - }; - return Subscriber; -}(_Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"])); - -var SafeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SafeSubscriber, _super); - function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { - var _this = _super.call(this) || this; - _this._parentSubscriber = _parentSubscriber; - var next; - var context = _this; - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(observerOrNext)) { - next = observerOrNext; - } - else if (observerOrNext) { - next = observerOrNext.next; - error = observerOrNext.error; - complete = observerOrNext.complete; - if (observerOrNext !== _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]) { - context = Object.create(observerOrNext); - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(context.unsubscribe)) { - _this.add(context.unsubscribe.bind(context)); - } - context.unsubscribe = _this.unsubscribe.bind(_this); - } - } - _this._context = context; - _this._next = next; - _this._error = error; - _this._complete = complete; - return _this; - } - SafeSubscriber.prototype.next = function (value) { - if (!this.isStopped && this._next) { - var _parentSubscriber = this._parentSubscriber; - if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._next, value); - } - else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - var useDeprecatedSynchronousErrorHandling = _config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling; - if (this._error) { - if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._error, err); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, this._error, err); - this.unsubscribe(); - } - } - else if (!_parentSubscriber.syncErrorThrowable) { - this.unsubscribe(); - if (useDeprecatedSynchronousErrorHandling) { - throw err; - } - Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); - } - else { - if (useDeprecatedSynchronousErrorHandling) { - _parentSubscriber.syncErrorValue = err; - _parentSubscriber.syncErrorThrown = true; - } - else { - Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); - } - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.complete = function () { - var _this = this; - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - if (this._complete) { - var wrappedComplete = function () { return _this._complete.call(_this._context); }; - if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(wrappedComplete); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, wrappedComplete); - this.unsubscribe(); - } - } - else { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { - try { - fn.call(this._context, value); - } - catch (err) { - this.unsubscribe(); - if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { - throw err; - } - else { - Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); - } - } - }; - SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { - if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { - throw new Error('bad call'); - } - try { - fn.call(this._context, value); - } - catch (err) { - if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { - parent.syncErrorValue = err; - parent.syncErrorThrown = true; - return true; - } - else { - Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); - return true; - } - } - return false; - }; - SafeSubscriber.prototype._unsubscribe = function () { - var _parentSubscriber = this._parentSubscriber; - this._context = null; - this._parentSubscriber = null; - _parentSubscriber.unsubscribe(); - }; - return SafeSubscriber; -}(Subscriber)); - -//# sourceMappingURL=Subscriber.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/Subscription.js": -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/Subscription.js ***! - \**********************************************************/ -/*! exports provided: Subscription */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return Subscription; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/UnsubscriptionError */ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js"); -/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */ - - - - -var Subscription = /*@__PURE__*/ (function () { - function Subscription(unsubscribe) { - this.closed = false; - this._parentOrParents = null; - this._subscriptions = null; - if (unsubscribe) { - this._unsubscribe = unsubscribe; - } - } - Subscription.prototype.unsubscribe = function () { - var errors; - if (this.closed) { - return; - } - var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; - this.closed = true; - this._parentOrParents = null; - this._subscriptions = null; - if (_parentOrParents instanceof Subscription) { - _parentOrParents.remove(this); - } - else if (_parentOrParents !== null) { - for (var index = 0; index < _parentOrParents.length; ++index) { - var parent_1 = _parentOrParents[index]; - parent_1.remove(this); - } - } - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(_unsubscribe)) { - try { - _unsubscribe.call(this); - } - catch (e) { - errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"] ? flattenUnsubscriptionErrors(e.errors) : [e]; - } - } - if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(_subscriptions)) { - var index = -1; - var len = _subscriptions.length; - while (++index < len) { - var sub = _subscriptions[index]; - if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_1__["isObject"])(sub)) { - try { - sub.unsubscribe(); - } - catch (e) { - errors = errors || []; - if (e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) { - errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); - } - else { - errors.push(e); - } - } - } - } - } - if (errors) { - throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"](errors); - } - }; - Subscription.prototype.add = function (teardown) { - var subscription = teardown; - if (!teardown) { - return Subscription.EMPTY; - } - switch (typeof teardown) { - case 'function': - subscription = new Subscription(teardown); - case 'object': - if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') { - return subscription; - } - else if (this.closed) { - subscription.unsubscribe(); - return subscription; - } - else if (!(subscription instanceof Subscription)) { - var tmp = subscription; - subscription = new Subscription(); - subscription._subscriptions = [tmp]; - } - break; - default: { - throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); - } - } - var _parentOrParents = subscription._parentOrParents; - if (_parentOrParents === null) { - subscription._parentOrParents = this; - } - else if (_parentOrParents instanceof Subscription) { - if (_parentOrParents === this) { - return subscription; - } - subscription._parentOrParents = [_parentOrParents, this]; - } - else if (_parentOrParents.indexOf(this) === -1) { - _parentOrParents.push(this); - } - else { - return subscription; - } - var subscriptions = this._subscriptions; - if (subscriptions === null) { - this._subscriptions = [subscription]; - } - else { - subscriptions.push(subscription); - } - return subscription; - }; - Subscription.prototype.remove = function (subscription) { - var subscriptions = this._subscriptions; - if (subscriptions) { - var subscriptionIndex = subscriptions.indexOf(subscription); - if (subscriptionIndex !== -1) { - subscriptions.splice(subscriptionIndex, 1); - } - } - }; - Subscription.EMPTY = (function (empty) { - empty.closed = true; - return empty; - }(new Subscription())); - return Subscription; -}()); - -function flattenUnsubscriptionErrors(errors) { - return errors.reduce(function (errs, err) { return errs.concat((err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) ? err.errors : err); }, []); -} -//# sourceMappingURL=Subscription.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/config.js": -/*!****************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/config.js ***! - \****************************************************/ -/*! exports provided: config */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var _enable_super_gross_mode_that_will_cause_bad_things = false; -var config = { - Promise: undefined, - set useDeprecatedSynchronousErrorHandling(value) { - if (value) { - var error = /*@__PURE__*/ new Error(); - /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack); - } - else if (_enable_super_gross_mode_that_will_cause_bad_things) { - /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3'); - } - _enable_super_gross_mode_that_will_cause_bad_things = value; - }, - get useDeprecatedSynchronousErrorHandling() { - return _enable_super_gross_mode_that_will_cause_bad_things; - }, -}; -//# sourceMappingURL=config.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js": -/*!******************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js ***! - \******************************************************************************/ -/*! exports provided: ConnectableObservable, connectableObservableDescriptor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return ConnectableObservable; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectableObservableDescriptor", function() { return connectableObservableDescriptor; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../operators/refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); -/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */ - - - - - - -var ConnectableObservable = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableObservable, _super); - function ConnectableObservable(source, subjectFactory) { - var _this = _super.call(this) || this; - _this.source = source; - _this.subjectFactory = subjectFactory; - _this._refCount = 0; - _this._isComplete = false; - return _this; - } - ConnectableObservable.prototype._subscribe = function (subscriber) { - return this.getSubject().subscribe(subscriber); - }; - ConnectableObservable.prototype.getSubject = function () { - var subject = this._subject; - if (!subject || subject.isStopped) { - this._subject = this.subjectFactory(); - } - return this._subject; - }; - ConnectableObservable.prototype.connect = function () { - var connection = this._connection; - if (!connection) { - this._isComplete = false; - connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_4__["Subscription"](); - connection.add(this.source - .subscribe(new ConnectableSubscriber(this.getSubject(), this))); - if (connection.closed) { - this._connection = null; - connection = _Subscription__WEBPACK_IMPORTED_MODULE_4__["Subscription"].EMPTY; - } - } - return connection; - }; - ConnectableObservable.prototype.refCount = function () { - return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_5__["refCount"])()(this); - }; - return ConnectableObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); - -var connectableObservableDescriptor = /*@__PURE__*/ (function () { - var connectableProto = ConnectableObservable.prototype; - return { - operator: { value: null }, - _refCount: { value: 0, writable: true }, - _subject: { value: null, writable: true }, - _connection: { value: null, writable: true }, - _subscribe: { value: connectableProto._subscribe }, - _isComplete: { value: connectableProto._isComplete, writable: true }, - getSubject: { value: connectableProto.getSubject }, - connect: { value: connectableProto.connect }, - refCount: { value: connectableProto.refCount } - }; -})(); -var ConnectableSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableSubscriber, _super); - function ConnectableSubscriber(destination, connectable) { - var _this = _super.call(this, destination) || this; - _this.connectable = connectable; - return _this; - } - ConnectableSubscriber.prototype._error = function (err) { - this._unsubscribe(); - _super.prototype._error.call(this, err); - }; - ConnectableSubscriber.prototype._complete = function () { - this.connectable._isComplete = true; - this._unsubscribe(); - _super.prototype._complete.call(this); - }; - ConnectableSubscriber.prototype._unsubscribe = function () { - var connectable = this.connectable; - if (connectable) { - this.connectable = null; - var connection = connectable._connection; - connectable._refCount = 0; - connectable._subject = null; - connectable._connection = null; - if (connection) { - connection.unsubscribe(); - } - } - }; - return ConnectableSubscriber; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__["SubjectSubscriber"])); -var RefCountOperator = /*@__PURE__*/ (function () { - function RefCountOperator(connectable) { - this.connectable = connectable; - } - RefCountOperator.prototype.call = function (subscriber, source) { - var connectable = this.connectable; - connectable._refCount++; - var refCounter = new RefCountSubscriber(subscriber, connectable); - var subscription = source.subscribe(refCounter); - if (!refCounter.closed) { - refCounter.connection = connectable.connect(); - } - return subscription; - }; - return RefCountOperator; -}()); -var RefCountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super); - function RefCountSubscriber(destination, connectable) { - var _this = _super.call(this, destination) || this; - _this.connectable = connectable; - return _this; - } - RefCountSubscriber.prototype._unsubscribe = function () { - var connectable = this.connectable; - if (!connectable) { - this.connection = null; - return; - } - this.connectable = null; - var refCount = connectable._refCount; - if (refCount <= 0) { - this.connection = null; - return; - } - connectable._refCount = refCount - 1; - if (refCount > 1) { - this.connection = null; - return; - } - var connection = this.connection; - var sharedConnection = connectable._connection; - this.connection = null; - if (sharedConnection && (!connection || sharedConnection === connection)) { - sharedConnection.unsubscribe(); - } - }; - return RefCountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); -//# sourceMappingURL=ConnectableObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js": -/*!******************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js ***! - \******************************************************************************/ -/*! exports provided: SubscribeOnObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubscribeOnObservable", function() { return SubscribeOnObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/asap */ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js"); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); -/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ - - - - -var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscribeOnObservable, _super); - function SubscribeOnObservable(source, delayTime, scheduler) { - if (delayTime === void 0) { - delayTime = 0; - } - if (scheduler === void 0) { - scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; - } - var _this = _super.call(this) || this; - _this.source = source; - _this.delayTime = delayTime; - _this.scheduler = scheduler; - if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_3__["isNumeric"])(delayTime) || delayTime < 0) { - _this.delayTime = 0; - } - if (!scheduler || typeof scheduler.schedule !== 'function') { - _this.scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; - } - return _this; - } - SubscribeOnObservable.create = function (source, delay, scheduler) { - if (delay === void 0) { - delay = 0; - } - if (scheduler === void 0) { - scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; - } - return new SubscribeOnObservable(source, delay, scheduler); - }; - SubscribeOnObservable.dispatch = function (arg) { - var source = arg.source, subscriber = arg.subscriber; - return this.add(source.subscribe(subscriber)); - }; - SubscribeOnObservable.prototype._subscribe = function (subscriber) { - var delay = this.delayTime; - var source = this.source; - var scheduler = this.scheduler; - return scheduler.schedule(SubscribeOnObservable.dispatch, delay, { - source: source, subscriber: subscriber - }); - }; - return SubscribeOnObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"])); - -//# sourceMappingURL=SubscribeOnObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/bindCallback.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/bindCallback.js ***! - \*********************************************************************/ -/*! exports provided: bindCallback */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */ - - - - - - -function bindCallback(callbackFunc, resultSelector, scheduler) { - if (resultSelector) { - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(resultSelector)) { - scheduler = resultSelector; - } - else { - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_4__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); - }; - } - } - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var context = this; - var subject; - var params = { - context: context, - subject: subject, - callbackFunc: callbackFunc, - scheduler: scheduler, - }; - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - if (!scheduler) { - if (!subject) { - subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); - var handler = function () { - var innerArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - innerArgs[_i] = arguments[_i]; - } - subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); - subject.complete(); - }; - try { - callbackFunc.apply(context, args.concat([handler])); - } - catch (err) { - if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) { - subject.error(err); - } - else { - console.warn(err); - } - } - } - return subject.subscribe(subscriber); - } - else { - var state = { - args: args, subscriber: subscriber, params: params, - }; - return scheduler.schedule(dispatch, 0, state); - } - }); - }; -} -function dispatch(state) { - var _this = this; - var self = this; - var args = state.args, subscriber = state.subscriber, params = state.params; - var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler; - var subject = params.subject; - if (!subject) { - subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); - var handler = function () { - var innerArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - innerArgs[_i] = arguments[_i]; - } - var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; - _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject })); - }; - try { - callbackFunc.apply(context, args.concat([handler])); - } - catch (err) { - subject.error(err); - } - } - this.add(subject.subscribe(subscriber)); -} -function dispatchNext(state) { - var value = state.value, subject = state.subject; - subject.next(value); - subject.complete(); -} -function dispatchError(state) { - var err = state.err, subject = state.subject; - subject.error(err); -} -//# sourceMappingURL=bindCallback.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js": -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js ***! - \*************************************************************************/ -/*! exports provided: bindNodeCallback */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */ - - - - - - -function bindNodeCallback(callbackFunc, resultSelector, scheduler) { - if (resultSelector) { - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_4__["isScheduler"])(resultSelector)) { - scheduler = resultSelector; - } - else { - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_5__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); - }; - } - } - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var params = { - subject: undefined, - args: args, - callbackFunc: callbackFunc, - scheduler: scheduler, - context: this, - }; - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var context = params.context; - var subject = params.subject; - if (!scheduler) { - if (!subject) { - subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); - var handler = function () { - var innerArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - innerArgs[_i] = arguments[_i]; - } - var err = innerArgs.shift(); - if (err) { - subject.error(err); - return; - } - subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); - subject.complete(); - }; - try { - callbackFunc.apply(context, args.concat([handler])); - } - catch (err) { - if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) { - subject.error(err); - } - else { - console.warn(err); - } - } - } - return subject.subscribe(subscriber); - } - else { - return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context }); - } - }); - }; -} -function dispatch(state) { - var _this = this; - var params = state.params, subscriber = state.subscriber, context = state.context; - var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler; - var subject = params.subject; - if (!subject) { - subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); - var handler = function () { - var innerArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - innerArgs[_i] = arguments[_i]; - } - var err = innerArgs.shift(); - if (err) { - _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject })); - } - else { - var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; - _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject })); - } - }; - try { - callbackFunc.apply(context, args.concat([handler])); - } - catch (err) { - this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject })); - } - } - this.add(subject.subscribe(subscriber)); -} -function dispatchNext(arg) { - var value = arg.value, subject = arg.subject; - subject.next(value); - subject.complete(); -} -function dispatchError(arg) { - var err = arg.err, subject = arg.subject; - subject.error(err); -} -//# sourceMappingURL=bindNodeCallback.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/combineLatest.js ***! - \**********************************************************************/ -/*! exports provided: combineLatest, CombineLatestOperator, CombineLatestSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestOperator", function() { return CombineLatestOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestSubscriber", function() { return CombineLatestSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); -/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */ - - - - - - -var NONE = {}; -function combineLatest() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - var resultSelector = null; - var scheduler = null; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(observables[observables.length - 1])) { - scheduler = observables.pop(); - } - if (typeof observables[observables.length - 1] === 'function') { - resultSelector = observables.pop(); - } - if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(observables[0])) { - observables = observables[0]; - } - return Object(_fromArray__WEBPACK_IMPORTED_MODULE_5__["fromArray"])(observables, scheduler).lift(new CombineLatestOperator(resultSelector)); -} -var CombineLatestOperator = /*@__PURE__*/ (function () { - function CombineLatestOperator(resultSelector) { - this.resultSelector = resultSelector; - } - CombineLatestOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector)); - }; - return CombineLatestOperator; -}()); - -var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CombineLatestSubscriber, _super); - function CombineLatestSubscriber(destination, resultSelector) { - var _this = _super.call(this, destination) || this; - _this.resultSelector = resultSelector; - _this.active = 0; - _this.values = []; - _this.observables = []; - return _this; - } - CombineLatestSubscriber.prototype._next = function (observable) { - this.values.push(NONE); - this.observables.push(observable); - }; - CombineLatestSubscriber.prototype._complete = function () { - var observables = this.observables; - var len = observables.length; - if (len === 0) { - this.destination.complete(); - } - else { - this.active = len; - this.toRespond = len; - for (var i = 0; i < len; i++) { - var observable = observables[i]; - this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, observable, i)); - } - } - }; - CombineLatestSubscriber.prototype.notifyComplete = function (unused) { - if ((this.active -= 1) === 0) { - this.destination.complete(); - } - }; - CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - var values = this.values; - var oldVal = values[outerIndex]; - var toRespond = !this.toRespond - ? 0 - : oldVal === NONE ? --this.toRespond : this.toRespond; - values[outerIndex] = innerValue; - if (toRespond === 0) { - if (this.resultSelector) { - this._tryResultSelector(values); - } - else { - this.destination.next(values.slice()); - } - } - }; - CombineLatestSubscriber.prototype._tryResultSelector = function (values) { - var result; - try { - result = this.resultSelector.apply(this, values); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - }; - return CombineLatestSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); - -//# sourceMappingURL=combineLatest.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/concat.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/concat.js ***! - \***************************************************************/ -/*! exports provided: concat */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../operators/concatAll */ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js"); -/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */ - - -function concat() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_1__["concatAll"])()(_of__WEBPACK_IMPORTED_MODULE_0__["of"].apply(void 0, observables)); -} -//# sourceMappingURL=concat.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/defer.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/defer.js ***! - \**************************************************************/ -/*! exports provided: defer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ - - - -function defer(observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var input; - try { - input = observableFactory(); - } - catch (err) { - subscriber.error(err); - return undefined; - } - var source = input ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(input) : Object(_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])(); - return source.subscribe(subscriber); - }); -} -//# sourceMappingURL=defer.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js": -/*!***************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js ***! - \***************************************************************************/ -/*! exports provided: ajaxGet, ajaxPost, ajaxDelete, ajaxPut, ajaxPatch, ajaxGetJSON, AjaxObservable, AjaxSubscriber, AjaxResponse, AjaxError, AjaxTimeoutError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxGet", function() { return ajaxGet; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPost", function() { return ajaxPost; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxDelete", function() { return ajaxDelete; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPut", function() { return ajaxPut; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPatch", function() { return ajaxPatch; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxGetJSON", function() { return ajaxGetJSON; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxObservable", function() { return AjaxObservable; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxSubscriber", function() { return AjaxSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxResponse", function() { return AjaxResponse; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxError", function() { return AjaxError; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxTimeoutError", function() { return AjaxTimeoutError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_root__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/root */ "./node_modules/rxjs/_esm5/internal/util/root.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START tslib,_.._util_root,_.._Observable,_.._Subscriber,_.._operators_map PURE_IMPORTS_END */ - - - - - -function getCORSRequest() { - if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest) { - return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest(); - } - else if (!!_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest) { - return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest(); - } - else { - throw new Error('CORS is not supported by your browser'); - } -} -function getXMLHttpRequest() { - if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest) { - return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest(); - } - else { - var progId = void 0; - try { - var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; - for (var i = 0; i < 3; i++) { - try { - progId = progIds[i]; - if (new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].ActiveXObject(progId)) { - break; - } - } - catch (e) { - } - } - return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].ActiveXObject(progId); - } - catch (e) { - throw new Error('XMLHttpRequest is not supported by your browser'); - } - } -} -function ajaxGet(url, headers) { - if (headers === void 0) { - headers = null; - } - return new AjaxObservable({ method: 'GET', url: url, headers: headers }); -} -function ajaxPost(url, body, headers) { - return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers }); -} -function ajaxDelete(url, headers) { - return new AjaxObservable({ method: 'DELETE', url: url, headers: headers }); -} -function ajaxPut(url, body, headers) { - return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers }); -} -function ajaxPatch(url, body, headers) { - return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers }); -} -var mapResponse = /*@__PURE__*/ Object(_operators_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (x, index) { return x.response; }); -function ajaxGetJSON(url, headers) { - return mapResponse(new AjaxObservable({ - method: 'GET', - url: url, - responseType: 'json', - headers: headers - })); -} -var AjaxObservable = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AjaxObservable, _super); - function AjaxObservable(urlOrRequest) { - var _this = _super.call(this) || this; - var request = { - async: true, - createXHR: function () { - return this.crossDomain ? getCORSRequest() : getXMLHttpRequest(); - }, - crossDomain: true, - withCredentials: false, - headers: {}, - method: 'GET', - responseType: 'json', - timeout: 0 - }; - if (typeof urlOrRequest === 'string') { - request.url = urlOrRequest; - } - else { - for (var prop in urlOrRequest) { - if (urlOrRequest.hasOwnProperty(prop)) { - request[prop] = urlOrRequest[prop]; - } - } - } - _this.request = request; - return _this; - } - AjaxObservable.prototype._subscribe = function (subscriber) { - return new AjaxSubscriber(subscriber, this.request); - }; - AjaxObservable.create = (function () { - var create = function (urlOrRequest) { - return new AjaxObservable(urlOrRequest); - }; - create.get = ajaxGet; - create.post = ajaxPost; - create.delete = ajaxDelete; - create.put = ajaxPut; - create.patch = ajaxPatch; - create.getJSON = ajaxGetJSON; - return create; - })(); - return AjaxObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); - -var AjaxSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AjaxSubscriber, _super); - function AjaxSubscriber(destination, request) { - var _this = _super.call(this, destination) || this; - _this.request = request; - _this.done = false; - var headers = request.headers = request.headers || {}; - if (!request.crossDomain && !_this.getHeader(headers, 'X-Requested-With')) { - headers['X-Requested-With'] = 'XMLHttpRequest'; - } - var contentTypeHeader = _this.getHeader(headers, 'Content-Type'); - if (!contentTypeHeader && !(_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData && request.body instanceof _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData) && typeof request.body !== 'undefined') { - headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; - } - request.body = _this.serializeBody(request.body, _this.getHeader(request.headers, 'Content-Type')); - _this.send(); - return _this; - } - AjaxSubscriber.prototype.next = function (e) { - this.done = true; - var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination; - var result; - try { - result = new AjaxResponse(e, xhr, request); - } - catch (err) { - return destination.error(err); - } - destination.next(result); - }; - AjaxSubscriber.prototype.send = function () { - var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body; - try { - var xhr = this.xhr = request.createXHR(); - this.setupEvents(xhr, request); - if (user) { - xhr.open(method, url, async, user, password); - } - else { - xhr.open(method, url, async); - } - if (async) { - xhr.timeout = request.timeout; - xhr.responseType = request.responseType; - } - if ('withCredentials' in xhr) { - xhr.withCredentials = !!request.withCredentials; - } - this.setHeaders(xhr, headers); - if (body) { - xhr.send(body); - } - else { - xhr.send(); - } - } - catch (err) { - this.error(err); - } - }; - AjaxSubscriber.prototype.serializeBody = function (body, contentType) { - if (!body || typeof body === 'string') { - return body; - } - else if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData && body instanceof _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData) { - return body; - } - if (contentType) { - var splitIndex = contentType.indexOf(';'); - if (splitIndex !== -1) { - contentType = contentType.substring(0, splitIndex); - } - } - switch (contentType) { - case 'application/x-www-form-urlencoded': - return Object.keys(body).map(function (key) { return encodeURIComponent(key) + "=" + encodeURIComponent(body[key]); }).join('&'); - case 'application/json': - return JSON.stringify(body); - default: - return body; - } - }; - AjaxSubscriber.prototype.setHeaders = function (xhr, headers) { - for (var key in headers) { - if (headers.hasOwnProperty(key)) { - xhr.setRequestHeader(key, headers[key]); - } - } - }; - AjaxSubscriber.prototype.getHeader = function (headers, headerName) { - for (var key in headers) { - if (key.toLowerCase() === headerName.toLowerCase()) { - return headers[key]; - } - } - return undefined; - }; - AjaxSubscriber.prototype.setupEvents = function (xhr, request) { - var progressSubscriber = request.progressSubscriber; - function xhrTimeout(e) { - var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; - if (progressSubscriber) { - progressSubscriber.error(e); - } - var error; - try { - error = new AjaxTimeoutError(this, request); - } - catch (err) { - error = err; - } - subscriber.error(error); - } - xhr.ontimeout = xhrTimeout; - xhrTimeout.request = request; - xhrTimeout.subscriber = this; - xhrTimeout.progressSubscriber = progressSubscriber; - if (xhr.upload && 'withCredentials' in xhr) { - if (progressSubscriber) { - var xhrProgress_1; - xhrProgress_1 = function (e) { - var progressSubscriber = xhrProgress_1.progressSubscriber; - progressSubscriber.next(e); - }; - if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest) { - xhr.onprogress = xhrProgress_1; - } - else { - xhr.upload.onprogress = xhrProgress_1; - } - xhrProgress_1.progressSubscriber = progressSubscriber; - } - var xhrError_1; - xhrError_1 = function (e) { - var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request; - if (progressSubscriber) { - progressSubscriber.error(e); - } - var error; - try { - error = new AjaxError('ajax error', this, request); - } - catch (err) { - error = err; - } - subscriber.error(error); - }; - xhr.onerror = xhrError_1; - xhrError_1.request = request; - xhrError_1.subscriber = this; - xhrError_1.progressSubscriber = progressSubscriber; - } - function xhrReadyStateChange(e) { - return; - } - xhr.onreadystatechange = xhrReadyStateChange; - xhrReadyStateChange.subscriber = this; - xhrReadyStateChange.progressSubscriber = progressSubscriber; - xhrReadyStateChange.request = request; - function xhrLoad(e) { - var _a = xhrLoad, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; - if (this.readyState === 4) { - var status_1 = this.status === 1223 ? 204 : this.status; - var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response); - if (status_1 === 0) { - status_1 = response ? 200 : 0; - } - if (status_1 < 400) { - if (progressSubscriber) { - progressSubscriber.complete(); - } - subscriber.next(e); - subscriber.complete(); - } - else { - if (progressSubscriber) { - progressSubscriber.error(e); - } - var error = void 0; - try { - error = new AjaxError('ajax error ' + status_1, this, request); - } - catch (err) { - error = err; - } - subscriber.error(error); - } - } - } - xhr.onload = xhrLoad; - xhrLoad.subscriber = this; - xhrLoad.progressSubscriber = progressSubscriber; - xhrLoad.request = request; - }; - AjaxSubscriber.prototype.unsubscribe = function () { - var _a = this, done = _a.done, xhr = _a.xhr; - if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') { - xhr.abort(); - } - _super.prototype.unsubscribe.call(this); - }; - return AjaxSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); - -var AjaxResponse = /*@__PURE__*/ (function () { - function AjaxResponse(originalEvent, xhr, request) { - this.originalEvent = originalEvent; - this.xhr = xhr; - this.request = request; - this.status = xhr.status; - this.responseType = xhr.responseType || request.responseType; - this.response = parseXhrResponse(this.responseType, xhr); - } - return AjaxResponse; -}()); - -var AjaxErrorImpl = /*@__PURE__*/ (function () { - function AjaxErrorImpl(message, xhr, request) { - Error.call(this); - this.message = message; - this.name = 'AjaxError'; - this.xhr = xhr; - this.request = request; - this.status = xhr.status; - this.responseType = xhr.responseType || request.responseType; - this.response = parseXhrResponse(this.responseType, xhr); - return this; - } - AjaxErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return AjaxErrorImpl; -})(); -var AjaxError = AjaxErrorImpl; -function parseJson(xhr) { - if ('response' in xhr) { - return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null'); - } - else { - return JSON.parse(xhr.responseText || 'null'); - } -} -function parseXhrResponse(responseType, xhr) { - switch (responseType) { - case 'json': - return parseJson(xhr); - case 'xml': - return xhr.responseXML; - case 'text': - default: - return ('response' in xhr) ? xhr.response : xhr.responseText; - } -} -function AjaxTimeoutErrorImpl(xhr, request) { - AjaxError.call(this, 'ajax timeout', xhr, request); - this.name = 'AjaxTimeoutError'; - return this; -} -var AjaxTimeoutError = AjaxTimeoutErrorImpl; -//# sourceMappingURL=AjaxObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js ***! - \*****************************************************************/ -/*! exports provided: ajax */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajax", function() { return ajax; }); -/* harmony import */ var _AjaxObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AjaxObservable */ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js"); -/** PURE_IMPORTS_START _AjaxObservable PURE_IMPORTS_END */ - -var ajax = /*@__PURE__*/ (function () { return _AjaxObservable__WEBPACK_IMPORTED_MODULE_0__["AjaxObservable"].create; })(); -//# sourceMappingURL=ajax.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/empty.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/empty.js ***! - \**************************************************************/ -/*! exports provided: EMPTY, empty */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return EMPTY; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ - -var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); }); -function empty(scheduler) { - return scheduler ? emptyScheduled(scheduler) : EMPTY; -} -function emptyScheduled(scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); }); -} -//# sourceMappingURL=empty.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/forkJoin.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/forkJoin.js ***! - \*****************************************************************/ -/*! exports provided: forkJoin */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return forkJoin; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */ - - - - - -function forkJoin() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - if (sources.length === 1) { - var first_1 = sources[0]; - if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(first_1)) { - return forkJoinInternal(first_1, null); - } - if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_3__["isObject"])(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) { - var keys = Object.keys(first_1); - return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys); - } - } - if (typeof sources[sources.length - 1] === 'function') { - var resultSelector_1 = sources.pop(); - sources = (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(sources[0])) ? sources[0] : sources; - return forkJoinInternal(sources, null).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return resultSelector_1.apply(void 0, args); })); - } - return forkJoinInternal(sources, null); -} -function forkJoinInternal(sources, keys) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var len = sources.length; - if (len === 0) { - subscriber.complete(); - return; - } - var values = new Array(len); - var completed = 0; - var emitted = 0; - var _loop_1 = function (i) { - var source = Object(_from__WEBPACK_IMPORTED_MODULE_4__["from"])(sources[i]); - var hasValue = false; - subscriber.add(source.subscribe({ - next: function (value) { - if (!hasValue) { - hasValue = true; - emitted++; - } - values[i] = value; - }, - error: function (err) { return subscriber.error(err); }, - complete: function () { - completed++; - if (completed === len || !hasValue) { - if (emitted === len) { - subscriber.next(keys ? - keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) : - values); - } - subscriber.complete(); - } - } - })); - }; - for (var i = 0; i < len; i++) { - _loop_1(i); - } - }); -} -//# sourceMappingURL=forkJoin.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/from.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/from.js ***! - \*************************************************************/ -/*! exports provided: from */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduled */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js"); -/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */ - - - -function from(input, scheduler) { - if (!scheduler) { - if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) { - return input; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(input)); - } - else { - return Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__["scheduled"])(input, scheduler); - } -} -//# sourceMappingURL=from.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/fromArray.js ***! - \******************************************************************/ -/*! exports provided: fromArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToArray */ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js"); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); -/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */ - - - -function fromArray(input, scheduler) { - if (!scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__["subscribeToArray"])(input)); - } - else { - return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler); - } -} -//# sourceMappingURL=fromArray.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEvent.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/fromEvent.js ***! - \******************************************************************/ -/*! exports provided: fromEvent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return fromEvent; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ - - - - -var toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })(); -function fromEvent(target, eventName, options, resultSelector) { - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(options)) { - resultSelector = options; - options = undefined; - } - if (resultSelector) { - return fromEvent(target, eventName, options).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - function handler(e) { - if (arguments.length > 1) { - subscriber.next(Array.prototype.slice.call(arguments)); - } - else { - subscriber.next(e); - } - } - setupSubscription(target, eventName, handler, subscriber, options); - }); -} -function setupSubscription(sourceObj, eventName, handler, subscriber, options) { - var unsubscribe; - if (isEventTarget(sourceObj)) { - var source_1 = sourceObj; - sourceObj.addEventListener(eventName, handler, options); - unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); }; - } - else if (isJQueryStyleEventEmitter(sourceObj)) { - var source_2 = sourceObj; - sourceObj.on(eventName, handler); - unsubscribe = function () { return source_2.off(eventName, handler); }; - } - else if (isNodeStyleEventEmitter(sourceObj)) { - var source_3 = sourceObj; - sourceObj.addListener(eventName, handler); - unsubscribe = function () { return source_3.removeListener(eventName, handler); }; - } - else if (sourceObj && sourceObj.length) { - for (var i = 0, len = sourceObj.length; i < len; i++) { - setupSubscription(sourceObj[i], eventName, handler, subscriber, options); - } - } - else { - throw new TypeError('Invalid event target'); - } - subscriber.add(unsubscribe); -} -function isNodeStyleEventEmitter(sourceObj) { - return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function'; -} -function isJQueryStyleEventEmitter(sourceObj) { - return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function'; -} -function isEventTarget(sourceObj) { - return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function'; -} -//# sourceMappingURL=fromEvent.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js": -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js ***! - \*************************************************************************/ -/*! exports provided: fromEventPattern */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return fromEventPattern; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ - - - - -function fromEventPattern(addHandler, removeHandler, resultSelector) { - if (resultSelector) { - return fromEventPattern(addHandler, removeHandler).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var handler = function () { - var e = []; - for (var _i = 0; _i < arguments.length; _i++) { - e[_i] = arguments[_i]; - } - return subscriber.next(e.length === 1 ? e[0] : e); - }; - var retValue; - try { - retValue = addHandler(handler); - } - catch (err) { - subscriber.error(err); - return undefined; - } - if (!Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(removeHandler)) { - return undefined; - } - return function () { return removeHandler(handler, retValue); }; - }); -} -//# sourceMappingURL=fromEventPattern.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/generate.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/generate.js ***! - \*****************************************************************/ -/*! exports provided: generate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return generate; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ - - - -function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) { - var resultSelector; - var initialState; - if (arguments.length == 1) { - var options = initialStateOrOptions; - initialState = options.initialState; - condition = options.condition; - iterate = options.iterate; - resultSelector = options.resultSelector || _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]; - scheduler = options.scheduler; - } - else if (resultSelectorOrObservable === undefined || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__["isScheduler"])(resultSelectorOrObservable)) { - initialState = initialStateOrOptions; - resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]; - scheduler = resultSelectorOrObservable; - } - else { - initialState = initialStateOrOptions; - resultSelector = resultSelectorOrObservable; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var state = initialState; - if (scheduler) { - return scheduler.schedule(dispatch, 0, { - subscriber: subscriber, - iterate: iterate, - condition: condition, - resultSelector: resultSelector, - state: state - }); - } - do { - if (condition) { - var conditionResult = void 0; - try { - conditionResult = condition(state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - if (!conditionResult) { - subscriber.complete(); - break; - } - } - var value = void 0; - try { - value = resultSelector(state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - subscriber.next(value); - if (subscriber.closed) { - break; - } - try { - state = iterate(state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - } while (true); - return undefined; - }); -} -function dispatch(state) { - var subscriber = state.subscriber, condition = state.condition; - if (subscriber.closed) { - return undefined; - } - if (state.needIterate) { - try { - state.state = state.iterate(state.state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - } - else { - state.needIterate = true; - } - if (condition) { - var conditionResult = void 0; - try { - conditionResult = condition(state.state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - if (!conditionResult) { - subscriber.complete(); - return undefined; - } - if (subscriber.closed) { - return undefined; - } - } - var value; - try { - value = state.resultSelector(state.state); - } - catch (err) { - subscriber.error(err); - return undefined; - } - if (subscriber.closed) { - return undefined; - } - subscriber.next(value); - if (subscriber.closed) { - return undefined; - } - return this.schedule(state); -} -//# sourceMappingURL=generate.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/iif.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/iif.js ***! - \************************************************************/ -/*! exports provided: iif */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return iif; }); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */ - - -function iif(condition, trueResult, falseResult) { - if (trueResult === void 0) { - trueResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]; - } - if (falseResult === void 0) { - falseResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]; - } - return Object(_defer__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { return condition() ? trueResult : falseResult; }); -} -//# sourceMappingURL=iif.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/interval.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/interval.js ***! - \*****************************************************************/ -/*! exports provided: interval */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); -/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ - - - -function interval(period, scheduler) { - if (period === void 0) { - period = 0; - } - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - } - if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(period) || period < 0) { - period = 0; - } - if (!scheduler || typeof scheduler.schedule !== 'function') { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period })); - return subscriber; - }); -} -function dispatch(state) { - var subscriber = state.subscriber, counter = state.counter, period = state.period; - subscriber.next(counter); - this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period); -} -//# sourceMappingURL=interval.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/merge.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/merge.js ***! - \**************************************************************/ -/*! exports provided: merge */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); -/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */ - - - - -function merge() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - var concurrent = Number.POSITIVE_INFINITY; - var scheduler = null; - var last = observables[observables.length - 1]; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(last)) { - scheduler = observables.pop(); - if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') { - concurrent = observables.pop(); - } - } - else if (typeof last === 'number') { - concurrent = observables.pop(); - } - if (scheduler === null && observables.length === 1 && observables[0] instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) { - return observables[0]; - } - return Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__["mergeAll"])(concurrent)(Object(_fromArray__WEBPACK_IMPORTED_MODULE_3__["fromArray"])(observables, scheduler)); -} -//# sourceMappingURL=merge.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/never.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/never.js ***! - \**************************************************************/ -/*! exports provided: NEVER, never */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return NEVER; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); -/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ - - -var NEVER = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](_util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]); -function never() { - return NEVER; -} -//# sourceMappingURL=never.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/of.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/of.js ***! - \***********************************************************/ -/*! exports provided: of */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return of; }); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); -/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */ - - - -function of() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = args[args.length - 1]; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__["isScheduler"])(scheduler)) { - args.pop(); - return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(args, scheduler); - } - else { - return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(args); - } -} -//# sourceMappingURL=of.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js": -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js ***! - \**************************************************************************/ -/*! exports provided: onErrorResumeNext */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */ - - - - -function onErrorResumeNext() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - if (sources.length === 0) { - return _empty__WEBPACK_IMPORTED_MODULE_3__["EMPTY"]; - } - var first = sources[0], remainder = sources.slice(1); - if (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(first)) { - return onErrorResumeNext.apply(void 0, first); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); }; - return Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(first).subscribe({ - next: function (value) { subscriber.next(value); }, - error: subNext, - complete: subNext, - }); - }); -} -//# sourceMappingURL=onErrorResumeNext.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/pairs.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/pairs.js ***! - \**************************************************************/ -/*! exports provided: pairs, dispatch */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ - - -function pairs(obj, scheduler) { - if (!scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var keys = Object.keys(obj); - for (var i = 0; i < keys.length && !subscriber.closed; i++) { - var key = keys[i]; - if (obj.hasOwnProperty(key)) { - subscriber.next([key, obj[key]]); - } - } - subscriber.complete(); - }); - } - else { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var keys = Object.keys(obj); - var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj })); - return subscription; - }); - } -} -function dispatch(state) { - var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj; - if (!subscriber.closed) { - if (index < keys.length) { - var key = keys[index]; - subscriber.next([key, obj[key]]); - subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj })); - } - else { - subscriber.complete(); - } - } -} -//# sourceMappingURL=pairs.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/partition.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/partition.js ***! - \******************************************************************/ -/*! exports provided: partition */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/not */ "./node_modules/rxjs/_esm5/internal/util/not.js"); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); -/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */ - - - - -function partition(source, predicate, thisArg) { - return [ - Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(predicate, thisArg)(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source))), - Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source))) - ]; -} -//# sourceMappingURL=partition.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/race.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/race.js ***! - \*************************************************************/ -/*! exports provided: race, RaceOperator, RaceSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceOperator", function() { return RaceOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceSubscriber", function() { return RaceSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - - -function race() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - if (observables.length === 1) { - if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(observables[0])) { - observables = observables[0]; - } - else { - return observables[0]; - } - } - return Object(_fromArray__WEBPACK_IMPORTED_MODULE_2__["fromArray"])(observables, undefined).lift(new RaceOperator()); -} -var RaceOperator = /*@__PURE__*/ (function () { - function RaceOperator() { - } - RaceOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new RaceSubscriber(subscriber)); - }; - return RaceOperator; -}()); - -var RaceSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RaceSubscriber, _super); - function RaceSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.hasFirst = false; - _this.observables = []; - _this.subscriptions = []; - return _this; - } - RaceSubscriber.prototype._next = function (observable) { - this.observables.push(observable); - }; - RaceSubscriber.prototype._complete = function () { - var observables = this.observables; - var len = observables.length; - if (len === 0) { - this.destination.complete(); - } - else { - for (var i = 0; i < len && !this.hasFirst; i++) { - var observable = observables[i]; - var subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, observable, i); - if (this.subscriptions) { - this.subscriptions.push(subscription); - } - this.add(subscription); - } - this.observables = null; - } - }; - RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - if (!this.hasFirst) { - this.hasFirst = true; - for (var i = 0; i < this.subscriptions.length; i++) { - if (i !== outerIndex) { - var subscription = this.subscriptions[i]; - subscription.unsubscribe(); - this.remove(subscription); - } - } - this.subscriptions = null; - } - this.destination.next(innerValue); - }; - return RaceSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); - -//# sourceMappingURL=race.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/range.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/range.js ***! - \**************************************************************/ -/*! exports provided: range, dispatch */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ - -function range(start, count, scheduler) { - if (start === void 0) { - start = 0; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - if (count === undefined) { - count = start; - start = 0; - } - var index = 0; - var current = start; - if (scheduler) { - return scheduler.schedule(dispatch, 0, { - index: index, count: count, start: start, subscriber: subscriber - }); - } - else { - do { - if (index++ >= count) { - subscriber.complete(); - break; - } - subscriber.next(current++); - if (subscriber.closed) { - break; - } - } while (true); - } - return undefined; - }); -} -function dispatch(state) { - var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber; - if (index >= count) { - subscriber.complete(); - return; - } - subscriber.next(start); - if (subscriber.closed) { - return; - } - state.index = index + 1; - state.start = start + 1; - this.schedule(state); -} -//# sourceMappingURL=range.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/throwError.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/throwError.js ***! - \*******************************************************************/ -/*! exports provided: throwError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ - -function throwError(error, scheduler) { - if (!scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.error(error); }); - } - else { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); }); - } -} -function dispatch(_a) { - var error = _a.error, subscriber = _a.subscriber; - subscriber.error(error); -} -//# sourceMappingURL=throwError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/timer.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/timer.js ***! - \**************************************************************/ -/*! exports provided: timer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ - - - - -function timer(dueTime, periodOrScheduler, scheduler) { - if (dueTime === void 0) { - dueTime = 0; - } - var period = -1; - if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(periodOrScheduler)) { - period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler); - } - else if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(periodOrScheduler)) { - scheduler = periodOrScheduler; - } - if (!Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(scheduler)) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var due = Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(dueTime) - ? dueTime - : (+dueTime - scheduler.now()); - return scheduler.schedule(dispatch, due, { - index: 0, period: period, subscriber: subscriber - }); - }); -} -function dispatch(state) { - var index = state.index, period = state.period, subscriber = state.subscriber; - subscriber.next(index); - if (subscriber.closed) { - return; - } - else if (period === -1) { - return subscriber.complete(); - } - state.index = index + 1; - this.schedule(state, period); -} -//# sourceMappingURL=timer.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/using.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/using.js ***! - \**************************************************************/ -/*! exports provided: using */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ - - - -function using(resourceFactory, observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var resource; - try { - resource = resourceFactory(); - } - catch (err) { - subscriber.error(err); - return undefined; - } - var result; - try { - result = observableFactory(resource); - } - catch (err) { - subscriber.error(err); - return undefined; - } - var source = result ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__["EMPTY"]; - var subscription = source.subscribe(subscriber); - return function () { - subscription.unsubscribe(); - if (resource) { - resource.unsubscribe(); - } - }; - }); -} -//# sourceMappingURL=using.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/observable/zip.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/observable/zip.js ***! - \************************************************************/ -/*! exports provided: zip, ZipOperator, ZipSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipOperator", function() { return ZipOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipSubscriber", function() { return ZipSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); -/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */ - - - - - - - -function zip() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - var resultSelector = observables[observables.length - 1]; - if (typeof resultSelector === 'function') { - observables.pop(); - } - return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(observables, undefined).lift(new ZipOperator(resultSelector)); -} -var ZipOperator = /*@__PURE__*/ (function () { - function ZipOperator(resultSelector) { - this.resultSelector = resultSelector; - } - ZipOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector)); - }; - return ZipOperator; -}()); - -var ZipSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipSubscriber, _super); - function ZipSubscriber(destination, resultSelector, values) { - if (values === void 0) { - values = Object.create(null); - } - var _this = _super.call(this, destination) || this; - _this.iterators = []; - _this.active = 0; - _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null; - _this.values = values; - return _this; - } - ZipSubscriber.prototype._next = function (value) { - var iterators = this.iterators; - if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(value)) { - iterators.push(new StaticArrayIterator(value)); - } - else if (typeof value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] === 'function') { - iterators.push(new StaticIterator(value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]]())); - } - else { - iterators.push(new ZipBufferIterator(this.destination, this, value)); - } - }; - ZipSubscriber.prototype._complete = function () { - var iterators = this.iterators; - var len = iterators.length; - this.unsubscribe(); - if (len === 0) { - this.destination.complete(); - return; - } - this.active = len; - for (var i = 0; i < len; i++) { - var iterator = iterators[i]; - if (iterator.stillUnsubscribed) { - var destination = this.destination; - destination.add(iterator.subscribe(iterator, i)); - } - else { - this.active--; - } - } - }; - ZipSubscriber.prototype.notifyInactive = function () { - this.active--; - if (this.active === 0) { - this.destination.complete(); - } - }; - ZipSubscriber.prototype.checkIterators = function () { - var iterators = this.iterators; - var len = iterators.length; - var destination = this.destination; - for (var i = 0; i < len; i++) { - var iterator = iterators[i]; - if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) { - return; - } - } - var shouldComplete = false; - var args = []; - for (var i = 0; i < len; i++) { - var iterator = iterators[i]; - var result = iterator.next(); - if (iterator.hasCompleted()) { - shouldComplete = true; - } - if (result.done) { - destination.complete(); - return; - } - args.push(result.value); - } - if (this.resultSelector) { - this._tryresultSelector(args); - } - else { - destination.next(args); - } - if (shouldComplete) { - destination.complete(); - } - }; - ZipSubscriber.prototype._tryresultSelector = function (args) { - var result; - try { - result = this.resultSelector.apply(this, args); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - }; - return ZipSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); - -var StaticIterator = /*@__PURE__*/ (function () { - function StaticIterator(iterator) { - this.iterator = iterator; - this.nextResult = iterator.next(); - } - StaticIterator.prototype.hasValue = function () { - return true; - }; - StaticIterator.prototype.next = function () { - var result = this.nextResult; - this.nextResult = this.iterator.next(); - return result; - }; - StaticIterator.prototype.hasCompleted = function () { - var nextResult = this.nextResult; - return nextResult && nextResult.done; - }; - return StaticIterator; -}()); -var StaticArrayIterator = /*@__PURE__*/ (function () { - function StaticArrayIterator(array) { - this.array = array; - this.index = 0; - this.length = 0; - this.length = array.length; - } - StaticArrayIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] = function () { - return this; - }; - StaticArrayIterator.prototype.next = function (value) { - var i = this.index++; - var array = this.array; - return i < this.length ? { value: array[i], done: false } : { value: null, done: true }; - }; - StaticArrayIterator.prototype.hasValue = function () { - return this.array.length > this.index; - }; - StaticArrayIterator.prototype.hasCompleted = function () { - return this.array.length === this.index; - }; - return StaticArrayIterator; -}()); -var ZipBufferIterator = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipBufferIterator, _super); - function ZipBufferIterator(destination, parent, observable) { - var _this = _super.call(this, destination) || this; - _this.parent = parent; - _this.observable = observable; - _this.stillUnsubscribed = true; - _this.buffer = []; - _this.isComplete = false; - return _this; - } - ZipBufferIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] = function () { - return this; - }; - ZipBufferIterator.prototype.next = function () { - var buffer = this.buffer; - if (buffer.length === 0 && this.isComplete) { - return { value: null, done: true }; - } - else { - return { value: buffer.shift(), done: false }; - } - }; - ZipBufferIterator.prototype.hasValue = function () { - return this.buffer.length > 0; - }; - ZipBufferIterator.prototype.hasCompleted = function () { - return this.buffer.length === 0 && this.isComplete; - }; - ZipBufferIterator.prototype.notifyComplete = function () { - if (this.buffer.length > 0) { - this.isComplete = true; - this.parent.notifyInactive(); - } - else { - this.destination.complete(); - } - }; - ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.buffer.push(innerValue); - this.parent.checkIterators(); - }; - ZipBufferIterator.prototype.subscribe = function (value, index) { - return Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__["subscribeToResult"])(this, this.observable, this, index); - }; - return ZipBufferIterator; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__["OuterSubscriber"])); -//# sourceMappingURL=zip.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/audit.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/audit.js ***! - \*************************************************************/ -/*! exports provided: audit */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function audit(durationSelector) { - return function auditOperatorFunction(source) { - return source.lift(new AuditOperator(durationSelector)); - }; -} -var AuditOperator = /*@__PURE__*/ (function () { - function AuditOperator(durationSelector) { - this.durationSelector = durationSelector; - } - AuditOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector)); - }; - return AuditOperator; -}()); -var AuditSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AuditSubscriber, _super); - function AuditSubscriber(destination, durationSelector) { - var _this = _super.call(this, destination) || this; - _this.durationSelector = durationSelector; - _this.hasValue = false; - return _this; - } - AuditSubscriber.prototype._next = function (value) { - this.value = value; - this.hasValue = true; - if (!this.throttled) { - var duration = void 0; - try { - var durationSelector = this.durationSelector; - duration = durationSelector(value); - } - catch (err) { - return this.destination.error(err); - } - var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration); - if (!innerSubscription || innerSubscription.closed) { - this.clearThrottle(); - } - else { - this.add(this.throttled = innerSubscription); - } - } - }; - AuditSubscriber.prototype.clearThrottle = function () { - var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled; - if (throttled) { - this.remove(throttled); - this.throttled = null; - throttled.unsubscribe(); - } - if (hasValue) { - this.value = null; - this.hasValue = false; - this.destination.next(value); - } - }; - AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) { - this.clearThrottle(); - }; - AuditSubscriber.prototype.notifyComplete = function () { - this.clearThrottle(); - }; - return AuditSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=audit.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/auditTime.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/auditTime.js ***! - \*****************************************************************/ -/*! exports provided: auditTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audit */ "./node_modules/rxjs/_esm5/internal/operators/audit.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/timer */ "./node_modules/rxjs/_esm5/internal/observable/timer.js"); -/** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ - - - -function auditTime(duration, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; - } - return Object(_audit__WEBPACK_IMPORTED_MODULE_1__["audit"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(duration, scheduler); }); -} -//# sourceMappingURL=auditTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/buffer.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/buffer.js ***! - \**************************************************************/ -/*! exports provided: buffer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function buffer(closingNotifier) { - return function bufferOperatorFunction(source) { - return source.lift(new BufferOperator(closingNotifier)); - }; -} -var BufferOperator = /*@__PURE__*/ (function () { - function BufferOperator(closingNotifier) { - this.closingNotifier = closingNotifier; - } - BufferOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier)); - }; - return BufferOperator; -}()); -var BufferSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSubscriber, _super); - function BufferSubscriber(destination, closingNotifier) { - var _this = _super.call(this, destination) || this; - _this.buffer = []; - _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, closingNotifier)); - return _this; - } - BufferSubscriber.prototype._next = function (value) { - this.buffer.push(value); - }; - BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - var buffer = this.buffer; - this.buffer = []; - this.destination.next(buffer); - }; - return BufferSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=buffer.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferCount.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/bufferCount.js ***! - \*******************************************************************/ -/*! exports provided: bufferCount */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function bufferCount(bufferSize, startBufferEvery) { - if (startBufferEvery === void 0) { - startBufferEvery = null; - } - return function bufferCountOperatorFunction(source) { - return source.lift(new BufferCountOperator(bufferSize, startBufferEvery)); - }; -} -var BufferCountOperator = /*@__PURE__*/ (function () { - function BufferCountOperator(bufferSize, startBufferEvery) { - this.bufferSize = bufferSize; - this.startBufferEvery = startBufferEvery; - if (!startBufferEvery || bufferSize === startBufferEvery) { - this.subscriberClass = BufferCountSubscriber; - } - else { - this.subscriberClass = BufferSkipCountSubscriber; - } - } - BufferCountOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery)); - }; - return BufferCountOperator; -}()); -var BufferCountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferCountSubscriber, _super); - function BufferCountSubscriber(destination, bufferSize) { - var _this = _super.call(this, destination) || this; - _this.bufferSize = bufferSize; - _this.buffer = []; - return _this; - } - BufferCountSubscriber.prototype._next = function (value) { - var buffer = this.buffer; - buffer.push(value); - if (buffer.length == this.bufferSize) { - this.destination.next(buffer); - this.buffer = []; - } - }; - BufferCountSubscriber.prototype._complete = function () { - var buffer = this.buffer; - if (buffer.length > 0) { - this.destination.next(buffer); - } - _super.prototype._complete.call(this); - }; - return BufferCountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSkipCountSubscriber, _super); - function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) { - var _this = _super.call(this, destination) || this; - _this.bufferSize = bufferSize; - _this.startBufferEvery = startBufferEvery; - _this.buffers = []; - _this.count = 0; - return _this; - } - BufferSkipCountSubscriber.prototype._next = function (value) { - var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count; - this.count++; - if (count % startBufferEvery === 0) { - buffers.push([]); - } - for (var i = buffers.length; i--;) { - var buffer = buffers[i]; - buffer.push(value); - if (buffer.length === bufferSize) { - buffers.splice(i, 1); - this.destination.next(buffer); - } - } - }; - BufferSkipCountSubscriber.prototype._complete = function () { - var _a = this, buffers = _a.buffers, destination = _a.destination; - while (buffers.length > 0) { - var buffer = buffers.shift(); - if (buffer.length > 0) { - destination.next(buffer); - } - } - _super.prototype._complete.call(this); - }; - return BufferSkipCountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=bufferCount.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferTime.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/bufferTime.js ***! - \******************************************************************/ -/*! exports provided: bufferTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */ - - - - -function bufferTime(bufferTimeSpan) { - var length = arguments.length; - var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(arguments[arguments.length - 1])) { - scheduler = arguments[arguments.length - 1]; - length--; - } - var bufferCreationInterval = null; - if (length >= 2) { - bufferCreationInterval = arguments[1]; - } - var maxBufferSize = Number.POSITIVE_INFINITY; - if (length >= 3) { - maxBufferSize = arguments[2]; - } - return function bufferTimeOperatorFunction(source) { - return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)); - }; -} -var BufferTimeOperator = /*@__PURE__*/ (function () { - function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { - this.bufferTimeSpan = bufferTimeSpan; - this.bufferCreationInterval = bufferCreationInterval; - this.maxBufferSize = maxBufferSize; - this.scheduler = scheduler; - } - BufferTimeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler)); - }; - return BufferTimeOperator; -}()); -var Context = /*@__PURE__*/ (function () { - function Context() { - this.buffer = []; - } - return Context; -}()); -var BufferTimeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferTimeSubscriber, _super); - function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { - var _this = _super.call(this, destination) || this; - _this.bufferTimeSpan = bufferTimeSpan; - _this.bufferCreationInterval = bufferCreationInterval; - _this.maxBufferSize = maxBufferSize; - _this.scheduler = scheduler; - _this.contexts = []; - var context = _this.openContext(); - _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0; - if (_this.timespanOnly) { - var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan }; - _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); - } - else { - var closeState = { subscriber: _this, context: context }; - var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler }; - _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState)); - _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState)); - } - return _this; - } - BufferTimeSubscriber.prototype._next = function (value) { - var contexts = this.contexts; - var len = contexts.length; - var filledBufferContext; - for (var i = 0; i < len; i++) { - var context_1 = contexts[i]; - var buffer = context_1.buffer; - buffer.push(value); - if (buffer.length == this.maxBufferSize) { - filledBufferContext = context_1; - } - } - if (filledBufferContext) { - this.onBufferFull(filledBufferContext); - } - }; - BufferTimeSubscriber.prototype._error = function (err) { - this.contexts.length = 0; - _super.prototype._error.call(this, err); - }; - BufferTimeSubscriber.prototype._complete = function () { - var _a = this, contexts = _a.contexts, destination = _a.destination; - while (contexts.length > 0) { - var context_2 = contexts.shift(); - destination.next(context_2.buffer); - } - _super.prototype._complete.call(this); - }; - BufferTimeSubscriber.prototype._unsubscribe = function () { - this.contexts = null; - }; - BufferTimeSubscriber.prototype.onBufferFull = function (context) { - this.closeContext(context); - var closeAction = context.closeAction; - closeAction.unsubscribe(); - this.remove(closeAction); - if (!this.closed && this.timespanOnly) { - context = this.openContext(); - var bufferTimeSpan = this.bufferTimeSpan; - var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan }; - this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); - } - }; - BufferTimeSubscriber.prototype.openContext = function () { - var context = new Context(); - this.contexts.push(context); - return context; - }; - BufferTimeSubscriber.prototype.closeContext = function (context) { - this.destination.next(context.buffer); - var contexts = this.contexts; - var spliceIndex = contexts ? contexts.indexOf(context) : -1; - if (spliceIndex >= 0) { - contexts.splice(contexts.indexOf(context), 1); - } - }; - return BufferTimeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); -function dispatchBufferTimeSpanOnly(state) { - var subscriber = state.subscriber; - var prevContext = state.context; - if (prevContext) { - subscriber.closeContext(prevContext); - } - if (!subscriber.closed) { - state.context = subscriber.openContext(); - state.context.closeAction = this.schedule(state, state.bufferTimeSpan); - } -} -function dispatchBufferCreation(state) { - var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler; - var context = subscriber.openContext(); - var action = this; - if (!subscriber.closed) { - subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context })); - action.schedule(state, bufferCreationInterval); - } -} -function dispatchBufferClose(arg) { - var subscriber = arg.subscriber, context = arg.context; - subscriber.closeContext(context); -} -//# sourceMappingURL=bufferTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js ***! - \********************************************************************/ -/*! exports provided: bufferToggle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ - - - - -function bufferToggle(openings, closingSelector) { - return function bufferToggleOperatorFunction(source) { - return source.lift(new BufferToggleOperator(openings, closingSelector)); - }; -} -var BufferToggleOperator = /*@__PURE__*/ (function () { - function BufferToggleOperator(openings, closingSelector) { - this.openings = openings; - this.closingSelector = closingSelector; - } - BufferToggleOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector)); - }; - return BufferToggleOperator; -}()); -var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferToggleSubscriber, _super); - function BufferToggleSubscriber(destination, openings, closingSelector) { - var _this = _super.call(this, destination) || this; - _this.openings = openings; - _this.closingSelector = closingSelector; - _this.contexts = []; - _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, openings)); - return _this; - } - BufferToggleSubscriber.prototype._next = function (value) { - var contexts = this.contexts; - var len = contexts.length; - for (var i = 0; i < len; i++) { - contexts[i].buffer.push(value); - } - }; - BufferToggleSubscriber.prototype._error = function (err) { - var contexts = this.contexts; - while (contexts.length > 0) { - var context_1 = contexts.shift(); - context_1.subscription.unsubscribe(); - context_1.buffer = null; - context_1.subscription = null; - } - this.contexts = null; - _super.prototype._error.call(this, err); - }; - BufferToggleSubscriber.prototype._complete = function () { - var contexts = this.contexts; - while (contexts.length > 0) { - var context_2 = contexts.shift(); - this.destination.next(context_2.buffer); - context_2.subscription.unsubscribe(); - context_2.buffer = null; - context_2.subscription = null; - } - this.contexts = null; - _super.prototype._complete.call(this); - }; - BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue); - }; - BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) { - this.closeBuffer(innerSub.context); - }; - BufferToggleSubscriber.prototype.openBuffer = function (value) { - try { - var closingSelector = this.closingSelector; - var closingNotifier = closingSelector.call(this, value); - if (closingNotifier) { - this.trySubscribe(closingNotifier); - } - } - catch (err) { - this._error(err); - } - }; - BufferToggleSubscriber.prototype.closeBuffer = function (context) { - var contexts = this.contexts; - if (contexts && context) { - var buffer = context.buffer, subscription = context.subscription; - this.destination.next(buffer); - contexts.splice(contexts.indexOf(context), 1); - this.remove(subscription); - subscription.unsubscribe(); - } - }; - BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) { - var contexts = this.contexts; - var buffer = []; - var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - var context = { buffer: buffer, subscription: subscription }; - contexts.push(context); - var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, closingNotifier, context); - if (!innerSubscription || innerSubscription.closed) { - this.closeBuffer(context); - } - else { - innerSubscription.context = context; - this.add(innerSubscription); - subscription.add(innerSubscription); - } - }; - return BufferToggleSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); -//# sourceMappingURL=bufferToggle.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js ***! - \******************************************************************/ -/*! exports provided: bufferWhen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function bufferWhen(closingSelector) { - return function (source) { - return source.lift(new BufferWhenOperator(closingSelector)); - }; -} -var BufferWhenOperator = /*@__PURE__*/ (function () { - function BufferWhenOperator(closingSelector) { - this.closingSelector = closingSelector; - } - BufferWhenOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector)); - }; - return BufferWhenOperator; -}()); -var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferWhenSubscriber, _super); - function BufferWhenSubscriber(destination, closingSelector) { - var _this = _super.call(this, destination) || this; - _this.closingSelector = closingSelector; - _this.subscribing = false; - _this.openBuffer(); - return _this; - } - BufferWhenSubscriber.prototype._next = function (value) { - this.buffer.push(value); - }; - BufferWhenSubscriber.prototype._complete = function () { - var buffer = this.buffer; - if (buffer) { - this.destination.next(buffer); - } - _super.prototype._complete.call(this); - }; - BufferWhenSubscriber.prototype._unsubscribe = function () { - this.buffer = null; - this.subscribing = false; - }; - BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.openBuffer(); - }; - BufferWhenSubscriber.prototype.notifyComplete = function () { - if (this.subscribing) { - this.complete(); - } - else { - this.openBuffer(); - } - }; - BufferWhenSubscriber.prototype.openBuffer = function () { - var closingSubscription = this.closingSubscription; - if (closingSubscription) { - this.remove(closingSubscription); - closingSubscription.unsubscribe(); - } - var buffer = this.buffer; - if (this.buffer) { - this.destination.next(buffer); - } - this.buffer = []; - var closingNotifier; - try { - var closingSelector = this.closingSelector; - closingNotifier = closingSelector(); - } - catch (err) { - return this.error(err); - } - closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - this.closingSubscription = closingSubscription; - this.add(closingSubscription); - this.subscribing = true; - closingSubscription.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, closingNotifier)); - this.subscribing = false; - }; - return BufferWhenSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); -//# sourceMappingURL=bufferWhen.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/catchError.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/catchError.js ***! - \******************************************************************/ -/*! exports provided: catchError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function catchError(selector) { - return function catchErrorOperatorFunction(source) { - var operator = new CatchOperator(selector); - var caught = source.lift(operator); - return (operator.caught = caught); - }; -} -var CatchOperator = /*@__PURE__*/ (function () { - function CatchOperator(selector) { - this.selector = selector; - } - CatchOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught)); - }; - return CatchOperator; -}()); -var CatchSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CatchSubscriber, _super); - function CatchSubscriber(destination, selector, caught) { - var _this = _super.call(this, destination) || this; - _this.selector = selector; - _this.caught = caught; - return _this; - } - CatchSubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var result = void 0; - try { - result = this.selector(err, this.caught); - } - catch (err2) { - _super.prototype.error.call(this, err2); - return; - } - this._unsubscribeAndRecycle(); - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); - this.add(innerSubscriber); - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, undefined, undefined, innerSubscriber); - } - }; - return CatchSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=catchError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/combineAll.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/combineAll.js ***! - \******************************************************************/ -/*! exports provided: combineAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; }); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); -/** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */ - -function combineAll(project) { - return function (source) { return source.lift(new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__["CombineLatestOperator"](project)); }; -} -//# sourceMappingURL=combineAll.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/combineLatest.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/combineLatest.js ***! - \*********************************************************************/ -/*! exports provided: combineLatest */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */ - - - -var none = {}; -function combineLatest() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - var project = null; - if (typeof observables[observables.length - 1] === 'function') { - project = observables.pop(); - } - if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) { - observables = observables[0].slice(); - } - return function (source) { return source.lift.call(Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])([source].concat(observables)), new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__["CombineLatestOperator"](project)); }; -} -//# sourceMappingURL=combineLatest.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/concat.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/concat.js ***! - \**************************************************************/ -/*! exports provided: concat */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); -/** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ - -function concat() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - return function (source) { return source.lift.call(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"].apply(void 0, [source].concat(observables))); }; -} -//# sourceMappingURL=concat.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/concatAll.js ***! - \*****************************************************************/ -/*! exports provided: concatAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll; }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); -/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */ - -function concatAll() { - return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__["mergeAll"])(1); -} -//# sourceMappingURL=concatAll.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/concatMap.js ***! - \*****************************************************************/ -/*! exports provided: concatMap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); -/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ - -function concatMap(project, resultSelector) { - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(project, resultSelector, 1); -} -//# sourceMappingURL=concatMap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js ***! - \*******************************************************************/ -/*! exports provided: concatMapTo */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./concatMap */ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js"); -/** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ - -function concatMapTo(innerObservable, resultSelector) { - return Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__["concatMap"])(function () { return innerObservable; }, resultSelector); -} -//# sourceMappingURL=concatMapTo.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/count.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/count.js ***! - \*************************************************************/ -/*! exports provided: count */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function count(predicate) { - return function (source) { return source.lift(new CountOperator(predicate, source)); }; -} -var CountOperator = /*@__PURE__*/ (function () { - function CountOperator(predicate, source) { - this.predicate = predicate; - this.source = source; - } - CountOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source)); - }; - return CountOperator; -}()); -var CountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountSubscriber, _super); - function CountSubscriber(destination, predicate, source) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.source = source; - _this.count = 0; - _this.index = 0; - return _this; - } - CountSubscriber.prototype._next = function (value) { - if (this.predicate) { - this._tryPredicate(value); - } - else { - this.count++; - } - }; - CountSubscriber.prototype._tryPredicate = function (value) { - var result; - try { - result = this.predicate(value, this.index++, this.source); - } - catch (err) { - this.destination.error(err); - return; - } - if (result) { - this.count++; - } - }; - CountSubscriber.prototype._complete = function () { - this.destination.next(this.count); - this.destination.complete(); - }; - return CountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=count.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/debounce.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/debounce.js ***! - \****************************************************************/ -/*! exports provided: debounce */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function debounce(durationSelector) { - return function (source) { return source.lift(new DebounceOperator(durationSelector)); }; -} -var DebounceOperator = /*@__PURE__*/ (function () { - function DebounceOperator(durationSelector) { - this.durationSelector = durationSelector; - } - DebounceOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector)); - }; - return DebounceOperator; -}()); -var DebounceSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceSubscriber, _super); - function DebounceSubscriber(destination, durationSelector) { - var _this = _super.call(this, destination) || this; - _this.durationSelector = durationSelector; - _this.hasValue = false; - _this.durationSubscription = null; - return _this; - } - DebounceSubscriber.prototype._next = function (value) { - try { - var result = this.durationSelector.call(this, value); - if (result) { - this._tryNext(value, result); - } - } - catch (err) { - this.destination.error(err); - } - }; - DebounceSubscriber.prototype._complete = function () { - this.emitValue(); - this.destination.complete(); - }; - DebounceSubscriber.prototype._tryNext = function (value, duration) { - var subscription = this.durationSubscription; - this.value = value; - this.hasValue = true; - if (subscription) { - subscription.unsubscribe(); - this.remove(subscription); - } - subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration); - if (subscription && !subscription.closed) { - this.add(this.durationSubscription = subscription); - } - }; - DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.emitValue(); - }; - DebounceSubscriber.prototype.notifyComplete = function () { - this.emitValue(); - }; - DebounceSubscriber.prototype.emitValue = function () { - if (this.hasValue) { - var value = this.value; - var subscription = this.durationSubscription; - if (subscription) { - this.durationSubscription = null; - subscription.unsubscribe(); - this.remove(subscription); - } - this.value = null; - this.hasValue = false; - _super.prototype._next.call(this, value); - } - }; - return DebounceSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=debounce.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/debounceTime.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/debounceTime.js ***! - \********************************************************************/ -/*! exports provided: debounceTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ - - - -function debounceTime(dueTime, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; - } - return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); }; -} -var DebounceTimeOperator = /*@__PURE__*/ (function () { - function DebounceTimeOperator(dueTime, scheduler) { - this.dueTime = dueTime; - this.scheduler = scheduler; - } - DebounceTimeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler)); - }; - return DebounceTimeOperator; -}()); -var DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceTimeSubscriber, _super); - function DebounceTimeSubscriber(destination, dueTime, scheduler) { - var _this = _super.call(this, destination) || this; - _this.dueTime = dueTime; - _this.scheduler = scheduler; - _this.debouncedSubscription = null; - _this.lastValue = null; - _this.hasValue = false; - return _this; - } - DebounceTimeSubscriber.prototype._next = function (value) { - this.clearDebounce(); - this.lastValue = value; - this.hasValue = true; - this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this)); - }; - DebounceTimeSubscriber.prototype._complete = function () { - this.debouncedNext(); - this.destination.complete(); - }; - DebounceTimeSubscriber.prototype.debouncedNext = function () { - this.clearDebounce(); - if (this.hasValue) { - var lastValue = this.lastValue; - this.lastValue = null; - this.hasValue = false; - this.destination.next(lastValue); - } - }; - DebounceTimeSubscriber.prototype.clearDebounce = function () { - var debouncedSubscription = this.debouncedSubscription; - if (debouncedSubscription !== null) { - this.remove(debouncedSubscription); - debouncedSubscription.unsubscribe(); - this.debouncedSubscription = null; - } - }; - return DebounceTimeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -function dispatchNext(subscriber) { - subscriber.debouncedNext(); -} -//# sourceMappingURL=debounceTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js ***! - \**********************************************************************/ -/*! exports provided: defaultIfEmpty */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function defaultIfEmpty(defaultValue) { - if (defaultValue === void 0) { - defaultValue = null; - } - return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); }; -} -var DefaultIfEmptyOperator = /*@__PURE__*/ (function () { - function DefaultIfEmptyOperator(defaultValue) { - this.defaultValue = defaultValue; - } - DefaultIfEmptyOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); - }; - return DefaultIfEmptyOperator; -}()); -var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DefaultIfEmptySubscriber, _super); - function DefaultIfEmptySubscriber(destination, defaultValue) { - var _this = _super.call(this, destination) || this; - _this.defaultValue = defaultValue; - _this.isEmpty = true; - return _this; - } - DefaultIfEmptySubscriber.prototype._next = function (value) { - this.isEmpty = false; - this.destination.next(value); - }; - DefaultIfEmptySubscriber.prototype._complete = function () { - if (this.isEmpty) { - this.destination.next(this.defaultValue); - } - this.destination.complete(); - }; - return DefaultIfEmptySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=defaultIfEmpty.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/delay.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/delay.js ***! - \*************************************************************/ -/*! exports provided: delay */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isDate */ "./node_modules/rxjs/_esm5/internal/util/isDate.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); -/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ - - - - - -function delay(delay, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - } - var absoluteDelay = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(delay); - var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay); - return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); }; -} -var DelayOperator = /*@__PURE__*/ (function () { - function DelayOperator(delay, scheduler) { - this.delay = delay; - this.scheduler = scheduler; - } - DelayOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler)); - }; - return DelayOperator; -}()); -var DelaySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelaySubscriber, _super); - function DelaySubscriber(destination, delay, scheduler) { - var _this = _super.call(this, destination) || this; - _this.delay = delay; - _this.scheduler = scheduler; - _this.queue = []; - _this.active = false; - _this.errored = false; - return _this; - } - DelaySubscriber.dispatch = function (state) { - var source = state.source; - var queue = source.queue; - var scheduler = state.scheduler; - var destination = state.destination; - while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) { - queue.shift().notification.observe(destination); - } - if (queue.length > 0) { - var delay_1 = Math.max(0, queue[0].time - scheduler.now()); - this.schedule(state, delay_1); - } - else { - this.unsubscribe(); - source.active = false; - } - }; - DelaySubscriber.prototype._schedule = function (scheduler) { - this.active = true; - var destination = this.destination; - destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, { - source: this, destination: this.destination, scheduler: scheduler - })); - }; - DelaySubscriber.prototype.scheduleNotification = function (notification) { - if (this.errored === true) { - return; - } - var scheduler = this.scheduler; - var message = new DelayMessage(scheduler.now() + this.delay, notification); - this.queue.push(message); - if (this.active === false) { - this._schedule(scheduler); - } - }; - DelaySubscriber.prototype._next = function (value) { - this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createNext(value)); - }; - DelaySubscriber.prototype._error = function (err) { - this.errored = true; - this.queue = []; - this.destination.error(err); - this.unsubscribe(); - }; - DelaySubscriber.prototype._complete = function () { - this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createComplete()); - this.unsubscribe(); - }; - return DelaySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); -var DelayMessage = /*@__PURE__*/ (function () { - function DelayMessage(time, notification) { - this.time = time; - this.notification = notification; - } - return DelayMessage; -}()); -//# sourceMappingURL=delay.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/delayWhen.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/delayWhen.js ***! - \*****************************************************************/ -/*! exports provided: delayWhen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - - -function delayWhen(delayDurationSelector, subscriptionDelay) { - if (subscriptionDelay) { - return function (source) { - return new SubscriptionDelayObservable(source, subscriptionDelay) - .lift(new DelayWhenOperator(delayDurationSelector)); - }; - } - return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); }; -} -var DelayWhenOperator = /*@__PURE__*/ (function () { - function DelayWhenOperator(delayDurationSelector) { - this.delayDurationSelector = delayDurationSelector; - } - DelayWhenOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector)); - }; - return DelayWhenOperator; -}()); -var DelayWhenSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelayWhenSubscriber, _super); - function DelayWhenSubscriber(destination, delayDurationSelector) { - var _this = _super.call(this, destination) || this; - _this.delayDurationSelector = delayDurationSelector; - _this.completed = false; - _this.delayNotifierSubscriptions = []; - _this.index = 0; - return _this; - } - DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(outerValue); - this.removeSubscription(innerSub); - this.tryComplete(); - }; - DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) { - this._error(error); - }; - DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) { - var value = this.removeSubscription(innerSub); - if (value) { - this.destination.next(value); - } - this.tryComplete(); - }; - DelayWhenSubscriber.prototype._next = function (value) { - var index = this.index++; - try { - var delayNotifier = this.delayDurationSelector(value, index); - if (delayNotifier) { - this.tryDelay(delayNotifier, value); - } - } - catch (err) { - this.destination.error(err); - } - }; - DelayWhenSubscriber.prototype._complete = function () { - this.completed = true; - this.tryComplete(); - this.unsubscribe(); - }; - DelayWhenSubscriber.prototype.removeSubscription = function (subscription) { - subscription.unsubscribe(); - var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription); - if (subscriptionIdx !== -1) { - this.delayNotifierSubscriptions.splice(subscriptionIdx, 1); - } - return subscription.outerValue; - }; - DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) { - var notifierSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, delayNotifier, value); - if (notifierSubscription && !notifierSubscription.closed) { - var destination = this.destination; - destination.add(notifierSubscription); - this.delayNotifierSubscriptions.push(notifierSubscription); - } - }; - DelayWhenSubscriber.prototype.tryComplete = function () { - if (this.completed && this.delayNotifierSubscriptions.length === 0) { - this.destination.complete(); - } - }; - return DelayWhenSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); -var SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelayObservable, _super); - function SubscriptionDelayObservable(source, subscriptionDelay) { - var _this = _super.call(this) || this; - _this.source = source; - _this.subscriptionDelay = subscriptionDelay; - return _this; - } - SubscriptionDelayObservable.prototype._subscribe = function (subscriber) { - this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source)); - }; - return SubscriptionDelayObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); -var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelaySubscriber, _super); - function SubscriptionDelaySubscriber(parent, source) { - var _this = _super.call(this) || this; - _this.parent = parent; - _this.source = source; - _this.sourceSubscribed = false; - return _this; - } - SubscriptionDelaySubscriber.prototype._next = function (unused) { - this.subscribeToSource(); - }; - SubscriptionDelaySubscriber.prototype._error = function (err) { - this.unsubscribe(); - this.parent.error(err); - }; - SubscriptionDelaySubscriber.prototype._complete = function () { - this.unsubscribe(); - this.subscribeToSource(); - }; - SubscriptionDelaySubscriber.prototype.subscribeToSource = function () { - if (!this.sourceSubscribed) { - this.sourceSubscribed = true; - this.unsubscribe(); - this.source.subscribe(this.parent); - } - }; - return SubscriptionDelaySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=delayWhen.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/dematerialize.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/dematerialize.js ***! - \*********************************************************************/ -/*! exports provided: dematerialize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function dematerialize() { - return function dematerializeOperatorFunction(source) { - return source.lift(new DeMaterializeOperator()); - }; -} -var DeMaterializeOperator = /*@__PURE__*/ (function () { - function DeMaterializeOperator() { - } - DeMaterializeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DeMaterializeSubscriber(subscriber)); - }; - return DeMaterializeOperator; -}()); -var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DeMaterializeSubscriber, _super); - function DeMaterializeSubscriber(destination) { - return _super.call(this, destination) || this; - } - DeMaterializeSubscriber.prototype._next = function (value) { - value.observe(this.destination); - }; - return DeMaterializeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=dematerialize.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/distinct.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/distinct.js ***! - \****************************************************************/ -/*! exports provided: distinct, DistinctSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function() { return DistinctSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function distinct(keySelector, flushes) { - return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); }; -} -var DistinctOperator = /*@__PURE__*/ (function () { - function DistinctOperator(keySelector, flushes) { - this.keySelector = keySelector; - this.flushes = flushes; - } - DistinctOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes)); - }; - return DistinctOperator; -}()); -var DistinctSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctSubscriber, _super); - function DistinctSubscriber(destination, keySelector, flushes) { - var _this = _super.call(this, destination) || this; - _this.keySelector = keySelector; - _this.values = new Set(); - if (flushes) { - _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, flushes)); - } - return _this; - } - DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.values.clear(); - }; - DistinctSubscriber.prototype.notifyError = function (error, innerSub) { - this._error(error); - }; - DistinctSubscriber.prototype._next = function (value) { - if (this.keySelector) { - this._useKeySelector(value); - } - else { - this._finalizeNext(value, value); - } - }; - DistinctSubscriber.prototype._useKeySelector = function (value) { - var key; - var destination = this.destination; - try { - key = this.keySelector(value); - } - catch (err) { - destination.error(err); - return; - } - this._finalizeNext(key, value); - }; - DistinctSubscriber.prototype._finalizeNext = function (key, value) { - var values = this.values; - if (!values.has(key)) { - values.add(key); - this.destination.next(value); - } - }; - return DistinctSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); - -//# sourceMappingURL=distinct.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js": -/*!****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js ***! - \****************************************************************************/ -/*! exports provided: distinctUntilChanged */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function distinctUntilChanged(compare, keySelector) { - return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); }; -} -var DistinctUntilChangedOperator = /*@__PURE__*/ (function () { - function DistinctUntilChangedOperator(compare, keySelector) { - this.compare = compare; - this.keySelector = keySelector; - } - DistinctUntilChangedOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector)); - }; - return DistinctUntilChangedOperator; -}()); -var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctUntilChangedSubscriber, _super); - function DistinctUntilChangedSubscriber(destination, compare, keySelector) { - var _this = _super.call(this, destination) || this; - _this.keySelector = keySelector; - _this.hasKey = false; - if (typeof compare === 'function') { - _this.compare = compare; - } - return _this; - } - DistinctUntilChangedSubscriber.prototype.compare = function (x, y) { - return x === y; - }; - DistinctUntilChangedSubscriber.prototype._next = function (value) { - var key; - try { - var keySelector = this.keySelector; - key = keySelector ? keySelector(value) : value; - } - catch (err) { - return this.destination.error(err); - } - var result = false; - if (this.hasKey) { - try { - var compare = this.compare; - result = compare(this.key, key); - } - catch (err) { - return this.destination.error(err); - } - } - else { - this.hasKey = true; - } - if (!result) { - this.key = key; - this.destination.next(value); - } - }; - return DistinctUntilChangedSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=distinctUntilChanged.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js ***! - \*******************************************************************************/ -/*! exports provided: distinctUntilKeyChanged */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./distinctUntilChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js"); -/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ - -function distinctUntilKeyChanged(key, compare) { - return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__["distinctUntilChanged"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; }); -} -//# sourceMappingURL=distinctUntilKeyChanged.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/elementAt.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/elementAt.js ***! - \*****************************************************************/ -/*! exports provided: elementAt */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); -/** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ - - - - - -function elementAt(index, defaultValue) { - if (index < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); - } - var hasDefaultValue = arguments.length >= 2; - return function (source) { - return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__["take"])(1), hasDefaultValue - ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) - : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__["throwIfEmpty"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); })); - }; -} -//# sourceMappingURL=elementAt.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/endWith.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/endWith.js ***! - \***************************************************************/ -/*! exports provided: endWith */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); -/** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */ - - -function endWith() { - var array = []; - for (var _i = 0; _i < arguments.length; _i++) { - array[_i] = arguments[_i]; - } - return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_1__["of"].apply(void 0, array)); }; -} -//# sourceMappingURL=endWith.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/every.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/every.js ***! - \*************************************************************/ -/*! exports provided: every */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function every(predicate, thisArg) { - return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); }; -} -var EveryOperator = /*@__PURE__*/ (function () { - function EveryOperator(predicate, thisArg, source) { - this.predicate = predicate; - this.thisArg = thisArg; - this.source = source; - } - EveryOperator.prototype.call = function (observer, source) { - return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source)); - }; - return EveryOperator; -}()); -var EverySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](EverySubscriber, _super); - function EverySubscriber(destination, predicate, thisArg, source) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.thisArg = thisArg; - _this.source = source; - _this.index = 0; - _this.thisArg = thisArg || _this; - return _this; - } - EverySubscriber.prototype.notifyComplete = function (everyValueMatch) { - this.destination.next(everyValueMatch); - this.destination.complete(); - }; - EverySubscriber.prototype._next = function (value) { - var result = false; - try { - result = this.predicate.call(this.thisArg, value, this.index++, this.source); - } - catch (err) { - this.destination.error(err); - return; - } - if (!result) { - this.notifyComplete(false); - } - }; - EverySubscriber.prototype._complete = function () { - this.notifyComplete(true); - }; - return EverySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=every.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/exhaust.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/exhaust.js ***! - \***************************************************************/ -/*! exports provided: exhaust */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function exhaust() { - return function (source) { return source.lift(new SwitchFirstOperator()); }; -} -var SwitchFirstOperator = /*@__PURE__*/ (function () { - function SwitchFirstOperator() { - } - SwitchFirstOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SwitchFirstSubscriber(subscriber)); - }; - return SwitchFirstOperator; -}()); -var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchFirstSubscriber, _super); - function SwitchFirstSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.hasCompleted = false; - _this.hasSubscription = false; - return _this; - } - SwitchFirstSubscriber.prototype._next = function (value) { - if (!this.hasSubscription) { - this.hasSubscription = true; - this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, value)); - } - }; - SwitchFirstSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (!this.hasSubscription) { - this.destination.complete(); - } - }; - SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) { - this.remove(innerSub); - this.hasSubscription = false; - if (this.hasCompleted) { - this.destination.complete(); - } - }; - return SwitchFirstSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=exhaust.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js ***! - \******************************************************************/ -/*! exports provided: exhaustMap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ - - - - - - -function exhaustMap(project, resultSelector) { - if (resultSelector) { - return function (source) { return source.pipe(exhaustMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); }; - } - return function (source) { - return source.lift(new ExhaustMapOperator(project)); - }; -} -var ExhaustMapOperator = /*@__PURE__*/ (function () { - function ExhaustMapOperator(project) { - this.project = project; - } - ExhaustMapOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project)); - }; - return ExhaustMapOperator; -}()); -var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExhaustMapSubscriber, _super); - function ExhaustMapSubscriber(destination, project) { - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.hasSubscription = false; - _this.hasCompleted = false; - _this.index = 0; - return _this; - } - ExhaustMapSubscriber.prototype._next = function (value) { - if (!this.hasSubscription) { - this.tryNext(value); - } - }; - ExhaustMapSubscriber.prototype.tryNext = function (value) { - var result; - var index = this.index++; - try { - result = this.project(value, index); - } - catch (err) { - this.destination.error(err); - return; - } - this.hasSubscription = true; - this._innerSub(result, value, index); - }; - ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) { - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, value, index, innerSubscriber); - }; - ExhaustMapSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (!this.hasSubscription) { - this.destination.complete(); - } - this.unsubscribe(); - }; - ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - ExhaustMapSubscriber.prototype.notifyError = function (err) { - this.destination.error(err); - }; - ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) { - var destination = this.destination; - destination.remove(innerSub); - this.hasSubscription = false; - if (this.hasCompleted) { - this.destination.complete(); - } - }; - return ExhaustMapSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=exhaustMap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/expand.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/expand.js ***! - \**************************************************************/ -/*! exports provided: expand, ExpandOperator, ExpandSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandOperator", function() { return ExpandOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandSubscriber", function() { return ExpandSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function expand(project, concurrent, scheduler) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - if (scheduler === void 0) { - scheduler = undefined; - } - concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent; - return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); }; -} -var ExpandOperator = /*@__PURE__*/ (function () { - function ExpandOperator(project, concurrent, scheduler) { - this.project = project; - this.concurrent = concurrent; - this.scheduler = scheduler; - } - ExpandOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler)); - }; - return ExpandOperator; -}()); - -var ExpandSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExpandSubscriber, _super); - function ExpandSubscriber(destination, project, concurrent, scheduler) { - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.concurrent = concurrent; - _this.scheduler = scheduler; - _this.index = 0; - _this.active = 0; - _this.hasCompleted = false; - if (concurrent < Number.POSITIVE_INFINITY) { - _this.buffer = []; - } - return _this; - } - ExpandSubscriber.dispatch = function (arg) { - var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index; - subscriber.subscribeToProjection(result, value, index); - }; - ExpandSubscriber.prototype._next = function (value) { - var destination = this.destination; - if (destination.closed) { - this._complete(); - return; - } - var index = this.index++; - if (this.active < this.concurrent) { - destination.next(value); - try { - var project = this.project; - var result = project(value, index); - if (!this.scheduler) { - this.subscribeToProjection(result, value, index); - } - else { - var state = { subscriber: this, result: result, value: value, index: index }; - var destination_1 = this.destination; - destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state)); - } - } - catch (e) { - destination.error(e); - } - } - else { - this.buffer.push(value); - } - }; - ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) { - this.active++; - var destination = this.destination; - destination.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, result, value, index)); - }; - ExpandSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (this.hasCompleted && this.active === 0) { - this.destination.complete(); - } - this.unsubscribe(); - }; - ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this._next(innerValue); - }; - ExpandSubscriber.prototype.notifyComplete = function (innerSub) { - var buffer = this.buffer; - var destination = this.destination; - destination.remove(innerSub); - this.active--; - if (buffer && buffer.length > 0) { - this._next(buffer.shift()); - } - if (this.hasCompleted && this.active === 0) { - this.destination.complete(); - } - }; - return ExpandSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); - -//# sourceMappingURL=expand.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/filter.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/filter.js ***! - \**************************************************************/ -/*! exports provided: filter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function filter(predicate, thisArg) { - return function filterOperatorFunction(source) { - return source.lift(new FilterOperator(predicate, thisArg)); - }; -} -var FilterOperator = /*@__PURE__*/ (function () { - function FilterOperator(predicate, thisArg) { - this.predicate = predicate; - this.thisArg = thisArg; - } - FilterOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); - }; - return FilterOperator; -}()); -var FilterSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FilterSubscriber, _super); - function FilterSubscriber(destination, predicate, thisArg) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.thisArg = thisArg; - _this.count = 0; - return _this; - } - FilterSubscriber.prototype._next = function (value) { - var result; - try { - result = this.predicate.call(this.thisArg, value, this.count++); - } - catch (err) { - this.destination.error(err); - return; - } - if (result) { - this.destination.next(value); - } - }; - return FilterSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=filter.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/finalize.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/finalize.js ***! - \****************************************************************/ -/*! exports provided: finalize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */ - - - -function finalize(callback) { - return function (source) { return source.lift(new FinallyOperator(callback)); }; -} -var FinallyOperator = /*@__PURE__*/ (function () { - function FinallyOperator(callback) { - this.callback = callback; - } - FinallyOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new FinallySubscriber(subscriber, this.callback)); - }; - return FinallyOperator; -}()); -var FinallySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FinallySubscriber, _super); - function FinallySubscriber(destination, callback) { - var _this = _super.call(this, destination) || this; - _this.add(new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](callback)); - return _this; - } - return FinallySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=finalize.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/find.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/find.js ***! - \************************************************************/ -/*! exports provided: find, FindValueOperator, FindValueSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueOperator", function() { return FindValueOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueSubscriber", function() { return FindValueSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function find(predicate, thisArg) { - if (typeof predicate !== 'function') { - throw new TypeError('predicate is not a function'); - } - return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); }; -} -var FindValueOperator = /*@__PURE__*/ (function () { - function FindValueOperator(predicate, source, yieldIndex, thisArg) { - this.predicate = predicate; - this.source = source; - this.yieldIndex = yieldIndex; - this.thisArg = thisArg; - } - FindValueOperator.prototype.call = function (observer, source) { - return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg)); - }; - return FindValueOperator; -}()); - -var FindValueSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FindValueSubscriber, _super); - function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.source = source; - _this.yieldIndex = yieldIndex; - _this.thisArg = thisArg; - _this.index = 0; - return _this; - } - FindValueSubscriber.prototype.notifyComplete = function (value) { - var destination = this.destination; - destination.next(value); - destination.complete(); - this.unsubscribe(); - }; - FindValueSubscriber.prototype._next = function (value) { - var _a = this, predicate = _a.predicate, thisArg = _a.thisArg; - var index = this.index++; - try { - var result = predicate.call(thisArg || this, value, index, this.source); - if (result) { - this.notifyComplete(this.yieldIndex ? index : value); - } - } - catch (err) { - this.destination.error(err); - } - }; - FindValueSubscriber.prototype._complete = function () { - this.notifyComplete(this.yieldIndex ? -1 : undefined); - }; - return FindValueSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); - -//# sourceMappingURL=find.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/findIndex.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/findIndex.js ***! - \*****************************************************************/ -/*! exports provided: findIndex */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); -/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../operators/find */ "./node_modules/rxjs/_esm5/internal/operators/find.js"); -/** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ - -function findIndex(predicate, thisArg) { - return function (source) { return source.lift(new _operators_find__WEBPACK_IMPORTED_MODULE_0__["FindValueOperator"](predicate, source, true, thisArg)); }; -} -//# sourceMappingURL=findIndex.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/first.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/first.js ***! - \*************************************************************/ -/*! exports provided: first */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ - - - - - - -function first(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_take__WEBPACK_IMPORTED_MODULE_2__["take"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); }; -} -//# sourceMappingURL=first.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/groupBy.js ***! - \***************************************************************/ -/*! exports provided: groupBy, GroupedObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return GroupedObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */ - - - - - -function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) { - return function (source) { - return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector)); - }; -} -var GroupByOperator = /*@__PURE__*/ (function () { - function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) { - this.keySelector = keySelector; - this.elementSelector = elementSelector; - this.durationSelector = durationSelector; - this.subjectSelector = subjectSelector; - } - GroupByOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector)); - }; - return GroupByOperator; -}()); -var GroupBySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupBySubscriber, _super); - function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) { - var _this = _super.call(this, destination) || this; - _this.keySelector = keySelector; - _this.elementSelector = elementSelector; - _this.durationSelector = durationSelector; - _this.subjectSelector = subjectSelector; - _this.groups = null; - _this.attemptedToUnsubscribe = false; - _this.count = 0; - return _this; - } - GroupBySubscriber.prototype._next = function (value) { - var key; - try { - key = this.keySelector(value); - } - catch (err) { - this.error(err); - return; - } - this._group(value, key); - }; - GroupBySubscriber.prototype._group = function (value, key) { - var groups = this.groups; - if (!groups) { - groups = this.groups = new Map(); - } - var group = groups.get(key); - var element; - if (this.elementSelector) { - try { - element = this.elementSelector(value); - } - catch (err) { - this.error(err); - } - } - else { - element = value; - } - if (!group) { - group = (this.subjectSelector ? this.subjectSelector() : new _Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]()); - groups.set(key, group); - var groupedObservable = new GroupedObservable(key, group, this); - this.destination.next(groupedObservable); - if (this.durationSelector) { - var duration = void 0; - try { - duration = this.durationSelector(new GroupedObservable(key, group)); - } - catch (err) { - this.error(err); - return; - } - this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this))); - } - } - if (!group.closed) { - group.next(element); - } - }; - GroupBySubscriber.prototype._error = function (err) { - var groups = this.groups; - if (groups) { - groups.forEach(function (group, key) { - group.error(err); - }); - groups.clear(); - } - this.destination.error(err); - }; - GroupBySubscriber.prototype._complete = function () { - var groups = this.groups; - if (groups) { - groups.forEach(function (group, key) { - group.complete(); - }); - groups.clear(); - } - this.destination.complete(); - }; - GroupBySubscriber.prototype.removeGroup = function (key) { - this.groups.delete(key); - }; - GroupBySubscriber.prototype.unsubscribe = function () { - if (!this.closed) { - this.attemptedToUnsubscribe = true; - if (this.count === 0) { - _super.prototype.unsubscribe.call(this); - } - } - }; - return GroupBySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -var GroupDurationSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupDurationSubscriber, _super); - function GroupDurationSubscriber(key, group, parent) { - var _this = _super.call(this, group) || this; - _this.key = key; - _this.group = group; - _this.parent = parent; - return _this; - } - GroupDurationSubscriber.prototype._next = function (value) { - this.complete(); - }; - GroupDurationSubscriber.prototype._unsubscribe = function () { - var _a = this, parent = _a.parent, key = _a.key; - this.key = this.parent = null; - if (parent) { - parent.removeGroup(key); - } - }; - return GroupDurationSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -var GroupedObservable = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupedObservable, _super); - function GroupedObservable(key, groupSubject, refCountSubscription) { - var _this = _super.call(this) || this; - _this.key = key; - _this.groupSubject = groupSubject; - _this.refCountSubscription = refCountSubscription; - return _this; - } - GroupedObservable.prototype._subscribe = function (subscriber) { - var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](); - var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject; - if (refCountSubscription && !refCountSubscription.closed) { - subscription.add(new InnerRefCountSubscription(refCountSubscription)); - } - subscription.add(groupSubject.subscribe(subscriber)); - return subscription; - }; - return GroupedObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"])); - -var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerRefCountSubscription, _super); - function InnerRefCountSubscription(parent) { - var _this = _super.call(this) || this; - _this.parent = parent; - parent.count++; - return _this; - } - InnerRefCountSubscription.prototype.unsubscribe = function () { - var parent = this.parent; - if (!parent.closed && !this.closed) { - _super.prototype.unsubscribe.call(this); - parent.count -= 1; - if (parent.count === 0 && parent.attemptedToUnsubscribe) { - parent.unsubscribe(); - } - } - }; - return InnerRefCountSubscription; -}(_Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"])); -//# sourceMappingURL=groupBy.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js ***! - \**********************************************************************/ -/*! exports provided: ignoreElements */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function ignoreElements() { - return function ignoreElementsOperatorFunction(source) { - return source.lift(new IgnoreElementsOperator()); - }; -} -var IgnoreElementsOperator = /*@__PURE__*/ (function () { - function IgnoreElementsOperator() { - } - IgnoreElementsOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new IgnoreElementsSubscriber(subscriber)); - }; - return IgnoreElementsOperator; -}()); -var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IgnoreElementsSubscriber, _super); - function IgnoreElementsSubscriber() { - return _super !== null && _super.apply(this, arguments) || this; - } - IgnoreElementsSubscriber.prototype._next = function (unused) { - }; - return IgnoreElementsSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=ignoreElements.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/isEmpty.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/isEmpty.js ***! - \***************************************************************/ -/*! exports provided: isEmpty */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function isEmpty() { - return function (source) { return source.lift(new IsEmptyOperator()); }; -} -var IsEmptyOperator = /*@__PURE__*/ (function () { - function IsEmptyOperator() { - } - IsEmptyOperator.prototype.call = function (observer, source) { - return source.subscribe(new IsEmptySubscriber(observer)); - }; - return IsEmptyOperator; -}()); -var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IsEmptySubscriber, _super); - function IsEmptySubscriber(destination) { - return _super.call(this, destination) || this; - } - IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) { - var destination = this.destination; - destination.next(isEmpty); - destination.complete(); - }; - IsEmptySubscriber.prototype._next = function (value) { - this.notifyComplete(false); - }; - IsEmptySubscriber.prototype._complete = function () { - this.notifyComplete(true); - }; - return IsEmptySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=isEmpty.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/last.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/last.js ***! - \************************************************************/ -/*! exports provided: last */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ - - - - - - -function last(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__["takeLast"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); }; -} -//# sourceMappingURL=last.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/map.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/map.js ***! - \***********************************************************/ -/*! exports provided: map, MapOperator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapOperator", function() { return MapOperator; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function map(project, thisArg) { - return function mapOperation(source) { - if (typeof project !== 'function') { - throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); - } - return source.lift(new MapOperator(project, thisArg)); - }; -} -var MapOperator = /*@__PURE__*/ (function () { - function MapOperator(project, thisArg) { - this.project = project; - this.thisArg = thisArg; - } - MapOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); - }; - return MapOperator; -}()); - -var MapSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapSubscriber, _super); - function MapSubscriber(destination, project, thisArg) { - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.count = 0; - _this.thisArg = thisArg || _this; - return _this; - } - MapSubscriber.prototype._next = function (value) { - var result; - try { - result = this.project.call(this.thisArg, value, this.count++); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - }; - return MapSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=map.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/mapTo.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/mapTo.js ***! - \*************************************************************/ -/*! exports provided: mapTo */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function mapTo(value) { - return function (source) { return source.lift(new MapToOperator(value)); }; -} -var MapToOperator = /*@__PURE__*/ (function () { - function MapToOperator(value) { - this.value = value; - } - MapToOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new MapToSubscriber(subscriber, this.value)); - }; - return MapToOperator; -}()); -var MapToSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapToSubscriber, _super); - function MapToSubscriber(destination, value) { - var _this = _super.call(this, destination) || this; - _this.value = value; - return _this; - } - MapToSubscriber.prototype._next = function (x) { - this.destination.next(this.value); - }; - return MapToSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=mapTo.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/materialize.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/materialize.js ***! - \*******************************************************************/ -/*! exports provided: materialize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ - - - -function materialize() { - return function materializeOperatorFunction(source) { - return source.lift(new MaterializeOperator()); - }; -} -var MaterializeOperator = /*@__PURE__*/ (function () { - function MaterializeOperator() { - } - MaterializeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new MaterializeSubscriber(subscriber)); - }; - return MaterializeOperator; -}()); -var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MaterializeSubscriber, _super); - function MaterializeSubscriber(destination) { - return _super.call(this, destination) || this; - } - MaterializeSubscriber.prototype._next = function (value) { - this.destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value)); - }; - MaterializeSubscriber.prototype._error = function (err) { - var destination = this.destination; - destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err)); - destination.complete(); - }; - MaterializeSubscriber.prototype._complete = function () { - var destination = this.destination; - destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete()); - destination.complete(); - }; - return MaterializeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=materialize.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/max.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/max.js ***! - \***********************************************************/ -/*! exports provided: max */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); -/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ - -function max(comparer) { - var max = (typeof comparer === 'function') - ? function (x, y) { return comparer(x, y) > 0 ? x : y; } - : function (x, y) { return x > y ? x : y; }; - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(max); -} -//# sourceMappingURL=max.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/merge.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/merge.js ***! - \*************************************************************/ -/*! exports provided: merge */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); -/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/merge */ "./node_modules/rxjs/_esm5/internal/observable/merge.js"); -/** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */ - -function merge() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - return function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); }; -} -//# sourceMappingURL=merge.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/mergeAll.js ***! - \****************************************************************/ -/*! exports provided: mergeAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ - - -function mergeAll(concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"], concurrent); -} -//# sourceMappingURL=mergeAll.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/mergeMap.js ***! - \****************************************************************/ -/*! exports provided: mergeMap, MergeMapOperator, MergeMapSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapOperator", function() { return MergeMapOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapSubscriber", function() { return MergeMapSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */ - - - - - - -function mergeMap(project, resultSelector, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - if (typeof resultSelector === 'function') { - return function (source) { return source.pipe(mergeMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); }; - } - else if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); }; -} -var MergeMapOperator = /*@__PURE__*/ (function () { - function MergeMapOperator(project, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - this.project = project; - this.concurrent = concurrent; - } - MergeMapOperator.prototype.call = function (observer, source) { - return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent)); - }; - return MergeMapOperator; -}()); - -var MergeMapSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeMapSubscriber, _super); - function MergeMapSubscriber(destination, project, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.concurrent = concurrent; - _this.hasCompleted = false; - _this.buffer = []; - _this.active = 0; - _this.index = 0; - return _this; - } - MergeMapSubscriber.prototype._next = function (value) { - if (this.active < this.concurrent) { - this._tryNext(value); - } - else { - this.buffer.push(value); - } - }; - MergeMapSubscriber.prototype._tryNext = function (value) { - var result; - var index = this.index++; - try { - result = this.project(value, index); - } - catch (err) { - this.destination.error(err); - return; - } - this.active++; - this._innerSub(result, value, index); - }; - MergeMapSubscriber.prototype._innerSub = function (ish, value, index) { - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__["InnerSubscriber"](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__["subscribeToResult"])(this, ish, value, index, innerSubscriber); - }; - MergeMapSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (this.active === 0 && this.buffer.length === 0) { - this.destination.complete(); - } - this.unsubscribe(); - }; - MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - MergeMapSubscriber.prototype.notifyComplete = function (innerSub) { - var buffer = this.buffer; - this.remove(innerSub); - this.active--; - if (buffer.length > 0) { - this._next(buffer.shift()); - } - else if (this.active === 0 && this.hasCompleted) { - this.destination.complete(); - } - }; - return MergeMapSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); - -//# sourceMappingURL=mergeMap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js ***! - \******************************************************************/ -/*! exports provided: mergeMapTo */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); -/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ - -function mergeMapTo(innerObservable, resultSelector, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - if (typeof resultSelector === 'function') { - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, resultSelector, concurrent); - } - if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, concurrent); -} -//# sourceMappingURL=mergeMapTo.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeScan.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/mergeScan.js ***! - \*****************************************************************/ -/*! exports provided: mergeScan, MergeScanOperator, MergeScanSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanOperator", function() { return MergeScanOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanSubscriber", function() { return MergeScanSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber PURE_IMPORTS_END */ - - - - -function mergeScan(accumulator, seed, concurrent) { - if (concurrent === void 0) { - concurrent = Number.POSITIVE_INFINITY; - } - return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); }; -} -var MergeScanOperator = /*@__PURE__*/ (function () { - function MergeScanOperator(accumulator, seed, concurrent) { - this.accumulator = accumulator; - this.seed = seed; - this.concurrent = concurrent; - } - MergeScanOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent)); - }; - return MergeScanOperator; -}()); - -var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeScanSubscriber, _super); - function MergeScanSubscriber(destination, accumulator, acc, concurrent) { - var _this = _super.call(this, destination) || this; - _this.accumulator = accumulator; - _this.acc = acc; - _this.concurrent = concurrent; - _this.hasValue = false; - _this.hasCompleted = false; - _this.buffer = []; - _this.active = 0; - _this.index = 0; - return _this; - } - MergeScanSubscriber.prototype._next = function (value) { - if (this.active < this.concurrent) { - var index = this.index++; - var destination = this.destination; - var ish = void 0; - try { - var accumulator = this.accumulator; - ish = accumulator(this.acc, value, index); - } - catch (e) { - return destination.error(e); - } - this.active++; - this._innerSub(ish, value, index); - } - else { - this.buffer.push(value); - } - }; - MergeScanSubscriber.prototype._innerSub = function (ish, value, index) { - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__["InnerSubscriber"](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__["subscribeToResult"])(this, ish, value, index, innerSubscriber); - }; - MergeScanSubscriber.prototype._complete = function () { - this.hasCompleted = true; - if (this.active === 0 && this.buffer.length === 0) { - if (this.hasValue === false) { - this.destination.next(this.acc); - } - this.destination.complete(); - } - this.unsubscribe(); - }; - MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - var destination = this.destination; - this.acc = innerValue; - this.hasValue = true; - destination.next(innerValue); - }; - MergeScanSubscriber.prototype.notifyComplete = function (innerSub) { - var buffer = this.buffer; - var destination = this.destination; - destination.remove(innerSub); - this.active--; - if (buffer.length > 0) { - this._next(buffer.shift()); - } - else if (this.active === 0 && this.hasCompleted) { - if (this.hasValue === false) { - this.destination.next(this.acc); - } - this.destination.complete(); - } - }; - return MergeScanSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); - -//# sourceMappingURL=mergeScan.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/min.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/min.js ***! - \***********************************************************/ -/*! exports provided: min */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); -/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ - -function min(comparer) { - var min = (typeof comparer === 'function') - ? function (x, y) { return comparer(x, y) < 0 ? x : y; } - : function (x, y) { return x < y ? x : y; }; - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(min); -} -//# sourceMappingURL=min.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/multicast.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/multicast.js ***! - \*****************************************************************/ -/*! exports provided: multicast, MulticastOperator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MulticastOperator", function() { return MulticastOperator; }); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/ConnectableObservable */ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js"); -/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ - -function multicast(subjectOrSubjectFactory, selector) { - return function multicastOperatorFunction(source) { - var subjectFactory; - if (typeof subjectOrSubjectFactory === 'function') { - subjectFactory = subjectOrSubjectFactory; - } - else { - subjectFactory = function subjectFactory() { - return subjectOrSubjectFactory; - }; - } - if (typeof selector === 'function') { - return source.lift(new MulticastOperator(subjectFactory, selector)); - } - var connectable = Object.create(source, _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__["connectableObservableDescriptor"]); - connectable.source = source; - connectable.subjectFactory = subjectFactory; - return connectable; - }; -} -var MulticastOperator = /*@__PURE__*/ (function () { - function MulticastOperator(subjectFactory, selector) { - this.subjectFactory = subjectFactory; - this.selector = selector; - } - MulticastOperator.prototype.call = function (subscriber, source) { - var selector = this.selector; - var subject = this.subjectFactory(); - var subscription = selector(subject).subscribe(subscriber); - subscription.add(source.subscribe(subject)); - return subscription; - }; - return MulticastOperator; -}()); - -//# sourceMappingURL=multicast.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/observeOn.js ***! - \*****************************************************************/ -/*! exports provided: observeOn, ObserveOnOperator, ObserveOnSubscriber, ObserveOnMessage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return observeOn; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnOperator", function() { return ObserveOnOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnSubscriber", function() { return ObserveOnSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnMessage", function() { return ObserveOnMessage; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ - - - -function observeOn(scheduler, delay) { - if (delay === void 0) { - delay = 0; - } - return function observeOnOperatorFunction(source) { - return source.lift(new ObserveOnOperator(scheduler, delay)); - }; -} -var ObserveOnOperator = /*@__PURE__*/ (function () { - function ObserveOnOperator(scheduler, delay) { - if (delay === void 0) { - delay = 0; - } - this.scheduler = scheduler; - this.delay = delay; - } - ObserveOnOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay)); - }; - return ObserveOnOperator; -}()); - -var ObserveOnSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ObserveOnSubscriber, _super); - function ObserveOnSubscriber(destination, scheduler, delay) { - if (delay === void 0) { - delay = 0; - } - var _this = _super.call(this, destination) || this; - _this.scheduler = scheduler; - _this.delay = delay; - return _this; - } - ObserveOnSubscriber.dispatch = function (arg) { - var notification = arg.notification, destination = arg.destination; - notification.observe(destination); - this.unsubscribe(); - }; - ObserveOnSubscriber.prototype.scheduleMessage = function (notification) { - var destination = this.destination; - destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination))); - }; - ObserveOnSubscriber.prototype._next = function (value) { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value)); - }; - ObserveOnSubscriber.prototype._error = function (err) { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err)); - this.unsubscribe(); - }; - ObserveOnSubscriber.prototype._complete = function () { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete()); - this.unsubscribe(); - }; - return ObserveOnSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); - -var ObserveOnMessage = /*@__PURE__*/ (function () { - function ObserveOnMessage(notification, destination) { - this.notification = notification; - this.destination = destination; - } - return ObserveOnMessage; -}()); - -//# sourceMappingURL=observeOn.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js": -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js ***! - \*************************************************************************/ -/*! exports provided: onErrorResumeNext, onErrorResumeNextStatic */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNextStatic", function() { return onErrorResumeNextStatic; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - - - -function onErrorResumeNext() { - var nextSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - nextSources[_i] = arguments[_i]; - } - if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) { - nextSources = nextSources[0]; - } - return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); }; -} -function onErrorResumeNextStatic() { - var nextSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - nextSources[_i] = arguments[_i]; - } - var source = null; - if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) { - nextSources = nextSources[0]; - } - source = nextSources.shift(); - return Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__["from"])(source, null).lift(new OnErrorResumeNextOperator(nextSources)); -} -var OnErrorResumeNextOperator = /*@__PURE__*/ (function () { - function OnErrorResumeNextOperator(nextSources) { - this.nextSources = nextSources; - } - OnErrorResumeNextOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources)); - }; - return OnErrorResumeNextOperator; -}()); -var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OnErrorResumeNextSubscriber, _super); - function OnErrorResumeNextSubscriber(destination, nextSources) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - _this.nextSources = nextSources; - return _this; - } - OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) { - this.subscribeToNextSource(); - }; - OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) { - this.subscribeToNextSource(); - }; - OnErrorResumeNextSubscriber.prototype._error = function (err) { - this.subscribeToNextSource(); - this.unsubscribe(); - }; - OnErrorResumeNextSubscriber.prototype._complete = function () { - this.subscribeToNextSource(); - this.unsubscribe(); - }; - OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () { - var next = this.nextSources.shift(); - if (!!next) { - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_4__["InnerSubscriber"](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__["subscribeToResult"])(this, next, undefined, undefined, innerSubscriber); - } - else { - this.destination.complete(); - } - }; - return OnErrorResumeNextSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); -//# sourceMappingURL=onErrorResumeNext.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/pairwise.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/pairwise.js ***! - \****************************************************************/ -/*! exports provided: pairwise */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function pairwise() { - return function (source) { return source.lift(new PairwiseOperator()); }; -} -var PairwiseOperator = /*@__PURE__*/ (function () { - function PairwiseOperator() { - } - PairwiseOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new PairwiseSubscriber(subscriber)); - }; - return PairwiseOperator; -}()); -var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](PairwiseSubscriber, _super); - function PairwiseSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.hasPrev = false; - return _this; - } - PairwiseSubscriber.prototype._next = function (value) { - var pair; - if (this.hasPrev) { - pair = [this.prev, value]; - } - else { - this.hasPrev = true; - } - this.prev = value; - if (pair) { - this.destination.next(pair); - } - }; - return PairwiseSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=pairwise.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/partition.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/partition.js ***! - \*****************************************************************/ -/*! exports provided: partition */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/not */ "./node_modules/rxjs/_esm5/internal/util/not.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */ - - -function partition(predicate, thisArg) { - return function (source) { - return [ - Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(predicate, thisArg)(source), - Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(source) - ]; - }; -} -//# sourceMappingURL=partition.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/pluck.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/pluck.js ***! - \*************************************************************/ -/*! exports provided: pluck */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START _map PURE_IMPORTS_END */ - -function pluck() { - var properties = []; - for (var _i = 0; _i < arguments.length; _i++) { - properties[_i] = arguments[_i]; - } - var length = properties.length; - if (length === 0) { - throw new Error('list of properties cannot be empty.'); - } - return function (source) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(plucker(properties, length))(source); }; -} -function plucker(props, length) { - var mapper = function (x) { - var currentProp = x; - for (var i = 0; i < length; i++) { - var p = currentProp[props[i]]; - if (typeof p !== 'undefined') { - currentProp = p; - } - else { - return undefined; - } - } - return currentProp; - }; - return mapper; -} -//# sourceMappingURL=pluck.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/publish.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/publish.js ***! - \***************************************************************/ -/*! exports provided: publish */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ - - -function publish(selector) { - return selector ? - Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"](); }, selector) : - Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]()); -} -//# sourceMappingURL=publish.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js": -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js ***! - \***********************************************************************/ -/*! exports provided: publishBehavior */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); -/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BehaviorSubject */ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ - - -function publishBehavior(value) { - return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](value))(source); }; -} -//# sourceMappingURL=publishBehavior.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/publishLast.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/publishLast.js ***! - \*******************************************************************/ -/*! exports provided: publishLast */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ - - -function publishLast() { - return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__["AsyncSubject"]())(source); }; -} -//# sourceMappingURL=publishLast.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/publishReplay.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/publishReplay.js ***! - \*********************************************************************/ -/*! exports provided: publishReplay */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ - - -function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { - if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') { - scheduler = selectorOrScheduler; - } - var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined; - var subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); - return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return subject; }, selector)(source); }; -} -//# sourceMappingURL=publishReplay.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/race.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/race.js ***! - \************************************************************/ -/*! exports provided: race */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/race */ "./node_modules/rxjs/_esm5/internal/observable/race.js"); -/** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */ - - -function race() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - return function raceOperatorFunction(source) { - if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) { - observables = observables[0]; - } - return source.lift.call(_observable_race__WEBPACK_IMPORTED_MODULE_1__["race"].apply(void 0, [source].concat(observables))); - }; -} -//# sourceMappingURL=race.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/reduce.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/reduce.js ***! - \**************************************************************/ -/*! exports provided: reduce */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); -/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ - - - - -function reduce(accumulator, seed) { - if (arguments.length >= 2) { - return function reduceOperatorFunctionWithSeed(source) { - return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(accumulator, seed), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1), Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__["defaultIfEmpty"])(seed))(source); - }; - } - return function reduceOperatorFunction(source) { - return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1))(source); - }; -} -//# sourceMappingURL=reduce.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/refCount.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/refCount.js ***! - \****************************************************************/ -/*! exports provided: refCount */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function refCount() { - return function refCountOperatorFunction(source) { - return source.lift(new RefCountOperator(source)); - }; -} -var RefCountOperator = /*@__PURE__*/ (function () { - function RefCountOperator(connectable) { - this.connectable = connectable; - } - RefCountOperator.prototype.call = function (subscriber, source) { - var connectable = this.connectable; - connectable._refCount++; - var refCounter = new RefCountSubscriber(subscriber, connectable); - var subscription = source.subscribe(refCounter); - if (!refCounter.closed) { - refCounter.connection = connectable.connect(); - } - return subscription; - }; - return RefCountOperator; -}()); -var RefCountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super); - function RefCountSubscriber(destination, connectable) { - var _this = _super.call(this, destination) || this; - _this.connectable = connectable; - return _this; - } - RefCountSubscriber.prototype._unsubscribe = function () { - var connectable = this.connectable; - if (!connectable) { - this.connection = null; - return; - } - this.connectable = null; - var refCount = connectable._refCount; - if (refCount <= 0) { - this.connection = null; - return; - } - connectable._refCount = refCount - 1; - if (refCount > 1) { - this.connection = null; - return; - } - var connection = this.connection; - var sharedConnection = connectable._connection; - this.connection = null; - if (sharedConnection && (!connection || sharedConnection === connection)) { - sharedConnection.unsubscribe(); - } - }; - return RefCountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=refCount.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/repeat.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/repeat.js ***! - \**************************************************************/ -/*! exports provided: repeat */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */ - - - -function repeat(count) { - if (count === void 0) { - count = -1; - } - return function (source) { - if (count === 0) { - return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])(); - } - else if (count < 0) { - return source.lift(new RepeatOperator(-1, source)); - } - else { - return source.lift(new RepeatOperator(count - 1, source)); - } - }; -} -var RepeatOperator = /*@__PURE__*/ (function () { - function RepeatOperator(count, source) { - this.count = count; - this.source = source; - } - RepeatOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source)); - }; - return RepeatOperator; -}()); -var RepeatSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatSubscriber, _super); - function RepeatSubscriber(destination, count, source) { - var _this = _super.call(this, destination) || this; - _this.count = count; - _this.source = source; - return _this; - } - RepeatSubscriber.prototype.complete = function () { - if (!this.isStopped) { - var _a = this, source = _a.source, count = _a.count; - if (count === 0) { - return _super.prototype.complete.call(this); - } - else if (count > -1) { - this.count = count - 1; - } - source.subscribe(this._unsubscribeAndRecycle()); - } - }; - return RepeatSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=repeat.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js ***! - \******************************************************************/ -/*! exports provided: repeatWhen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function repeatWhen(notifier) { - return function (source) { return source.lift(new RepeatWhenOperator(notifier)); }; -} -var RepeatWhenOperator = /*@__PURE__*/ (function () { - function RepeatWhenOperator(notifier) { - this.notifier = notifier; - } - RepeatWhenOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source)); - }; - return RepeatWhenOperator; -}()); -var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatWhenSubscriber, _super); - function RepeatWhenSubscriber(destination, notifier, source) { - var _this = _super.call(this, destination) || this; - _this.notifier = notifier; - _this.source = source; - _this.sourceIsBeingSubscribedTo = true; - return _this; - } - RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.sourceIsBeingSubscribedTo = true; - this.source.subscribe(this); - }; - RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) { - if (this.sourceIsBeingSubscribedTo === false) { - return _super.prototype.complete.call(this); - } - }; - RepeatWhenSubscriber.prototype.complete = function () { - this.sourceIsBeingSubscribedTo = false; - if (!this.isStopped) { - if (!this.retries) { - this.subscribeToRetries(); - } - if (!this.retriesSubscription || this.retriesSubscription.closed) { - return _super.prototype.complete.call(this); - } - this._unsubscribeAndRecycle(); - this.notifications.next(); - } - }; - RepeatWhenSubscriber.prototype._unsubscribe = function () { - var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription; - if (notifications) { - notifications.unsubscribe(); - this.notifications = null; - } - if (retriesSubscription) { - retriesSubscription.unsubscribe(); - this.retriesSubscription = null; - } - this.retries = null; - }; - RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () { - var _unsubscribe = this._unsubscribe; - this._unsubscribe = null; - _super.prototype._unsubscribeAndRecycle.call(this); - this._unsubscribe = _unsubscribe; - return this; - }; - RepeatWhenSubscriber.prototype.subscribeToRetries = function () { - this.notifications = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - var retries; - try { - var notifier = this.notifier; - retries = notifier(this.notifications); - } - catch (e) { - return _super.prototype.complete.call(this); - } - this.retries = retries; - this.retriesSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, retries); - }; - return RepeatWhenSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); -//# sourceMappingURL=repeatWhen.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/retry.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/retry.js ***! - \*************************************************************/ -/*! exports provided: retry */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function retry(count) { - if (count === void 0) { - count = -1; - } - return function (source) { return source.lift(new RetryOperator(count, source)); }; -} -var RetryOperator = /*@__PURE__*/ (function () { - function RetryOperator(count, source) { - this.count = count; - this.source = source; - } - RetryOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source)); - }; - return RetryOperator; -}()); -var RetrySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetrySubscriber, _super); - function RetrySubscriber(destination, count, source) { - var _this = _super.call(this, destination) || this; - _this.count = count; - _this.source = source; - return _this; - } - RetrySubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var _a = this, source = _a.source, count = _a.count; - if (count === 0) { - return _super.prototype.error.call(this, err); - } - else if (count > -1) { - this.count = count - 1; - } - source.subscribe(this._unsubscribeAndRecycle()); - } - }; - return RetrySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=retry.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/retryWhen.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/retryWhen.js ***! - \*****************************************************************/ -/*! exports provided: retryWhen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function retryWhen(notifier) { - return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); }; -} -var RetryWhenOperator = /*@__PURE__*/ (function () { - function RetryWhenOperator(notifier, source) { - this.notifier = notifier; - this.source = source; - } - RetryWhenOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source)); - }; - return RetryWhenOperator; -}()); -var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetryWhenSubscriber, _super); - function RetryWhenSubscriber(destination, notifier, source) { - var _this = _super.call(this, destination) || this; - _this.notifier = notifier; - _this.source = source; - return _this; - } - RetryWhenSubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var errors = this.errors; - var retries = this.retries; - var retriesSubscription = this.retriesSubscription; - if (!retries) { - errors = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - try { - var notifier = this.notifier; - retries = notifier(errors); - } - catch (e) { - return _super.prototype.error.call(this, e); - } - retriesSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, retries); - } - else { - this.errors = null; - this.retriesSubscription = null; - } - this._unsubscribeAndRecycle(); - this.errors = errors; - this.retries = retries; - this.retriesSubscription = retriesSubscription; - errors.next(err); - } - }; - RetryWhenSubscriber.prototype._unsubscribe = function () { - var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription; - if (errors) { - errors.unsubscribe(); - this.errors = null; - } - if (retriesSubscription) { - retriesSubscription.unsubscribe(); - this.retriesSubscription = null; - } - this.retries = null; - }; - RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - var _unsubscribe = this._unsubscribe; - this._unsubscribe = null; - this._unsubscribeAndRecycle(); - this._unsubscribe = _unsubscribe; - this.source.subscribe(this); - }; - return RetryWhenSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); -//# sourceMappingURL=retryWhen.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/sample.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/sample.js ***! - \**************************************************************/ -/*! exports provided: sample */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function sample(notifier) { - return function (source) { return source.lift(new SampleOperator(notifier)); }; -} -var SampleOperator = /*@__PURE__*/ (function () { - function SampleOperator(notifier) { - this.notifier = notifier; - } - SampleOperator.prototype.call = function (subscriber, source) { - var sampleSubscriber = new SampleSubscriber(subscriber); - var subscription = source.subscribe(sampleSubscriber); - subscription.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(sampleSubscriber, this.notifier)); - return subscription; - }; - return SampleOperator; -}()); -var SampleSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleSubscriber, _super); - function SampleSubscriber() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.hasValue = false; - return _this; - } - SampleSubscriber.prototype._next = function (value) { - this.value = value; - this.hasValue = true; - }; - SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.emitValue(); - }; - SampleSubscriber.prototype.notifyComplete = function () { - this.emitValue(); - }; - SampleSubscriber.prototype.emitValue = function () { - if (this.hasValue) { - this.hasValue = false; - this.destination.next(this.value); - } - }; - return SampleSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=sample.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/sampleTime.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/sampleTime.js ***! - \******************************************************************/ -/*! exports provided: sampleTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ - - - -function sampleTime(period, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; - } - return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); }; -} -var SampleTimeOperator = /*@__PURE__*/ (function () { - function SampleTimeOperator(period, scheduler) { - this.period = period; - this.scheduler = scheduler; - } - SampleTimeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler)); - }; - return SampleTimeOperator; -}()); -var SampleTimeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleTimeSubscriber, _super); - function SampleTimeSubscriber(destination, period, scheduler) { - var _this = _super.call(this, destination) || this; - _this.period = period; - _this.scheduler = scheduler; - _this.hasValue = false; - _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period })); - return _this; - } - SampleTimeSubscriber.prototype._next = function (value) { - this.lastValue = value; - this.hasValue = true; - }; - SampleTimeSubscriber.prototype.notifyNext = function () { - if (this.hasValue) { - this.hasValue = false; - this.destination.next(this.lastValue); - } - }; - return SampleTimeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -function dispatchNotification(state) { - var subscriber = state.subscriber, period = state.period; - subscriber.notifyNext(); - this.schedule(state, period); -} -//# sourceMappingURL=sampleTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/scan.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/scan.js ***! - \************************************************************/ -/*! exports provided: scan */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function scan(accumulator, seed) { - var hasSeed = false; - if (arguments.length >= 2) { - hasSeed = true; - } - return function scanOperatorFunction(source) { - return source.lift(new ScanOperator(accumulator, seed, hasSeed)); - }; -} -var ScanOperator = /*@__PURE__*/ (function () { - function ScanOperator(accumulator, seed, hasSeed) { - if (hasSeed === void 0) { - hasSeed = false; - } - this.accumulator = accumulator; - this.seed = seed; - this.hasSeed = hasSeed; - } - ScanOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed)); - }; - return ScanOperator; -}()); -var ScanSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ScanSubscriber, _super); - function ScanSubscriber(destination, accumulator, _seed, hasSeed) { - var _this = _super.call(this, destination) || this; - _this.accumulator = accumulator; - _this._seed = _seed; - _this.hasSeed = hasSeed; - _this.index = 0; - return _this; - } - Object.defineProperty(ScanSubscriber.prototype, "seed", { - get: function () { - return this._seed; - }, - set: function (value) { - this.hasSeed = true; - this._seed = value; - }, - enumerable: true, - configurable: true - }); - ScanSubscriber.prototype._next = function (value) { - if (!this.hasSeed) { - this.seed = value; - this.destination.next(value); - } - else { - return this._tryNext(value); - } - }; - ScanSubscriber.prototype._tryNext = function (value) { - var index = this.index++; - var result; - try { - result = this.accumulator(this.seed, value, index); - } - catch (err) { - this.destination.error(err); - } - this.seed = result; - this.destination.next(result); - }; - return ScanSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=scan.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js ***! - \*********************************************************************/ -/*! exports provided: sequenceEqual, SequenceEqualOperator, SequenceEqualSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualOperator", function() { return SequenceEqualOperator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualSubscriber", function() { return SequenceEqualSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function sequenceEqual(compareTo, comparator) { - return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); }; -} -var SequenceEqualOperator = /*@__PURE__*/ (function () { - function SequenceEqualOperator(compareTo, comparator) { - this.compareTo = compareTo; - this.comparator = comparator; - } - SequenceEqualOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator)); - }; - return SequenceEqualOperator; -}()); - -var SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualSubscriber, _super); - function SequenceEqualSubscriber(destination, compareTo, comparator) { - var _this = _super.call(this, destination) || this; - _this.compareTo = compareTo; - _this.comparator = comparator; - _this._a = []; - _this._b = []; - _this._oneComplete = false; - _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this))); - return _this; - } - SequenceEqualSubscriber.prototype._next = function (value) { - if (this._oneComplete && this._b.length === 0) { - this.emit(false); - } - else { - this._a.push(value); - this.checkValues(); - } - }; - SequenceEqualSubscriber.prototype._complete = function () { - if (this._oneComplete) { - this.emit(this._a.length === 0 && this._b.length === 0); - } - else { - this._oneComplete = true; - } - this.unsubscribe(); - }; - SequenceEqualSubscriber.prototype.checkValues = function () { - var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator; - while (_a.length > 0 && _b.length > 0) { - var a = _a.shift(); - var b = _b.shift(); - var areEqual = false; - try { - areEqual = comparator ? comparator(a, b) : a === b; - } - catch (e) { - this.destination.error(e); - } - if (!areEqual) { - this.emit(false); - } - } - }; - SequenceEqualSubscriber.prototype.emit = function (value) { - var destination = this.destination; - destination.next(value); - destination.complete(); - }; - SequenceEqualSubscriber.prototype.nextB = function (value) { - if (this._oneComplete && this._a.length === 0) { - this.emit(false); - } - else { - this._b.push(value); - this.checkValues(); - } - }; - SequenceEqualSubscriber.prototype.completeB = function () { - if (this._oneComplete) { - this.emit(this._a.length === 0 && this._b.length === 0); - } - else { - this._oneComplete = true; - } - }; - return SequenceEqualSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); - -var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualCompareToSubscriber, _super); - function SequenceEqualCompareToSubscriber(destination, parent) { - var _this = _super.call(this, destination) || this; - _this.parent = parent; - return _this; - } - SequenceEqualCompareToSubscriber.prototype._next = function (value) { - this.parent.nextB(value); - }; - SequenceEqualCompareToSubscriber.prototype._error = function (err) { - this.parent.error(err); - this.unsubscribe(); - }; - SequenceEqualCompareToSubscriber.prototype._complete = function () { - this.parent.completeB(); - this.unsubscribe(); - }; - return SequenceEqualCompareToSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=sequenceEqual.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/share.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/share.js ***! - \*************************************************************/ -/*! exports provided: share */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ - - - -function shareSubjectFactory() { - return new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"](); -} -function share() { - return function (source) { return Object(_refCount__WEBPACK_IMPORTED_MODULE_1__["refCount"])()(Object(_multicast__WEBPACK_IMPORTED_MODULE_0__["multicast"])(shareSubjectFactory)(source)); }; -} -//# sourceMappingURL=share.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/shareReplay.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/shareReplay.js ***! - \*******************************************************************/ -/*! exports provided: shareReplay */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); -/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */ - -function shareReplay(configOrBufferSize, windowTime, scheduler) { - var config; - if (configOrBufferSize && typeof configOrBufferSize === 'object') { - config = configOrBufferSize; - } - else { - config = { - bufferSize: configOrBufferSize, - windowTime: windowTime, - refCount: false, - scheduler: scheduler - }; - } - return function (source) { return source.lift(shareReplayOperator(config)); }; -} -function shareReplayOperator(_a) { - var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler; - var subject; - var refCount = 0; - var subscription; - var hasError = false; - var isComplete = false; - return function shareReplayOperation(source) { - refCount++; - if (!subject || hasError) { - hasError = false; - subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); - subscription = source.subscribe({ - next: function (value) { subject.next(value); }, - error: function (err) { - hasError = true; - subject.error(err); - }, - complete: function () { - isComplete = true; - subject.complete(); - }, - }); - } - var innerSub = subject.subscribe(this); - this.add(function () { - refCount--; - innerSub.unsubscribe(); - if (subscription && !isComplete && useRefCount && refCount === 0) { - subscription.unsubscribe(); - subscription = undefined; - subject = undefined; - } - }); - }; -} -//# sourceMappingURL=shareReplay.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/single.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/single.js ***! - \**************************************************************/ -/*! exports provided: single */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */ - - - -function single(predicate) { - return function (source) { return source.lift(new SingleOperator(predicate, source)); }; -} -var SingleOperator = /*@__PURE__*/ (function () { - function SingleOperator(predicate, source) { - this.predicate = predicate; - this.source = source; - } - SingleOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source)); - }; - return SingleOperator; -}()); -var SingleSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SingleSubscriber, _super); - function SingleSubscriber(destination, predicate, source) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.source = source; - _this.seenValue = false; - _this.index = 0; - return _this; - } - SingleSubscriber.prototype.applySingleValue = function (value) { - if (this.seenValue) { - this.destination.error('Sequence contains more than one element'); - } - else { - this.seenValue = true; - this.singleValue = value; - } - }; - SingleSubscriber.prototype._next = function (value) { - var index = this.index++; - if (this.predicate) { - this.tryNext(value, index); - } - else { - this.applySingleValue(value); - } - }; - SingleSubscriber.prototype.tryNext = function (value, index) { - try { - if (this.predicate(value, index, this.source)) { - this.applySingleValue(value); - } - } - catch (err) { - this.destination.error(err); - } - }; - SingleSubscriber.prototype._complete = function () { - var destination = this.destination; - if (this.index > 0) { - destination.next(this.seenValue ? this.singleValue : undefined); - destination.complete(); - } - else { - destination.error(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__["EmptyError"]); - } - }; - return SingleSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=single.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/skip.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/skip.js ***! - \************************************************************/ -/*! exports provided: skip */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function skip(count) { - return function (source) { return source.lift(new SkipOperator(count)); }; -} -var SkipOperator = /*@__PURE__*/ (function () { - function SkipOperator(total) { - this.total = total; - } - SkipOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SkipSubscriber(subscriber, this.total)); - }; - return SkipOperator; -}()); -var SkipSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipSubscriber, _super); - function SkipSubscriber(destination, total) { - var _this = _super.call(this, destination) || this; - _this.total = total; - _this.count = 0; - return _this; - } - SkipSubscriber.prototype._next = function (x) { - if (++this.count > this.total) { - this.destination.next(x); - } - }; - return SkipSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=skip.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/skipLast.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/skipLast.js ***! - \****************************************************************/ -/*! exports provided: skipLast */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */ - - - -function skipLast(count) { - return function (source) { return source.lift(new SkipLastOperator(count)); }; -} -var SkipLastOperator = /*@__PURE__*/ (function () { - function SkipLastOperator(_skipCount) { - this._skipCount = _skipCount; - if (this._skipCount < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; - } - } - SkipLastOperator.prototype.call = function (subscriber, source) { - if (this._skipCount === 0) { - return source.subscribe(new _Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"](subscriber)); - } - else { - return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount)); - } - }; - return SkipLastOperator; -}()); -var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipLastSubscriber, _super); - function SkipLastSubscriber(destination, _skipCount) { - var _this = _super.call(this, destination) || this; - _this._skipCount = _skipCount; - _this._count = 0; - _this._ring = new Array(_skipCount); - return _this; - } - SkipLastSubscriber.prototype._next = function (value) { - var skipCount = this._skipCount; - var count = this._count++; - if (count < skipCount) { - this._ring[count] = value; - } - else { - var currentIndex = count % skipCount; - var ring = this._ring; - var oldValue = ring[currentIndex]; - ring[currentIndex] = value; - this.destination.next(oldValue); - } - }; - return SkipLastSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=skipLast.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/skipUntil.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/skipUntil.js ***! - \*****************************************************************/ -/*! exports provided: skipUntil */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function skipUntil(notifier) { - return function (source) { return source.lift(new SkipUntilOperator(notifier)); }; -} -var SkipUntilOperator = /*@__PURE__*/ (function () { - function SkipUntilOperator(notifier) { - this.notifier = notifier; - } - SkipUntilOperator.prototype.call = function (destination, source) { - return source.subscribe(new SkipUntilSubscriber(destination, this.notifier)); - }; - return SkipUntilOperator; -}()); -var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipUntilSubscriber, _super); - function SkipUntilSubscriber(destination, notifier) { - var _this = _super.call(this, destination) || this; - _this.hasValue = false; - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](_this, undefined, undefined); - _this.add(innerSubscriber); - _this.innerSubscription = innerSubscriber; - Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(_this, notifier, undefined, undefined, innerSubscriber); - return _this; - } - SkipUntilSubscriber.prototype._next = function (value) { - if (this.hasValue) { - _super.prototype._next.call(this, value); - } - }; - SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.hasValue = true; - if (this.innerSubscription) { - this.innerSubscription.unsubscribe(); - } - }; - SkipUntilSubscriber.prototype.notifyComplete = function () { - }; - return SkipUntilSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=skipUntil.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/skipWhile.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/skipWhile.js ***! - \*****************************************************************/ -/*! exports provided: skipWhile */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function skipWhile(predicate) { - return function (source) { return source.lift(new SkipWhileOperator(predicate)); }; -} -var SkipWhileOperator = /*@__PURE__*/ (function () { - function SkipWhileOperator(predicate) { - this.predicate = predicate; - } - SkipWhileOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate)); - }; - return SkipWhileOperator; -}()); -var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipWhileSubscriber, _super); - function SkipWhileSubscriber(destination, predicate) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.skipping = true; - _this.index = 0; - return _this; - } - SkipWhileSubscriber.prototype._next = function (value) { - var destination = this.destination; - if (this.skipping) { - this.tryCallPredicate(value); - } - if (!this.skipping) { - destination.next(value); - } - }; - SkipWhileSubscriber.prototype.tryCallPredicate = function (value) { - try { - var result = this.predicate(value, this.index++); - this.skipping = Boolean(result); - } - catch (err) { - this.destination.error(err); - } - }; - return SkipWhileSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=skipWhile.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/startWith.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/startWith.js ***! - \*****************************************************************/ -/*! exports provided: startWith */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */ - - -function startWith() { - var array = []; - for (var _i = 0; _i < arguments.length; _i++) { - array[_i] = arguments[_i]; - } - var scheduler = array[array.length - 1]; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(scheduler)) { - array.pop(); - return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source, scheduler); }; - } - else { - return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source); }; - } -} -//# sourceMappingURL=startWith.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js ***! - \*******************************************************************/ -/*! exports provided: subscribeOn */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); -/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/SubscribeOnObservable */ "./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js"); -/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ - -function subscribeOn(scheduler, delay) { - if (delay === void 0) { - delay = 0; - } - return function subscribeOnOperatorFunction(source) { - return source.lift(new SubscribeOnOperator(scheduler, delay)); - }; -} -var SubscribeOnOperator = /*@__PURE__*/ (function () { - function SubscribeOnOperator(scheduler, delay) { - this.scheduler = scheduler; - this.delay = delay; - } - SubscribeOnOperator.prototype.call = function (subscriber, source) { - return new _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__["SubscribeOnObservable"](source, this.delay, this.scheduler).subscribe(subscriber); - }; - return SubscribeOnOperator; -}()); -//# sourceMappingURL=subscribeOn.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/switchAll.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/switchAll.js ***! - \*****************************************************************/ -/*! exports provided: switchAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); -/** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ - - -function switchAll() { - return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]); -} -//# sourceMappingURL=switchAll.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/switchMap.js ***! - \*****************************************************************/ -/*! exports provided: switchMap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ - - - - - - -function switchMap(project, resultSelector) { - if (typeof resultSelector === 'function') { - return function (source) { return source.pipe(switchMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); }; - } - return function (source) { return source.lift(new SwitchMapOperator(project)); }; -} -var SwitchMapOperator = /*@__PURE__*/ (function () { - function SwitchMapOperator(project) { - this.project = project; - } - SwitchMapOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new SwitchMapSubscriber(subscriber, this.project)); - }; - return SwitchMapOperator; -}()); -var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchMapSubscriber, _super); - function SwitchMapSubscriber(destination, project) { - var _this = _super.call(this, destination) || this; - _this.project = project; - _this.index = 0; - return _this; - } - SwitchMapSubscriber.prototype._next = function (value) { - var result; - var index = this.index++; - try { - result = this.project(value, index); - } - catch (error) { - this.destination.error(error); - return; - } - this._innerSub(result, value, index); - }; - SwitchMapSubscriber.prototype._innerSub = function (result, value, index) { - var innerSubscription = this.innerSubscription; - if (innerSubscription) { - innerSubscription.unsubscribe(); - } - var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); - var destination = this.destination; - destination.add(innerSubscriber); - this.innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, value, index, innerSubscriber); - }; - SwitchMapSubscriber.prototype._complete = function () { - var innerSubscription = this.innerSubscription; - if (!innerSubscription || innerSubscription.closed) { - _super.prototype._complete.call(this); - } - this.unsubscribe(); - }; - SwitchMapSubscriber.prototype._unsubscribe = function () { - this.innerSubscription = null; - }; - SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) { - var destination = this.destination; - destination.remove(innerSub); - this.innerSubscription = null; - if (this.isStopped) { - _super.prototype._complete.call(this); - } - }; - SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - return SwitchMapSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=switchMap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js ***! - \*******************************************************************/ -/*! exports provided: switchMapTo */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); -/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ - -function switchMapTo(innerObservable, resultSelector) { - return resultSelector ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }); -} -//# sourceMappingURL=switchMapTo.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/take.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/take.js ***! - \************************************************************/ -/*! exports provided: take */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ - - - - -function take(count) { - return function (source) { - if (count === 0) { - return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])(); - } - else { - return source.lift(new TakeOperator(count)); - } - }; -} -var TakeOperator = /*@__PURE__*/ (function () { - function TakeOperator(total) { - this.total = total; - if (this.total < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; - } - } - TakeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new TakeSubscriber(subscriber, this.total)); - }; - return TakeOperator; -}()); -var TakeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeSubscriber, _super); - function TakeSubscriber(destination, total) { - var _this = _super.call(this, destination) || this; - _this.total = total; - _this.count = 0; - return _this; - } - TakeSubscriber.prototype._next = function (value) { - var total = this.total; - var count = ++this.count; - if (count <= total) { - this.destination.next(value); - if (count === total) { - this.destination.complete(); - this.unsubscribe(); - } - } - }; - return TakeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=take.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/takeLast.js ***! - \****************************************************************/ -/*! exports provided: takeLast */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ - - - - -function takeLast(count) { - return function takeLastOperatorFunction(source) { - if (count === 0) { - return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])(); - } - else { - return source.lift(new TakeLastOperator(count)); - } - }; -} -var TakeLastOperator = /*@__PURE__*/ (function () { - function TakeLastOperator(total) { - this.total = total; - if (this.total < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; - } - } - TakeLastOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new TakeLastSubscriber(subscriber, this.total)); - }; - return TakeLastOperator; -}()); -var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeLastSubscriber, _super); - function TakeLastSubscriber(destination, total) { - var _this = _super.call(this, destination) || this; - _this.total = total; - _this.ring = new Array(); - _this.count = 0; - return _this; - } - TakeLastSubscriber.prototype._next = function (value) { - var ring = this.ring; - var total = this.total; - var count = this.count++; - if (ring.length < total) { - ring.push(value); - } - else { - var index = count % total; - ring[index] = value; - } - }; - TakeLastSubscriber.prototype._complete = function () { - var destination = this.destination; - var count = this.count; - if (count > 0) { - var total = this.count >= this.total ? this.total : this.count; - var ring = this.ring; - for (var i = 0; i < total; i++) { - var idx = (count++) % total; - destination.next(ring[idx]); - } - } - destination.complete(); - }; - return TakeLastSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=takeLast.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/takeUntil.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/takeUntil.js ***! - \*****************************************************************/ -/*! exports provided: takeUntil */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function takeUntil(notifier) { - return function (source) { return source.lift(new TakeUntilOperator(notifier)); }; -} -var TakeUntilOperator = /*@__PURE__*/ (function () { - function TakeUntilOperator(notifier) { - this.notifier = notifier; - } - TakeUntilOperator.prototype.call = function (subscriber, source) { - var takeUntilSubscriber = new TakeUntilSubscriber(subscriber); - var notifierSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(takeUntilSubscriber, this.notifier); - if (notifierSubscription && !takeUntilSubscriber.seenValue) { - takeUntilSubscriber.add(notifierSubscription); - return source.subscribe(takeUntilSubscriber); - } - return takeUntilSubscriber; - }; - return TakeUntilOperator; -}()); -var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeUntilSubscriber, _super); - function TakeUntilSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.seenValue = false; - return _this; - } - TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.seenValue = true; - this.complete(); - }; - TakeUntilSubscriber.prototype.notifyComplete = function () { - }; - return TakeUntilSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=takeUntil.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/takeWhile.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/takeWhile.js ***! - \*****************************************************************/ -/*! exports provided: takeWhile */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -function takeWhile(predicate, inclusive) { - if (inclusive === void 0) { - inclusive = false; - } - return function (source) { - return source.lift(new TakeWhileOperator(predicate, inclusive)); - }; -} -var TakeWhileOperator = /*@__PURE__*/ (function () { - function TakeWhileOperator(predicate, inclusive) { - this.predicate = predicate; - this.inclusive = inclusive; - } - TakeWhileOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive)); - }; - return TakeWhileOperator; -}()); -var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeWhileSubscriber, _super); - function TakeWhileSubscriber(destination, predicate, inclusive) { - var _this = _super.call(this, destination) || this; - _this.predicate = predicate; - _this.inclusive = inclusive; - _this.index = 0; - return _this; - } - TakeWhileSubscriber.prototype._next = function (value) { - var destination = this.destination; - var result; - try { - result = this.predicate(value, this.index++); - } - catch (err) { - destination.error(err); - return; - } - this.nextOrComplete(value, result); - }; - TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) { - var destination = this.destination; - if (Boolean(predicateResult)) { - destination.next(value); - } - else { - if (this.inclusive) { - destination.next(value); - } - destination.complete(); - } - }; - return TakeWhileSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=takeWhile.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/tap.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/tap.js ***! - \***********************************************************/ -/*! exports provided: tap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ - - - - -function tap(nextOrObserver, error, complete) { - return function tapOperatorFunction(source) { - return source.lift(new DoOperator(nextOrObserver, error, complete)); - }; -} -var DoOperator = /*@__PURE__*/ (function () { - function DoOperator(nextOrObserver, error, complete) { - this.nextOrObserver = nextOrObserver; - this.error = error; - this.complete = complete; - } - DoOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete)); - }; - return DoOperator; -}()); -var TapSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TapSubscriber, _super); - function TapSubscriber(destination, observerOrNext, error, complete) { - var _this = _super.call(this, destination) || this; - _this._tapNext = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapError = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapComplete = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapError = error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapComplete = complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__["isFunction"])(observerOrNext)) { - _this._context = _this; - _this._tapNext = observerOrNext; - } - else if (observerOrNext) { - _this._context = observerOrNext; - _this._tapNext = observerOrNext.next || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapError = observerOrNext.error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - _this._tapComplete = observerOrNext.complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; - } - return _this; - } - TapSubscriber.prototype._next = function (value) { - try { - this._tapNext.call(this._context, value); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(value); - }; - TapSubscriber.prototype._error = function (err) { - try { - this._tapError.call(this._context, err); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.error(err); - }; - TapSubscriber.prototype._complete = function () { - try { - this._tapComplete.call(this._context); - } - catch (err) { - this.destination.error(err); - return; - } - return this.destination.complete(); - }; - return TapSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=tap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/throttle.js": -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/throttle.js ***! - \****************************************************************/ -/*! exports provided: defaultThrottleConfig, throttle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -var defaultThrottleConfig = { - leading: true, - trailing: false -}; -function throttle(durationSelector, config) { - if (config === void 0) { - config = defaultThrottleConfig; - } - return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); }; -} -var ThrottleOperator = /*@__PURE__*/ (function () { - function ThrottleOperator(durationSelector, leading, trailing) { - this.durationSelector = durationSelector; - this.leading = leading; - this.trailing = trailing; - } - ThrottleOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)); - }; - return ThrottleOperator; -}()); -var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleSubscriber, _super); - function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - _this.durationSelector = durationSelector; - _this._leading = _leading; - _this._trailing = _trailing; - _this._hasValue = false; - return _this; - } - ThrottleSubscriber.prototype._next = function (value) { - this._hasValue = true; - this._sendValue = value; - if (!this._throttled) { - if (this._leading) { - this.send(); - } - else { - this.throttle(value); - } - } - }; - ThrottleSubscriber.prototype.send = function () { - var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue; - if (_hasValue) { - this.destination.next(_sendValue); - this.throttle(_sendValue); - } - this._hasValue = false; - this._sendValue = null; - }; - ThrottleSubscriber.prototype.throttle = function (value) { - var duration = this.tryDurationSelector(value); - if (!!duration) { - this.add(this._throttled = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration)); - } - }; - ThrottleSubscriber.prototype.tryDurationSelector = function (value) { - try { - return this.durationSelector(value); - } - catch (err) { - this.destination.error(err); - return null; - } - }; - ThrottleSubscriber.prototype.throttlingDone = function () { - var _a = this, _throttled = _a._throttled, _trailing = _a._trailing; - if (_throttled) { - _throttled.unsubscribe(); - } - this._throttled = null; - if (_trailing) { - this.send(); - } - }; - ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.throttlingDone(); - }; - ThrottleSubscriber.prototype.notifyComplete = function () { - this.throttlingDone(); - }; - return ThrottleSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=throttle.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/throttleTime.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/throttleTime.js ***! - \********************************************************************/ -/*! exports provided: throttleTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./throttle */ "./node_modules/rxjs/_esm5/internal/operators/throttle.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ - - - - -function throttleTime(duration, scheduler, config) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; - } - if (config === void 0) { - config = _throttle__WEBPACK_IMPORTED_MODULE_3__["defaultThrottleConfig"]; - } - return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); }; -} -var ThrottleTimeOperator = /*@__PURE__*/ (function () { - function ThrottleTimeOperator(duration, scheduler, leading, trailing) { - this.duration = duration; - this.scheduler = scheduler; - this.leading = leading; - this.trailing = trailing; - } - ThrottleTimeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)); - }; - return ThrottleTimeOperator; -}()); -var ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleTimeSubscriber, _super); - function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) { - var _this = _super.call(this, destination) || this; - _this.duration = duration; - _this.scheduler = scheduler; - _this.leading = leading; - _this.trailing = trailing; - _this._hasTrailingValue = false; - _this._trailingValue = null; - return _this; - } - ThrottleTimeSubscriber.prototype._next = function (value) { - if (this.throttled) { - if (this.trailing) { - this._trailingValue = value; - this._hasTrailingValue = true; - } - } - else { - this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this })); - if (this.leading) { - this.destination.next(value); - } - else if (this.trailing) { - this._trailingValue = value; - this._hasTrailingValue = true; - } - } - }; - ThrottleTimeSubscriber.prototype._complete = function () { - if (this._hasTrailingValue) { - this.destination.next(this._trailingValue); - this.destination.complete(); - } - else { - this.destination.complete(); - } - }; - ThrottleTimeSubscriber.prototype.clearThrottle = function () { - var throttled = this.throttled; - if (throttled) { - if (this.trailing && this._hasTrailingValue) { - this.destination.next(this._trailingValue); - this._trailingValue = null; - this._hasTrailingValue = false; - } - throttled.unsubscribe(); - this.remove(throttled); - this.throttled = null; - } - }; - return ThrottleTimeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -function dispatchNext(arg) { - var subscriber = arg.subscriber; - subscriber.clearThrottle(); -} -//# sourceMappingURL=throttleTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js ***! - \********************************************************************/ -/*! exports provided: throwIfEmpty */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */ - - - -function throwIfEmpty(errorFactory) { - if (errorFactory === void 0) { - errorFactory = defaultErrorFactory; - } - return function (source) { - return source.lift(new ThrowIfEmptyOperator(errorFactory)); - }; -} -var ThrowIfEmptyOperator = /*@__PURE__*/ (function () { - function ThrowIfEmptyOperator(errorFactory) { - this.errorFactory = errorFactory; - } - ThrowIfEmptyOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory)); - }; - return ThrowIfEmptyOperator; -}()); -var ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrowIfEmptySubscriber, _super); - function ThrowIfEmptySubscriber(destination, errorFactory) { - var _this = _super.call(this, destination) || this; - _this.errorFactory = errorFactory; - _this.hasValue = false; - return _this; - } - ThrowIfEmptySubscriber.prototype._next = function (value) { - this.hasValue = true; - this.destination.next(value); - }; - ThrowIfEmptySubscriber.prototype._complete = function () { - if (!this.hasValue) { - var err = void 0; - try { - err = this.errorFactory(); - } - catch (e) { - err = e; - } - this.destination.error(err); - } - else { - return this.destination.complete(); - } - }; - return ThrowIfEmptySubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); -function defaultErrorFactory() { - return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__["EmptyError"](); -} -//# sourceMappingURL=throwIfEmpty.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/timeInterval.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/timeInterval.js ***! - \********************************************************************/ -/*! exports provided: timeInterval, TimeInterval */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); -/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ - - - - -function timeInterval(scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; - } - return function (source) { - return Object(_observable_defer__WEBPACK_IMPORTED_MODULE_2__["defer"])(function () { - return source.pipe(Object(_scan__WEBPACK_IMPORTED_MODULE_1__["scan"])(function (_a, value) { - var current = _a.current; - return ({ value: value, current: scheduler.now(), last: current }); - }, { current: scheduler.now(), value: undefined, last: undefined }), Object(_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { - var current = _a.current, last = _a.last, value = _a.value; - return new TimeInterval(value, current - last); - })); - }); - }; -} -var TimeInterval = /*@__PURE__*/ (function () { - function TimeInterval(value, interval) { - this.value = value; - this.interval = interval; - } - return TimeInterval; -}()); - -//# sourceMappingURL=timeInterval.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/timeout.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/timeout.js ***! - \***************************************************************/ -/*! exports provided: timeout */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TimeoutError */ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js"); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeoutWith */ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js"); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); -/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ - - - - -function timeout(due, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; - } - return Object(_timeoutWith__WEBPACK_IMPORTED_MODULE_2__["timeoutWith"])(due, Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_3__["throwError"])(new _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]()), scheduler); -} -//# sourceMappingURL=timeout.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js ***! - \*******************************************************************/ -/*! exports provided: timeoutWith */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isDate */ "./node_modules/rxjs/_esm5/internal/util/isDate.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - - -function timeoutWith(due, withObservable, scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; - } - return function (source) { - var absoluteTimeout = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(due); - var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due); - return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler)); - }; -} -var TimeoutWithOperator = /*@__PURE__*/ (function () { - function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) { - this.waitFor = waitFor; - this.absoluteTimeout = absoluteTimeout; - this.withObservable = withObservable; - this.scheduler = scheduler; - } - TimeoutWithOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler)); - }; - return TimeoutWithOperator; -}()); -var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TimeoutWithSubscriber, _super); - function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) { - var _this = _super.call(this, destination) || this; - _this.absoluteTimeout = absoluteTimeout; - _this.waitFor = waitFor; - _this.withObservable = withObservable; - _this.scheduler = scheduler; - _this.action = null; - _this.scheduleTimeout(); - return _this; - } - TimeoutWithSubscriber.dispatchTimeout = function (subscriber) { - var withObservable = subscriber.withObservable; - subscriber._unsubscribeAndRecycle(); - subscriber.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(subscriber, withObservable)); - }; - TimeoutWithSubscriber.prototype.scheduleTimeout = function () { - var action = this.action; - if (action) { - this.action = action.schedule(this, this.waitFor); - } - else { - this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this)); - } - }; - TimeoutWithSubscriber.prototype._next = function (value) { - if (!this.absoluteTimeout) { - this.scheduleTimeout(); - } - _super.prototype._next.call(this, value); - }; - TimeoutWithSubscriber.prototype._unsubscribe = function () { - this.action = null; - this.scheduler = null; - this.withObservable = null; - }; - return TimeoutWithSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); -//# sourceMappingURL=timeoutWith.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/timestamp.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/timestamp.js ***! - \*****************************************************************/ -/*! exports provided: timestamp, Timestamp */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timestamp", function() { return Timestamp; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */ - - -function timestamp(scheduler) { - if (scheduler === void 0) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; - } - return Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (value) { return new Timestamp(value, scheduler.now()); }); -} -var Timestamp = /*@__PURE__*/ (function () { - function Timestamp(value, timestamp) { - this.value = value; - this.timestamp = timestamp; - } - return Timestamp; -}()); - -//# sourceMappingURL=timestamp.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/toArray.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/toArray.js ***! - \***************************************************************/ -/*! exports provided: toArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); -/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ - -function toArrayReducer(arr, item, index) { - if (index === 0) { - return [item]; - } - arr.push(item); - return arr; -} -function toArray() { - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(toArrayReducer, []); -} -//# sourceMappingURL=toArray.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/window.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/window.js ***! - \**************************************************************/ -/*! exports provided: window */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function window(windowBoundaries) { - return function windowOperatorFunction(source) { - return source.lift(new WindowOperator(windowBoundaries)); - }; -} -var WindowOperator = /*@__PURE__*/ (function () { - function WindowOperator(windowBoundaries) { - this.windowBoundaries = windowBoundaries; - } - WindowOperator.prototype.call = function (subscriber, source) { - var windowSubscriber = new WindowSubscriber(subscriber); - var sourceSubscription = source.subscribe(windowSubscriber); - if (!sourceSubscription.closed) { - windowSubscriber.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(windowSubscriber, this.windowBoundaries)); - } - return sourceSubscription; - }; - return WindowOperator; -}()); -var WindowSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super); - function WindowSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - destination.next(_this.window); - return _this; - } - WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.openWindow(); - }; - WindowSubscriber.prototype.notifyError = function (error, innerSub) { - this._error(error); - }; - WindowSubscriber.prototype.notifyComplete = function (innerSub) { - this._complete(); - }; - WindowSubscriber.prototype._next = function (value) { - this.window.next(value); - }; - WindowSubscriber.prototype._error = function (err) { - this.window.error(err); - this.destination.error(err); - }; - WindowSubscriber.prototype._complete = function () { - this.window.complete(); - this.destination.complete(); - }; - WindowSubscriber.prototype._unsubscribe = function () { - this.window = null; - }; - WindowSubscriber.prototype.openWindow = function () { - var prevWindow = this.window; - if (prevWindow) { - prevWindow.complete(); - } - var destination = this.destination; - var newWindow = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - destination.next(newWindow); - }; - return WindowSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); -//# sourceMappingURL=window.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/windowCount.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/windowCount.js ***! - \*******************************************************************/ -/*! exports provided: windowCount */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */ - - - -function windowCount(windowSize, startWindowEvery) { - if (startWindowEvery === void 0) { - startWindowEvery = 0; - } - return function windowCountOperatorFunction(source) { - return source.lift(new WindowCountOperator(windowSize, startWindowEvery)); - }; -} -var WindowCountOperator = /*@__PURE__*/ (function () { - function WindowCountOperator(windowSize, startWindowEvery) { - this.windowSize = windowSize; - this.startWindowEvery = startWindowEvery; - } - WindowCountOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery)); - }; - return WindowCountOperator; -}()); -var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowCountSubscriber, _super); - function WindowCountSubscriber(destination, windowSize, startWindowEvery) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - _this.windowSize = windowSize; - _this.startWindowEvery = startWindowEvery; - _this.windows = [new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"]()]; - _this.count = 0; - destination.next(_this.windows[0]); - return _this; - } - WindowCountSubscriber.prototype._next = function (value) { - var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize; - var destination = this.destination; - var windowSize = this.windowSize; - var windows = this.windows; - var len = windows.length; - for (var i = 0; i < len && !this.closed; i++) { - windows[i].next(value); - } - var c = this.count - windowSize + 1; - if (c >= 0 && c % startWindowEvery === 0 && !this.closed) { - windows.shift().complete(); - } - if (++this.count % startWindowEvery === 0 && !this.closed) { - var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"](); - windows.push(window_1); - destination.next(window_1); - } - }; - WindowCountSubscriber.prototype._error = function (err) { - var windows = this.windows; - if (windows) { - while (windows.length > 0 && !this.closed) { - windows.shift().error(err); - } - } - this.destination.error(err); - }; - WindowCountSubscriber.prototype._complete = function () { - var windows = this.windows; - if (windows) { - while (windows.length > 0 && !this.closed) { - windows.shift().complete(); - } - } - this.destination.complete(); - }; - WindowCountSubscriber.prototype._unsubscribe = function () { - this.count = 0; - this.windows = null; - }; - return WindowCountSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); -//# sourceMappingURL=windowCount.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/windowTime.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/windowTime.js ***! - \******************************************************************/ -/*! exports provided: windowTime */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); -/** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ - - - - - - -function windowTime(windowTimeSpan) { - var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; - var windowCreationInterval = null; - var maxWindowSize = Number.POSITIVE_INFINITY; - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[3])) { - scheduler = arguments[3]; - } - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[2])) { - scheduler = arguments[2]; - } - else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[2])) { - maxWindowSize = arguments[2]; - } - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[1])) { - scheduler = arguments[1]; - } - else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[1])) { - windowCreationInterval = arguments[1]; - } - return function windowTimeOperatorFunction(source) { - return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler)); - }; -} -var WindowTimeOperator = /*@__PURE__*/ (function () { - function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { - this.windowTimeSpan = windowTimeSpan; - this.windowCreationInterval = windowCreationInterval; - this.maxWindowSize = maxWindowSize; - this.scheduler = scheduler; - } - WindowTimeOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler)); - }; - return WindowTimeOperator; -}()); -var CountedSubject = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountedSubject, _super); - function CountedSubject() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._numberOfNextedValues = 0; - return _this; - } - CountedSubject.prototype.next = function (value) { - this._numberOfNextedValues++; - _super.prototype.next.call(this, value); - }; - Object.defineProperty(CountedSubject.prototype, "numberOfNextedValues", { - get: function () { - return this._numberOfNextedValues; - }, - enumerable: true, - configurable: true - }); - return CountedSubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); -var WindowTimeSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowTimeSubscriber, _super); - function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - _this.windowTimeSpan = windowTimeSpan; - _this.windowCreationInterval = windowCreationInterval; - _this.maxWindowSize = maxWindowSize; - _this.scheduler = scheduler; - _this.windows = []; - var window = _this.openWindow(); - if (windowCreationInterval !== null && windowCreationInterval >= 0) { - var closeState = { subscriber: _this, window: window, context: null }; - var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler }; - _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState)); - _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState)); - } - else { - var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan }; - _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState)); - } - return _this; - } - WindowTimeSubscriber.prototype._next = function (value) { - var windows = this.windows; - var len = windows.length; - for (var i = 0; i < len; i++) { - var window_1 = windows[i]; - if (!window_1.closed) { - window_1.next(value); - if (window_1.numberOfNextedValues >= this.maxWindowSize) { - this.closeWindow(window_1); - } - } - } - }; - WindowTimeSubscriber.prototype._error = function (err) { - var windows = this.windows; - while (windows.length > 0) { - windows.shift().error(err); - } - this.destination.error(err); - }; - WindowTimeSubscriber.prototype._complete = function () { - var windows = this.windows; - while (windows.length > 0) { - var window_2 = windows.shift(); - if (!window_2.closed) { - window_2.complete(); - } - } - this.destination.complete(); - }; - WindowTimeSubscriber.prototype.openWindow = function () { - var window = new CountedSubject(); - this.windows.push(window); - var destination = this.destination; - destination.next(window); - return window; - }; - WindowTimeSubscriber.prototype.closeWindow = function (window) { - window.complete(); - var windows = this.windows; - windows.splice(windows.indexOf(window), 1); - }; - return WindowTimeSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); -function dispatchWindowTimeSpanOnly(state) { - var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window; - if (window) { - subscriber.closeWindow(window); - } - state.window = subscriber.openWindow(); - this.schedule(state, windowTimeSpan); -} -function dispatchWindowCreation(state) { - var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval; - var window = subscriber.openWindow(); - var action = this; - var context = { action: action, subscription: null }; - var timeSpanState = { subscriber: subscriber, window: window, context: context }; - context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState); - action.add(context.subscription); - action.schedule(state, windowCreationInterval); -} -function dispatchWindowClose(state) { - var subscriber = state.subscriber, window = state.window, context = state.context; - if (context && context.action && context.subscription) { - context.action.remove(context.subscription); - } - subscriber.closeWindow(window); -} -//# sourceMappingURL=windowTime.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/windowToggle.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/windowToggle.js ***! - \********************************************************************/ -/*! exports provided: windowToggle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - - -function windowToggle(openings, closingSelector) { - return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); }; -} -var WindowToggleOperator = /*@__PURE__*/ (function () { - function WindowToggleOperator(openings, closingSelector) { - this.openings = openings; - this.closingSelector = closingSelector; - } - WindowToggleOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector)); - }; - return WindowToggleOperator; -}()); -var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowToggleSubscriber, _super); - function WindowToggleSubscriber(destination, openings, closingSelector) { - var _this = _super.call(this, destination) || this; - _this.openings = openings; - _this.closingSelector = closingSelector; - _this.contexts = []; - _this.add(_this.openSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(_this, openings, openings)); - return _this; - } - WindowToggleSubscriber.prototype._next = function (value) { - var contexts = this.contexts; - if (contexts) { - var len = contexts.length; - for (var i = 0; i < len; i++) { - contexts[i].window.next(value); - } - } - }; - WindowToggleSubscriber.prototype._error = function (err) { - var contexts = this.contexts; - this.contexts = null; - if (contexts) { - var len = contexts.length; - var index = -1; - while (++index < len) { - var context_1 = contexts[index]; - context_1.window.error(err); - context_1.subscription.unsubscribe(); - } - } - _super.prototype._error.call(this, err); - }; - WindowToggleSubscriber.prototype._complete = function () { - var contexts = this.contexts; - this.contexts = null; - if (contexts) { - var len = contexts.length; - var index = -1; - while (++index < len) { - var context_2 = contexts[index]; - context_2.window.complete(); - context_2.subscription.unsubscribe(); - } - } - _super.prototype._complete.call(this); - }; - WindowToggleSubscriber.prototype._unsubscribe = function () { - var contexts = this.contexts; - this.contexts = null; - if (contexts) { - var len = contexts.length; - var index = -1; - while (++index < len) { - var context_3 = contexts[index]; - context_3.window.unsubscribe(); - context_3.subscription.unsubscribe(); - } - } - }; - WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - if (outerValue === this.openings) { - var closingNotifier = void 0; - try { - var closingSelector = this.closingSelector; - closingNotifier = closingSelector(innerValue); - } - catch (e) { - return this.error(e); - } - var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](); - var context_4 = { window: window_1, subscription: subscription }; - this.contexts.push(context_4); - var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, closingNotifier, context_4); - if (innerSubscription.closed) { - this.closeWindow(this.contexts.length - 1); - } - else { - innerSubscription.context = context_4; - subscription.add(innerSubscription); - } - this.destination.next(window_1); - } - else { - this.closeWindow(this.contexts.indexOf(outerValue)); - } - }; - WindowToggleSubscriber.prototype.notifyError = function (err) { - this.error(err); - }; - WindowToggleSubscriber.prototype.notifyComplete = function (inner) { - if (inner !== this.openSubscription) { - this.closeWindow(this.contexts.indexOf(inner.context)); - } - }; - WindowToggleSubscriber.prototype.closeWindow = function (index) { - if (index === -1) { - return; - } - var contexts = this.contexts; - var context = contexts[index]; - var window = context.window, subscription = context.subscription; - contexts.splice(index, 1); - window.complete(); - subscription.unsubscribe(); - }; - return WindowToggleSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); -//# sourceMappingURL=windowToggle.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/windowWhen.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/windowWhen.js ***! - \******************************************************************/ -/*! exports provided: windowWhen */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - - -function windowWhen(closingSelector) { - return function windowWhenOperatorFunction(source) { - return source.lift(new WindowOperator(closingSelector)); - }; -} -var WindowOperator = /*@__PURE__*/ (function () { - function WindowOperator(closingSelector) { - this.closingSelector = closingSelector; - } - WindowOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector)); - }; - return WindowOperator; -}()); -var WindowSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super); - function WindowSubscriber(destination, closingSelector) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - _this.closingSelector = closingSelector; - _this.openWindow(); - return _this; - } - WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.openWindow(innerSub); - }; - WindowSubscriber.prototype.notifyError = function (error, innerSub) { - this._error(error); - }; - WindowSubscriber.prototype.notifyComplete = function (innerSub) { - this.openWindow(innerSub); - }; - WindowSubscriber.prototype._next = function (value) { - this.window.next(value); - }; - WindowSubscriber.prototype._error = function (err) { - this.window.error(err); - this.destination.error(err); - this.unsubscribeClosingNotification(); - }; - WindowSubscriber.prototype._complete = function () { - this.window.complete(); - this.destination.complete(); - this.unsubscribeClosingNotification(); - }; - WindowSubscriber.prototype.unsubscribeClosingNotification = function () { - if (this.closingNotification) { - this.closingNotification.unsubscribe(); - } - }; - WindowSubscriber.prototype.openWindow = function (innerSub) { - if (innerSub === void 0) { - innerSub = null; - } - if (innerSub) { - this.remove(innerSub); - innerSub.unsubscribe(); - } - var prevWindow = this.window; - if (prevWindow) { - prevWindow.complete(); - } - var window = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - this.destination.next(window); - var closingNotifier; - try { - var closingSelector = this.closingSelector; - closingNotifier = closingSelector(); - } - catch (e) { - this.destination.error(e); - this.window.error(e); - return; - } - this.add(this.closingNotification = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, closingNotifier)); - }; - return WindowSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); -//# sourceMappingURL=windowWhen.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js ***! - \**********************************************************************/ -/*! exports provided: withLatestFrom */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); -/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ - - - -function withLatestFrom() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return function (source) { - var project; - if (typeof args[args.length - 1] === 'function') { - project = args.pop(); - } - var observables = args; - return source.lift(new WithLatestFromOperator(observables, project)); - }; -} -var WithLatestFromOperator = /*@__PURE__*/ (function () { - function WithLatestFromOperator(observables, project) { - this.observables = observables; - this.project = project; - } - WithLatestFromOperator.prototype.call = function (subscriber, source) { - return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project)); - }; - return WithLatestFromOperator; -}()); -var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WithLatestFromSubscriber, _super); - function WithLatestFromSubscriber(destination, observables, project) { - var _this = _super.call(this, destination) || this; - _this.observables = observables; - _this.project = project; - _this.toRespond = []; - var len = observables.length; - _this.values = new Array(len); - for (var i = 0; i < len; i++) { - _this.toRespond.push(i); - } - for (var i = 0; i < len; i++) { - var observable = observables[i]; - _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, observable, observable, i)); - } - return _this; - } - WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.values[outerIndex] = innerValue; - var toRespond = this.toRespond; - if (toRespond.length > 0) { - var found = toRespond.indexOf(outerIndex); - if (found !== -1) { - toRespond.splice(found, 1); - } - } - }; - WithLatestFromSubscriber.prototype.notifyComplete = function () { - }; - WithLatestFromSubscriber.prototype._next = function (value) { - if (this.toRespond.length === 0) { - var args = [value].concat(this.values); - if (this.project) { - this._tryProject(args); - } - else { - this.destination.next(args); - } - } - }; - WithLatestFromSubscriber.prototype._tryProject = function (args) { - var result; - try { - result = this.project.apply(this, args); - } - catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - }; - return WithLatestFromSubscriber; -}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); -//# sourceMappingURL=withLatestFrom.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/zip.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/zip.js ***! - \***********************************************************/ -/*! exports provided: zip */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); -/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ - -function zip() { - var observables = []; - for (var _i = 0; _i < arguments.length; _i++) { - observables[_i] = arguments[_i]; - } - return function zipOperatorFunction(source) { - return source.lift.call(_observable_zip__WEBPACK_IMPORTED_MODULE_0__["zip"].apply(void 0, [source].concat(observables))); - }; -} -//# sourceMappingURL=zip.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/operators/zipAll.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/operators/zipAll.js ***! - \**************************************************************/ -/*! exports provided: zipAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); -/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ - -function zipAll(project) { - return function (source) { return source.lift(new _observable_zip__WEBPACK_IMPORTED_MODULE_0__["ZipOperator"](project)); }; -} -//# sourceMappingURL=zipAll.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js ***! - \*********************************************************************/ -/*! exports provided: scheduleArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ - - -function scheduleArray(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - var i = 0; - sub.add(scheduler.schedule(function () { - if (i === input.length) { - subscriber.complete(); - return; - } - subscriber.next(input[i++]); - if (!subscriber.closed) { - sub.add(this.schedule()); - } - })); - return sub; - }); -} -//# sourceMappingURL=scheduleArray.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js": -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js ***! - \************************************************************************/ -/*! exports provided: scheduleIterable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); -/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */ - - - -function scheduleIterable(input, scheduler) { - if (!input) { - throw new Error('Iterable cannot be null'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - var iterator; - sub.add(function () { - if (iterator && typeof iterator.return === 'function') { - iterator.return(); - } - }); - sub.add(scheduler.schedule(function () { - iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__["iterator"]](); - sub.add(scheduler.schedule(function () { - if (subscriber.closed) { - return; - } - var value; - var done; - try { - var result = iterator.next(); - value = result.value; - done = result.done; - } - catch (err) { - subscriber.error(err); - return; - } - if (done) { - subscriber.complete(); - } - else { - subscriber.next(value); - this.schedule(); - } - })); - })); - return sub; - }); -} -//# sourceMappingURL=scheduleIterable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js": -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js ***! - \**************************************************************************/ -/*! exports provided: scheduleObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */ - - - -function scheduleObservable(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - sub.add(scheduler.schedule(function () { - var observable = input[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]](); - sub.add(observable.subscribe({ - next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); }, - error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); }, - complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); }, - })); - })); - return sub; - }); -} -//# sourceMappingURL=scheduleObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js": -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js ***! - \***********************************************************************/ -/*! exports provided: schedulePromise */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ - - -function schedulePromise(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { - var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); - sub.add(scheduler.schedule(function () { - return input.then(function (value) { - sub.add(scheduler.schedule(function () { - subscriber.next(value); - sub.add(scheduler.schedule(function () { return subscriber.complete(); })); - })); - }, function (err) { - sub.add(scheduler.schedule(function () { return subscriber.error(err); })); - }); - })); - return sub; - }); -} -//# sourceMappingURL=schedulePromise.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js ***! - \*****************************************************************/ -/*! exports provided: scheduled */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scheduleObservable */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js"); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedulePromise */ "./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js"); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scheduleIterable */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js"); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isInteropObservable */ "./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js"); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isPromise */ "./node_modules/rxjs/_esm5/internal/util/isPromise.js"); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isArrayLike */ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js"); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/isIterable */ "./node_modules/rxjs/_esm5/internal/util/isIterable.js"); -/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */ - - - - - - - - -function scheduled(input, scheduler) { - if (input != null) { - if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__["isInteropObservable"])(input)) { - return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__["scheduleObservable"])(input, scheduler); - } - else if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(input)) { - return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__["schedulePromise"])(input, scheduler); - } - else if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__["isArrayLike"])(input)) { - return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler); - } - else if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__["isIterable"])(input) || typeof input === 'string') { - return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__["scheduleIterable"])(input, scheduler); - } - } - throw new TypeError((input !== null && typeof input || input) + ' is not observable'); -} -//# sourceMappingURL=scheduled.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/Action.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/Action.js ***! - \**************************************************************/ -/*! exports provided: Action */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); -/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ - - -var Action = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Action, _super); - function Action(scheduler, work) { - return _super.call(this) || this; - } - Action.prototype.schedule = function (state, delay) { - if (delay === void 0) { - delay = 0; - } - return this; - }; - return Action; -}(_Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"])); - -//# sourceMappingURL=Action.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js": -/*!****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js ***! - \****************************************************************************/ -/*! exports provided: AnimationFrameAction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); -/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ - - -var AnimationFrameAction = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnimationFrameAction, _super); - function AnimationFrameAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); })); - }; - AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); - } - if (scheduler.actions.length === 0) { - cancelAnimationFrame(id); - scheduler.scheduled = undefined; - } - return undefined; - }; - return AnimationFrameAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); - -//# sourceMappingURL=AnimationFrameAction.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js ***! - \*******************************************************************************/ -/*! exports provided: AnimationFrameScheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); -/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ - - -var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnimationFrameScheduler, _super); - function AnimationFrameScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - AnimationFrameScheduler.prototype.flush = function (action) { - this.active = true; - this.scheduled = undefined; - var actions = this.actions; - var error; - var index = -1; - var count = actions.length; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (++index < count && (action = actions.shift())); - this.active = false; - if (error) { - while (++index < count && (action = actions.shift())) { - action.unsubscribe(); - } - throw error; - } - }; - return AnimationFrameScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); - -//# sourceMappingURL=AnimationFrameScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js ***! - \******************************************************************/ -/*! exports provided: AsapAction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/Immediate */ "./node_modules/rxjs/_esm5/internal/util/Immediate.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); -/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */ - - - -var AsapAction = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapAction, _super); - function AsapAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler.scheduled || (scheduler.scheduled = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].setImmediate(scheduler.flush.bind(scheduler, null))); - }; - AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); - } - if (scheduler.actions.length === 0) { - _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].clearImmediate(id); - scheduler.scheduled = undefined; - } - return undefined; - }; - return AsapAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_2__["AsyncAction"])); - -//# sourceMappingURL=AsapAction.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js ***! - \*********************************************************************/ -/*! exports provided: AsapScheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); -/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ - - -var AsapScheduler = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapScheduler, _super); - function AsapScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - AsapScheduler.prototype.flush = function (action) { - this.active = true; - this.scheduled = undefined; - var actions = this.actions; - var error; - var index = -1; - var count = actions.length; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (++index < count && (action = actions.shift())); - this.active = false; - if (error) { - while (++index < count && (action = actions.shift())) { - action.unsubscribe(); - } - throw error; - } - }; - return AsapScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); - -//# sourceMappingURL=AsapScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js ***! - \*******************************************************************/ -/*! exports provided: AsyncAction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Action */ "./node_modules/rxjs/_esm5/internal/scheduler/Action.js"); -/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ - - -var AsyncAction = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncAction, _super); - function AsyncAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.pending = false; - return _this; - } - AsyncAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { - delay = 0; - } - if (this.closed) { - return this; - } - this.state = state; - var id = this.id; - var scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); - } - this.pending = true; - this.delay = delay; - this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); - return this; - }; - AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - return setInterval(scheduler.flush.bind(scheduler, this), delay); - }; - AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if (delay !== null && this.delay === delay && this.pending === false) { - return id; - } - clearInterval(id); - return undefined; - }; - AsyncAction.prototype.execute = function (state, delay) { - if (this.closed) { - return new Error('executing a cancelled action'); - } - this.pending = false; - var error = this._execute(state, delay); - if (error) { - return error; - } - else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - }; - AsyncAction.prototype._execute = function (state, delay) { - var errored = false; - var errorValue = undefined; - try { - this.work(state); - } - catch (e) { - errored = true; - errorValue = !!e && e || new Error(e); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - }; - AsyncAction.prototype._unsubscribe = function () { - var id = this.id; - var scheduler = this.scheduler; - var actions = scheduler.actions; - var index = actions.indexOf(this); - this.work = null; - this.state = null; - this.pending = false; - this.scheduler = null; - if (index !== -1) { - actions.splice(index, 1); - } - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - }; - return AsyncAction; -}(_Action__WEBPACK_IMPORTED_MODULE_1__["Action"])); - -//# sourceMappingURL=AsyncAction.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js ***! - \**********************************************************************/ -/*! exports provided: AsyncScheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncScheduler", function() { return AsyncScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Scheduler */ "./node_modules/rxjs/_esm5/internal/Scheduler.js"); -/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ - - -var AsyncScheduler = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncScheduler, _super); - function AsyncScheduler(SchedulerAction, now) { - if (now === void 0) { - now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"].now; - } - var _this = _super.call(this, SchedulerAction, function () { - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) { - return AsyncScheduler.delegate.now(); - } - else { - return now(); - } - }) || this; - _this.actions = []; - _this.active = false; - _this.scheduled = undefined; - return _this; - } - AsyncScheduler.prototype.schedule = function (work, delay, state) { - if (delay === void 0) { - delay = 0; - } - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { - return AsyncScheduler.delegate.schedule(work, delay, state); - } - else { - return _super.prototype.schedule.call(this, work, delay, state); - } - }; - AsyncScheduler.prototype.flush = function (action) { - var actions = this.actions; - if (this.active) { - actions.push(action); - return; - } - var error; - this.active = true; - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (action = actions.shift()); - this.active = false; - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AsyncScheduler; -}(_Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"])); - -//# sourceMappingURL=AsyncScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js ***! - \*******************************************************************/ -/*! exports provided: QueueAction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); -/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ - - -var QueueAction = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](QueueAction, _super); - function QueueAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - QueueAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { - delay = 0; - } - if (delay > 0) { - return _super.prototype.schedule.call(this, state, delay); - } - this.delay = delay; - this.state = state; - this.scheduler.flush(this); - return this; - }; - QueueAction.prototype.execute = function (state, delay) { - return (delay > 0 || this.closed) ? - _super.prototype.execute.call(this, state, delay) : - this._execute(state, delay); - }; - QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - return scheduler.flush(this); - }; - return QueueAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); - -//# sourceMappingURL=QueueAction.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js ***! - \**********************************************************************/ -/*! exports provided: QueueScheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); -/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ - - -var QueueScheduler = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](QueueScheduler, _super); - function QueueScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - return QueueScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); - -//# sourceMappingURL=QueueScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js": -/*!****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js ***! - \****************************************************************************/ -/*! exports provided: VirtualTimeScheduler, VirtualAction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); -/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ - - - -var VirtualTimeScheduler = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](VirtualTimeScheduler, _super); - function VirtualTimeScheduler(SchedulerAction, maxFrames) { - if (SchedulerAction === void 0) { - SchedulerAction = VirtualAction; - } - if (maxFrames === void 0) { - maxFrames = Number.POSITIVE_INFINITY; - } - var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this; - _this.maxFrames = maxFrames; - _this.frame = 0; - _this.index = -1; - return _this; - } - VirtualTimeScheduler.prototype.flush = function () { - var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; - var error, action; - while ((action = actions[0]) && action.delay <= maxFrames) { - actions.shift(); - this.frame = action.delay; - if (error = action.execute(action.state, action.delay)) { - break; - } - } - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - VirtualTimeScheduler.frameTimeFactor = 10; - return VirtualTimeScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__["AsyncScheduler"])); - -var VirtualAction = /*@__PURE__*/ (function (_super) { - tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](VirtualAction, _super); - function VirtualAction(scheduler, work, index) { - if (index === void 0) { - index = scheduler.index += 1; - } - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.index = index; - _this.active = true; - _this.index = scheduler.index = index; - return _this; - } - VirtualAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { - delay = 0; - } - if (!this.id) { - return _super.prototype.schedule.call(this, state, delay); - } - this.active = false; - var action = new VirtualAction(this.scheduler, this.work); - this.add(action); - return action.schedule(state, delay); - }; - VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - this.delay = scheduler.frame + delay; - var actions = scheduler.actions; - actions.push(this); - actions.sort(VirtualAction.sortActions); - return true; - }; - VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { - delay = 0; - } - return undefined; - }; - VirtualAction.prototype._execute = function (state, delay) { - if (this.active === true) { - return _super.prototype._execute.call(this, state, delay); - } - }; - VirtualAction.sortActions = function (a, b) { - if (a.delay === b.delay) { - if (a.index === b.index) { - return 0; - } - else if (a.index > b.index) { - return 1; - } - else { - return -1; - } - } - else if (a.delay > b.delay) { - return 1; - } - else { - return -1; - } - }; - return VirtualAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); - -//# sourceMappingURL=VirtualTimeScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js ***! - \**********************************************************************/ -/*! exports provided: animationFrame */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimationFrameAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js"); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnimationFrameScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js"); -/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */ - - -var animationFrame = /*@__PURE__*/ new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__["AnimationFrameScheduler"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__["AnimationFrameAction"]); -//# sourceMappingURL=animationFrame.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/asap.js ***! - \************************************************************/ -/*! exports provided: asap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsapAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js"); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsapScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js"); -/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */ - - -var asap = /*@__PURE__*/ new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__["AsapScheduler"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__["AsapAction"]); -//# sourceMappingURL=asap.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/async.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/async.js ***! - \*************************************************************/ -/*! exports provided: async */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); -/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ - - -var async = /*@__PURE__*/ new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__["AsyncAction"]); -//# sourceMappingURL=async.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/scheduler/queue.js ***! - \*************************************************************/ -/*! exports provided: queue */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QueueAction */ "./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js"); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueueScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js"); -/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */ - - -var queue = /*@__PURE__*/ new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__["QueueScheduler"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__["QueueAction"]); -//# sourceMappingURL=queue.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/symbol/iterator.js ***! - \*************************************************************/ -/*! exports provided: getSymbolIterator, iterator, $$iterator */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSymbolIterator", function() { return getSymbolIterator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterator", function() { return iterator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$iterator", function() { return $$iterator; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function getSymbolIterator() { - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return '@@iterator'; - } - return Symbol.iterator; -} -var iterator = /*@__PURE__*/ getSymbolIterator(); -var $$iterator = iterator; -//# sourceMappingURL=iterator.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/symbol/observable.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/symbol/observable.js ***! - \***************************************************************/ -/*! exports provided: observable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return observable; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })(); -//# sourceMappingURL=observable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js ***! - \*****************************************************************/ -/*! exports provided: rxSubscriber, $$rxSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rxSubscriber", function() { return rxSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$rxSubscriber", function() { return $$rxSubscriber; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var rxSubscriber = /*@__PURE__*/ (function () { - return typeof Symbol === 'function' - ? /*@__PURE__*/ Symbol('rxSubscriber') - : '@@rxSubscriber_' + /*@__PURE__*/ Math.random(); -})(); -var $$rxSubscriber = rxSubscriber; -//# sourceMappingURL=rxSubscriber.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js ***! - \**************************************************************************/ -/*! exports provided: ArgumentOutOfRangeError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return ArgumentOutOfRangeError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () { - function ArgumentOutOfRangeErrorImpl() { - Error.call(this); - this.message = 'argument out of range'; - this.name = 'ArgumentOutOfRangeError'; - return this; - } - ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return ArgumentOutOfRangeErrorImpl; -})(); -var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; -//# sourceMappingURL=ArgumentOutOfRangeError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/EmptyError.js ***! - \*************************************************************/ -/*! exports provided: EmptyError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return EmptyError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var EmptyErrorImpl = /*@__PURE__*/ (function () { - function EmptyErrorImpl() { - Error.call(this); - this.message = 'no elements in sequence'; - this.name = 'EmptyError'; - return this; - } - EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return EmptyErrorImpl; -})(); -var EmptyError = EmptyErrorImpl; -//# sourceMappingURL=EmptyError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/Immediate.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/Immediate.js ***! - \************************************************************/ -/*! exports provided: Immediate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Immediate", function() { return Immediate; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var nextHandle = 1; -var tasksByHandle = {}; -function runIfPresent(handle) { - var cb = tasksByHandle[handle]; - if (cb) { - cb(); - } -} -var Immediate = { - setImmediate: function (cb) { - var handle = nextHandle++; - tasksByHandle[handle] = cb; - Promise.resolve().then(function () { return runIfPresent(handle); }); - return handle; - }, - clearImmediate: function (handle) { - delete tasksByHandle[handle]; - }, -}; -//# sourceMappingURL=Immediate.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js": -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js ***! - \**************************************************************************/ -/*! exports provided: ObjectUnsubscribedError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return ObjectUnsubscribedError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () { - function ObjectUnsubscribedErrorImpl() { - Error.call(this); - this.message = 'object unsubscribed'; - this.name = 'ObjectUnsubscribedError'; - return this; - } - ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return ObjectUnsubscribedErrorImpl; -})(); -var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; -//# sourceMappingURL=ObjectUnsubscribedError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/TimeoutError.js ***! - \***************************************************************/ -/*! exports provided: TimeoutError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var TimeoutErrorImpl = /*@__PURE__*/ (function () { - function TimeoutErrorImpl() { - Error.call(this); - this.message = 'Timeout has occurred'; - this.name = 'TimeoutError'; - return this; - } - TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return TimeoutErrorImpl; -})(); -var TimeoutError = TimeoutErrorImpl; -//# sourceMappingURL=TimeoutError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js ***! - \**********************************************************************/ -/*! exports provided: UnsubscriptionError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return UnsubscriptionError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var UnsubscriptionErrorImpl = /*@__PURE__*/ (function () { - function UnsubscriptionErrorImpl(errors) { - Error.call(this); - this.message = errors ? - errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ') : ''; - this.name = 'UnsubscriptionError'; - this.errors = errors; - return this; - } - UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); - return UnsubscriptionErrorImpl; -})(); -var UnsubscriptionError = UnsubscriptionErrorImpl; -//# sourceMappingURL=UnsubscriptionError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/canReportError.js": -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/canReportError.js ***! - \*****************************************************************/ -/*! exports provided: canReportError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canReportError", function() { return canReportError; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */ - -function canReportError(observer) { - while (observer) { - var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped; - if (closed_1 || isStopped) { - return false; - } - else if (destination && destination instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) { - observer = destination; - } - else { - observer = null; - } - } - return true; -} -//# sourceMappingURL=canReportError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js": -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/hostReportError.js ***! - \******************************************************************/ -/*! exports provided: hostReportError */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hostReportError", function() { return hostReportError; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function hostReportError(err) { - setTimeout(function () { throw err; }, 0); -} -//# sourceMappingURL=hostReportError.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/identity.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/identity.js ***! - \***********************************************************/ -/*! exports provided: identity */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function identity(x) { - return x; -} -//# sourceMappingURL=identity.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isArray.js": -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isArray.js ***! - \**********************************************************/ -/*! exports provided: isArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })(); -//# sourceMappingURL=isArray.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isArrayLike.js ***! - \**************************************************************/ -/*! exports provided: isArrayLike */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return isArrayLike; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; }); -//# sourceMappingURL=isArrayLike.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isDate.js": -/*!*********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isDate.js ***! - \*********************************************************/ -/*! exports provided: isDate */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isDate(value) { - return value instanceof Date && !isNaN(+value); -} -//# sourceMappingURL=isDate.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isFunction.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isFunction.js ***! - \*************************************************************/ -/*! exports provided: isFunction */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isFunction(x) { - return typeof x === 'function'; -} -//# sourceMappingURL=isFunction.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js ***! - \**********************************************************************/ -/*! exports provided: isInteropObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ - -function isInteropObservable(input) { - return input && typeof input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]] === 'function'; -} -//# sourceMappingURL=isInteropObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isIterable.js": -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isIterable.js ***! - \*************************************************************/ -/*! exports provided: isIterable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); -/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ - -function isIterable(input) { - return input && typeof input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]] === 'function'; -} -//# sourceMappingURL=isIterable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isNumeric.js ***! - \************************************************************/ -/*! exports provided: isNumeric */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; }); -/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); -/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ - -function isNumeric(val) { - return !Object(_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(val) && (val - parseFloat(val) + 1) >= 0; -} -//# sourceMappingURL=isNumeric.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isObject.js": -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isObject.js ***! - \***********************************************************/ -/*! exports provided: isObject */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isObject(x) { - return x !== null && typeof x === 'object'; -} -//# sourceMappingURL=isObject.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isObservable.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isObservable.js ***! - \***************************************************************/ -/*! exports provided: isObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ - -function isObservable(obj) { - return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"] || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function')); -} -//# sourceMappingURL=isObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isPromise.js": -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isPromise.js ***! - \************************************************************/ -/*! exports provided: isPromise */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isPromise(value) { - return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function'; -} -//# sourceMappingURL=isPromise.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/isScheduler.js ***! - \**************************************************************/ -/*! exports provided: isScheduler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScheduler", function() { return isScheduler; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function isScheduler(value) { - return value && typeof value.schedule === 'function'; -} -//# sourceMappingURL=isScheduler.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/noop.js": -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/noop.js ***! - \*******************************************************/ -/*! exports provided: noop */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function noop() { } -//# sourceMappingURL=noop.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/not.js": -/*!******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/not.js ***! - \******************************************************/ -/*! exports provided: not */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "not", function() { return not; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -function not(pred, thisArg) { - function notPred() { - return !(notPred.pred.apply(notPred.thisArg, arguments)); - } - notPred.pred = pred; - notPred.thisArg = thisArg; - return notPred; -} -//# sourceMappingURL=not.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/pipe.js": -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/pipe.js ***! - \*******************************************************/ -/*! exports provided: pipe, pipeFromArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipeFromArray", function() { return pipeFromArray; }); -/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); -/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */ - -function pipe() { - var fns = []; - for (var _i = 0; _i < arguments.length; _i++) { - fns[_i] = arguments[_i]; - } - return pipeFromArray(fns); -} -function pipeFromArray(fns) { - if (!fns) { - return _noop__WEBPACK_IMPORTED_MODULE_0__["noop"]; - } - if (fns.length === 1) { - return fns[0]; - } - return function piped(input) { - return fns.reduce(function (prev, fn) { return fn(prev); }, input); - }; -} -//# sourceMappingURL=pipe.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/root.js": -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/root.js ***! - \*******************************************************/ -/*! exports provided: root */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "root", function() { return _root; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var __window = typeof window !== 'undefined' && window; -var __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && - self instanceof WorkerGlobalScope && self; -var __global = typeof global !== 'undefined' && global; -var _root = __window || __global || __self; -/*@__PURE__*/ (function () { - if (!_root) { - throw /*@__PURE__*/ new Error('RxJS could not find any global context (window, self, global)'); - } -})(); - -//# sourceMappingURL=root.js.map - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js": -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeTo.js ***! - \**************************************************************/ -/*! exports provided: subscribeTo */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeTo", function() { return subscribeTo; }); -/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./subscribeToArray */ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js"); -/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeToPromise */ "./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js"); -/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribeToIterable */ "./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js"); -/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./subscribeToObservable */ "./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js"); -/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isArrayLike */ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js"); -/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isPromise */ "./node_modules/rxjs/_esm5/internal/util/isPromise.js"); -/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ - - - - - - - - - -var subscribeTo = function (result) { - if (!!result && typeof result[_symbol_observable__WEBPACK_IMPORTED_MODULE_8__["observable"]] === 'function') { - return Object(_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__["subscribeToObservable"])(result); - } - else if (Object(_isArrayLike__WEBPACK_IMPORTED_MODULE_4__["isArrayLike"])(result)) { - return Object(_subscribeToArray__WEBPACK_IMPORTED_MODULE_0__["subscribeToArray"])(result); - } - else if (Object(_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(result)) { - return Object(_subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__["subscribeToPromise"])(result); - } - else if (!!result && typeof result[_symbol_iterator__WEBPACK_IMPORTED_MODULE_7__["iterator"]] === 'function') { - return Object(_subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__["subscribeToIterable"])(result); - } - else { - var value = Object(_isObject__WEBPACK_IMPORTED_MODULE_6__["isObject"])(result) ? 'an invalid object' : "'" + result + "'"; - var msg = "You provided " + value + " where a stream was expected." - + ' You can provide an Observable, Promise, Array, or Iterable.'; - throw new TypeError(msg); - } -}; -//# sourceMappingURL=subscribeTo.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js": -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js ***! - \*******************************************************************/ -/*! exports provided: subscribeToArray */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToArray", function() { return subscribeToArray; }); -/** PURE_IMPORTS_START PURE_IMPORTS_END */ -var subscribeToArray = function (array) { - return function (subscriber) { - for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) { - subscriber.next(array[i]); - } - subscriber.complete(); - }; -}; -//# sourceMappingURL=subscribeToArray.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js": -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js ***! - \**********************************************************************/ -/*! exports provided: subscribeToIterable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToIterable", function() { return subscribeToIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); -/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ - -var subscribeToIterable = function (iterable) { - return function (subscriber) { - var iterator = iterable[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]](); - do { - var item = iterator.next(); - if (item.done) { - subscriber.complete(); - break; - } - subscriber.next(item.value); - if (subscriber.closed) { - break; - } - } while (true); - if (typeof iterator.return === 'function') { - subscriber.add(function () { - if (iterator.return) { - iterator.return(); - } - }); - } - return subscriber; - }; -}; -//# sourceMappingURL=subscribeToIterable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js": -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js ***! - \************************************************************************/ -/*! exports provided: subscribeToObservable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToObservable", function() { return subscribeToObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); -/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ - -var subscribeToObservable = function (obj) { - return function (subscriber) { - var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]](); - if (typeof obs.subscribe !== 'function') { - throw new TypeError('Provided object does not correctly implement Symbol.observable'); - } - else { - return obs.subscribe(subscriber); - } - }; -}; -//# sourceMappingURL=subscribeToObservable.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js": -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js ***! - \*********************************************************************/ -/*! exports provided: subscribeToPromise */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToPromise", function() { return subscribeToPromise; }); -/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); -/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */ - -var subscribeToPromise = function (promise) { - return function (subscriber) { - promise.then(function (value) { - if (!subscriber.closed) { - subscriber.next(value); - subscriber.complete(); - } - }, function (err) { return subscriber.error(err); }) - .then(null, _hostReportError__WEBPACK_IMPORTED_MODULE_0__["hostReportError"]); - return subscriber; - }; -}; -//# sourceMappingURL=subscribeToPromise.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js": -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js ***! - \********************************************************************/ -/*! exports provided: subscribeToResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToResult", function() { return subscribeToResult; }); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); -/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); -/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */ - - - -function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) { - if (destination === void 0) { - destination = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__["InnerSubscriber"](outerSubscriber, outerValue, outerIndex); - } - if (destination.closed) { - return undefined; - } - if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]) { - return result.subscribe(destination); - } - return Object(_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(result)(destination); -} -//# sourceMappingURL=subscribeToResult.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/internal/util/toSubscriber.js": -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm5/internal/util/toSubscriber.js ***! - \***************************************************************/ -/*! exports provided: toSubscriber */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toSubscriber", function() { return toSubscriber; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); -/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observer */ "./node_modules/rxjs/_esm5/internal/Observer.js"); -/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */ - - - -function toSubscriber(nextOrObserver, error, complete) { - if (nextOrObserver) { - if (nextOrObserver instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) { - return nextOrObserver; - } - if (nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]]) { - return nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]](); - } - } - if (!nextOrObserver && !error && !complete) { - return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](_Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]); - } - return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](nextOrObserver, error, complete); -} -//# sourceMappingURL=toSubscriber.js.map - - -/***/ }), - -/***/ "./node_modules/rxjs/_esm5/operators/index.js": -/*!****************************************************!*\ - !*** ./node_modules/rxjs/_esm5/operators/index.js ***! - \****************************************************/ -/*! exports provided: audit, auditTime, buffer, bufferCount, bufferTime, bufferToggle, bufferWhen, catchError, combineAll, combineLatest, concat, concatAll, concatMap, concatMapTo, count, debounce, debounceTime, defaultIfEmpty, delay, delayWhen, dematerialize, distinct, distinctUntilChanged, distinctUntilKeyChanged, elementAt, endWith, every, exhaust, exhaustMap, expand, filter, finalize, find, findIndex, first, groupBy, ignoreElements, isEmpty, last, map, mapTo, materialize, max, merge, mergeAll, mergeMap, flatMap, mergeMapTo, mergeScan, min, multicast, observeOn, onErrorResumeNext, pairwise, partition, pluck, publish, publishBehavior, publishLast, publishReplay, race, reduce, repeat, repeatWhen, retry, retryWhen, refCount, sample, sampleTime, scan, sequenceEqual, share, shareReplay, single, skip, skipLast, skipUntil, skipWhile, startWith, subscribeOn, switchAll, switchMap, switchMapTo, take, takeLast, takeUntil, takeWhile, tap, throttle, throttleTime, throwIfEmpty, timeInterval, timeout, timeoutWith, timestamp, toArray, window, windowCount, windowTime, windowToggle, windowWhen, withLatestFrom, zip, zipAll */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/operators/audit */ "./node_modules/rxjs/_esm5/internal/operators/audit.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); - -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/operators/auditTime */ "./node_modules/rxjs/_esm5/internal/operators/auditTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); - -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/operators/buffer */ "./node_modules/rxjs/_esm5/internal/operators/buffer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); - -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/operators/bufferCount */ "./node_modules/rxjs/_esm5/internal/operators/bufferCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); - -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/operators/bufferTime */ "./node_modules/rxjs/_esm5/internal/operators/bufferTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); - -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/operators/bufferToggle */ "./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); - -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/operators/bufferWhen */ "./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); - -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internal/operators/catchError */ "./node_modules/rxjs/_esm5/internal/operators/catchError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); - -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../internal/operators/combineAll */ "./node_modules/rxjs/_esm5/internal/operators/combineAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); - -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/operators/combineLatest */ "./node_modules/rxjs/_esm5/internal/operators/combineLatest.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); - -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal/operators/concat */ "./node_modules/rxjs/_esm5/internal/operators/concat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); - -/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/operators/concatAll */ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); - -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/operators/concatMap */ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); - -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/operators/concatMapTo */ "./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); - -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../internal/operators/count */ "./node_modules/rxjs/_esm5/internal/operators/count.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); - -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../internal/operators/debounce */ "./node_modules/rxjs/_esm5/internal/operators/debounce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); - -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../internal/operators/debounceTime */ "./node_modules/rxjs/_esm5/internal/operators/debounceTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); - -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../internal/operators/defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); - -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../internal/operators/delay */ "./node_modules/rxjs/_esm5/internal/operators/delay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); - -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../internal/operators/delayWhen */ "./node_modules/rxjs/_esm5/internal/operators/delayWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); - -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../internal/operators/dematerialize */ "./node_modules/rxjs/_esm5/internal/operators/dematerialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); - -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../internal/operators/distinct */ "./node_modules/rxjs/_esm5/internal/operators/distinct.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); - -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../internal/operators/distinctUntilChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); - -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../internal/operators/distinctUntilKeyChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); - -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../internal/operators/elementAt */ "./node_modules/rxjs/_esm5/internal/operators/elementAt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); - -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../internal/operators/endWith */ "./node_modules/rxjs/_esm5/internal/operators/endWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); - -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../internal/operators/every */ "./node_modules/rxjs/_esm5/internal/operators/every.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); - -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../internal/operators/exhaust */ "./node_modules/rxjs/_esm5/internal/operators/exhaust.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); - -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../internal/operators/exhaustMap */ "./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); - -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../internal/operators/expand */ "./node_modules/rxjs/_esm5/internal/operators/expand.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); - -/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../internal/operators/filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); - -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../internal/operators/finalize */ "./node_modules/rxjs/_esm5/internal/operators/finalize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); - -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../internal/operators/find */ "./node_modules/rxjs/_esm5/internal/operators/find.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); - -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../internal/operators/findIndex */ "./node_modules/rxjs/_esm5/internal/operators/findIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); - -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../internal/operators/first */ "./node_modules/rxjs/_esm5/internal/operators/first.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); - -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../internal/operators/groupBy */ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); - -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../internal/operators/ignoreElements */ "./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); - -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../internal/operators/isEmpty */ "./node_modules/rxjs/_esm5/internal/operators/isEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); - -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../internal/operators/last */ "./node_modules/rxjs/_esm5/internal/operators/last.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); - -/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../internal/operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); - -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../internal/operators/mapTo */ "./node_modules/rxjs/_esm5/internal/operators/mapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); - -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../internal/operators/materialize */ "./node_modules/rxjs/_esm5/internal/operators/materialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); - -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../internal/operators/max */ "./node_modules/rxjs/_esm5/internal/operators/max.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); - -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../internal/operators/merge */ "./node_modules/rxjs/_esm5/internal/operators/merge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); - -/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../internal/operators/mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__["mergeAll"]; }); - -/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../internal/operators/mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); - -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../internal/operators/mergeMapTo */ "./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); - -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../internal/operators/mergeScan */ "./node_modules/rxjs/_esm5/internal/operators/mergeScan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); - -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../internal/operators/min */ "./node_modules/rxjs/_esm5/internal/operators/min.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); - -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../internal/operators/multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); - -/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../internal/operators/observeOn */ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); - -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../internal/operators/onErrorResumeNext */ "./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); - -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../internal/operators/pairwise */ "./node_modules/rxjs/_esm5/internal/operators/pairwise.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); - -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../internal/operators/partition */ "./node_modules/rxjs/_esm5/internal/operators/partition.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); - -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../internal/operators/pluck */ "./node_modules/rxjs/_esm5/internal/operators/pluck.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); - -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../internal/operators/publish */ "./node_modules/rxjs/_esm5/internal/operators/publish.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); - -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../internal/operators/publishBehavior */ "./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); - -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../internal/operators/publishLast */ "./node_modules/rxjs/_esm5/internal/operators/publishLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); - -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../internal/operators/publishReplay */ "./node_modules/rxjs/_esm5/internal/operators/publishReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); - -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../internal/operators/race */ "./node_modules/rxjs/_esm5/internal/operators/race.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); - -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../internal/operators/reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); - -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../internal/operators/repeat */ "./node_modules/rxjs/_esm5/internal/operators/repeat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); - -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../internal/operators/repeatWhen */ "./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); - -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../internal/operators/retry */ "./node_modules/rxjs/_esm5/internal/operators/retry.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); - -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../internal/operators/retryWhen */ "./node_modules/rxjs/_esm5/internal/operators/retryWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); - -/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../internal/operators/refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); - -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../internal/operators/sample */ "./node_modules/rxjs/_esm5/internal/operators/sample.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); - -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../internal/operators/sampleTime */ "./node_modules/rxjs/_esm5/internal/operators/sampleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); - -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../internal/operators/scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); - -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ../internal/operators/sequenceEqual */ "./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); - -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../internal/operators/share */ "./node_modules/rxjs/_esm5/internal/operators/share.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); - -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../internal/operators/shareReplay */ "./node_modules/rxjs/_esm5/internal/operators/shareReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); - -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ../internal/operators/single */ "./node_modules/rxjs/_esm5/internal/operators/single.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); - -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../internal/operators/skip */ "./node_modules/rxjs/_esm5/internal/operators/skip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); - -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ../internal/operators/skipLast */ "./node_modules/rxjs/_esm5/internal/operators/skipLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); - -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ../internal/operators/skipUntil */ "./node_modules/rxjs/_esm5/internal/operators/skipUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); - -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../internal/operators/skipWhile */ "./node_modules/rxjs/_esm5/internal/operators/skipWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); - -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../internal/operators/startWith */ "./node_modules/rxjs/_esm5/internal/operators/startWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); - -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../internal/operators/subscribeOn */ "./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); - -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/operators/switchAll */ "./node_modules/rxjs/_esm5/internal/operators/switchAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); - -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../internal/operators/switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); - -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/operators/switchMapTo */ "./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); - -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/operators/take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); - -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/operators/takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); - -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/operators/takeUntil */ "./node_modules/rxjs/_esm5/internal/operators/takeUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); - -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../internal/operators/takeWhile */ "./node_modules/rxjs/_esm5/internal/operators/takeWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); - -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../internal/operators/tap */ "./node_modules/rxjs/_esm5/internal/operators/tap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); - -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ../internal/operators/throttle */ "./node_modules/rxjs/_esm5/internal/operators/throttle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); - -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../internal/operators/throttleTime */ "./node_modules/rxjs/_esm5/internal/operators/throttleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); - -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../internal/operators/throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); - -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/operators/timeInterval */ "./node_modules/rxjs/_esm5/internal/operators/timeInterval.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); - -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/operators/timeout */ "./node_modules/rxjs/_esm5/internal/operators/timeout.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); - -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/operators/timeoutWith */ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); - -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/operators/timestamp */ "./node_modules/rxjs/_esm5/internal/operators/timestamp.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); - -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../internal/operators/toArray */ "./node_modules/rxjs/_esm5/internal/operators/toArray.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); - -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../internal/operators/window */ "./node_modules/rxjs/_esm5/internal/operators/window.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); - -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ../internal/operators/windowCount */ "./node_modules/rxjs/_esm5/internal/operators/windowCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); - -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ../internal/operators/windowTime */ "./node_modules/rxjs/_esm5/internal/operators/windowTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); - -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ../internal/operators/windowToggle */ "./node_modules/rxjs/_esm5/internal/operators/windowToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); - -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ../internal/operators/windowWhen */ "./node_modules/rxjs/_esm5/internal/operators/windowWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); - -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ../internal/operators/withLatestFrom */ "./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); - -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ../internal/operators/zip */ "./node_modules/rxjs/_esm5/internal/operators/zip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); - -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ../internal/operators/zipAll */ "./node_modules/rxjs/_esm5/internal/operators/zipAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); - -/** PURE_IMPORTS_START PURE_IMPORTS_END */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -}; - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/anchor/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/actions/anchor/index.ts ***! - \********************************************************/ -/*! exports provided: setAnchorBlur, resetAnchorBlur, setAnchorActive, resetAnchorActive */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAnchorBlur", function() { return setAnchorBlur; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetAnchorBlur", function() { return resetAnchorBlur; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAnchorActive", function() { return setAnchorActive; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetAnchorActive", function() { return resetAnchorActive; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set anchor blur - * - * @param el - Anchor element - * @param value - Whether the anchor is blurred - */ -function setAnchorBlur(el, value) { - el.setAttribute("data-md-state", value ? "blur" : ""); -} -/** - * Reset anchor blur - * - * @param el - Anchor element - */ -function resetAnchorBlur(el) { - el.removeAttribute("data-md-state"); -} -/* ------------------------------------------------------------------------- */ -/** - * Set anchor active - * - * @param el - Anchor element - * @param value - Whether the anchor is active - */ -function setAnchorActive(el, value) { - el.classList.toggle("md-nav__link--active", value); -} -/** - * Reset anchor active - * - * @param el - Anchor element - */ -function resetAnchorActive(el) { - el.classList.remove("md-nav__link--active"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/header/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/actions/header/index.ts ***! - \********************************************************/ -/*! exports provided: setHeaderShadow, resetHeaderShadow, setHeaderTitle, resetHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shadow */ "./src/assets/javascripts/actions/header/shadow/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_0__["setHeaderShadow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_0__["resetHeaderShadow"]; }); - -/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/actions/header/title/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["setHeaderTitle"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["resetHeaderTitle"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/header/shadow/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/actions/header/shadow/index.ts ***! - \***************************************************************/ -/*! exports provided: setHeaderShadow, resetHeaderShadow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return setHeaderShadow; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return resetHeaderShadow; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set header shadow - * - * @param el - Header element - * @param value - Whether the shadow is shown - */ -function setHeaderShadow(el, value) { - el.setAttribute("data-md-state", value ? "shadow" : ""); -} -/** - * Reset header shadow - * - * @param el - Header element - */ -function resetHeaderShadow(el) { - el.removeAttribute("data-md-state"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/header/title/index.ts": -/*!**************************************************************!*\ - !*** ./src/assets/javascripts/actions/header/title/index.ts ***! - \**************************************************************/ -/*! exports provided: setHeaderTitle, resetHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return setHeaderTitle; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return resetHeaderTitle; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set header title - * - * @param el - Header title element - * @param value - Whether the title is shown - */ -function setHeaderTitle(el, value) { - el.setAttribute("data-md-state", value ? "active" : ""); -} -/** - * Reset header title - * - * @param el - Header element - */ -function resetHeaderTitle(el) { - el.removeAttribute("data-md-state"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/index.ts": -/*!*************************************************!*\ - !*** ./src/assets/javascripts/actions/index.ts ***! - \*************************************************/ -/*! exports provided: setAnchorBlur, resetAnchorBlur, setAnchorActive, resetAnchorActive, setHeaderShadow, resetHeaderShadow, setHeaderTitle, resetHeaderTitle, setHidden, resetHidden, setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock, setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock, setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _anchor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./anchor */ "./src/assets/javascripts/actions/anchor/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setAnchorBlur", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["setAnchorBlur"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetAnchorBlur", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["resetAnchorBlur"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setAnchorActive", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["setAnchorActive"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetAnchorActive", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["resetAnchorActive"]; }); - -/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/actions/header/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["setHeaderShadow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["resetHeaderShadow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["setHeaderTitle"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["resetHeaderTitle"]; }); - -/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/actions/main/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setHidden"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetHidden"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarHeight"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarHeight"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarLock"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarLock"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setOverflowScrolling"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetOverflowScrolling"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setScrollLock"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetScrollLock"]; }); - -/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/actions/search/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["setSearchResultMeta"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultMeta"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["addToSearchResultList"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultList"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/main/hideable/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/actions/main/hideable/index.ts ***! - \***************************************************************/ -/*! exports provided: setHidden, resetHidden */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return setHidden; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return resetHidden; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set hidden - * - * @param el - Hideable element - * @param value - Whether the element is hidden - */ -function setHidden(el, value) { - el.setAttribute("data-md-state", value ? "hidden" : ""); -} -/** - * Reset hidden - * - * @param el - Hideable element - */ -function resetHidden(el) { - el.removeAttribute("data-md-state"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/main/index.ts": -/*!******************************************************!*\ - !*** ./src/assets/javascripts/actions/main/index.ts ***! - \******************************************************/ -/*! exports provided: setHidden, resetHidden, setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock, setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _hideable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideable */ "./src/assets/javascripts/actions/main/hideable/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return _hideable__WEBPACK_IMPORTED_MODULE_0__["setHidden"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return _hideable__WEBPACK_IMPORTED_MODULE_0__["resetHidden"]; }); - -/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sidebar */ "./src/assets/javascripts/actions/main/sidebar/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarHeight"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarHeight"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarLock"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarLock"]; }); - -/* harmony import */ var _scrollable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollable */ "./src/assets/javascripts/actions/main/scrollable/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["setOverflowScrolling"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["resetOverflowScrolling"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["setScrollLock"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["resetScrollLock"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/main/scrollable/index.ts": -/*!*****************************************************************!*\ - !*** ./src/assets/javascripts/actions/main/scrollable/index.ts ***! - \*****************************************************************/ -/*! exports provided: setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return setOverflowScrolling; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return resetOverflowScrolling; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return setScrollLock; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return resetScrollLock; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set overflow scrolling - * - * @param el - Scrollable element - */ -function setOverflowScrolling(el) { - el.style.webkitOverflowScrolling = "touch"; -} -/** - * Reset overflow scrolling - * - * @param el - Scrollable element - */ -function resetOverflowScrolling(el) { - el.style.webkitOverflowScrolling = ""; -} -/* ------------------------------------------------------------------------- */ -/** - * Set scroll lock - * - * @param el - Scrollable element - * @param value - Vertical offset - */ -function setScrollLock(el, value) { - el.setAttribute("data-md-state", "lock"); - el.style.top = "-" + value + "px"; -} -/** - * Reset scroll lock - * - * @param el - Scrollable element - */ -function resetScrollLock(el) { - var value = -1 * parseInt(el.style.top, 10); - el.removeAttribute("data-md-state"); - el.style.top = ""; - if (value) - window.scrollTo(0, value); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/main/sidebar/index.ts": -/*!**************************************************************!*\ - !*** ./src/assets/javascripts/actions/main/sidebar/index.ts ***! - \**************************************************************/ -/*! exports provided: setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return setSidebarOffset; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return resetSidebarOffset; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return setSidebarHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return resetSidebarHeight; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return setSidebarLock; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return resetSidebarLock; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set sidebar offset - * - * @param el - Sidebar element - * @param value - Sidebar offset - */ -function setSidebarOffset(el, value) { - el.style.top = value + "px"; -} -/** - * Reset sidebar offset - * - * @param el - Sidebar element - */ -function resetSidebarOffset(el) { - el.style.top = ""; -} -/* ------------------------------------------------------------------------- */ -/** - * Set sidebar height - * - * @param el - Sidebar element - * @param value - Sidebar height - */ -function setSidebarHeight(el, value) { - el.style.height = value + "px"; -} -/** - * Reset sidebar height - * - * @param el - Sidebar element - */ -function resetSidebarHeight(el) { - el.style.height = ""; -} -/* ------------------------------------------------------------------------- */ -/** - * Set sidebar lock - * - * @param el - Sidebar element - * @param value - Whether the sidebar is locked - */ -function setSidebarLock(el, value) { - el.setAttribute("data-md-state", value ? "lock" : ""); -} -/** - * Reset sidebar lock - * - * @param el - Sidebar element - */ -function resetSidebarLock(el) { - el.removeAttribute("data-md-state"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/search/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/actions/search/index.ts ***! - \********************************************************/ -/*! exports provided: setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/actions/search/result/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["setSearchResultMeta"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["resetSearchResultMeta"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["addToSearchResultList"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["resetSearchResultList"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/***/ }), - -/***/ "./src/assets/javascripts/actions/search/result/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/actions/search/result/index.ts ***! - \***************************************************************/ -/*! exports provided: setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return setSearchResultMeta; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return resetSearchResultMeta; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return addToSearchResultList; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return resetSearchResultList; }); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set number of search results - * - * @param el - Search result metadata element - * @param value - Number of results - */ -function setSearchResultMeta(el, value) { - switch (value) { - /* No results */ - case 0: - el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.none"); - break; - /* One result */ - case 1: - el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.one"); - break; - /* Multiple result */ - default: - el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.other", value.toString()); - } -} -/** - * Reset number of search results - * - * @param el - Search result metadata element - */ -function resetSearchResultMeta(el) { - el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.placeholder"); -} -/* ------------------------------------------------------------------------- */ -/** - * Add an element to the search result list - * - * @param el - Search result list element - * @param child - Search result element - */ -function addToSearchResultList(el, child) { - el.appendChild(child); -} -/** - * Reset search result list - * - * @param el - Search result list element - */ -function resetSearchResultList(el) { - el.innerHTML = ""; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/_/index.ts": -/*!******************************************************!*\ - !*** ./src/assets/javascripts/components/_/index.ts ***! - \******************************************************/ -/*! exports provided: setupComponents, useComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupComponents", function() { return setupComponents; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useComponent", function() { return useComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * Component map observable - */ -var components$; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup bindings to components with given names - * - * This function will maintain bindings to the elements identified by the given - * names in-between document switches and update the elements in-place. - * - * @param names - Component names - * @param options - Options - */ -function setupComponents(names, _a) { - var document$ = _a.document$; - components$ = document$ - .pipe( - /* Build component map */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (document) { return names.reduce(function (components, name) { - var _a; - var el = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-component=" + name + "]", document); - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, components), typeof el !== "undefined" ? (_a = {}, _a[name] = el, _a) : {}); - }, {}); }), - /* Re-compute component map on document switch */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["scan"])(function (prev, next) { - var e_1, _a; - try { - for (var names_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(names), names_1_1 = names_1.next(); !names_1_1.done; names_1_1 = names_1.next()) { - var name = names_1_1.value; - switch (name) { - /* Top-level components: update */ - case "header-title": - case "container": - if (name in prev && typeof prev[name] !== "undefined") { - prev[name].replaceWith(next[name]); - prev[name] = next[name]; - } - break; - /* All other components: rebind */ - default: - if (typeof next[name] !== "undefined") - prev[name] = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-component=" + name + "]"); - else - delete prev[name]; - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (names_1_1 && !names_1_1.done && (_a = names_1.return)) _a.call(names_1); - } - finally { if (e_1) throw e_1.error; } - } - return prev; - }), - /* Convert to hot observable */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); -} -function useComponent(name) { - return components$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (components) { return (typeof components[name] !== "undefined" - ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])(components[name]) - : rxjs__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/header/_/index.ts": -/*!*************************************************************!*\ - !*** ./src/assets/javascripts/components/header/_/index.ts ***! - \*************************************************************/ -/*! exports provided: mountHeader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return mountHeader; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount header from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountHeader(_a) { - var viewport$ = _a.viewport$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchHeader"])(el, { viewport$: viewport$ }); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/header/index.ts": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/components/header/index.ts ***! - \***********************************************************/ -/*! exports provided: mountHeader, mountHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/header/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return ___WEBPACK_IMPORTED_MODULE_0__["mountHeader"]; }); - -/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/components/header/title/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["mountHeaderTitle"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/components/header/title/index.ts": -/*!*****************************************************************!*\ - !*** ./src/assets/javascripts/components/header/title/index.ts ***! - \*****************************************************************/ -/*! exports provided: mountHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return mountHeaderTitle; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_ */ "./src/assets/javascripts/components/_/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount header title from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountHeaderTitle(_a) { - var header$ = _a.header$, viewport$ = _a.viewport$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("main") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (main) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElement"])("h1, h2, h3, h4, h5, h6", main); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (hx) { return typeof hx !== "undefined"; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (hx) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(hx, { header$: header$, viewport$: viewport$ }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { - var y = _a.offset.y; - return y >= hx.offsetHeight; - }), Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"])(el)); })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/hero/index.ts": -/*!*********************************************************!*\ - !*** ./src/assets/javascripts/components/hero/index.ts ***! - \*********************************************************/ -/*! exports provided: mountHero */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHero", function() { return mountHero; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount hero from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountHero(_a) { - var header$ = _a.header$, viewport$ = _a.viewport$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(el, { header$: header$, viewport$: viewport$ }) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHideable"])(el, 20), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (hidden) { return ({ hidden: hidden }); })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/index.ts": -/*!****************************************************!*\ - !*** ./src/assets/javascripts/components/index.ts ***! - \****************************************************/ -/*! exports provided: setupComponents, useComponent, mountHero, mountMain, mountNavigation, mountTabs, mountTableOfContents, mountHeader, mountHeaderTitle, mountSearch, mountSearchQuery, mountSearchReset, mountSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupComponents", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setupComponents"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useComponent", function() { return ___WEBPACK_IMPORTED_MODULE_0__["useComponent"]; }); - -/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/components/header/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["mountHeader"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["mountHeaderTitle"]; }); - -/* harmony import */ var _hero__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hero */ "./src/assets/javascripts/components/hero/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHero", function() { return _hero__WEBPACK_IMPORTED_MODULE_2__["mountHero"]; }); - -/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/components/main/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountMain", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["mountMain"]; }); - -/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./navigation */ "./src/assets/javascripts/components/navigation/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountNavigation", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["mountNavigation"]; }); - -/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/components/search/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearch"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchQuery"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchReset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchResult"]; }); - -/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabs */ "./src/assets/javascripts/components/tabs/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountTabs", function() { return _tabs__WEBPACK_IMPORTED_MODULE_6__["mountTabs"]; }); - -/* harmony import */ var _toc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./toc */ "./src/assets/javascripts/components/toc/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountTableOfContents", function() { return _toc__WEBPACK_IMPORTED_MODULE_7__["mountTableOfContents"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/components/main/index.ts": -/*!*********************************************************!*\ - !*** ./src/assets/javascripts/components/main/index.ts ***! - \*********************************************************/ -/*! exports provided: mountMain */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountMain", function() { return mountMain; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../_ */ "./src/assets/javascripts/components/_/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount main area from source observable - * - * The header must be connected to the main area observable outside of the - * operator function, as the header will persist in-between document switches - * while the main area is replaced. However, the header observable must be - * passed to this function, so we connect both via a long-living subject. - * - * @param options - Options - * - * @return Operator function - */ -function mountMain(_a) { - var header$ = _a.header$, viewport$ = _a.viewport$; - var main$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__["Subject"](); - /* Connect to main area observable via long-living subject */ - Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("header") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (header) { return main$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilKeyChanged"])("active"), Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHeaderShadow"])(header)); })) - .subscribe(); - /* Return operator */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchMain"])(el, { header$: header$, viewport$: viewport$ }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (main) { return main$.next(main); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/navigation/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/components/navigation/index.ts ***! - \***************************************************************/ -/*! exports provided: mountNavigation */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountNavigation", function() { return mountNavigation; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount navigation from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountNavigation(_a) { - var header$ = _a.header$, main$ = _a.main$, viewport$ = _a.viewport$, screen$ = _a.screen$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return screen$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (screen) { - /* [screen +]: Mount navigation in sidebar */ - if (screen) { - return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchSidebar"])(el, { main$: main$, viewport$: viewport$ }) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintSidebar"])(el, { header$: header$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (sidebar) { return ({ sidebar: sidebar }); })); - /* [screen -]: Mount navigation in drawer */ - } - else { - var els = Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElements"])("nav", el); - return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchNavigationLayer"])(els) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintNavigationLayer"])(els), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (layer) { return ({ layer: layer }); })); - } - })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/search/_/index.ts": -/*!*************************************************************!*\ - !*** ./src/assets/javascripts/components/search/_/index.ts ***! - \*************************************************************/ -/*! exports provided: mountSearch */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return mountSearch; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount search from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountSearch(_a) { - var query$ = _a.query$, reset$ = _a.reset$, result$ = _a.result$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function () { return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([query$, result$, reset$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), query = _b[0], result = _b[1]; - return ({ query: query, result: result }); - })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/search/index.ts": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/components/search/index.ts ***! - \***********************************************************/ -/*! exports provided: mountSearch, mountSearchQuery, mountSearchReset, mountSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/search/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return ___WEBPACK_IMPORTED_MODULE_0__["mountSearch"]; }); - -/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./query */ "./src/assets/javascripts/components/search/query/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return _query__WEBPACK_IMPORTED_MODULE_1__["mountSearchQuery"]; }); - -/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reset */ "./src/assets/javascripts/components/search/reset/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return _reset__WEBPACK_IMPORTED_MODULE_2__["mountSearchReset"]; }); - -/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/components/search/result/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return _result__WEBPACK_IMPORTED_MODULE_3__["mountSearchResult"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/components/search/query/index.ts": -/*!*****************************************************************!*\ - !*** ./src/assets/javascripts/components/search/query/index.ts ***! - \*****************************************************************/ -/*! exports provided: mountSearchQuery */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return mountSearchQuery; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var workers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! workers */ "./src/assets/javascripts/workers/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount search query from source observable - * - * @param handler - Worker handler - * @param options - Options - * - * @return Operator function - */ -function mountSearchQuery(_a, options) { - var tx$ = _a.tx$; - if (options === void 0) { options = {}; } - var toggle$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["useToggle"])("search"); - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { - var query$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchSearchQuery"])(el, options); - /* Subscribe worker to search query */ - query$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("value"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var value = _a.value; - return ({ - type: workers__WEBPACK_IMPORTED_MODULE_4__["SearchMessageType"].QUERY, - data: value - }); - })) - .subscribe(tx$.next.bind(tx$)); - /* Toggle search on focus */ - query$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("focus"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(toggle$)) - .subscribe(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), focus = _b[0].focus, toggle = _b[1]; - if (focus) - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setToggle"])(toggle, focus); - }); - /* Return search query */ - return query$; - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/search/reset/index.ts": -/*!*****************************************************************!*\ - !*** ./src/assets/javascripts/components/search/reset/index.ts ***! - \*****************************************************************/ -/*! exports provided: mountSearchReset */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return mountSearchReset; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_ */ "./src/assets/javascripts/components/_/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount search reset from source observable - * - * @return Operator function - */ -function mountSearchReset() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchSearchReset"])(el) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMapTo"])(Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("search-query")), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(observables__WEBPACK_IMPORTED_MODULE_2__["setElementFocus"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(undefined)); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(undefined)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/search/result/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/components/search/result/index.ts ***! - \******************************************************************/ -/*! exports provided: mountSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return mountSearchResult; }); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var workers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! workers */ "./src/assets/javascripts/workers/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount search result from source observable - * - * @param handler - Worker handler - * @param options - Options - * - * @return Operator function - */ -function mountSearchResult(_a, _b) { - var rx$ = _a.rx$; - var query$ = _b.query$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { - var container = el.parentElement; - /* Compute whether there are more search results to fetch */ - var fetch$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchElementOffset"])(container) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var y = _a.y; - return y >= container.scrollHeight - container.offsetHeight - 16; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(ramda__WEBPACK_IMPORTED_MODULE_0__["identity"])); - /* Paint search results */ - return rx$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(workers__WEBPACK_IMPORTED_MODULE_4__["isSearchResultMessage"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("data"), Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintSearchResult"])(el, { query$: query$, fetch$: fetch$ })); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/tabs/index.ts": -/*!*********************************************************!*\ - !*** ./src/assets/javascripts/components/tabs/index.ts ***! - \*********************************************************/ -/*! exports provided: mountTabs */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountTabs", function() { return mountTabs; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount tabs from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountTabs(_a) { - var header$ = _a.header$, viewport$ = _a.viewport$, screen$ = _a.screen$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return screen$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (screen) { - /* Mount tabs above screen breakpoint */ - if (screen) { - return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(el, { header$: header$, viewport$: viewport$ }) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHideable"])(el, 10), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (hidden) { return ({ hidden: hidden }); })); - /* Mount tabs below screen breakpoint */ - } - else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])({ hidden: true }); - } - })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/components/toc/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/components/toc/index.ts ***! - \********************************************************/ -/*! exports provided: mountTableOfContents */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountTableOfContents", function() { return mountTableOfContents; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Mount table of contents from source observable - * - * @param options - Options - * - * @return Operator function - */ -function mountTableOfContents(_a) { - var header$ = _a.header$, main$ = _a.main$, viewport$ = _a.viewport$, tablet$ = _a.tablet$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { return tablet$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (tablet) { - /* [tablet +]: Mount table of contents in sidebar */ - if (tablet) { - var els = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])(".md-nav__link", el); - /* Watch and paint sidebar */ - var sidebar$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchSidebar"])(el, { main$: main$, viewport$: viewport$ }) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintSidebar"])(el, { header$: header$ })); - /* Watch and paint anchor list (scroll spy) */ - var anchors$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchAnchorList"])(els, { header$: header$, viewport$: viewport$ }) - .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintAnchorList"])(els)); - /* Combine into a single hot observable */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([sidebar$, anchors$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), sidebar = _b[0], anchors = _b[1]; - return ({ sidebar: sidebar, anchors: anchors }); - })); - /* [tablet -]: Unmount table of contents */ - } - else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])({}); - } - })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/index.ts": -/*!*****************************************!*\ - !*** ./src/assets/javascripts/index.ts ***! - \*****************************************/ -/*! exports provided: initialize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initialize", function() { return initialize; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _stylesheets_main_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stylesheets/main.scss */ "./src/assets/stylesheets/main.scss"); -/* harmony import */ var _stylesheets_palette_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../stylesheets/palette.scss */ "./src/assets/stylesheets/palette.scss"); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _observables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var _workers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./workers */ "./src/assets/javascripts/workers/index.ts"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); -/* harmony import */ var _integrations_clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./integrations/clipboard */ "./src/assets/javascripts/integrations/clipboard/index.ts"); -/* harmony import */ var _integrations_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./integrations/keyboard */ "./src/assets/javascripts/integrations/keyboard/index.ts"); -/* harmony import */ var patches__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! patches */ "./src/assets/javascripts/patches/index.ts"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* harmony import */ var integrations_dialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! integrations/dialog */ "./src/assets/javascripts/integrations/dialog/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -// TODO: remove this after we finished refactoring -// tslint:disable - - - - - - - - - - - - - - -/* ------------------------------------------------------------------------- */ -document.documentElement.classList.remove("no-js"); -document.documentElement.classList.add("js"); -/* Test for iOS */ -if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) - document.documentElement.classList.add("ios"); -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Initialize Material for MkDocs - * - * @param config - Configuration - */ -function initialize(config) { - var e_1, _a, e_2, _b; - if (!Object(utilities__WEBPACK_IMPORTED_MODULE_13__["isConfig"])(config)) - throw new SyntaxError("Invalid configuration: " + JSON.stringify(config)); - /* Setup user interface observables */ - var location$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchLocation"])(); - var hash$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchLocationHash"])(); - var viewport$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchViewport"])(); - var tablet$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchMedia"])("(min-width: 960px)"); - var screen$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchMedia"])("(min-width: 1220px)"); - /* Setup document observable */ - var document$ = config.feature.instant - ? Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchDocument"])({ location$: location$ }) - : Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchDocument"])(); - /* Setup toggle bindings */ - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setupToggles"])([ - "drawer", - "search" /* Toggle for search */ - ], { document$: document$ }); - /* Setup component bindings */ - Object(components__WEBPACK_IMPORTED_MODULE_9__["setupComponents"])([ - "container", - "header", - "header-title", - "hero", - "main", - "navigation", - "search", - "search-query", - "search-reset", - "search-result", - "tabs", - "toc" /* Table of contents */ - ], { document$: document$ }); - /* ----------------------------------------------------------------------- */ - var worker = Object(_workers__WEBPACK_IMPORTED_MODULE_7__["setupSearchWorker"])(config.worker.search, { - base: config.base, location$: location$ - }); - /* ----------------------------------------------------------------------- */ - /* Create header observable */ - var header$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("header") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHeader"])({ viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - var main$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("main") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountMain"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - /* ----------------------------------------------------------------------- */ - /* Mount search query */ - var query$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-query") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchQuery"])(worker), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1) // TODO: this must be put onto EVERY component! - ); - /* Mount search reset */ - var reset$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-reset") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchReset"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - /* Mount search result */ - var result$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-result") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchResult"])(worker, { query$: query$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - /* ----------------------------------------------------------------------- */ - var search$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearch"])({ query$: query$, reset$: reset$, result$: result$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - /* ----------------------------------------------------------------------- */ - var navigation$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("navigation") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountNavigation"])({ header$: header$, main$: main$, viewport$: viewport$, screen$: screen$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1) // shareReplay because there might be late subscribers - ); - var toc$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("toc") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountTableOfContents"])({ header$: header$, main$: main$, viewport$: viewport$, tablet$: tablet$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - var tabs$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("tabs") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountTabs"])({ header$: header$, viewport$: viewport$, screen$: screen$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - var hero$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("hero") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHero"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - var title$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("header-title") - .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHeaderTitle"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); - /* ----------------------------------------------------------------------- */ - var keyboard$ = Object(_integrations_keyboard__WEBPACK_IMPORTED_MODULE_11__["setupKeyboard"])(); - Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchDetails"])({ document$: document$, hash$: hash$ }); - Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchScripts"])({ document$: document$ }); - Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchSource"])({ document$: document$ }); - Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchTables"])({ document$: document$ }); - /* Force 1px scroll offset to trigger overflow scrolling */ - Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchScrollfix"])({ document$: document$ }); - /* Setup clipboard and dialog */ - var dialog$ = Object(integrations_dialog__WEBPACK_IMPORTED_MODULE_14__["setupDialog"])(); - var clipboard$ = Object(_integrations_clipboard__WEBPACK_IMPORTED_MODULE_10__["setupClipboard"])({ document$: document$, dialog$: dialog$ }); - /* ----------------------------------------------------------------------- */ - // Close drawer and search on hash change - // put into navigation... - // TODO: replace with popstate? - hash$.subscribe(function () { - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("drawer").subscribe(function (el) { - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(el, false); - }); - }); - // put into search... - hash$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (hash) { return Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (x) { return x.checked; }), // only active - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (toggle) { return Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(toggle, false); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["delay"])(125), // ensure that it runs after the body scroll reset... - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["mapTo"])(hash)); })) - .subscribe(function (hash) { - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])("[id=\"" + hash + "\"]").scrollIntoView(); - }); - // Scroll lock // document -> document$ => { body } !? - // put into search... - var toggle$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search"); - Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["combineLatest"])([ - toggle$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(_observables__WEBPACK_IMPORTED_MODULE_6__["watchToggle"])), - tablet$, - ]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["withLatestFrom"])(viewport$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_b[0], 2), toggle = _c[0], tablet = _c[1], y = _b[1].offset.y; - var active = toggle && !tablet; - return document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["delay"])(active ? 400 : 100), // TOOD: directly combine this with the hash! - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_4__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (_a) { - var body = _a.body; - return active - ? Object(actions__WEBPACK_IMPORTED_MODULE_8__["setScrollLock"])(body, y) - : Object(actions__WEBPACK_IMPORTED_MODULE_8__["resetScrollLock"])(body); - })); - })) - .subscribe(); - function isInternalLink(el) { - return el.host === location.host && ( - // TODO: Improve regex - !el.pathname || el.pathname === "/" || /\/[\w-]+(?:\/?|\.html)$/i.test(el.pathname) // TODO: provide some test cases - ); - } - // on same page! - function isAnchorLink(el) { - return el.pathname === location.pathname && el.hash.length > 0; - } - function compareState(_a, _b) { - var a = _a.url; - var b = _b.url; - return a.href === b.href; - } - // instant loading - if (config.feature.instant) { - /* Disable automatic scroll restoration, as it doesn't work nicely */ - if ("scrollRestoration" in history) - history.scrollRestoration = "manual"; - try { - /* Resolve relative links for stability */ - for (var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])([ - "link[rel=\"shortcut icon\"]", - "link[rel=\"stylesheet\"]" - ]), _d = _c.next(); !_d.done; _d = _c.next()) { - var selector = _d.value; - try { - for (var _e = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElements"])(selector))), _f = _e.next(); !_f.done; _f = _e.next()) { - var el = _f.value; - el.href = el.href; - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_f && !_f.done && (_b = _e.return)) _b.call(_e); - } - finally { if (e_2) throw e_2.error; } - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - /* Intercept internal link clicks */ - var internal$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["fromEvent"])(document.body, "click") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (ev) { return !(ev.metaKey || ev.ctrlKey); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (ev) { - if (ev.target instanceof HTMLElement) { - var el = ev.target.closest("a"); - if (el && isInternalLink(el)) { - if (!isAnchorLink(el)) - ev.preventDefault(); - return Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["of"])(el.href); - } - } - return rxjs__WEBPACK_IMPORTED_MODULE_4__["NEVER"]; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilChanged"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["map"])(function (href) { return ({ url: new URL(href) }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); - /* Intercept internal links to dispatch */ - var dispatch$ = internal$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (_a) { - var url = _a.url; - return !isAnchorLink(url); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); - /* Intercept popstate events (history back and forward) */ - var popstate$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["fromEvent"])(window, "popstate") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (ev) { return ev.state !== null; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["map"])(function (ev) { return ({ - url: new URL(location.href), - data: ev.state - }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); - /* Emit location change */ - Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(dispatch$, popstate$) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["pluck"])("url")) - .subscribe(location$); - /* Add dispatched link to history */ - internal$ - .pipe( - // TODO: must start with the current location and ignore the first emission - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilChanged"])(compareState), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (_a) { - var url = _a.url; - return !isAnchorLink(url); - })) - .subscribe(function (_a) { - var url = _a.url; - // console.log(`History.Push ${url}`) - history.pushState({}, "", url.toString()); - }); - // special case - Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(internal$, popstate$) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["bufferCount"])(2, 1)) - .subscribe(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _b[0], next = _b[1]; - console.log("<- " + prev.url); - console.log("-> " + next.url); - if (prev.url.href.match(next.url.href) !== null && - isAnchorLink(prev.url)) { - // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging. - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setViewportOffset"])(next.data || { y: 0 }); - } - // console.log("Potential Candidate") - }); - // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString())) - // filter(([prev, next]) => { - // return prev.url.href.match(next.url.href) !== null - // && isAnchorLink(prev.url) - // }), - // map(([, next]) => next) - // // distinctUntilChanged(compareLocationChange), - // // filter(({ url }) => !isAnchorLink(url)) - // ) - // .subscribe(({ url }) => { - // console.log(`Restore ${url}`) - // }) - /* Persist viewport offset in history before hash change */ - viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["debounceTime"])(250), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilKeyChanged"])("offset")) - .subscribe(function (_a) { - var offset = _a.offset; - // console.log("Update", offset) - history.replaceState(offset, ""); - }); - /* */ - Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(dispatch$, popstate$) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["sample"])(document$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["withLatestFrom"])(document$)) - .subscribe(function (_a) { - var e_3, _b; - var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _d = _c[0], url = _d.url, data = _d.data, _e = _c[1], title = _e.title, head = _e.head; - console.log("Done", url.href, data); - // trigger custom event - document.dispatchEvent(new CustomEvent("DOMContentSwitch")); - // setDocumentTitle - document.title = title; - try { - // replace meta tags - for (var _f = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])([ - "link[rel=\"canonical\"]", - "meta[name=\"author\"]", - "meta[name=\"description\"]" - ]), _g = _f.next(); !_g.done; _g = _f.next()) { - var selector = _g.value; - var next = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])(selector, head); - var prev = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])(selector, document.head); - if (typeof next !== "undefined" && - typeof prev !== "undefined") { - prev.replaceWith(next); - } - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (_g && !_g.done && (_b = _f.return)) _b.call(_f); - } - finally { if (e_3) throw e_3.error; } - } - // search drawer close - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search").subscribe(function (el) { - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(el, false); - }); - // // TODO: this doesnt work as expected - if (url.hash) { - console.log("hash data?", data); - var a = document.createElement("a"); - a.href = url.hash; - a.click(); - } - else { - Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setViewportOffset"])(data || { y: 0 }); // push state! - } - }); - // internal$.subscribe(({ url }) => { - // console.log(`Internal ${url}`) - // }) - // dispatch$.subscribe(({ url }) => { - // console.log(`Dispatch ${url}`) - // }) - popstate$.subscribe(function (_a) { - var url = _a.url; - console.log("Popstate " + url.href, url); - }); - } - /* ----------------------------------------------------------------------- */ - // if we use a single tab outside of search, unhide all permalinks. - // TODO: experimental. necessary!? - keyboard$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (key) { return key.mode === "global" && ["Tab"].includes(key.type); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["take"])(1)) - .subscribe(function () { - var e_4, _a; - try { - for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElements"])(".headerlink")), _c = _b.next(); !_c.done; _c = _b.next()) { - var link = _c.value; - link.style.visibility = "visible"; - } - } - catch (e_4_1) { e_4 = { error: e_4_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_4) throw e_4.error; } - } - }); - /* ----------------------------------------------------------------------- */ - var state = { - search$: search$, - clipboard$: clipboard$, - location$: location$, - hash$: hash$, - keyboard$: keyboard$, - dialog$: dialog$, - main$: main$, - navigation$: navigation$, - toc$: toc$, - tabs$: tabs$, - hero$: hero$, - title$: title$ // TODO: header title - }; - var rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__rest"])(state, []); - rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(Object(ramda__WEBPACK_IMPORTED_MODULE_3__["values"])(rest))).subscribe(); // potential memleak <-- use takeUntil - return { - // agent, - state: state - }; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/clipboard/index.ts": -/*!****************************************************************!*\ - !*** ./src/assets/javascripts/integrations/clipboard/index.ts ***! - \****************************************************************/ -/*! exports provided: setupClipboard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupClipboard", function() { return setupClipboard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var clipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clipboard */ "./node_modules/clipboard/dist/clipboard.js"); -/* harmony import */ var clipboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clipboard__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup clipboard - * - * This function implements the Clipboard.js integration and injects a button - * into all code blocks when the document changes. - * - * @param options - Options - * - * @return Clipboard observable - */ -function setupClipboard(_a) { - var document$ = _a.document$, dialog$ = _a.dialog$; - if (!clipboard__WEBPACK_IMPORTED_MODULE_1__["isSupported"]()) - return rxjs__WEBPACK_IMPORTED_MODULE_2__["NEVER"]; - /* Inject 'copy-to-clipboard' buttons */ - document$.subscribe(function () { - var e_1, _a; - var blocks = Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElements"])("pre > code"); - try { - for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(blocks.entries()), _c = _b.next(); !_c.done; _c = _b.next()) { - var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_c.value, 2), index = _d[0], block = _d[1]; - var parent = block.parentElement; - parent.id = "__code_" + index; - parent.insertBefore(Object(templates__WEBPACK_IMPORTED_MODULE_5__["renderClipboard"])(parent.id), block); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - }); - /* Initialize and setup clipboard */ - var clipboard$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEventPattern"])(function (next) { - new clipboard__WEBPACK_IMPORTED_MODULE_1__(".md-clipboard").on("success", next); - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["share"])()); - /* Display notification for clipboard event */ - clipboard$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (ev) { return ev.clearSelection(); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mapTo"])(Object(utilities__WEBPACK_IMPORTED_MODULE_6__["translate"])("clipboard.copied"))) - .subscribe(dialog$); - /* Return clipboard */ - return clipboard$; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/dialog/index.ts": -/*!*************************************************************!*\ - !*** ./src/assets/javascripts/integrations/dialog/index.ts ***! - \*************************************************************/ -/*! exports provided: setupDialog */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupDialog", function() { return setupDialog; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup dialog - * - * @param options - Options - * - * @return Dialog observable - */ -function setupDialog(_a) { - var duration = (_a === void 0 ? {} : _a).duration; - var dialog$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__["Subject"](); - /* Create dialog */ - var dialog = document.createElement("div"); // TODO: improve scoping - dialog.classList.add("md-dialog", "md-typeset"); - /* Display dialog */ - dialog$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (text) { return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])(document.body) // useComponent("container") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (container) { return container.appendChild(dialog); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(1), // Strangley it doesnt work when we push things to the new animation frame... - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { - el.innerHTML = text; - el.setAttribute("data-md-state", "open"); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(duration || 2000), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { return el.removeAttribute("data-md-state"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(400), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { - el.innerHTML = ""; - el.remove(); - })); })) - .subscribe(); - /* Return dialog subject */ - return dialog$; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/keyboard/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/integrations/keyboard/index.ts ***! - \***************************************************************/ -/*! exports provided: setupKeyboard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupKeyboard", function() { return setupKeyboard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup keyboard - * - * This function will setup the keyboard handlers and ensure that keys are - * correctly propagated. Currently there are two modes: - * - * - `global`: This mode is active when the search is closed. It is intended - * to assign hotkeys to specific functions of the site. Currently the search, - * previous and next page can be triggered. - * - * - `search`: This mode is active when the search is open. It maps certain - * navigational keys to offer search results that can be entirely navigated - * through keyboard input. - * - * The keyboard observable is returned and can be used to monitor the keyboard - * in order toassign further hotkeys to custom functions. - * - * @return Keyboard observable - */ -function setupKeyboard() { - var toggle$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["useToggle"])("search"); - var search$ = toggle$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(observables__WEBPACK_IMPORTED_MODULE_3__["watchToggle"])); - /* Setup keyboard and determine mode */ - var keyboard$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchKeyboard"])() - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(search$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), key = _b[0], toggle = _b[1]; - return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({ mode: toggle ? "search" : "global" }, key)); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); - /* Setup search keyboard handlers */ - keyboard$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { - var mode = _a.mode; - return mode === "search"; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(toggle$, Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-query"), Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-result"))) - .subscribe(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 4), key = _b[0], toggle = _b[1], query = _b[2], result = _b[3]; - var active = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])(); - switch (key.type) { - /* Enter: prevent form submission */ - case "Enter": - if (active === query) - key.claim(); - break; - /* Escape or Tab: close search */ - case "Escape": - case "Tab": - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setToggle"])(toggle, false); - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query, false); - break; - /* Vertical arrows: select previous or next search result */ - case "ArrowUp": - case "ArrowDown": - if (typeof active === "undefined") { - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); - } - else { - var els = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([query], Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("[href]", result)); - var i = Math.max(0, (Math.max(0, els.indexOf(active)) + els.length + (key.type === "ArrowUp" ? -1 : +1)) % els.length); - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(els[i]); - } - /* Prevent scrolling of page */ - key.claim(); - break; - /* All other keys: hand to search query */ - default: - if (query !== Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])()) - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); - } - }); - /* Setup global keyboard handlers */ - keyboard$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { - var mode = _a.mode; - if (mode === "global") { - var active = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])(); - if (typeof active !== "undefined") - return !Object(observables__WEBPACK_IMPORTED_MODULE_3__["isSusceptibleToKeyboard"])(active); - } - return false; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-query"))) - .subscribe(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), key = _b[0], query = _b[1]; - switch (key.type) { - /* Open search and select query */ - case "f": - case "s": - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); - Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementSelection"])(query); - key.claim(); - break; - /* Go to previous page */ - case "p": - case ",": - var prev = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[href][rel=prev]"); - if (typeof prev !== "undefined") - prev.click(); - break; - /* Go to next page */ - case "n": - case ".": - var next = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[href][rel=next]"); - if (typeof next !== "undefined") - next.click(); - break; - } - }); - /* Return keyboard */ - return keyboard$; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/document/_/index.ts": -/*!**********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/document/_/index.ts ***! - \**********************************************************************/ -/*! exports provided: watchDocument */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return watchDocument; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../switch */ "./src/assets/javascripts/observables/agent/document/switch/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch document - * - * If the location observable is passed, instant loading will be enabled which - * means that new values will be emitted every time the location changes. - * - * @return Document observable - */ -function watchDocument(_a) { - var location$ = (_a === void 0 ? {} : _a).location$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(document, "DOMContentLoaded") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(document)), typeof location$ !== "undefined" - ? Object(_switch__WEBPACK_IMPORTED_MODULE_2__["watchDocumentSwitch"])({ location$: location$ }) - : rxjs__WEBPACK_IMPORTED_MODULE_0__["NEVER"]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/document/index.ts": -/*!********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/document/index.ts ***! - \********************************************************************/ -/*! exports provided: watchDocument, watchDocumentSwitch */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/document/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); - -/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./switch */ "./src/assets/javascripts/observables/agent/document/switch/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _switch__WEBPACK_IMPORTED_MODULE_1__["watchDocumentSwitch"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/document/switch/index.ts": -/*!***************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/document/switch/index.ts ***! - \***************************************************************************/ -/*! exports provided: watchDocumentSwitch */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return watchDocumentSwitch; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../location */ "./src/assets/javascripts/observables/agent/location/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch document switch - * - * This function returns an observables that fetches a document if the provided - * location observable emits a new value (i.e. URL). If the emitted URL points - * to the same page, the request is effectively ignored (i.e. when only the - * fragment identifier changes). - * - * In case the request fails, the location change is dispatched regularly. - * - * @param options - Options - * - * @return Document switch observable - */ -function watchDocumentSwitch(_a) { - var location$ = _a.location$; - return location$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("pathname"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["skip"])(1), - /* Fetch document */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (url) { return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__["ajax"])({ - url: url.href, - responseType: "document", - withCredentials: true - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["catchError"])(function () { - Object(_location__WEBPACK_IMPORTED_MODULE_3__["setLocation"])(url); - return rxjs__WEBPACK_IMPORTED_MODULE_0__["NEVER"]; - })); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["share"])()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/element/_/index.ts": -/*!*********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/element/_/index.ts ***! - \*********************************************************************/ -/*! exports provided: getElement, getElementOrThrow, getActiveElement, getElements */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return getElement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return getElementOrThrow; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return getActiveElement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return getElements; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve an element matching the query selector - * - * @template T - Element type - * - * @param selector - Query selector - * @param node - Node of reference - * - * @return Element or nothing - */ -function getElement(selector, node) { - if (node === void 0) { node = document; } - return node.querySelector(selector) || undefined; -} -/** - * Retrieve an element matching a query selector or throw a reference error - * - * @template T - Element type - * - * @param selector - Query selector - * @param node - Node of reference - * - * @return Element - */ -function getElementOrThrow(selector, node) { - if (node === void 0) { node = document; } - var el = getElement(selector, node); - if (typeof el === "undefined") - throw new ReferenceError("Missing element: expected \"" + selector + "\" to be present"); - return el; -} -/** - * Retrieve the currently active element - * - * @return Element - */ -function getActiveElement() { - return document.activeElement instanceof HTMLElement - ? document.activeElement - : undefined; -} -/** - * Retrieve all elements matching the query selector - * - * @template T - Element type - * - * @param selector - Query selector - * @param node - Node of reference - * - * @return Elements - */ -function getElements(selector, node) { - if (node === void 0) { node = document; } - return Array.from(node.querySelectorAll(selector)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/element/focus/index.ts": -/*!*************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/element/focus/index.ts ***! - \*************************************************************************/ -/*! exports provided: setElementFocus, watchElementFocus */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return setElementFocus; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return watchElementFocus; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_ */ "./src/assets/javascripts/observables/agent/element/_/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set element focus - * - * @param el - Element - * @param value - Whether the element should be focused - * - * @return Element offset - */ -function setElementFocus(el, value) { - if (value === void 0) { value = true; } - if (value) - el.focus(); - else - el.blur(); -} -/* ------------------------------------------------------------------------- */ -/** - * Watch element focus - * - * @param el - Element - * - * @return Element focus observable - */ -function watchElementFocus(el) { - var focus$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "focus"); - var blur$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "blur"); - /* Map events to boolean state */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(focus$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(true)), blur$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(false))) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(el === Object(___WEBPACK_IMPORTED_MODULE_2__["getActiveElement"])()), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/element/index.ts": -/*!*******************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/element/index.ts ***! - \*******************************************************************/ -/*! exports provided: getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/element/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getActiveElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElements"]; }); - -/* harmony import */ var _focus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./focus */ "./src/assets/javascripts/observables/agent/element/focus/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _focus__WEBPACK_IMPORTED_MODULE_1__["setElementFocus"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _focus__WEBPACK_IMPORTED_MODULE_1__["watchElementFocus"]; }); - -/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset */ "./src/assets/javascripts/observables/agent/element/offset/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_2__["getElementOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_2__["watchElementOffset"]; }); - -/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./select */ "./src/assets/javascripts/observables/agent/element/select/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _select__WEBPACK_IMPORTED_MODULE_3__["setElementSelection"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/element/offset/index.ts": -/*!**************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/element/offset/index.ts ***! - \**************************************************************************/ -/*! exports provided: getElementOffset, watchElementOffset */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return getElementOffset; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return watchElementOffset; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve element offset - * - * @param el - Element - * - * @return Element offset - */ -function getElementOffset(el) { - return { - x: el.scrollLeft, - y: el.scrollTop - }; -} -/* ------------------------------------------------------------------------- */ -/** - * Watch element offset - * - * @param el - Element - * - * @return Element offset observable - */ -function watchElementOffset(el) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "scroll"), Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize")) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function () { return getElementOffset(el); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getElementOffset(el)), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/element/select/index.ts": -/*!**************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/element/select/index.ts ***! - \**************************************************************************/ -/*! exports provided: setElementSelection */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return setElementSelection; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Set element text selection - * - * @param el - Element - */ -function setElementSelection(el) { - if (el instanceof HTMLInputElement) - el.select(); - else - throw new Error("Not implemented"); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/index.ts": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/index.ts ***! - \***********************************************************/ -/*! exports provided: isSusceptibleToKeyboard, watchKeyboard, watchMedia, watchWorker, watchDocument, watchDocumentSwitch, getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection, getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash, watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./document */ "./src/assets/javascripts/observables/agent/document/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _document__WEBPACK_IMPORTED_MODULE_0__["watchDocumentSwitch"]; }); - -/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/assets/javascripts/observables/agent/element/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElementOrThrow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getActiveElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElements"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["setElementFocus"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["watchElementFocus"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElementOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["watchElementOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["setElementSelection"]; }); - -/* harmony import */ var _keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keyboard */ "./src/assets/javascripts/observables/agent/keyboard/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return _keyboard__WEBPACK_IMPORTED_MODULE_2__["isSusceptibleToKeyboard"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return _keyboard__WEBPACK_IMPORTED_MODULE_2__["watchKeyboard"]; }); - -/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./location */ "./src/assets/javascripts/observables/agent/location/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["getLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["setLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["watchLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["getLocationHash"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["watchLocationHash"]; }); - -/* harmony import */ var _media__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./media */ "./src/assets/javascripts/observables/agent/media/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return _media__WEBPACK_IMPORTED_MODULE_4__["watchMedia"]; }); - -/* harmony import */ var _viewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./viewport */ "./src/assets/javascripts/observables/agent/viewport/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewport"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportAt"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["getViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["setViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["getViewportSize"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportSize"]; }); - -/* harmony import */ var _worker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./worker */ "./src/assets/javascripts/observables/agent/worker/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return _worker__WEBPACK_IMPORTED_MODULE_6__["watchWorker"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/keyboard/index.ts": -/*!********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/keyboard/index.ts ***! - \********************************************************************/ -/*! exports provided: isSusceptibleToKeyboard, watchKeyboard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return isSusceptibleToKeyboard; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return watchKeyboard; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Check whether an element may receive keyboard input - * - * @param el - Element - * - * @return Test result - */ -function isSusceptibleToKeyboard(el) { - switch (el.tagName) { - /* Form elements */ - case "INPUT": - case "SELECT": - case "TEXTAREA": - return true; - /* Everything else */ - default: - return el.isContentEditable; - } -} -/* ------------------------------------------------------------------------- */ -/** - * Watch keyboard - * - * @return Keyboard observable - */ -function watchKeyboard() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "keydown") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (ev) { return !(ev.metaKey || ev.ctrlKey); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (ev) { return ({ - type: ev.key, - claim: function () { - ev.preventDefault(); - ev.stopPropagation(); - } - }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/location/_/index.ts": -/*!**********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/location/_/index.ts ***! - \**********************************************************************/ -/*! exports provided: getLocation, setLocation, watchLocation */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return getLocation; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return setLocation; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return watchLocation; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve location - * - * This function will return a `URL` object (and not `Location`) in order to - * normalize typings across the application. Furthermore, locations need to be - * tracked without setting them and `Location` is a singleton which represents - * the current location. - * - * @return URL - */ -function getLocation() { - return new URL(location.href); -} -/** - * Set location - * - * @param url - URL to change to - */ -function setLocation(url) { - location.href = url.href; -} -/* ------------------------------------------------------------------------- */ -/** - * Watch location - * - * @return Location subject - */ -function watchLocation() { - return new rxjs__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](getLocation()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/location/hash/index.ts": -/*!*************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/location/hash/index.ts ***! - \*************************************************************************/ -/*! exports provided: getLocationHash, watchLocationHash */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return getLocationHash; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return watchLocationHash; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve location hash - * - * @return Location hash - */ -function getLocationHash() { - return location.hash.substring(1); -} -/* ------------------------------------------------------------------------- */ -/** - * Watch location hash - * - * @return Location hash observable - */ -function watchLocationHash() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "hashchange") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getLocationHash), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getLocationHash()), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (hash) { return hash.length > 0; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/location/index.ts": -/*!********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/location/index.ts ***! - \********************************************************************/ -/*! exports provided: getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/location/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchLocation"]; }); - -/* harmony import */ var _hash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hash */ "./src/assets/javascripts/observables/agent/location/hash/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _hash__WEBPACK_IMPORTED_MODULE_1__["getLocationHash"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _hash__WEBPACK_IMPORTED_MODULE_1__["watchLocationHash"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/media/index.ts": -/*!*****************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/media/index.ts ***! - \*****************************************************************/ -/*! exports provided: watchMedia */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return watchMedia; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch media query - * - * @param query - Media query - * - * @return Media observable - */ -function watchMedia(query) { - var media = matchMedia(query); - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEventPattern"])(function (next) { - return media.addListener(function () { return next(media.matches); }); - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(media.matches), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/viewport/_/index.ts": -/*!**********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/viewport/_/index.ts ***! - \**********************************************************************/ -/*! exports provided: watchViewport, watchViewportAt */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return watchViewport; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return watchViewportAt; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../offset */ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts"); -/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../size */ "./src/assets/javascripts/observables/agent/viewport/size/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch viewport - * - * @return Viewport observable - */ -function watchViewport() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([ - Object(_offset__WEBPACK_IMPORTED_MODULE_3__["watchViewportOffset"])(), - Object(_size__WEBPACK_IMPORTED_MODULE_4__["watchViewportSize"])() - ]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), offset = _b[0], size = _b[1]; - return ({ offset: offset, size: size }); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); -} -/** - * Watch viewport relative to element - * - * @param el - Element - * @param options - Options - * - * @return Viewport observable - */ -function watchViewportAt(el, _a) { - var header$ = _a.header$, viewport$ = _a.viewport$; - var offset$ = viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return ({ - x: el.offsetLeft, - y: el.offsetTop - }); })); - /* Compute relative viewport, return hot observable */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([header$, viewport$, offset$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), height = _b[0].height, _c = _b[1], offset = _c.offset, size = _c.size, _d = _b[2], x = _d.x, y = _d.y; - return ({ - offset: { - x: offset.x - x, - y: offset.y - y + height - }, - size: size - }); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/viewport/index.ts": -/*!********************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/viewport/index.ts ***! - \********************************************************************/ -/*! exports provided: watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/viewport/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchViewport"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchViewportAt"]; }); - -/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offset */ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["getViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["setViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["watchViewportOffset"]; }); - -/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./size */ "./src/assets/javascripts/observables/agent/viewport/size/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _size__WEBPACK_IMPORTED_MODULE_2__["getViewportSize"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _size__WEBPACK_IMPORTED_MODULE_2__["watchViewportSize"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts": -/*!***************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/viewport/offset/index.ts ***! - \***************************************************************************/ -/*! exports provided: getViewportOffset, setViewportOffset, watchViewportOffset */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return getViewportOffset; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return setViewportOffset; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return watchViewportOffset; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve viewport offset - * - * On iOS Safari, viewport offset can be negative due to overflow scrolling. - * As this may induce strange behaviors downstream, we'll just limit it to 0. - * - * @return Viewport offset - */ -function getViewportOffset() { - return { - x: Math.max(0, pageXOffset), - y: Math.max(0, pageYOffset) - }; -} -/** - * Set viewport offset - * - * @param offset - Viewport offset - */ -function setViewportOffset(_a) { - var x = _a.x, y = _a.y; - window.scrollTo(x || 0, y || 0); -} -/* ------------------------------------------------------------------------- */ -/** - * Watch viewport offset - * - * @return Viewport offset observable - */ -function watchViewportOffset() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "scroll"), Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize")) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getViewportOffset), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getViewportOffset())); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/viewport/size/index.ts": -/*!*************************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/viewport/size/index.ts ***! - \*************************************************************************/ -/*! exports provided: getViewportSize, watchViewportSize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return getViewportSize; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return watchViewportSize; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Retrieve viewport size - * - * @return Viewport size - */ -function getViewportSize() { - return { - width: innerWidth, - height: innerHeight - }; -} -/* ------------------------------------------------------------------------- */ -/** - * Watch viewport size - * - * @return Viewport size observable - */ -function watchViewportSize() { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getViewportSize), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getViewportSize())); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/agent/worker/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/observables/agent/worker/index.ts ***! - \******************************************************************/ -/*! exports provided: watchWorker */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return watchWorker; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch a web worker - * - * This function returns an observable that will send all values emitted by the - * message observable to the web worker. Web worker communication is expected - * to be bidirectional (request-response) and synchronous. Messages that are - * emitted during a pending request are throttled, the last one is emitted. - * - * @param worker - Web worker - * @param options - Options - * - * @return Worker message observable - */ -function watchWorker(worker, _a) { - var tx$ = _a.tx$; - /* Intercept messages from worker-like objects */ - var rx$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEventPattern"])(function (next) { - return worker.addEventListener("message", next); - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["pluck"])("data")); - /* Send and receive messages, return hot observable */ - return tx$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["throttle"])(function () { return rx$; }, { leading: true, trailing: true }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (message) { return worker.postMessage(message); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMapTo"])(rx$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/anchor/index.ts": -/*!************************************************************!*\ - !*** ./src/assets/javascripts/observables/anchor/index.ts ***! - \************************************************************/ -/*! exports provided: watchAnchorList, paintAnchorList */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchAnchorList", function() { return watchAnchorList; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintAnchorList", function() { return paintAnchorList; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch anchor list - * - * This is effectively a scroll-spy implementation which will account for the - * fixed header and automatically re-calculate anchor offsets when the viewport - * is resized. The returned observable will only emit if the anchor list needs - * to be repainted. - * - * This implementation tracks an anchor element's entire path starting from its - * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the - * Material theme currently doesn't make use of this information, it enables - * the styling of the entire hierarchy through customization. - * - * Note that the current anchor is the last item of the `prev` anchor list. - * - * @param els - Anchor elements - * @param options - Options - * - * @return Anchor list observable - */ -function watchAnchorList(els, _a) { - var e_1, _b; - var header$ = _a.header$, viewport$ = _a.viewport$; - var table = new Map(); - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - var id = decodeURIComponent(el.hash.substring(1)); - var target = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElement"])("[id=\"" + id + "\"]"); - if (typeof target !== "undefined") - table.set(el, target); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_b = els_1.return)) _b.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - /* Compute necessary adjustment for header */ - var adjust$ = header$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (header) { return 18 + header.height; })); - /* Compute partition of previous and next anchors */ - var partition$ = viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["distinctUntilKeyChanged"])("size"), - /* Build index to map anchor paths to vertical offsets */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { - var path = []; - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table).reduce(function (index, _a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), anchor = _b[0], target = _b[1]; - while (path.length) { - var last = table.get(path[path.length - 1]); - if (last.tagName >= target.tagName) { - path.pop(); - } - else { - break; - } - } - /* If the current anchor is hidden, continue with its parent */ - var offset = target.offsetTop; - while (!offset && target.parentElement) { - target = target.parentElement; - offset = target.offsetTop; - } - /* Map reversed anchor path to vertical offset */ - return index.set(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["reverse"])(path = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(path, [anchor])), offset); - }, new Map()); - }), - /* Re-compute partition when viewport offset changes */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMap"])(function (index) { return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["combineLatest"])([adjust$, viewport$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["scan"])(function (_a, _b) { - var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _c[0], next = _c[1]; - var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_b, 2), adjust = _d[0], y = _d[1].offset.y; - /* Look forward */ - while (next.length) { - var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(next[0], 2), offset = _e[1]; - if (offset - adjust < y) { - prev = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(prev, [next.shift()]); - } - else { - break; - } - } - /* Look backward */ - while (prev.length) { - var _f = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(prev[prev.length - 1], 2), offset = _f[1]; - if (offset - adjust >= y) { - next = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([prev.pop()], next); - } - else { - break; - } - } - /* Return partition */ - return [prev, next]; - }, [[], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(index)]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["distinctUntilChanged"])(function (a, b) { - return a[0] === b[0] - && a[1] === b[1]; - })); })); - /* Compute and return anchor list migrations */ - return partition$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _b[0], next = _b[1]; - return ({ - prev: prev.map(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), path = _b[0]; - return path; - }), - next: next.map(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), path = _b[0]; - return path; - }) - }); - }), - /* Extract anchor list migrations */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["startWith"])({ prev: [], next: [] }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["bufferCount"])(2, 1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), a = _b[0], b = _b[1]; - /* Moving down */ - if (a.prev.length < b.prev.length) { - return { - prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length), - next: [] - }; - /* Moving up */ - } - else { - return { - prev: b.prev.slice(-1), - next: b.next.slice(0, b.next.length - a.next.length) - }; - } - })); -} -/* ------------------------------------------------------------------------- */ -/** - * Paint anchor list - * - * @param els - Anchor elements - * - * @return Operator function - */ -function paintAnchorList(els) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["pipe"])( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { - var e_2, _b, e_3, _c; - var prev = _a.prev, next = _a.next; - try { - /* Look forward */ - for (var next_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(next), next_1_1 = next_1.next(); !next_1_1.done; next_1_1 = next_1.next()) { - var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(next_1_1.value, 1), el = _d[0]; - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorActive"])(el); - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorBlur"])(el); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (next_1_1 && !next_1_1.done && (_b = next_1.return)) _b.call(next_1); - } - finally { if (e_2) throw e_2.error; } - } - try { - /* Look backward */ - for (var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(prev.entries()), _f = _e.next(); !_f.done; _f = _e.next()) { - var _g = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_f.value, 2), index = _g[0], _h = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_g[1], 1), el = _h[0]; - Object(actions__WEBPACK_IMPORTED_MODULE_4__["setAnchorActive"])(el, index === prev.length - 1); - Object(actions__WEBPACK_IMPORTED_MODULE_4__["setAnchorBlur"])(el, true); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (_f && !_f.done && (_c = _e.return)) _c.call(_e); - } - finally { if (e_3) throw e_3.error; } - } - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["finalize"])(function () { - var e_4, _a; - try { - for (var els_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_2_1 = els_2.next(); !els_2_1.done; els_2_1 = els_2.next()) { - var el = els_2_1.value; - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorActive"])(el); - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorBlur"])(el); - } - } - catch (e_4_1) { e_4 = { error: e_4_1 }; } - finally { - try { - if (els_2_1 && !els_2_1.done && (_a = els_2.return)) _a.call(els_2); - } - finally { if (e_4) throw e_4.error; } - } - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/header/_/index.ts": -/*!**************************************************************!*\ - !*** ./src/assets/javascripts/observables/header/_/index.ts ***! - \**************************************************************/ -/*! exports provided: watchHeader */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return watchHeader; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch header - * - * The header is wrapped in an observable to pave the way for auto-hiding or - * other dynamic behaviors that may be implemented later on. - * - * @param el - Header element - * @param options - Options - * - * @return Header observable - */ -function watchHeader(el, _a) { - var viewport$ = _a.viewport$; - return viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function () { - var styles = getComputedStyle(el); - var sticky = [ - "sticky", - "-webkit-sticky" /* Old Safari */ - ].includes(styles.position); - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])({ - sticky: sticky, - height: sticky ? el.offsetHeight : 0 - }); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/header/index.ts": -/*!************************************************************!*\ - !*** ./src/assets/javascripts/observables/header/index.ts ***! - \************************************************************/ -/*! exports provided: watchHeader, paintHeaderShadow, paintHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/header/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchHeader"]; }); - -/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ "./src/assets/javascripts/observables/header/shadow/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_1__["paintHeaderShadow"]; }); - -/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/observables/header/title/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/header/shadow/index.ts": -/*!*******************************************************************!*\ - !*** ./src/assets/javascripts/observables/header/shadow/index.ts ***! - \*******************************************************************/ -/*! exports provided: paintHeaderShadow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return paintHeaderShadow; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Paint header shadow - * - * @param el - Header element - * - * @return Operator function - */ -function paintHeaderShadow(el) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (_a) { - var active = _a.active; - Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHeaderShadow"])(el, active); - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { - Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHeaderShadow"])(el); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/header/title/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/observables/header/title/index.ts ***! - \******************************************************************/ -/*! exports provided: paintHeaderTitle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return paintHeaderTitle; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Paint header title - * - * @param el - Header element - * - * @return Operator function - */ -function paintHeaderTitle(el) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (active) { - Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHeaderTitle"])(el, active); - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { - Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHeaderTitle"])(el); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/index.ts": -/*!*****************************************************!*\ - !*** ./src/assets/javascripts/observables/index.ts ***! - \*****************************************************/ -/*! exports provided: watchAnchorList, paintAnchorList, setupToggles, useToggle, setToggle, watchToggle, isSusceptibleToKeyboard, watchKeyboard, watchMedia, watchWorker, watchHeader, paintHeaderShadow, paintHeaderTitle, watchMain, paintHideable, watchSidebar, paintSidebar, watchNavigationLayer, paintNavigationLayer, watchSearchQuery, watchSearchReset, paintSearchResult, watchDocument, watchDocumentSwitch, getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection, getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash, watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["isSusceptibleToKeyboard"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchKeyboard"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchMedia"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchWorker"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchDocumentSwitch"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getActiveElement"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElements"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setElementFocus"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchElementFocus"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElementOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchElementOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setElementSelection"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchLocation"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getLocationHash"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchLocationHash"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewport"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportAt"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportOffset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getViewportSize"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportSize"]; }); - -/* harmony import */ var _anchor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./anchor */ "./src/assets/javascripts/observables/anchor/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchAnchorList", function() { return _anchor__WEBPACK_IMPORTED_MODULE_1__["watchAnchorList"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintAnchorList", function() { return _anchor__WEBPACK_IMPORTED_MODULE_1__["paintAnchorList"]; }); - -/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/observables/header/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["watchHeader"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["paintHeaderShadow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"]; }); - -/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/observables/main/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["watchMain"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["paintHideable"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["watchSidebar"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["paintSidebar"]; }); - -/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./navigation */ "./src/assets/javascripts/observables/navigation/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["watchNavigationLayer"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["paintNavigationLayer"]; }); - -/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/observables/search/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["watchSearchQuery"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["watchSearchReset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["paintSearchResult"]; }); - -/* harmony import */ var _toggle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./toggle */ "./src/assets/javascripts/observables/toggle/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupToggles", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["setupToggles"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["useToggle"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["setToggle"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["watchToggle"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/main/_/index.ts": -/*!************************************************************!*\ - !*** ./src/assets/javascripts/observables/main/_/index.ts ***! - \************************************************************/ -/*! exports provided: watchMain */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return watchMain; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch main area - * - * This function returns an observable that computes the visual parameters of - * the main area which depends on the viewport vertical offset and height, as - * well as the height of the header element, if the header is fixed. - * - * @param el - Main area element - * @param options - Options - * - * @return Main area observable - */ -function watchMain(el, _a) { - var header$ = _a.header$, viewport$ = _a.viewport$; - /* Compute necessary adjustment for header */ - var adjust$ = header$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("height")); - /* Compute the main area's visible height */ - var height$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, viewport$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), adjust = _b[0], _c = _b[1], y = _c.offset.y, height = _c.size.height; - var top = el.offsetTop; - var bottom = el.offsetHeight + top; - return height - - Math.max(0, top - y, adjust) - - Math.max(0, height + y - bottom); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (height) { return Math.max(0, height); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Compute whether the viewport offset is past the main area's top */ - var active$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, viewport$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), adjust = _b[0], y = _b[1].offset.y; - return y >= el.offsetTop - adjust; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Combine into a single observable */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, height$, active$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), adjust = _b[0], height = _b[1], active = _b[2]; - return ({ - offset: el.offsetTop - adjust, - height: height, - active: active - }); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/main/hideable/index.ts": -/*!*******************************************************************!*\ - !*** ./src/assets/javascripts/observables/main/hideable/index.ts ***! - \*******************************************************************/ -/*! exports provided: paintHideable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return paintHideable; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Paint hideable - * - * @param el - Hideable element - * @param offset - Additional offset - * - * @return Operator function - */ -function paintHideable(el, offset) { - if (offset === void 0) { offset = 0; } - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { - var y = _a.offset.y; - return y >= offset; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilChanged"])(), - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (value) { - Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHidden"])(el, value); - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { - Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHidden"])(el); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/main/index.ts": -/*!**********************************************************!*\ - !*** ./src/assets/javascripts/observables/main/index.ts ***! - \**********************************************************/ -/*! exports provided: watchMain, paintHideable, watchSidebar, paintSidebar */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/main/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchMain"]; }); - -/* harmony import */ var _hideable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideable */ "./src/assets/javascripts/observables/main/hideable/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return _hideable__WEBPACK_IMPORTED_MODULE_1__["paintHideable"]; }); - -/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sidebar */ "./src/assets/javascripts/observables/main/sidebar/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_2__["watchSidebar"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_2__["paintSidebar"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/main/sidebar/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/observables/main/sidebar/index.ts ***! - \******************************************************************/ -/*! exports provided: watchSidebar, paintSidebar */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return watchSidebar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return paintSidebar; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch sidebar - * - * This function returns an observable that computes the visual parameters of - * the sidebar which depends on the vertical viewport offset, as well as the - * height of the main area. When the page is scrolled beyond the header, the - * sidebar is locked and fills the remaining space. - * - * @param el - Sidebar element - * @param options - Options - * - * @return Sidebar observable - */ -function watchSidebar(el, _a) { - var main$ = _a.main$, viewport$ = _a.viewport$; - /* Adjust for internal main area offset */ - var adjust$ = viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return parseFloat(getComputedStyle(el.parentElement) - .getPropertyValue("padding-top")); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Compute the sidebar's available height */ - var height$ = viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(adjust$, main$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), y = _b[0].offset.y, adjust = _b[1], _c = _b[2], offset = _c.offset, height = _c.height; - return (height - + Math.min(adjust, Math.max(0, y - offset)) - - adjust); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Compute whether the sidebar should be locked */ - var lock$ = viewport$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(adjust$, main$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), y = _b[0].offset.y, adjust = _b[1], offset = _b[2].offset; - return (y >= offset + adjust); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Combine into single observable */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([height$, lock$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), height = _b[0], lock = _b[1]; - return ({ height: height, lock: lock }); - })); -} -/* ------------------------------------------------------------------------- */ -/** - * Paint sidebar - * - * @param el - Sidebar element - * @param options - Options - * - * @return Operator function - */ -function paintSidebar(el, _a) { - var header$ = _a.header$; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_1__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(header$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _c = _b[0], height = _c.height, lock = _c.lock, offset = _b[1].height; - Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarHeight"])(el, height); - Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarLock"])(el, lock); - /* Set offset in locked state depending on header height */ - if (lock) - Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarOffset"])(el, offset); - else - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarOffset"])(el); - }), - /* Re-map to sidebar */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), sidebar = _b[0]; - return sidebar; - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["finalize"])(function () { - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarOffset"])(el); - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarHeight"])(el); - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarLock"])(el); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/navigation/index.ts": -/*!****************************************************************!*\ - !*** ./src/assets/javascripts/observables/navigation/index.ts ***! - \****************************************************************/ -/*! exports provided: watchNavigationLayer, paintNavigationLayer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layer */ "./src/assets/javascripts/observables/navigation/layer/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return _layer__WEBPACK_IMPORTED_MODULE_0__["watchNavigationLayer"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return _layer__WEBPACK_IMPORTED_MODULE_0__["paintNavigationLayer"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/navigation/layer/index.ts": -/*!**********************************************************************!*\ - !*** ./src/assets/javascripts/observables/navigation/layer/index.ts ***! - \**********************************************************************/ -/*! exports provided: watchNavigationLayer, paintNavigationLayer */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return watchNavigationLayer; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return paintNavigationLayer; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch navigation layer - * - * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus - * contained in the drawer, but as the navigational layers are nested, we can - * only add it to the topmost layer or extremely weird cropping will occur. - * This implementation keeps track of the previous and current layer. - * - * @param els - Navigation elements - * - * @return Navigation layer observable - */ -function watchNavigationLayer(els) { - var e_1, _a; - var table = new Map(); - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - var label = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElement"])("label", el); - if (typeof label !== "undefined") { - var input = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])("#" + label.htmlFor); - table.set(input, el); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - /* Determine topmost layer */ - var layer$ = rxjs__WEBPACK_IMPORTED_MODULE_2__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table.keys()).map(function (input) { return (Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEvent"])(input, "change")); }))).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { return Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-nav__list", table.get(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["findLast"])(function (_a) { - var checked = _a.checked; - return checked; - }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table.keys())))); })); - /* Return previous and next layer */ - return layer$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (next) { return ({ next: next }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["scan"])(function (_a, _b) { - var prev = _a.next; - var next = _b.next; - return ({ prev: prev, next: next }); - })); -} -/* ------------------------------------------------------------------------- */ -/** - * Paint navigation layer - * - * @param els - Navigation elements - * - * @return Operator function - */ -function paintNavigationLayer(els) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["pipe"])( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { - var prev = _a.prev; - if (prev) - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetOverflowScrolling"])(prev); - }), - /* Wait until transition has finished */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["delay"])(250), - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { - var next = _a.next; - Object(actions__WEBPACK_IMPORTED_MODULE_4__["setOverflowScrolling"])(next); - }), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["finalize"])(function () { - var e_2, _a; - try { - for (var els_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_2_1 = els_2.next(); !els_2_1.done; els_2_1 = els_2.next()) { - var el = els_2_1.value; - Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetOverflowScrolling"])(Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-nav__list", el)); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (els_2_1 && !els_2_1.done && (_a = els_2.return)) _a.call(els_2); - } - finally { if (e_2) throw e_2.error; } - } - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/search/index.ts": -/*!************************************************************!*\ - !*** ./src/assets/javascripts/observables/search/index.ts ***! - \************************************************************/ -/*! exports provided: watchSearchQuery, watchSearchReset, paintSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./query */ "./src/assets/javascripts/observables/search/query/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["watchSearchQuery"]; }); - -/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reset */ "./src/assets/javascripts/observables/search/reset/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return _reset__WEBPACK_IMPORTED_MODULE_1__["watchSearchReset"]; }); - -/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/observables/search/result/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return _result__WEBPACK_IMPORTED_MODULE_2__["paintSearchResult"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/search/query/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/observables/search/query/index.ts ***! - \******************************************************************/ -/*! exports provided: watchSearchQuery */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return watchSearchQuery; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Helper functions - * ------------------------------------------------------------------------- */ -/** - * Default transformation function - * - * Rogue control characters are filtered before handing the query to the - * search index, as `lunr` will throw otherwise. - * - * @param value - Query value - * - * @return Transformed query value - */ -function defaultTransform(value) { - return value - .replace(/(?:^|\s+)[*+-:^~]+(?=\s+|$)/g, "") - .trim() - .replace(/\s+|\b$/g, "* "); -} -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch search query - * - * Note that the focus event which triggers re-reading the current query value - * is delayed by `1ms` so the input's empty state is allowed to propagate. - * - * @param el - Search query element - * @param options - Options - * - * @return Search query observable - */ -function watchSearchQuery(el, _a) { - var transform = (_a === void 0 ? {} : _a).transform; - var fn = transform || defaultTransform; - /* Intercept keyboard events */ - var value$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "keyup"), Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "focus").pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["delay"])(1))) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return fn(el.value); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["startWith"])(fn(el.value)), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); - /* Intercept focus events */ - var focus$ = Object(_agent__WEBPACK_IMPORTED_MODULE_3__["watchElementFocus"])(el); - /* Combine into a single observable */ - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([value$, focus$]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), value = _b[0], focus = _b[1]; - return ({ value: value, focus: focus }); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/search/reset/index.ts": -/*!******************************************************************!*\ - !*** ./src/assets/javascripts/observables/search/reset/index.ts ***! - \******************************************************************/ -/*! exports provided: watchSearchReset */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return watchSearchReset; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Watch search reset - * - * @param el - Search reset element - * - * @return Search reset observable - */ -function watchSearchReset(el) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "click") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(undefined)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/search/result/index.ts": -/*!*******************************************************************!*\ - !*** ./src/assets/javascripts/observables/search/result/index.ts ***! - \*******************************************************************/ -/*! exports provided: paintSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return paintSearchResult; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); -/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Paint search results - * - * This function will perform a lazy rendering of the search results, depending - * on the vertical offset of the search result container. When the scroll offset - * reaches the bottom of the element, more results are fetched and rendered. - * - * @param el - Search result element - * @param options - Options - * - * @return Operator function - */ -function paintSearchResult(el, _a) { - var query$ = _a.query$, fetch$ = _a.fetch$; - var list = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-search-result__list", el); - var meta = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-search-result__meta", el); - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])( - /* Paint search result metadata */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(query$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), result = _b[0], query = _b[1]; - if (query.value) { - Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSearchResultMeta"])(meta, result.length); - } - else { - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultMeta"])(meta); - } - return result; - }), - /* Paint search result list */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (result) { return fetch$ - .pipe( - /* Defer repaint to next animation frame */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_1__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["scan"])(function (index) { - var container = el.parentElement; - while (index < result.length) { - Object(actions__WEBPACK_IMPORTED_MODULE_3__["addToSearchResultList"])(list, Object(templates__WEBPACK_IMPORTED_MODULE_4__["renderSearchResult"])(result[index++])); - if (container.scrollHeight - container.offsetHeight > 16) - break; - } - return index; - }, 0), - /* Re-map to search result */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["mapTo"])(result), - /* Reset on complete or error */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["finalize"])(function () { - Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultList"])(list); - })); })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/observables/toggle/index.ts": -/*!************************************************************!*\ - !*** ./src/assets/javascripts/observables/toggle/index.ts ***! - \************************************************************/ -/*! exports provided: setupToggles, useToggle, setToggle, watchToggle */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupToggles", function() { return setupToggles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useToggle", function() { return useToggle; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setToggle", function() { return setToggle; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchToggle", function() { return watchToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../agent */ "./src/assets/javascripts/observables/agent/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * Toggle map observable - */ -var toggles$; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup bindings to toggles with given names - * - * @param names - Toggle names - * @param options - Options - */ -function setupToggles(names, _a) { - var document$ = _a.document$; - toggles$ = document$ - .pipe( - /* Ignore document switches */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["take"])(1), - /* Build toggle map */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (document) { return names.reduce(function (toggles, name) { - var _a; - var el = Object(_agent__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-toggle=" + name + "]", document); - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, toggles), typeof el !== "undefined" ? (_a = {}, _a[name] = el, _a) : {}); - }, {}); }), - /* Convert to hot observable */ - Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); -} -/** - * Retrieve a toggle - * - * The returned observable will only re-emit if the element changed, i.e. if - * it was replaced from a document which was switched to. - * - * @param name - Toggle name - * - * @return Element observable - */ -function useToggle(name) { - return toggles$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (toggles) { return (typeof toggles[name] !== "undefined" - ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])(toggles[name]) - : rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); -} -/* ------------------------------------------------------------------------- */ -/** - * Set toggle - * - * Simulating a click event seems to be the most cross-browser compatible way - * of changing the value while also emitting a `change` event. Before, Material - * used `CustomEvent` to programmatically change the value of a toggle, but this - * is a much simpler and cleaner solution which doesn't require a polyfill. - * - * @param el - Toggle element - * @param value - Toggle value - */ -function setToggle(el, value) { - if (el.checked !== value) - el.click(); -} -/* ------------------------------------------------------------------------- */ -/** - * Watch toggle - * - * @param el - Toggle element - * - * @return Toggle observable - */ -function watchToggle(el) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "change") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return el.checked; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["startWith"])(el.checked)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/details/index.ts": -/*!*********************************************************!*\ - !*** ./src/assets/javascripts/patches/details/index.ts ***! - \*********************************************************/ -/*! exports provided: patchDetails */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchDetails", function() { return patchDetails; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Patch all `details` elements - * - * This function will ensure that all `details` tags are opened prior to - * printing, so the whole content of the page is included, and on anchor jumps. - * - * @param options - Options - */ -function patchDetails(_a) { - var document$ = _a.document$, hash$ = _a.hash$; - var els$ = document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElements"])("details"); })); - /* Open all details before printing */ - Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["merge"])(Object(observables__WEBPACK_IMPORTED_MODULE_4__["watchMedia"])("print").pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["filter"])(ramda__WEBPACK_IMPORTED_MODULE_1__["identity"])), /* Webkit */ Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEvent"])(window, "beforeprint") /* IE, FF */) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMapTo"])(els$)) - .subscribe(function (els) { - var e_1, _a; - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - el.setAttribute("open", ""); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - }); - /* Open parent details and fix anchor jump */ - hash$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (id) { return Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElement"])("[id=\"" + id + "\"]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["filter"])(function (el) { return typeof el !== "undefined"; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (el) { - var details = el.closest("details"); - if (details && !details.open) - details.setAttribute("open", ""); - })) - .subscribe(function (el) { return el.scrollIntoView(); }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/index.ts": -/*!*************************************************!*\ - !*** ./src/assets/javascripts/patches/index.ts ***! - \*************************************************/ -/*! exports provided: patchDetails, patchScripts, patchScrollfix, patchSource, patchTables */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _details__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./details */ "./src/assets/javascripts/patches/details/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchDetails", function() { return _details__WEBPACK_IMPORTED_MODULE_0__["patchDetails"]; }); - -/* harmony import */ var _script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./script */ "./src/assets/javascripts/patches/script/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchScripts", function() { return _script__WEBPACK_IMPORTED_MODULE_1__["patchScripts"]; }); - -/* harmony import */ var _scrollfix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollfix */ "./src/assets/javascripts/patches/scrollfix/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchScrollfix", function() { return _scrollfix__WEBPACK_IMPORTED_MODULE_2__["patchScrollfix"]; }); - -/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./source */ "./src/assets/javascripts/patches/source/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchSource", function() { return _source__WEBPACK_IMPORTED_MODULE_3__["patchSource"]; }); - -/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./table */ "./src/assets/javascripts/patches/table/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchTables", function() { return _table__WEBPACK_IMPORTED_MODULE_4__["patchTables"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/script/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/patches/script/index.ts ***! - \********************************************************/ -/*! exports provided: patchScripts */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchScripts", function() { return patchScripts; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Patch all `script` elements - * - * This function must be run after a document switch, which means the first - * emission must be ignored. - * - * @param options - Options - */ -function patchScripts(_a) { - var document$ = _a.document$; - var els$ = document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["skip"])(1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("container")), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), el = _b[1]; - return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("script", el); - })); - /* Evaluate all scripts via replacement */ - els$.subscribe(function (els) { - var e_1, _a; - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - if (el.src || /(^|\/javascript)$/i.test(el.type)) { - var script = document.createElement("script"); - var key = el.src ? "src" : "innerText"; - script[key] = el[key]; - el.replaceWith(script); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/scrollfix/index.ts": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/patches/scrollfix/index.ts ***! - \***********************************************************/ -/*! exports provided: patchScrollfix */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchScrollfix", function() { return patchScrollfix; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Helper functions - * ------------------------------------------------------------------------- */ -/** - * Check whether the given device is an Apple device - * - * @return Test result - */ -function isAppleDevice() { - return /(iPad|iPhone|iPod)/.test(navigator.userAgent); -} -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Patch all elements with `data-md-scrollfix` attributes - * - * This is a year-old patch which ensures that overflow scrolling works at the - * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon - * the start of a touch event. - * - * @see https://bit.ly/2SCtAOO - Original source - * - * @param options - Options - */ -function patchScrollfix(_a) { - var document$ = _a.document$; - var els$ = document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("[data-md-scrollfix]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); - /* Remove marker attribute, so we'll only add the fix once */ - els$.subscribe(function (els) { - var e_1, _a; - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - el.removeAttribute("data-md-scrollfix"); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - }); - /* Patch overflow scrolling on touch start */ - Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["iif"])(isAppleDevice, els$, rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (els) { return rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(els.map(function (el) { return (Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "touchstart") - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["mapTo"])(el))); }))); })) - .subscribe(function (el) { - var top = el.scrollTop; - /* We're at the top of the container */ - if (top === 0) { - el.scrollTop = 1; - /* We're at the bottom of the container */ - } - else if (top + el.offsetHeight === el.scrollHeight) { - el.scrollTop = top - 1; - } - }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/source/github/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/patches/source/github/index.ts ***! - \***************************************************************/ -/*! exports provided: fetchSourceFactsFromGitHub */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchSourceFactsFromGitHub", function() { return fetchSourceFactsFromGitHub; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Fetch GitHub source facts - * - * @param user - GitHub user - * @param repo - GitHub repository - * - * @return Source facts observable - */ -function fetchSourceFactsFromGitHub(user, repo) { - return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__["ajax"])({ - url: typeof repo !== "undefined" - ? "https://api.github.com/repos/" + user + "/" + repo - : "https://api.github.com/users/" + user, - responseType: "json" - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(function (_a) { - var status = _a.status; - return status === 200; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (data) { - /* GitHub repository */ - if (typeof repo !== "undefined") { - var stargazers_count = data.stargazers_count, forks_count = data.forks_count; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])([ - Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(stargazers_count || 0) + " Stars", - Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(forks_count || 0) + " Forks" - ]); - /* GitHub user/organization */ - } - else { - var public_repos = data.public_repos; - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])([ - Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(public_repos || 0) + " Repositories" - ]); - } - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/source/gitlab/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/patches/source/gitlab/index.ts ***! - \***************************************************************/ -/*! exports provided: fetchSourceFactsFromGitLab */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchSourceFactsFromGitLab", function() { return fetchSourceFactsFromGitLab; }); -/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Fetch GitLab source facts - * - * @param base - GitLab base - * @param project - GitLab project - * - * @return Source facts observable - */ -function fetchSourceFactsFromGitLab(base, project) { - return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_0__["ajax"])({ - url: "https://" + base + "/api/v4/projects/" + encodeURIComponent(project), - responseType: "json" - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { - var status = _a.status; - return status === 200; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { - var star_count = _a.star_count, forks_count = _a.forks_count; - return ([ - Object(utilities__WEBPACK_IMPORTED_MODULE_2__["round"])(star_count) + " Stars", - Object(utilities__WEBPACK_IMPORTED_MODULE_2__["round"])(forks_count) + " Forks" - ]); - })); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/source/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/patches/source/index.ts ***! - \********************************************************/ -/*! exports provided: patchSource */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchSource", function() { return patchSource; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* harmony import */ var _github__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./github */ "./src/assets/javascripts/patches/source/github/index.ts"); -/* harmony import */ var _gitlab__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./gitlab */ "./src/assets/javascripts/patches/source/gitlab/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - - - -/* ---------------------------------------------------------------------------- - * Helper functions - * ------------------------------------------------------------------------- */ -/** - * Fetch source facts - * - * @param url - Source repository URL - * - * @return Source facts observable - */ -function fetchSourceFacts(url) { - var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/(git(?:hub|lab))/i) || [], 1), type = _a[0]; - switch (type.toLowerCase()) { - /* GitHub repository */ - case "github": - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/^.+github\.com\/([^\/]+)\/?([^\/]+)/i), 3), user = _b[1], repo = _b[2]; - return Object(_github__WEBPACK_IMPORTED_MODULE_6__["fetchSourceFactsFromGitHub"])(user, repo); - /* GitLab repository */ - case "gitlab": - var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/^.+?([^\/]*gitlab[^\/]+)\/(.+)/i), 3), base = _c[1], project = _c[2]; - return Object(_gitlab__WEBPACK_IMPORTED_MODULE_7__["fetchSourceFactsFromGitLab"])(base, project); - /* Everything else */ - default: - return rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]; - } -} -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Patch elements containing repository information - * - * This function will retrieve the URL from the repository link and try to - * query data from integrated source code platforms like GitHub or GitLab. - * - * @param options - Options - */ -function patchSource(_a) { - var document$ = _a.document$; - document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElementOrThrow"])(".md-source[href]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (_a) { - var href = _a.href; - return (Object(utilities__WEBPACK_IMPORTED_MODULE_5__["cache"])("" + Object(utilities__WEBPACK_IMPORTED_MODULE_5__["hash"])(href), function () { return fetchSourceFacts(href); })); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["catchError"])(function () { return rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]; })) - .subscribe(function (facts) { - var e_1, _a; - try { - for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])(".md-source__repository")), _c = _b.next(); !_c.done; _c = _b.next()) { - var el = _c.value; - if (!el.hasAttribute("data-md-state")) { - el.setAttribute("data-md-state", "done"); - el.appendChild(Object(templates__WEBPACK_IMPORTED_MODULE_4__["renderSource"])(facts)); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/patches/table/index.ts": -/*!*******************************************************!*\ - !*** ./src/assets/javascripts/patches/table/index.ts ***! - \*******************************************************/ -/*! exports provided: patchTables */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchTables", function() { return patchTables; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Patch all `table` elements - * - * This function will re-render all tables by wrapping them to improve overflow - * scrolling on smaller screen sizes. - * - * @param options - Options - */ -function patchTables(_a) { - var document$ = _a.document$; - var sentinel = document.createElement("table"); - document$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElements"])("table:not([class])"); })) - .subscribe(function (els) { - var e_1, _a; - try { - for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { - var el = els_1_1.value; - el.replaceWith(sentinel); - sentinel.replaceWith(Object(templates__WEBPACK_IMPORTED_MODULE_3__["renderTable"])(el)); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); - } - finally { if (e_1) throw e_1.error; } - } - }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/templates/clipboard/index.tsx": -/*!**************************************************************!*\ - !*** ./src/assets/javascripts/templates/clipboard/index.tsx ***! - \**************************************************************/ -/*! exports provided: renderClipboard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderClipboard", function() { return renderClipboard; }); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * CSS classes - */ -var css = { - container: "md-clipboard md-icon" -}; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Render a 'copy-to-clipboard' button - * - * @param id - Unique identifier - * - * @return Element - */ -function renderClipboard(id) { - var path = __webpack_require__(/*! material-design-icons-svg/paths/content-copy.json */ "./node_modules/material-design-icons-svg/paths/content-copy.json"); - return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("button", { class: css.container, title: Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("clipboard.copy"), "data-clipboard-target": "#" + id + " code" }, - Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, - Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("path", { d: path })))); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/templates/index.ts": -/*!***************************************************!*\ - !*** ./src/assets/javascripts/templates/index.ts ***! - \***************************************************/ -/*! exports provided: renderClipboard, renderSearchResult, renderSource, renderTable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clipboard */ "./src/assets/javascripts/templates/clipboard/index.tsx"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderClipboard", function() { return _clipboard__WEBPACK_IMPORTED_MODULE_0__["renderClipboard"]; }); - -/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/templates/search/index.tsx"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_1__["renderSearchResult"]; }); - -/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./source */ "./src/assets/javascripts/templates/source/index.tsx"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderSource", function() { return _source__WEBPACK_IMPORTED_MODULE_2__["renderSource"]; }); - -/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./table */ "./src/assets/javascripts/templates/table/index.tsx"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderTable", function() { return _table__WEBPACK_IMPORTED_MODULE_3__["renderTable"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/templates/search/index.tsx": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/templates/search/index.tsx ***! - \***********************************************************/ -/*! exports provided: renderSearchResult */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderSearchResult", function() { return renderSearchResult; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * CSS classes - */ -var css = { - item: "md-search-result__item", - link: "md-search-result__link", - article: "md-search-result__article md-search-result__article--document", - section: "md-search-result__article", - title: "md-search-result__title", - teaser: "md-search-result__teaser" -}; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Render a search result - * - * @param result - Search result - * - * @return Element - */ -function renderSearchResult(_a) { - var article = _a.article, sections = _a.sections; - // create page with icon - var path = __webpack_require__(/*! material-design-icons-svg/paths/file-search-outline.json */ "./node_modules/material-design-icons-svg/paths/file-search-outline.json"); - var children = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([article], sections).map(function (document) { - var location = document.location, title = document.title, text = document.text; - return (Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("a", { href: location, class: css.link, tabIndex: -1 }, - Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("article", { class: "parent" in document ? css.section : css.article }, - !("parent" in document) - ? Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("div", { class: "md-search-result__icon md-icon" }, - Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, - Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("path", { d: path }))) - : null, - Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("h1", { class: css.title }, title), - text.length - ? Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("p", { class: css.teaser }, Object(utilities__WEBPACK_IMPORTED_MODULE_1__["truncate"])(text, 320)) - : undefined))); - }); - return (Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("li", { class: css.item }, children)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/templates/source/index.tsx": -/*!***********************************************************!*\ - !*** ./src/assets/javascripts/templates/source/index.tsx ***! - \***********************************************************/ -/*! exports provided: renderSource */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderSource", function() { return renderSource; }); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * CSS classes - */ -var css = { - facts: "md-source__facts", - fact: "md-source__fact" -}; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Render source facts - * - * @param facts - Source facts - * - * @return Element - */ -function renderSource(facts) { - var children = facts.map(function (fact) { return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("li", { class: css.fact }, fact)); }); - return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("ul", { class: css.facts }, children)); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/templates/table/index.tsx": -/*!**********************************************************!*\ - !*** ./src/assets/javascripts/templates/table/index.tsx ***! - \**********************************************************/ -/*! exports provided: renderTable */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderTable", function() { return renderTable; }); -/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * CSS classes - */ -var css = { - wrapper: "md-typeset__scrollwrap", - table: "md-typeset__table" -}; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Render a table inside a wrapper to improve scrolling on mobile - * - * @param table - Table element - * - * @return Element - */ -function renderTable(table) { - return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("div", { class: css.wrapper }, - Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("div", { class: css.table }, table))); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/utilities/config/index.ts": -/*!**********************************************************!*\ - !*** ./src/assets/javascripts/utilities/config/index.ts ***! - \**********************************************************/ -/*! exports provided: isConfig */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isConfig", function() { return isConfig; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Ensure that the given value is a valid configuration - * - * We could use `jsonschema` or any other schema validation framework, but that - * would just add more bloat to the bundle, so we'll keep it plain and simple. - * - * @param config - Configuration - * - * @return Test result - */ -function isConfig(config) { - return typeof config === "object" - && typeof config.base === "string" - && typeof config.worker === "object" - && typeof config.worker.search === "string"; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/utilities/index.ts": -/*!***************************************************!*\ - !*** ./src/assets/javascripts/utilities/index.ts ***! - \***************************************************/ -/*! exports provided: isConfig, h, cache, translate, truncate, round, hash */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ "./src/assets/javascripts/utilities/config/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isConfig", function() { return _config__WEBPACK_IMPORTED_MODULE_0__["isConfig"]; }); - -/* harmony import */ var _jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsx */ "./src/assets/javascripts/utilities/jsx/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "h", function() { return _jsx__WEBPACK_IMPORTED_MODULE_1__["h"]; }); - -/* harmony import */ var _rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rxjs */ "./src/assets/javascripts/utilities/rxjs/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cache", function() { return _rxjs__WEBPACK_IMPORTED_MODULE_2__["cache"]; }); - -/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./string */ "./src/assets/javascripts/utilities/string/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "translate", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["translate"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "truncate", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["truncate"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "round", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["round"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hash", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["hash"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/***/ }), - -/***/ "./src/assets/javascripts/utilities/jsx/index.ts": -/*!*******************************************************!*\ - !*** ./src/assets/javascripts/utilities/jsx/index.ts ***! - \*******************************************************/ -/*! exports provided: h */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return h; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Helper functions - * ------------------------------------------------------------------------- */ -/** - * Create an element - * - * @param tag - HTML or SVG tag - * - * @return Element - */ -function createElement(tag) { - switch (tag) { - /* SVG elements */ - case "svg": - case "path": - return document.createElementNS("http://www.w3.org/2000/svg", tag); - /* HTML elements */ - default: - return document.createElement(tag); - } -} -/** - * Set an attribute - * - * @param el - Element - * @param name - Attribute name - * @param value - Attribute value - */ -function setAttribute(el, name, value) { - switch (name) { - /* Attributes to be ignored */ - case "xmlns": - break; - /* Attributes of SVG elements */ - case "viewBox": - case "d": - if (typeof value !== "boolean") - el.setAttributeNS(null, name, value); - else if (value) - el.setAttributeNS(null, name, ""); - break; - /* Attributes of HTML elements */ - default: - if (typeof value !== "boolean") - el.setAttribute(name, value); - else if (value) - el.setAttribute(name, ""); - } -} -/** - * Append a child node to an element - * - * @param el - Element - * @param child - Child node(s) - */ -function appendChild(el, child) { - var e_1, _a; - /* Handle primitive types (including raw HTML) */ - if (typeof child === "string" || typeof child === "number") { - el.innerHTML += child.toString(); - /* Handle nodes */ - } - else if (child instanceof Node) { - el.appendChild(child); - /* Handle nested children */ - } - else if (Array.isArray(child)) { - try { - for (var child_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(child), child_1_1 = child_1.next(); !child_1_1.done; child_1_1 = child_1.next()) { - var node = child_1_1.value; - appendChild(el, node); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (child_1_1 && !child_1_1.done && (_a = child_1.return)) _a.call(child_1); - } - finally { if (e_1) throw e_1.error; } - } - } -} -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * JSX factory - * - * @param tag - HTML or SVG tag - * @param attributes - HTML attributes - * @param children - Child elements - * - * @return Element - */ -function h(tag, attributes) { - var e_2, _a, e_3, _b; - var children = []; - for (var _i = 2; _i < arguments.length; _i++) { - children[_i - 2] = arguments[_i]; - } - var el = createElement(tag); - /* Set attributes, if any */ - if (attributes) - try { - for (var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["keys"])(attributes)), _d = _c.next(); !_d.done; _d = _c.next()) { - var attr = _d.value; - setAttribute(el, attr, attributes[attr]); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_2) throw e_2.error; } - } - try { - /* Append child nodes */ - for (var children_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) { - var child = children_1_1.value; - appendChild(el, child); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (children_1_1 && !children_1_1.done && (_b = children_1.return)) _b.call(children_1); - } - finally { if (e_3) throw e_3.error; } - } - /* Return element */ - return el; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/utilities/rxjs/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/utilities/rxjs/index.ts ***! - \********************************************************/ -/*! exports provided: cache */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cache", function() { return cache; }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Cache the last value emitted by an observable in session storage - * - * If the key is not found in session storage, the factory is executed and the - * latest value emitted will automatically be persisted to sessions storage. - * Note that the values emitted by the returned observable must be serializable - * as `JSON`, or data will be lost. - * - * @template T - Value type - * - * @param key - Cache key - * @param factory - Observable factory - * - * @return Value observable - */ -function cache(key, factory) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { - var data = sessionStorage.getItem(key); - if (data) { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])(JSON.parse(data)); - /* Retrieve value from observable factory and write to storage */ - } - else { - var value$ = factory(); - value$.subscribe(function (value) { - try { - sessionStorage.setItem(key, JSON.stringify(value)); - } - catch (err) { - /* Uncritical, just swallow */ - } - }); - /* Return value */ - return value$; - } - }); -} - - -/***/ }), - -/***/ "./src/assets/javascripts/utilities/string/index.ts": -/*!**********************************************************!*\ - !*** ./src/assets/javascripts/utilities/string/index.ts ***! - \**********************************************************/ -/*! exports provided: translate, truncate, round, hash */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translate", function() { return translate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "truncate", function() { return truncate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "round", function() { return round; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hash", function() { return hash; }); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * Translations - */ -var lang; -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Translate the given key - * - * @param key - Key to be translated - * @param value - Value to be replaced - * - * @return Translation - */ -function translate(key, value) { - if (typeof lang === "undefined") { - var el = Object(observables__WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"])("#__lang"); - lang = JSON.parse(el.innerText); - } - if (typeof lang[key] === "undefined") { - throw new ReferenceError("Invalid translation: " + key); - } - return typeof value !== "undefined" - ? lang[key].replace("#", value) - : lang[key]; -} -/** - * Truncate a string after the given number of characters - * - * This is not a very reasonable approach, since the summaries kind of suck. - * It would be better to create something more intelligent, highlighting the - * search occurrences and making a better summary out of it, but this note was - * written three years ago, so who knows if we'll ever fix it. - * - * @param value - Value to be truncated - * @param n - Number of characters - * - * @return Truncated value - */ -function truncate(value, n) { - var i = n; - if (value.length > i) { - while (value[i] !== " " && --i > 0) - ; // tslint:disable-line - return value.substring(0, i) + "..."; - } - return value; -} -/** - * Round a number for display with source facts - * - * This is a reverse engineered version of GitHub's weird rounding algorithm - * for stars, forks and all other numbers. While all numbers below `1,000` are - * returned as-is, bigger numbers are converted to fixed numbers: - * - * - `1,049` => `1k` - * - `1,050` => `1.1k` - * - `1,949` => `1.9k` - * - `1,950` => `2k` - * - * @param value - Original value - * - * @return Rounded value - */ -function round(value) { - if (value > 999) { - var digits = +((value - 950) % 1000 > 99); - return ((value + 1) / 1000).toFixed(digits) + "k"; - } - else { - return value.toString(); - } -} -/** - * Simple hash function - * - * @see https://bit.ly/2wsVjJ4 - Original source - * - * @param value - Value to be hashed - * - * @return Hash as 32bit integer - */ -function hash(value) { - var h = 0; - for (var i = 0, len = value.length; i < len; i++) { - h = ((h << 5) - h) + value.charCodeAt(i); - h |= 0; // Convert to 32bit integer - } - return h; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/index.ts": -/*!*************************************************!*\ - !*** ./src/assets/javascripts/workers/index.ts ***! - \*************************************************/ -/*! exports provided: setupSearchWorker, SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/workers/search/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["setupSearchWorker"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["SearchMessageType"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchSetupMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchDumpMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchQueryMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchResultMessage"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/search/_/index.ts": -/*!**********************************************************!*\ - !*** ./src/assets/javascripts/workers/search/_/index.ts ***! - \**********************************************************/ -/*! exports provided: setupSearchWorker */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return setupSearchWorker; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); -/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); -/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); -/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../message */ "./src/assets/javascripts/workers/search/message/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Setup search web worker - * - * This function will create a web worker to setup and query the search index - * which is done using `lunr`. The index can be passed explicitly in order to - * enable hacks like _localsearch_ via search index embedding as JSON. If no - * index is given, this function will load it from the default location. - * - * @param url - Worker url - * @param options - Options - * - * @return Worker handler - */ -function setupSearchWorker(url, _a) { - var base = _a.base, index = _a.index, location$ = _a.location$; - var worker = new Worker(url); - /* Ensure stable base URL */ - var origin$ = location$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["take"])(1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { - var href = _a.href; - return new URL(base, href) - .toString() - .replace(/\/$/, ""); - })); - /* Create communication channels and resolve relative links */ - var tx$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__["Subject"](); - var rx$ = Object(observables__WEBPACK_IMPORTED_MODULE_4__["watchWorker"])(worker, { tx$: tx$ }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["withLatestFrom"])(origin$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { - var e_1, _b, e_2, _c; - var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), message = _d[0], origin = _d[1]; - if (Object(_message__WEBPACK_IMPORTED_MODULE_5__["isSearchResultMessage"])(message)) { - try { - for (var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(message.data), _f = _e.next(); !_f.done; _f = _e.next()) { - var _g = _f.value, article = _g.article, sections = _g.sections; - article.location = origin + "/" + article.location; - try { - for (var sections_1 = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(sections)), sections_1_1 = sections_1.next(); !sections_1_1.done; sections_1_1 = sections_1.next()) { - var section = sections_1_1.value; - section.location = origin + "/" + section.location; - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (sections_1_1 && !sections_1_1.done && (_c = sections_1.return)) _c.call(sections_1); - } - finally { if (e_2) throw e_2.error; } - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_f && !_f.done && (_b = _e.return)) _b.call(_e); - } - finally { if (e_1) throw e_1.error; } - } - } - return message; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["shareReplay"])(1)); - /* Fetch index if it wasn't passed explicitly */ - var index$ = typeof index !== "undefined" - ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["from"])(index) - : origin$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMap"])(function (origin) { return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_2__["ajax"])({ - url: origin + "/search/search_index.json", - responseType: "json", - withCredentials: true - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["pluck"])("response")); })); - /* Send index to worker */ - index$ - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (data) { return ({ - type: _message__WEBPACK_IMPORTED_MODULE_5__["SearchMessageType"].SETUP, - data: data - }); })) - .subscribe(tx$.next.bind(tx$)); - /* Return worker handler */ - return { tx$: tx$, rx$: rx$ }; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/search/index.ts": -/*!********************************************************!*\ - !*** ./src/assets/javascripts/workers/search/index.ts ***! - \********************************************************/ -/*! exports provided: setupSearchWorker, SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/workers/search/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setupSearchWorker"]; }); - -/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./message */ "./src/assets/javascripts/workers/search/message/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["SearchMessageType"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchSetupMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchDumpMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchQueryMessage"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchResultMessage"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/search/message/index.ts": -/*!****************************************************************!*\ - !*** ./src/assets/javascripts/workers/search/message/index.ts ***! - \****************************************************************/ -/*! exports provided: SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return SearchMessageType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return isSearchSetupMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return isSearchDumpMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return isSearchQueryMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return isSearchResultMessage; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ -/** - * Search message type - */ -var SearchMessageType; -(function (SearchMessageType) { - SearchMessageType[SearchMessageType["SETUP"] = 0] = "SETUP"; - SearchMessageType[SearchMessageType["DUMP"] = 1] = "DUMP"; - SearchMessageType[SearchMessageType["QUERY"] = 2] = "QUERY"; - SearchMessageType[SearchMessageType["RESULT"] = 3] = "RESULT"; /* Search results */ -})(SearchMessageType || (SearchMessageType = {})); -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Type guard for search setup messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchSetupMessage(message) { - return message.type === SearchMessageType.SETUP; -} -/** - * Type guard for search dump messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchDumpMessage(message) { - return message.type === SearchMessageType.DUMP; -} -/** - * Type guard for search query messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchQueryMessage(message) { - return message.type === SearchMessageType.QUERY; -} -/** - * Type guard for search result messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchResultMessage(message) { - return message.type === SearchMessageType.RESULT; -} - - -/***/ }), - -/***/ "./src/assets/stylesheets/main.scss": -/*!******************************************!*\ - !*** ./src/assets/stylesheets/main.scss ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/main.css"); - -/***/ }), - -/***/ "./src/assets/stylesheets/palette.scss": -/*!*********************************************!*\ - !*** ./src/assets/stylesheets/palette.scss ***! - \*********************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/palette.css"); - -/***/ }) - -/******/ }))); -//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/material/assets/javascripts/bundle.js.map b/material/assets/javascripts/bundle.js.map deleted file mode 100644 index aef77a9ee..000000000 --- a/material/assets/javascripts/bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/clipboard/dist/clipboard.js","webpack:///./node_modules/ramda/es/F.js","webpack:///./node_modules/ramda/es/T.js","webpack:///./node_modules/ramda/es/__.js","webpack:///./node_modules/ramda/es/add.js","webpack:///./node_modules/ramda/es/addIndex.js","webpack:///./node_modules/ramda/es/adjust.js","webpack:///./node_modules/ramda/es/all.js","webpack:///./node_modules/ramda/es/allPass.js","webpack:///./node_modules/ramda/es/always.js","webpack:///./node_modules/ramda/es/and.js","webpack:///./node_modules/ramda/es/any.js","webpack:///./node_modules/ramda/es/anyPass.js","webpack:///./node_modules/ramda/es/ap.js","webpack:///./node_modules/ramda/es/aperture.js","webpack:///./node_modules/ramda/es/append.js","webpack:///./node_modules/ramda/es/apply.js","webpack:///./node_modules/ramda/es/applySpec.js","webpack:///./node_modules/ramda/es/applyTo.js","webpack:///./node_modules/ramda/es/ascend.js","webpack:///./node_modules/ramda/es/assoc.js","webpack:///./node_modules/ramda/es/assocPath.js","webpack:///./node_modules/ramda/es/binary.js","webpack:///./node_modules/ramda/es/bind.js","webpack:///./node_modules/ramda/es/both.js","webpack:///./node_modules/ramda/es/call.js","webpack:///./node_modules/ramda/es/chain.js","webpack:///./node_modules/ramda/es/clamp.js","webpack:///./node_modules/ramda/es/clone.js","webpack:///./node_modules/ramda/es/comparator.js","webpack:///./node_modules/ramda/es/complement.js","webpack:///./node_modules/ramda/es/compose.js","webpack:///./node_modules/ramda/es/composeK.js","webpack:///./node_modules/ramda/es/composeP.js","webpack:///./node_modules/ramda/es/composeWith.js","webpack:///./node_modules/ramda/es/concat.js","webpack:///./node_modules/ramda/es/cond.js","webpack:///./node_modules/ramda/es/construct.js","webpack:///./node_modules/ramda/es/constructN.js","webpack:///./node_modules/ramda/es/contains.js","webpack:///./node_modules/ramda/es/converge.js","webpack:///./node_modules/ramda/es/countBy.js","webpack:///./node_modules/ramda/es/curry.js","webpack:///./node_modules/ramda/es/curryN.js","webpack:///./node_modules/ramda/es/dec.js","webpack:///./node_modules/ramda/es/defaultTo.js","webpack:///./node_modules/ramda/es/descend.js","webpack:///./node_modules/ramda/es/difference.js","webpack:///./node_modules/ramda/es/differenceWith.js","webpack:///./node_modules/ramda/es/dissoc.js","webpack:///./node_modules/ramda/es/dissocPath.js","webpack:///./node_modules/ramda/es/divide.js","webpack:///./node_modules/ramda/es/drop.js","webpack:///./node_modules/ramda/es/dropLast.js","webpack:///./node_modules/ramda/es/dropLastWhile.js","webpack:///./node_modules/ramda/es/dropRepeats.js","webpack:///./node_modules/ramda/es/dropRepeatsWith.js","webpack:///./node_modules/ramda/es/dropWhile.js","webpack:///./node_modules/ramda/es/either.js","webpack:///./node_modules/ramda/es/empty.js","webpack:///./node_modules/ramda/es/endsWith.js","webpack:///./node_modules/ramda/es/eqBy.js","webpack:///./node_modules/ramda/es/eqProps.js","webpack:///./node_modules/ramda/es/equals.js","webpack:///./node_modules/ramda/es/evolve.js","webpack:///./node_modules/ramda/es/filter.js","webpack:///./node_modules/ramda/es/find.js","webpack:///./node_modules/ramda/es/findIndex.js","webpack:///./node_modules/ramda/es/findLast.js","webpack:///./node_modules/ramda/es/findLastIndex.js","webpack:///./node_modules/ramda/es/flatten.js","webpack:///./node_modules/ramda/es/flip.js","webpack:///./node_modules/ramda/es/forEach.js","webpack:///./node_modules/ramda/es/forEachObjIndexed.js","webpack:///./node_modules/ramda/es/fromPairs.js","webpack:///./node_modules/ramda/es/groupBy.js","webpack:///./node_modules/ramda/es/groupWith.js","webpack:///./node_modules/ramda/es/gt.js","webpack:///./node_modules/ramda/es/gte.js","webpack:///./node_modules/ramda/es/has.js","webpack:///./node_modules/ramda/es/hasIn.js","webpack:///./node_modules/ramda/es/hasPath.js","webpack:///./node_modules/ramda/es/head.js","webpack:///./node_modules/ramda/es/identical.js","webpack:///./node_modules/ramda/es/identity.js","webpack:///./node_modules/ramda/es/ifElse.js","webpack:///./node_modules/ramda/es/inc.js","webpack:///./node_modules/ramda/es/includes.js","webpack:///./node_modules/ramda/es/index.js","webpack:///./node_modules/ramda/es/indexBy.js","webpack:///./node_modules/ramda/es/indexOf.js","webpack:///./node_modules/ramda/es/init.js","webpack:///./node_modules/ramda/es/innerJoin.js","webpack:///./node_modules/ramda/es/insert.js","webpack:///./node_modules/ramda/es/insertAll.js","webpack:///./node_modules/ramda/es/internal/_Set.js","webpack:///./node_modules/ramda/es/internal/_aperture.js","webpack:///./node_modules/ramda/es/internal/_arity.js","webpack:///./node_modules/ramda/es/internal/_arrayFromIterator.js","webpack:///./node_modules/ramda/es/internal/_assertPromise.js","webpack:///./node_modules/ramda/es/internal/_checkForMethod.js","webpack:///./node_modules/ramda/es/internal/_clone.js","webpack:///./node_modules/ramda/es/internal/_cloneRegExp.js","webpack:///./node_modules/ramda/es/internal/_complement.js","webpack:///./node_modules/ramda/es/internal/_concat.js","webpack:///./node_modules/ramda/es/internal/_createPartialApplicator.js","webpack:///./node_modules/ramda/es/internal/_curry1.js","webpack:///./node_modules/ramda/es/internal/_curry2.js","webpack:///./node_modules/ramda/es/internal/_curry3.js","webpack:///./node_modules/ramda/es/internal/_curryN.js","webpack:///./node_modules/ramda/es/internal/_dispatchable.js","webpack:///./node_modules/ramda/es/internal/_dropLast.js","webpack:///./node_modules/ramda/es/internal/_dropLastWhile.js","webpack:///./node_modules/ramda/es/internal/_equals.js","webpack:///./node_modules/ramda/es/internal/_filter.js","webpack:///./node_modules/ramda/es/internal/_flatCat.js","webpack:///./node_modules/ramda/es/internal/_forceReduced.js","webpack:///./node_modules/ramda/es/internal/_functionName.js","webpack:///./node_modules/ramda/es/internal/_has.js","webpack:///./node_modules/ramda/es/internal/_identity.js","webpack:///./node_modules/ramda/es/internal/_includes.js","webpack:///./node_modules/ramda/es/internal/_includesWith.js","webpack:///./node_modules/ramda/es/internal/_indexOf.js","webpack:///./node_modules/ramda/es/internal/_isArguments.js","webpack:///./node_modules/ramda/es/internal/_isArray.js","webpack:///./node_modules/ramda/es/internal/_isArrayLike.js","webpack:///./node_modules/ramda/es/internal/_isFunction.js","webpack:///./node_modules/ramda/es/internal/_isInteger.js","webpack:///./node_modules/ramda/es/internal/_isNumber.js","webpack:///./node_modules/ramda/es/internal/_isObject.js","webpack:///./node_modules/ramda/es/internal/_isPlaceholder.js","webpack:///./node_modules/ramda/es/internal/_isRegExp.js","webpack:///./node_modules/ramda/es/internal/_isString.js","webpack:///./node_modules/ramda/es/internal/_isTransformer.js","webpack:///./node_modules/ramda/es/internal/_makeFlat.js","webpack:///./node_modules/ramda/es/internal/_map.js","webpack:///./node_modules/ramda/es/internal/_objectAssign.js","webpack:///./node_modules/ramda/es/internal/_objectIs.js","webpack:///./node_modules/ramda/es/internal/_of.js","webpack:///./node_modules/ramda/es/internal/_pipe.js","webpack:///./node_modules/ramda/es/internal/_pipeP.js","webpack:///./node_modules/ramda/es/internal/_quote.js","webpack:///./node_modules/ramda/es/internal/_reduce.js","webpack:///./node_modules/ramda/es/internal/_reduced.js","webpack:///./node_modules/ramda/es/internal/_stepCat.js","webpack:///./node_modules/ramda/es/internal/_toISOString.js","webpack:///./node_modules/ramda/es/internal/_toString.js","webpack:///./node_modules/ramda/es/internal/_xall.js","webpack:///./node_modules/ramda/es/internal/_xany.js","webpack:///./node_modules/ramda/es/internal/_xaperture.js","webpack:///./node_modules/ramda/es/internal/_xchain.js","webpack:///./node_modules/ramda/es/internal/_xdrop.js","webpack:///./node_modules/ramda/es/internal/_xdropLast.js","webpack:///./node_modules/ramda/es/internal/_xdropLastWhile.js","webpack:///./node_modules/ramda/es/internal/_xdropRepeatsWith.js","webpack:///./node_modules/ramda/es/internal/_xdropWhile.js","webpack:///./node_modules/ramda/es/internal/_xfBase.js","webpack:///./node_modules/ramda/es/internal/_xfilter.js","webpack:///./node_modules/ramda/es/internal/_xfind.js","webpack:///./node_modules/ramda/es/internal/_xfindIndex.js","webpack:///./node_modules/ramda/es/internal/_xfindLast.js","webpack:///./node_modules/ramda/es/internal/_xfindLastIndex.js","webpack:///./node_modules/ramda/es/internal/_xmap.js","webpack:///./node_modules/ramda/es/internal/_xreduceBy.js","webpack:///./node_modules/ramda/es/internal/_xtake.js","webpack:///./node_modules/ramda/es/internal/_xtakeWhile.js","webpack:///./node_modules/ramda/es/internal/_xtap.js","webpack:///./node_modules/ramda/es/internal/_xwrap.js","webpack:///./node_modules/ramda/es/intersection.js","webpack:///./node_modules/ramda/es/intersperse.js","webpack:///./node_modules/ramda/es/into.js","webpack:///./node_modules/ramda/es/invert.js","webpack:///./node_modules/ramda/es/invertObj.js","webpack:///./node_modules/ramda/es/invoker.js","webpack:///./node_modules/ramda/es/is.js","webpack:///./node_modules/ramda/es/isEmpty.js","webpack:///./node_modules/ramda/es/isNil.js","webpack:///./node_modules/ramda/es/join.js","webpack:///./node_modules/ramda/es/juxt.js","webpack:///./node_modules/ramda/es/keys.js","webpack:///./node_modules/ramda/es/keysIn.js","webpack:///./node_modules/ramda/es/last.js","webpack:///./node_modules/ramda/es/lastIndexOf.js","webpack:///./node_modules/ramda/es/length.js","webpack:///./node_modules/ramda/es/lens.js","webpack:///./node_modules/ramda/es/lensIndex.js","webpack:///./node_modules/ramda/es/lensPath.js","webpack:///./node_modules/ramda/es/lensProp.js","webpack:///./node_modules/ramda/es/lift.js","webpack:///./node_modules/ramda/es/liftN.js","webpack:///./node_modules/ramda/es/lt.js","webpack:///./node_modules/ramda/es/lte.js","webpack:///./node_modules/ramda/es/map.js","webpack:///./node_modules/ramda/es/mapAccum.js","webpack:///./node_modules/ramda/es/mapAccumRight.js","webpack:///./node_modules/ramda/es/mapObjIndexed.js","webpack:///./node_modules/ramda/es/match.js","webpack:///./node_modules/ramda/es/mathMod.js","webpack:///./node_modules/ramda/es/max.js","webpack:///./node_modules/ramda/es/maxBy.js","webpack:///./node_modules/ramda/es/mean.js","webpack:///./node_modules/ramda/es/median.js","webpack:///./node_modules/ramda/es/memoizeWith.js","webpack:///./node_modules/ramda/es/merge.js","webpack:///./node_modules/ramda/es/mergeAll.js","webpack:///./node_modules/ramda/es/mergeDeepLeft.js","webpack:///./node_modules/ramda/es/mergeDeepRight.js","webpack:///./node_modules/ramda/es/mergeDeepWith.js","webpack:///./node_modules/ramda/es/mergeDeepWithKey.js","webpack:///./node_modules/ramda/es/mergeLeft.js","webpack:///./node_modules/ramda/es/mergeRight.js","webpack:///./node_modules/ramda/es/mergeWith.js","webpack:///./node_modules/ramda/es/mergeWithKey.js","webpack:///./node_modules/ramda/es/min.js","webpack:///./node_modules/ramda/es/minBy.js","webpack:///./node_modules/ramda/es/modulo.js","webpack:///./node_modules/ramda/es/move.js","webpack:///./node_modules/ramda/es/multiply.js","webpack:///./node_modules/ramda/es/nAry.js","webpack:///./node_modules/ramda/es/negate.js","webpack:///./node_modules/ramda/es/none.js","webpack:///./node_modules/ramda/es/not.js","webpack:///./node_modules/ramda/es/nth.js","webpack:///./node_modules/ramda/es/nthArg.js","webpack:///./node_modules/ramda/es/o.js","webpack:///./node_modules/ramda/es/objOf.js","webpack:///./node_modules/ramda/es/of.js","webpack:///./node_modules/ramda/es/omit.js","webpack:///./node_modules/ramda/es/once.js","webpack:///./node_modules/ramda/es/or.js","webpack:///./node_modules/ramda/es/otherwise.js","webpack:///./node_modules/ramda/es/over.js","webpack:///./node_modules/ramda/es/pair.js","webpack:///./node_modules/ramda/es/partial.js","webpack:///./node_modules/ramda/es/partialRight.js","webpack:///./node_modules/ramda/es/partition.js","webpack:///./node_modules/ramda/es/path.js","webpack:///./node_modules/ramda/es/pathEq.js","webpack:///./node_modules/ramda/es/pathOr.js","webpack:///./node_modules/ramda/es/pathSatisfies.js","webpack:///./node_modules/ramda/es/pick.js","webpack:///./node_modules/ramda/es/pickAll.js","webpack:///./node_modules/ramda/es/pickBy.js","webpack:///./node_modules/ramda/es/pipe.js","webpack:///./node_modules/ramda/es/pipeK.js","webpack:///./node_modules/ramda/es/pipeP.js","webpack:///./node_modules/ramda/es/pipeWith.js","webpack:///./node_modules/ramda/es/pluck.js","webpack:///./node_modules/ramda/es/prepend.js","webpack:///./node_modules/ramda/es/product.js","webpack:///./node_modules/ramda/es/project.js","webpack:///./node_modules/ramda/es/prop.js","webpack:///./node_modules/ramda/es/propEq.js","webpack:///./node_modules/ramda/es/propIs.js","webpack:///./node_modules/ramda/es/propOr.js","webpack:///./node_modules/ramda/es/propSatisfies.js","webpack:///./node_modules/ramda/es/props.js","webpack:///./node_modules/ramda/es/range.js","webpack:///./node_modules/ramda/es/reduce.js","webpack:///./node_modules/ramda/es/reduceBy.js","webpack:///./node_modules/ramda/es/reduceRight.js","webpack:///./node_modules/ramda/es/reduceWhile.js","webpack:///./node_modules/ramda/es/reduced.js","webpack:///./node_modules/ramda/es/reject.js","webpack:///./node_modules/ramda/es/remove.js","webpack:///./node_modules/ramda/es/repeat.js","webpack:///./node_modules/ramda/es/replace.js","webpack:///./node_modules/ramda/es/reverse.js","webpack:///./node_modules/ramda/es/scan.js","webpack:///./node_modules/ramda/es/sequence.js","webpack:///./node_modules/ramda/es/set.js","webpack:///./node_modules/ramda/es/slice.js","webpack:///./node_modules/ramda/es/sort.js","webpack:///./node_modules/ramda/es/sortBy.js","webpack:///./node_modules/ramda/es/sortWith.js","webpack:///./node_modules/ramda/es/split.js","webpack:///./node_modules/ramda/es/splitAt.js","webpack:///./node_modules/ramda/es/splitEvery.js","webpack:///./node_modules/ramda/es/splitWhen.js","webpack:///./node_modules/ramda/es/startsWith.js","webpack:///./node_modules/ramda/es/subtract.js","webpack:///./node_modules/ramda/es/sum.js","webpack:///./node_modules/ramda/es/symmetricDifference.js","webpack:///./node_modules/ramda/es/symmetricDifferenceWith.js","webpack:///./node_modules/ramda/es/tail.js","webpack:///./node_modules/ramda/es/take.js","webpack:///./node_modules/ramda/es/takeLast.js","webpack:///./node_modules/ramda/es/takeLastWhile.js","webpack:///./node_modules/ramda/es/takeWhile.js","webpack:///./node_modules/ramda/es/tap.js","webpack:///./node_modules/ramda/es/test.js","webpack:///./node_modules/ramda/es/then.js","webpack:///./node_modules/ramda/es/thunkify.js","webpack:///./node_modules/ramda/es/times.js","webpack:///./node_modules/ramda/es/toLower.js","webpack:///./node_modules/ramda/es/toPairs.js","webpack:///./node_modules/ramda/es/toPairsIn.js","webpack:///./node_modules/ramda/es/toString.js","webpack:///./node_modules/ramda/es/toUpper.js","webpack:///./node_modules/ramda/es/transduce.js","webpack:///./node_modules/ramda/es/transpose.js","webpack:///./node_modules/ramda/es/traverse.js","webpack:///./node_modules/ramda/es/trim.js","webpack:///./node_modules/ramda/es/tryCatch.js","webpack:///./node_modules/ramda/es/type.js","webpack:///./node_modules/ramda/es/unapply.js","webpack:///./node_modules/ramda/es/unary.js","webpack:///./node_modules/ramda/es/uncurryN.js","webpack:///./node_modules/ramda/es/unfold.js","webpack:///./node_modules/ramda/es/union.js","webpack:///./node_modules/ramda/es/unionWith.js","webpack:///./node_modules/ramda/es/uniq.js","webpack:///./node_modules/ramda/es/uniqBy.js","webpack:///./node_modules/ramda/es/uniqWith.js","webpack:///./node_modules/ramda/es/unless.js","webpack:///./node_modules/ramda/es/unnest.js","webpack:///./node_modules/ramda/es/until.js","webpack:///./node_modules/ramda/es/update.js","webpack:///./node_modules/ramda/es/useWith.js","webpack:///./node_modules/ramda/es/values.js","webpack:///./node_modules/ramda/es/valuesIn.js","webpack:///./node_modules/ramda/es/view.js","webpack:///./node_modules/ramda/es/when.js","webpack:///./node_modules/ramda/es/where.js","webpack:///./node_modules/ramda/es/whereEq.js","webpack:///./node_modules/ramda/es/without.js","webpack:///./node_modules/ramda/es/xprod.js","webpack:///./node_modules/ramda/es/zip.js","webpack:///./node_modules/ramda/es/zipObj.js","webpack:///./node_modules/ramda/es/zipWith.js","webpack:///./node_modules/rxjs/_esm5/ajax/index.js","webpack:///./node_modules/rxjs/_esm5/index.js","webpack:///./node_modules/rxjs/_esm5/internal/AsyncSubject.js","webpack:///./node_modules/rxjs/_esm5/internal/BehaviorSubject.js","webpack:///./node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/Notification.js","webpack:///./node_modules/rxjs/_esm5/internal/Observable.js","webpack:///./node_modules/rxjs/_esm5/internal/Observer.js","webpack:///./node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/ReplaySubject.js","webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/Subject.js","webpack:///./node_modules/rxjs/_esm5/internal/SubjectSubscription.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///./node_modules/rxjs/_esm5/internal/config.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindCallback.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/combineLatest.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/concat.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/defer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/empty.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/forkJoin.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/from.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromArray.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEvent.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/generate.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/iif.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/interval.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/merge.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/never.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/of.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/pairs.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/partition.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/race.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/range.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/throwError.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/timer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/using.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/zip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/audit.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/auditTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/buffer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/catchError.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/combineAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/combineLatest.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concat.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/count.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/debounce.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/debounceTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/delay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/delayWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/dematerialize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinct.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/elementAt.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/endWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/every.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/exhaust.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/expand.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/filter.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/finalize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/find.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/findIndex.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/first.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/groupBy.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/isEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/last.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/materialize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/max.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/merge.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeScan.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/min.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/multicast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/observeOn.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/pairwise.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/partition.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/pluck.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publish.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishReplay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/race.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/reduce.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/refCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/repeat.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/retry.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/retryWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sample.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sampleTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/scan.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/share.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/shareReplay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/single.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipUntil.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipWhile.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/startWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/take.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeUntil.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeWhile.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/tap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throttle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throttleTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeInterval.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeout.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timestamp.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/toArray.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/window.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowToggle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/zip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/zipAll.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/asap.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/queue.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/EmptyError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/Immediate.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/TimeoutError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/identity.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isDate.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/util/noop.js","webpack:///./node_modules/rxjs/_esm5/internal/util/not.js","webpack:///./node_modules/rxjs/_esm5/internal/util/pipe.js","webpack:///./node_modules/rxjs/_esm5/internal/util/root.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack:///./node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack:///./node_modules/rxjs/_esm5/operators/index.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/assets/javascripts/actions/anchor/index.ts","webpack:///./src/assets/javascripts/actions/header/index.ts","webpack:///./src/assets/javascripts/actions/header/shadow/index.ts","webpack:///./src/assets/javascripts/actions/header/title/index.ts","webpack:///./src/assets/javascripts/actions/index.ts","webpack:///./src/assets/javascripts/actions/main/hideable/index.ts","webpack:///./src/assets/javascripts/actions/main/index.ts","webpack:///./src/assets/javascripts/actions/main/scrollable/index.ts","webpack:///./src/assets/javascripts/actions/main/sidebar/index.ts","webpack:///./src/assets/javascripts/actions/search/index.ts","webpack:///./src/assets/javascripts/actions/search/result/index.ts","webpack:///./src/assets/javascripts/components/_/index.ts","webpack:///./src/assets/javascripts/components/header/_/index.ts","webpack:///./src/assets/javascripts/components/header/index.ts","webpack:///./src/assets/javascripts/components/header/title/index.ts","webpack:///./src/assets/javascripts/components/hero/index.ts","webpack:///./src/assets/javascripts/components/index.ts","webpack:///./src/assets/javascripts/components/main/index.ts","webpack:///./src/assets/javascripts/components/navigation/index.ts","webpack:///./src/assets/javascripts/components/search/_/index.ts","webpack:///./src/assets/javascripts/components/search/index.ts","webpack:///./src/assets/javascripts/components/search/query/index.ts","webpack:///./src/assets/javascripts/components/search/reset/index.ts","webpack:///./src/assets/javascripts/components/search/result/index.ts","webpack:///./src/assets/javascripts/components/tabs/index.ts","webpack:///./src/assets/javascripts/components/toc/index.ts","webpack:///./src/assets/javascripts/index.ts","webpack:///./src/assets/javascripts/integrations/clipboard/index.ts","webpack:///./src/assets/javascripts/integrations/dialog/index.ts","webpack:///./src/assets/javascripts/integrations/keyboard/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/switch/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/focus/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/select/index.ts","webpack:///./src/assets/javascripts/observables/agent/index.ts","webpack:///./src/assets/javascripts/observables/agent/keyboard/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/hash/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/index.ts","webpack:///./src/assets/javascripts/observables/agent/media/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/size/index.ts","webpack:///./src/assets/javascripts/observables/agent/worker/index.ts","webpack:///./src/assets/javascripts/observables/anchor/index.ts","webpack:///./src/assets/javascripts/observables/header/_/index.ts","webpack:///./src/assets/javascripts/observables/header/index.ts","webpack:///./src/assets/javascripts/observables/header/shadow/index.ts","webpack:///./src/assets/javascripts/observables/header/title/index.ts","webpack:///./src/assets/javascripts/observables/index.ts","webpack:///./src/assets/javascripts/observables/main/_/index.ts","webpack:///./src/assets/javascripts/observables/main/hideable/index.ts","webpack:///./src/assets/javascripts/observables/main/index.ts","webpack:///./src/assets/javascripts/observables/main/sidebar/index.ts","webpack:///./src/assets/javascripts/observables/navigation/index.ts","webpack:///./src/assets/javascripts/observables/navigation/layer/index.ts","webpack:///./src/assets/javascripts/observables/search/index.ts","webpack:///./src/assets/javascripts/observables/search/query/index.ts","webpack:///./src/assets/javascripts/observables/search/reset/index.ts","webpack:///./src/assets/javascripts/observables/search/result/index.ts","webpack:///./src/assets/javascripts/observables/toggle/index.ts","webpack:///./src/assets/javascripts/patches/details/index.ts","webpack:///./src/assets/javascripts/patches/index.ts","webpack:///./src/assets/javascripts/patches/script/index.ts","webpack:///./src/assets/javascripts/patches/scrollfix/index.ts","webpack:///./src/assets/javascripts/patches/source/github/index.ts","webpack:///./src/assets/javascripts/patches/source/gitlab/index.ts","webpack:///./src/assets/javascripts/patches/source/index.ts","webpack:///./src/assets/javascripts/patches/table/index.ts","webpack:///./src/assets/javascripts/templates/clipboard/index.tsx","webpack:///./src/assets/javascripts/templates/index.ts","webpack:///./src/assets/javascripts/templates/search/index.tsx","webpack:///./src/assets/javascripts/templates/source/index.tsx","webpack:///./src/assets/javascripts/templates/table/index.tsx","webpack:///./src/assets/javascripts/utilities/config/index.ts","webpack:///./src/assets/javascripts/utilities/index.ts","webpack:///./src/assets/javascripts/utilities/jsx/index.ts","webpack:///./src/assets/javascripts/utilities/rxjs/index.ts","webpack:///./src/assets/javascripts/utilities/string/index.ts","webpack:///./src/assets/javascripts/workers/index.ts","webpack:///./src/assets/javascripts/workers/search/_/index.ts","webpack:///./src/assets/javascripts/workers/search/index.ts","webpack:///./src/assets/javascripts/workers/search/message/index.ts","webpack:///./src/assets/stylesheets/main.scss","webpack:///./src/assets/stylesheets/palette.scss"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAK4B;AAClC,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC;AAClF,wHAAwH,mBAAmB,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2CAA2C;AAC1D,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,2CAA2C;AAC9D;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,MAAM;AACzB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA,KAAK;AACL;;;AAGA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA,CAAC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/8BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACe,gEAAC,E;;;;;;;;;;;;;;;AClBhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACe,gEAAC,E;;;;;;;;;;;;ACpBhB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK,kBAAkB,KAAK;AAC9D,uBAAuB;AACvB;AACe,gEAAC,mCAAmC,E;;;;;;;;;;;;AC3BnD;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtBlB;AAAA;AAAA;AAAA;AAA4C;AACA;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA,sCAAsC,mEAAO;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC1CvB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,gBAAgB;AAC3B;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,sDAAsD;AACtD;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc,mEAAO;AACrB;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACtCrB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,qCAAqC;AACrC;AACA,uBAAuB,mEAAO,eAAe,yEAAa,UAAU,yDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB,EAAE;AACjD,yBAAyB,sBAAsB,EAAE;AACjD;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC5CtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,SAAS;AACrB;AACA;AACA;AACA,YAAY;AACZ;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAA4C;;AAE5C;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY,IAAI;AAChB;AACA;AACA;AACA,0BAA0B;AAC1B,2BAA2B;AAC3B,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACxBlB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA,uBAAuB,mEAAO,eAAe,yEAAa,UAAU,yDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACvClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB,EAAE;AAC7C,qBAAqB,qBAAqB,EAAE;AAC5C,qBAAqB,qBAAqB,EAAE;AAC5C;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7CtB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACA;AACA;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AA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4C;AACQ;AACzB;AACE;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd;AACA,kDAAkD;AAClD,0CAA0C;AAC1C;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uEAAW;AACpB;AACA,GAAG,GAAG,wDAAI,CAAC,+CAAG;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACzCnB;AAAA;AAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oCAAoC,EAAE;AACtD;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrCnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACR;AACJ;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,sCAAsC;AACtC;AACA,6CAA6C;AAC7C;AACA,yBAAyB,mEAAO,eAAe,yEAAa,kCAAkC,2DAAO;AACrG;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAS,QAAQ,uDAAG;AAC7B,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACxCpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC5BpB;AAAA;AAAA;AAA0C;AACE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,KAAK;AAChB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA,2BAA2B,IAAI,IAAI;AACnC;AACA,iCAAiC;AACjC,uCAAuC;AACvC;AACA,yBAAyB,mEAAO;AAChC,8EAA8E,kEAAM;AACpF,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC3BpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA;AACA,iBAAiB,2BAA2B,EAAE,wBAAwB,GAAG,yBAAyB;AAClG;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC9BzB;AAAA;AAAA;AAA6B;AACF;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB;AACpB,uBAAuB;AACvB,iBAAiB;AACjB,oBAAoB;AACpB;AACA,8BAA8B,wDAAI,CAAC,+CAAG;AACvB,yEAAU,E;;;;;;;;;;;;AC1BzB;AAAA;AAAA;AAAA;AAA6B;AACM;;AAEnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,gDAAI,aAAa,2DAAO;AACjC,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACI;AACR;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,WAAW,eAAe,EAAE;AAC3D,wBAAwB,EAAE;AAC1B;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAO,CAAC,mDAAO,aAAa,uDAAG,CAAC,iDAAK;AAC9C,C;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAA+B;AACI;;AAEnC;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,iDAAK,aAAa,2DAAO;AAClC,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAA4C;AACP;AACF;;AAEnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D,qDAAqD;AACrD;AACA;AACA;AACA,+BAA+B,mEAAO;AACtC,SAAS,oDAAQ,kBAAkB,2DAAO;AAC1C,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AC7B1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACE;AACM;AACJ;AACX;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,YAAY,aAAa;AACzB;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC,yBAAyB;AACzB;AACA,0BAA0B,mEAAO;AACjC,MAAM,oEAAQ;AACd,QAAQ,oEAAQ;AAChB;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA,MAAM,qEAAS;AACf,QAAQ,qEAAS;AACjB;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA,sBAAsB,4DAAQ;AAC9B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACvDrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACjB;AACA;AACM;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,eAAe;AACf,gBAAgB;AAChB;AACA,wBAAwB,mEAAO;AAC/B,cAAc,0DAAM,CAAC,+CAAG,KAAK,uDAAG;AAChC;AACA,GAAG;AACH,SAAS,kEAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC/CnB;AAAA;AAAA;AAA4C;AACH;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE,YAAY,EAAE;AAC/B,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,uCAAuC;AAC/E;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,6BAA6B,mEAAO;AACpC,SAAS,8DAAU;AACnB,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACtCxB;AAAA;AAAA;AAAA;AAA4C;AACb;AACF;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,EAAE,YAAY,EAAE;AACzC,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK,CAAC,wDAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACzEzB;AAAA;AAAA;AAAgD;AACJ;;AAE5C;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC,oBAAoB,eAAe,IAAI,eAAe,GAAG;AACzD,iCAAiC;AACjC,mCAAmC;AACnC;AACA,4BAA4B,mEAAO,CAAC,6DAAS;AAC9B,uEAAQ,E;;;;;;;;;;;;AC3BvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACN;AACL;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA,gCAAgC,gEAAI;AACpC;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5CvB;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA,2BAA2B,4DAAQ;AACnC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7BtB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB,mEAAO;AAChC,SAAS,0DAAM;AACf,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/CpB;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACA;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,mEAAO;AACjC;AACA,WAAW,mEAAO;AAClB;AACA,SAAS,kEAAM,SAAS,mEAAO;AAC/B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACrDrB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kBAAkB;AAClB;AACA,uBAAuB,uDAAG;AACX,kEAAG,E;;;;;;;;;;;;AClBlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,+BAA+B;AAC/B,2BAA2B;AAC3B,6BAA6B;AAC7B;AACA,wCAAwC;AACxC;AACA,6BAA6B,mEAAO;AACpC;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5BxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA;AACA,iBAAiB,yBAAyB,GAAG,wBAAwB,GAAG,2BAA2B;AACnG;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AChCtB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,uBAAuB,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,UAAU,KAAK;AACrE;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA,wBAAwB,wDAAI;;AAE5B,iBAAiB,eAAe;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC1CzB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,qBAAqB,KAAK,GAAG,KAAK;AAClC,sCAAsC,QAAQ,KAAK,GAAG,KAAK;AAC3D;AACA,kCAAkC,mEAAO;AACzC;AACA;AACA;AACA;AACA,SAAS,yEAAa,+BAA+B,yEAAa;AAClE;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,6EAAc,E;;;;;;;;;;;;ACrC7B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uBAAuB,iBAAiB,EAAE,OAAO;AACjD;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACM;AACJ;AACf;AACE;AACA;AACA;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,KAAK,KAAK;AAC5B,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uCAAuC,IAAI,IAAI,QAAQ,EAAE,OAAO,IAAI;AACpE;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA,aAAa,sEAAU,aAAa,oEAAQ,QAAQ,0DAAM,oBAAoB,0DAAM;AACpF;AACA;AACA;AACA;AACA;AACA,OAAO,UAAU,sEAAU,UAAU,oEAAQ;AAC7C,eAAe,0DAAM;AACrB,OAAO;AACP,eAAe,yDAAK;AACpB;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC7CzB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,sBAAsB;AACtB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACd;AACX;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,2BAA2B;AAC3B;AACA,wBAAwB,mEAAO,eAAe,yEAAa,WAAW,0DAAM;AAC5E,SAAS,yDAAK;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACR;AACE;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,+BAA+B;AAC/B;AACA,4BAA4B,mEAAO,eAAe,yEAAa,KAAK,8DAAU,EAAE,6DAAS;AAC1E,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACE;AACE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,kDAAkD;AAClD;AACA,iCAAiC,mEAAO,eAAe,yEAAa,KAAK,mEAAe,EAAE,kEAAc;AACzF,4EAAa,E;;;;;;;;;;;;ACjC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACQ;AACb;AAClB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,kDAAkD;AAClD;AACA,+BAA+B,mEAAO,eAAe,yEAAa,kBAAkB,6EAAiB,CAAC,kDAAM,gBAAgB,mEAAe,CAAC,kDAAM;AACnI,0EAAW,E;;;;;;;;;;;;ACzB1B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACQ;AACnC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,mCAAmC,mEAAO,eAAe,yEAAa,KAAK,qEAAiB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;ACzC9B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;AACrB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA,8CAA8C;AAC9C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,gBAAgB,+DAAW;AAC3F;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACzCxB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACQ;AACvB;AACJ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,oDAAoD;AACpD;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,uEAAW;AACpB;AACA,GAAG,GAAG,wDAAI,CAAC,8CAAE;AACb,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxCrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACU;AACR;AACE;AACA;;AAEhD;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,0BAA0B;AAC1B,2BAA2B;AAC3B,4BAA4B;AAC5B,iBAAiB,WAAW,EAAE;AAC9B;AACA,yBAAyB,mEAAO;AAChC,+YAA+Y,oEAAQ,WAAW,qEAAS,WAAW,qEAAS,QAAQ,GAAG,wEAAY;AACtd;AACA,GAAG;AACH;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACnCpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACI;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM,CAAC,4DAAQ;AACxB,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,gCAAgC;AAChC;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0DAAM;AACf,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACvBnB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,+BAA+B;AAC/B,+BAA+B;AAC/B;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3BtB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB;AACvB,yBAAyB;AACzB,uCAAuC;AACvC;AACA,qBAAqB;AACrB,qBAAqB;AACrB,uBAAuB;AACvB;AACA,0BAA0B,mEAAO;AACjC,SAAS,mEAAO;AAChB,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,KAAK,KAAK,KAAK;AACpC,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA,wBAAwB,+BAA+B,8BAA8B;AACrF;AACA;AACA;AACA,iBAAiB;AACjB;AACA,0CAA0C,OAAO,4BAA4B,8BAA8B;AAC3G;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACvCrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACZ;AACI;AACJ;AACE;AACjB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,0BAA0B,uBAAuB,EAAE,OAAO;AAC1D;AACA,0BAA0B,mEAAO,eAAe,yEAAa,aAAa,4DAAQ;AAClF,SAAS,qEAAS,eAAe,mEAAO;AACxC;AACA;AACA;AACA;AACA,GAAG,IAAI,EAAE,wDAAI;AACb;AACA,EAAE,mEAAO;AACT,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7CrB;AAAA;AAAA;AAAA;AAA4C;AACY;AACd;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,qCAAqC,OAAO;AAC5C,qCAAqC;AACrC;AACA,wBAAwB,mEAAO,eAAe,yEAAa,WAAW,0DAAM;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACtCnB;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,0CAA0C;AAC1C,0CAA0C;AAC1C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,KAAK,+DAAW;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACrCxB;AAAA;AAAA;AAAA;AAA4C;AACY;AACN;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,WAAW,GAAG,UAAU;AAC7C,yCAAyC,OAAO;AAChD,yCAAyC;AACzC;AACA,4BAA4B,mEAAO,eAAe,yEAAa,KAAK,8DAAU;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACnCvB;AAAA;AAAA;AAAA;AAA4C;AACY;AACI;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,WAAW,GAAG,UAAU;AAC7C,8CAA8C;AAC9C,8CAA8C;AAC9C;AACA,iCAAiC,mEAAO,eAAe,yEAAa,KAAK,mEAAe;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACpC5B;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,eAAe,qEAAS;AAC3C,sEAAO,E;;;;;;;;;;;;ACrBtB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,oCAAoC;AACpC;AACA;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC/BnB;AAAA;AAAA;AAA4D;AAChB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,eAAe,2EAAe;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC9CtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kDAAkD,WAAW,EAAE,OAAO;AACtE;AACA;AACA,iCAAiC,WAAW,KAAK;AACjD;AACA,qCAAqC,mEAAO;AAC5C,gBAAgB,wDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,gFAAiB,E;;;;;;;;;;;;ACnChC;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3BxB;AAAA;AAAA;AAAA;AAA4D;AAChB;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,wBAAwB;AACnD,yBAAyB,wBAAwB;AACjD;AACA,yBAAyB,wBAAwB;AACjD;AACA;AACA,oBAAoB,0BAA0B;AAC9C,oBAAoB,wBAAwB;AAC5C;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA,2BAA2B,mEAAO,eAAe,2EAAe,yBAAyB,4DAAQ;AACjG;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACnDtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC9CxB;AAAA;AAA4C;;AAE5C;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,uBAAuB;AACvB,uBAAuB;AACvB;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;AC1BjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1BlB;AAAA;AAAA;AAA4C;AACT;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACA;AACE;AACE;AACU;AACJ;AACN;AACQ;AACF;AACN;AACA;AACQ;AACV;AACY;AACJ;AACF;AACQ;AACJ;AACF;AACF;AACQ;AACN;AACJ;AACA;AACA;AACE;AACA;AACA;AACU;AACA;AACN;AACE;AACA;AACM;AACV;AACJ;AACU;AACE;AACJ;AACA;AACF;AACJ;AACE;AACN;AACY;AACJ;AACM;AACQ;AAChB;AACQ;AACR;AACJ;AACQ;AACU;AACJ;AACQ;AACZ;AACN;AACF;AACM;AACR;AACM;AACF;AACA;AACA;AACJ;AACU;AACF;AACU;AACZ;AACN;AACM;AACoB;AAChB;AACJ;AACI;AACd;AACE;AACA;AACI;AACI;AACN;AACU;AACF;AACJ;AACN;AACU;AACF;AACA;AACN;AACU;AACN;AACM;AACM;AACF;AACd;AACI;AACM;AACJ;AACV;AACU;AACJ;AACF;AACA;AACA;AACI;AACJ;AACc;AACV;AACJ;AACU;AACF;AACA;AACR;AACE;AACN;AACE;AACA;AACU;AACU;AACA;AAChB;AACI;AACR;AACI;AACF;AACI;AACU;AACZ;AACM;AACU;AACE;AACF;AACM;AACd;AACE;AACF;AACM;AAClB;AACI;AACE;AACJ;AACQ;AACR;AACI;AACJ;AACF;AACA;AACM;AACV;AACQ;AACN;AACI;AACA;AACJ;AACc;AACV;AACA;AACM;AACU;AACN;AACV;AACI;AACA;AACc;AAClB;AACM;AACF;AACJ;AACE;AACA;AACM;AACN;AACI;AACA;AACA;AACN;AACI;AACA;AACA;AACc;AAChB;AACA;AACE;AACI;AACM;AACA;AACR;AACF;AACA;AACA;AACE;AACA;AACN;AACQ;AACV;AACI;AACF;AACI;AACI;AACN;AACI;AACM;AACF;AACE;AACJ;AACV;AACgC;AACQ;AACtC;AACA;AACQ;AACU;AACR;AACZ;AACE;AACA;AACE;AACI;AACA;AACI;AACF;AACF;AACI;AACA;AACF;AACR;AACQ;AACR;AACM;AACJ;AACM;AACJ;AACF;AACQ;AACV;AACI;AACI;AACJ;AACA;AACF;AACE;AACE;AACF;AACI;AACR;AACA;AACE;AACI;AACA;AACJ;AACJ;AACM;AACE;;;;;;;;;;;;;AC7PlD;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK,MAAM,IAAI;AAC1C,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA,uBAAuB,sBAAsB,GAAG,sBAAsB;AACtE;AACA,cAAc,MAAM,sBAAsB,QAAQ;AAClD;AACA,2BAA2B,4DAAQ;AACnC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3BtB;AAAA;AAAA;AAAA;AAA4C;AACE;AACA;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC;AACA,2BAA2B,mEAAO;AAClC,8CAA8C,oEAAQ,4BAA4B,oEAAQ;AAC1F,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC1BtB;AAAA;AAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,uBAAuB;AACvB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,sBAAsB;AACtB,qBAAqB;AACrB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,wBAAwB,yDAAK;AACd,mEAAI,E;;;;;;;;;;;;AC3BnB;AAAA;AAAA;AAAA;AAAwD;AACZ;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C,YAAY,8BAA8B;AAC1C,YAAY,8BAA8B;AAC1C,YAAY,gCAAgC;AAC5C,YAAY,4BAA4B;AACxC;AACA;AACA,eAAe,gCAAgC,GAAG,4BAA4B;AAC9E;AACA,6BAA6B,mEAAO;AACpC,SAAS,mEAAO;AAChB,WAAW,yEAAa;AACxB,GAAG;AACH,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5CxB;AAAA;AAA4C;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,oCAAoC;AACpC;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,iDAAiD;AACjD;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACxBxB;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4DAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,mEAAI,E;;;;;;;;;;;;AC5KnB;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACTA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AClDA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAA2C;AACJ;;AAExB;AACf,oBAAoB,8DAAW;AAC/B,yEAAyE,4DAAS;AAClF;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2DAAQ;AACnB;AACA,C;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAA6C;AACf;;AAE9B;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,YAAY,EAAE;AACd;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wDAAI;AACd;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,+DAAY;AACzB;AACA;AACA;AACA,C;;;;;;;;;;;;AC1CA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gBAAgB;AAC3B,YAAY,MAAM;AAClB;AACA;AACA,sCAAsC;AACtC;AACe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAiC;AACE;;AAEpB;AACf,SAAS,0DAAO;AAChB,WAAW,yDAAM;AACjB;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA,kCAAkC,iEAAc;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAmC;AACc;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAc,WAAW,0DAAO;AAC/C;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,WAAW,iEAAc,MAAM,0DAAO;AACxF;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS;AACT;AACA;AACA,C;;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAmC;AACA;AACc;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAc,WAAW,0DAAO;AAC/C;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,WAAW,iEAAc,MAAM,0DAAO;AACxF;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,0DAAO;AACpB;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,OAAO,iEAAc,WAAW,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAClI;AACA,SAAS,IAAI,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAC7D;AACA,SAAS,IAAI,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAC7D;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS;AACT;AACA;AACA,C;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAiC;AACgB;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAc;AAC3D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,WAAW,iEAAc;AACzB;AACA;AACA;AACA;AACA,kDAAkD,yDAAM;AACxD;AACA,C;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAqC;AACY;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAA8B;;AAEf;AACf,SAAS,wDAAI;AACb,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAgC;;AAEjB;AACf;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,C;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACV;AACA;AAClB;AACU;AACT;AACA;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,qEAAkB;AAC5B,UAAU,qEAAkB;;AAE5B;AACA;AACA;;AAEA;AACA,UAAU,gEAAa;AACvB,YAAY,gEAAa;AACzB,GAAG;AACH;;AAEe;AACf,MAAM,4DAAS;AACf;AACA;;AAEA,cAAc,wDAAI;;AAElB,gBAAgB,wDAAI;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,gEAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4DAAS;AAC9C;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,wDAAI;AAClB,uBAAuB,wDAAI;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,uDAAI;AACd;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACpJA;AAAA;AAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAA+C;AACF;AACV;AACA;;AAEnC;AACA;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA,2CAA2C,gEAAa;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA,KAAK;AACL;AACA,cAAc,+DAAY,UAAU,0DAAO,yBAAyB,0DAAO;AAC3E;AACA;AACA;;AAEe,uEAAQ,E;;;;;;;;;;;;AC/BvB;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAqC;;AAEtB;AACf,SAAS,2DAAQ;AACjB,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAkC;;AAEnB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAM;AACd;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACvDA;AAAA;AAA6B;;AAE7B;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,uDAAI;AACf;AACA,CAAC;;AAEc,2EAAY,E;;;;;;;;;;;;ACX3B;AAAA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA,qBAAqB;AACrB,uBAAuB;AACvB,mBAAmB,EAAE;AACrB;AACe;AACf;AACA,CAAC,E;;;;;;;;;;;;ACdD;AAAA;AAAA;AAAA;AAAmC;AACE;AACE;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ,yEAAyE;AAC7F;AACA;AACA,yBAAyB;AACzB,2BAA2B;AAC3B,uBAAuB,EAAE;AACzB,sBAAsB,WAAW,EAAE;AACnC,sBAAsB,iCAAiC,EAAE;AACzD;AACA,gCAAgC,0DAAO;AACvC,MAAM,2DAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4DAAS;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,2EAAY,E;;;;;;;;;;;;AC7C3B;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA,YAAY;AACZ;AACe;AACf;AACA,CAAC,E;;;;;;;;;;;;ACVD;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,+DAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC/BA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACTA;AAAA;AAA6B;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uDAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,kIAAmE,E;;;;;;;;;;;;ACzBlF;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sHAAuD,E;;;;;;;;;;;;ACbtE;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAe;AACf,6FAA6F;AAC7F;;AAEA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAA6C;AACZ;AACH;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,wDAAI;AACvD;;AAEA;;AAEe;AACf;AACA,SAAS,yDAAM;AACf;AACA,MAAM,+DAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC1DA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+C;AACR;AACM;AACI;AACjB;;AAEhC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA,WAAW,gEAAa,SAAS,+DAAY,UAAU,yDAAK;AAC5D,GAAG;AACH,yBAAyB,oDAAS;AAClC;;AAEe;AACf,MAAM,iEAAc;AACpB;AACA;AACA,MAAM,+DAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEe,2EAAY,E;;;;;;;;;;;;ACb3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACV;AACI;AACY;AACf;AACI;;AAEnB;AACf;AACA;AACA,WAAW,4DAAS;AACpB;;AAEA;AACA;AACA,WAAW,uDAAI;AACf,aAAa,yDAAM;AACnB,KAAK;AACL;;AAEA;AACA;AACA,2BAA2B,kBAAkB,EAAE,KAAK,uDAAI;AACxD;AACA,mBAAmB,uDAAI,8BAA8B,0DAAM;AAC3D;AACA;AACA,OAAO,EAAE,wDAAI;AACb;AACA;AACA;AACA,8DAA8D,yDAAM,CAAC,+DAAY;AACjF;AACA;AACA;AACA;AACA;AACA,gFAAgF,yDAAM;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB,wDAAI,oBAAoB;AACvD;AACA,C;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAAA;AAAmC;AACA;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0DAAO;AAClB;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACtCzB;AAAA;AAAA;AAAA;AAAmC;AACE;AACT;;AAE5B,2BAA2B,0DAAO;AAClC,SAAS,uDAAG,IAAI,2DAAQ;AACxB,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACPtB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD,2CAA2C,kDAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxBrB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACrCzB;AAAA;AAAA;AAAA;AAAmC;AACA;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,mCAAmC,0DAAO;AAC1C;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;AClC9B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,kDAAO;AAC3D,sDAAsD,kDAAO;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,qCAAqC,0DAAO;AAC5C;AACA,CAAC;AACc,gFAAiB,E;;;;;;;;;;;;AC9BhC;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD,gDAAgD,kDAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AC1B1B;AAAe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC,E;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,2CAA2C,kDAAO;AAClD,6CAA6C,kDAAO;AACpD;AACA;AACA;;AAEA;AACA,CAAC;;AAED,4BAA4B,0DAAO;AACnC;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACpBvB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACjC1B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACzBzB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,mCAAmC,0DAAO;AAC1C;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;AC5B9B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C,0CAA0C,kDAAO;AACjD;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACpBpB;AAAA;AAAA;AAAA;AAAmC;AACN;AACM;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA,UAAU,uDAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACxCzB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD,2CAA2C,kDAAO;AAClD;AACA;AACA;AACA,6CAA6C,2DAAQ;AACrD;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxBrB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD,gDAAgD,kDAAO;AACvD;AACA,yEAAyE,2DAAQ;AACjF;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACrB1B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C,0CAA0C,kDAAO;AACjD;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACrBpB;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEc;AACf;AACA,C;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACJ;AACA;AACf;AACA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,gCAAgC,mEAAO;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,SAAS,wDAAI,CAAC,mEAAO,CAAC,wDAAI,CAAC,6DAAS;AACpC,CAAC;AACc,2EAAY,E;;;;;;;;;;;;AClC3B;AAAA;AAAA;AAA4D;AAChB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,iDAAiD;AACjD;AACA,+BAA+B,mEAAO,eAAe,2EAAe;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AClC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACc;AACd;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,uCAAuC;AACvC;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0EAAc,QAAQ,mEAAO,8CAA8C,mEAAO,IAAI,oEAAQ,QAAQ,kEAAM;AACrH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChDnB;AAAA;AAAA;AAAA;AAA4C;AACN;AACT;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK;AACnB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,0BAA0B,mEAAO;AACjC,cAAc,wDAAI;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,gEAAI;AACnB;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACzCrB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK;AACnB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,6BAA6B,mEAAO;AACpC,cAAc,wDAAI;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3CxB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACQ;AACnB;AACI;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf;AACA,0BAA0B,uEAAW;AACrC;AACA;AACA,wBAAwB,4DAAQ;AAChC,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACzCtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB,EAAE;AACzB,wBAAwB;AACxB,wBAAwB;AACxB,0BAA0B;AAC1B,qCAAqC;AACrC,qCAAqC;AACrC,0BAA0B;AAC1B,uBAAuB,EAAE;AACzB;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;AC5BjB;AAAA;AAAA;AAAA;AAA4C;AACb;AACE;;AAEjC;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,6BAA6B;AAC7B,sBAAsB;AACtB,sBAAsB;AACtB,wBAAwB;AACxB,oBAAoB,EAAE;AACtB,mBAAmB,UAAU,EAAE;AAC/B;AACA,2BAA2B,mEAAO;AAClC,sBAAsB,0DAAM,IAAI,yDAAK;AACrC,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC5BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA,sBAAsB;AACtB,2BAA2B;AAC3B,mBAAmB;AACnB,oBAAoB;AACpB;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACtBpB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B;AACA,wBAAwB,2DAAO;AAChB,mEAAI,E;;;;;;;;;;;;ACtBnB;AAAA;AAAA;AAA4C;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,wBAAwB,mEAAO;AAC/B,SAAS,4DAAQ;AACjB;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACzBnB;AAAA;AAAA;AAAA;AAA4C;AACN;AACgB;;AAEtD;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,gBAAgB,iBAAiB,EAAE;AACnC;AACA,+EAA+E,mEAAO;AACtF;AACA,CAAC,iBAAiB,mEAAO;AACzB;AACA;AACA;AACA;AACA;AACA,0CAA0C,wEAAY;AACtD;AACA,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gEAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrEnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,oCAAoC;AACpC,mBAAmB;AACnB;AACA,sBAAsB;AACtB,mBAAmB;AACnB;AACA,wBAAwB,uDAAG;AACZ,mEAAI,E;;;;;;;;;;;;ACvBnB;AAAA;AAAA;AAAA;AAA4C;AACE;AACb;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,6CAA6C;AAC7C,qCAAqC;AACrC;AACA,+BAA+B,mEAAO;AACtC,+CAA+C,oEAAQ;AACvD;AACA,GAAG;AACH;AACA;AACA,UAAU,0DAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACrC1B;AAAA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;;;;;AC1BjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1BlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AAClB;AACM;AACJ;AACP;AACJ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,uBAAuB,iBAAiB,EAAE,OAAO;AACjD;AACA,mBAAmB,aAAa,KAAK;AACrC;AACA;AACA,uBAAuB,mEAAO,eAAe,yEAAa,8BAA8B,yDAAK;AAC7F;AACA;AACA,aAAa,0DAAM;AACnB;AACA,OAAO;AACP;AACA,aAAa,mEAAO;AACpB;AACA;AACA,OAAO,IAAI,EAAE,wDAAI;AACjB;AACA,aAAa,gEAAI;AACjB;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1DlB;AAAA;AAA4C;;AAE5C;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AChDvB;AAAA;AAA4C;;AAE5C;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mEAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;AClD5B;AAAA;AAAA;AAAA;AAA4C;AACA;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,kDAAkD,OAAO;AACzD;AACA,iCAAiC,mEAAO;AACxC,SAAS,mEAAO;AAChB;AACA;AACA,GAAG,IAAI,EAAE,wDAAI;AACb,CAAC;AACc,4EAAa,E;;;;;;;;;;;;AC/B5B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,wCAAwC;AACxC,0BAA0B;AAC1B,2BAA2B;AAC3B;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC1BpB;AAAA;AAAA;AAA4C;AACM;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB;AACzB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB,yBAAyB;AACzB;AACA,2BAA2B,mEAAO;AAClC,OAAO,sEAAU;AACjB;AACA;AACA,OAAO,sEAAU;AACjB;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7CtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtBlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wDAAwD;AACxD,yCAAyC;AACzC;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC7BpB;AAAA;AAAA;AAA4C;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,mBAAmB;AACnB;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uDAAG;AACZ,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACtBnB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B,gCAAgC;AAChC,qBAAqB;AACrB;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wDAAI;AACb;AACA,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAA0C;AACE;AACN;;AAEtC;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AAC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AEA;AACA,CAAC;;AAEc,mEAAI,E;;;;;;;;;;;;AC7BnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB,yBAAyB;AACzB;AACA,4BAA4B,mEAAO;AACnC;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACzBvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,2BAA2B;AAC3B;AACA;AACA,2BAA2B;AAC3B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AClFnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA,qBAAqB;AACrB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACnBrB;AAAA;AAAA;AAAA;AAAoD;AACR;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,2CAA2C;AAC3C;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uDAAG,CAAC,uEAAW;AACxB,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB,iBAAiB;AACjB,iBAAiB;AACjB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACxBlB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,yBAAyB;AACzB;AACA,wBAAwB;AACxB,wBAAwB;AACxB;AACA;AACA;AACA;AACA,uBAAuB,mEAAO;AAC9B;AACA,SAAS,qEAAS;AAClB,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACjClB;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA,mCAAmC;AACnC,oCAAoC;AACpC;AACA;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA,SAAS,0DAAM;AACf,WAAW,uDAAG;AACd,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC5BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAA6B,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAO;AAC5B;AACA,CAAC;AACc,gEAAC,E;;;;;;;;;;;;AChChB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO,QAAQ,oBAAoB,GAAG,oBAAoB,GAAG,oBAAoB;AAC7H;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC3BpB;AAAA;AAAA;AAA4C;AACR;;AAEpC;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,MAAM;AAClB;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB;AACA,sBAAsB,mEAAO,CAAC,uDAAG;AAClB,iEAAE,E;;;;;;;;;;;;ACtBjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU,KAAK;AACpC,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,4BAA4B,uBAAuB,EAAE,OAAO;AAC5D;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACpCnB;AAAA;AAAA;AAA0C;AACE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA,uBAAuB;AACvB,mCAAmC;AACnC;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA,SAAS,kEAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AClCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY,IAAI;AAChB;AACA;AACA;AACA,yBAAyB;AACzB,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAC3B;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;ACzBjB;AAAA;AAAA;AAA4C;AACc;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,iCAAiC,uCAAuC;AACxE;AACA,oDAAoD,oBAAoB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC,EAAE,0EAAc;;AAEhB;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACnCxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACxCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrBnB;AAAA;AAAA;AAA4C;AACkC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,2BAA2B,oFAAwB,CAAC,2DAAO;AAC5C,sEAAO,E;;;;;;;;;;;;AChCtB;AAAA;AAAA;AAAA;AAA4C;AACkC;AACjD;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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,gCAAgC,KAAK,KAAK;AAC1C,WAAW,SAAS;AACpB;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,+BAA+B,uBAAuB,EAAE,OAAO;AAC/D;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACF;AACP;AACJ;;AAE7B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,kEAAM,sBAAsB,0DAAM,CAAC,yDAAK,gBAAgB,wDAAI;AACrE,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAqC;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,WAAW,eAAe;AACzD;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,oDAAQ,aAAa,2DAAO;AACrC,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACA;AACT;AACJ;;AAE7B;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,kEAAM,sBAAsB,0DAAM,CAAC,0DAAM,gBAAgB,wDAAI;AACtE,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACf;AACe;AACf;AACQ;;AAErC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AA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AAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,mCAAmC;AACnC;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM;AACf,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AChCrB;AAAA;AAA4C;;AAE5C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA,iCAAiC,mEAAO;AACxC;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACxB5B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA,6BAA6B,WAAW,EAAE;AAC1C,kCAAkC,WAAW,EAAE;AAC/C;AACA;AACA,kBAAkB,6CAA6C,EAAE;AACjE;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AClCpB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA,sBAAsB;AACtB,wBAAwB;AACxB;AACA,yBAAyB,mEAAO;AAChC,QAAQ,qEAAS,UAAU,qEAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mEAAO,CAAC,2DAAO;AAC1B,qEAAM,E;;;;;;;;;;;;AClDrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AAClB;AACM;AACM;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC,0BAA0B,MAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC;AACA;AACA;AACA,cAAc;AACd;AACA,4BAA4B,mEAAO,qBAAqB,yEAAa,KAAK,8DAAU;AACpF,SAAS,mEAAO;AAChB;AACA,uBAAuB,gEAAI;AAC3B;AACA,GAAG,IAAI;AACP,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACtDvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACpD1B;AAAA;AAAA;AAAA;AAA4C;AACA;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,6CAA6C;AAC7C;AACA,+BAA+B,mEAAO;AACtC,SAAS,mEAAO;AAChB,uCAAuC,oEAAQ;AAC/C,GAAG;AACH,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACtC1B;AAAA;AAAA;AAA4C;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,CAAC,4DAAQ;AAC5B,sEAAO,E;;;;;;;;;;;;AC7BtB;AAAA;AAAA;AAAA;AAAoD;AACR;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,uBAAuB,EAAE,OAAO;AACzD;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM,CAAC,uEAAW;AAC3B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAAA;AAAA;AAA4C;AACX;AACF;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,8CAA8C,SAAS,I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A0C;AAC1C;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1CrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC7CvB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,oCAAoC;AACpC;AACA,yBAAyB,2DAAO;AACjB,oEAAK,E;;;;;;;;;;;;ACvBpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACF;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA,gCAAgC;AAChC,oCAAoC;AACpC,gCAAgC;AAChC;AACA,2BAA2B,mEAAO;AAClC,UAAU,yDAAK,mBAAmB,yDAAK,QAAQ,0DAAM;AACrD,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACzBtB;AAAA;AAAA;AAA4C;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA,+CAA+C;AAC/C,qCAAqC;AACrC;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAK;AACrB;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC/BzB;AAAA;AAA4C;;AAE5C;A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;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,+BAA+B;AAC/B;AACA,4BAA4B,mEAAO;AACnC,SAAS,wDAAI;AACb,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5BvB;AAAA;AAAA;AAA4C;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,kDAAkD;AAClD;AACA,iCAAiC,mEAAO;AACxC;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACnC5B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;AACrB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,8CAA8C;AAC9C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,gBAAgB,+DAAW;AAC3F;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC1CxB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,uBAAuB,mEAAO,eAAe,yEAAa,KAAK,yDAAK;AACpE;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC5BlB;AAAA;AAAA;AAAA;AAAA;AAAsD;AACV;AACI;AACX;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA,wBAAwB,mEAAO;AAC/B,OAAO,qEAAS;AAChB,sFAAsF,cAAc,4DAAQ;AAC5G;AACA,SAAS,wEAAY;AACrB,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC5BnB;AAAA;AAAA;AAA4C;AACc;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,qCAAqC,SAAS,SAAS;AACvD;AACA,+CAA+C,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAO;AAC/B,EAAE,0EAAc;;AAEhB;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACjCnB;AAAA;AAAA;AAAiC;AACW;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,qCAAqC;AACrC,8CAA8C;AAC9C;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEc,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACxCpB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2BAA2B,2DAAO;AACnB,sEAAO,E;;;;;;;;;;;;AClBtB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,mBAAmB,iBAAiB,EAAE;AACtC;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC9BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,uBAAuB;AACvB;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC9BxB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B,8BAA8B;AAC9B,oBAAoB,uBAAuB,EAAE,QAAQ,6BAA6B;AAClF,qDAAqD;AACrD;AACA,4BAA4B,mEAAO;AACnC,SAAS,qEAAS;AAClB,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC1CvB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2BAA2B,2DAAO;AACnB,sEAAO,E;;;;;;;;;;;;AClBtB;AAAA;AAAA;AAAA;AAA4C;AACF;AACT;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,+EAA+E;AAC/E;AACA,6BAA6B,0DAAM;AACnC,SAAS,mEAAO,+BAA+B,kEAAM;AACrD,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACtDxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3CxB;AAAA;AAAA;AAAA;AAA4C;AACjB;AACU;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,4BAA4B,mEAAO;AACnC,oHAAoH,4DAAQ,KAAK,uDAAG;AACpI,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACjCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA,2BAA2B;AAC3B,+CAA+C;AAC/C;AACA,qGAAqG,mEAAO;AAC5G;AACA;AACA;AACA,CAAC,iBAAiB,mEAAO;AACzB;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC3BnB;AAAA;AAAA;AAAA;AAA0C;AACE;AACA;;AAE5C;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA,sCAAsC,QAAQ,EAAE;AAChD,0BAA0B,aAAa;AACvC;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,kEAAM;AACf;AACA;AACA,KAAK;AACL,iCAAiC,mEAAO;AACxC;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACnCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,iBAAiB,EAAE;AACnB,kBAAkB;AAClB,sBAAsB;AACtB,oBAAoB;AACpB,qBAAqB;AACrB,mBAAmB;AACnB,wBAAwB;AACxB,uBAAuB,EAAE;AACzB,0BAA0B;AAC1B;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC9BnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC/BtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,2BAA2B;AAC3B;AACA;AACA,2BAA2B;AAC3B;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB,mEAAO;AAChC,SAAS,wDAAI;AACb,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AClCpB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACrCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,MAAM;AAClB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACpCrB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACA;AACT;AACN;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,mEAAO,eAAe,2DAAO,CAAC,gDAAI,EAAE,2DAAO;AACrD,oEAAK,E;;;;;;;;;;;;ACvBpB;AAAA;AAAA;AAAA;AAA4C;AACA;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK;AAClC,qBAAqB,KAAK,GAAG,KAAK;AAClC,iDAAiD,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK;AAC9E;AACA,6BAA6B,mEAAO;AACpC,SAAS,4DAAQ,OAAO,mEAAO;AAC/B,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC7BxB;AAAA;AAAA;AAAqC;AACJ;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B;AAC7B;AACA,wBAAwB,0DAAM,CAAC,oDAAQ;AACxB,mEAAI,E;;;;;;;;;;;;ACrBnB;AAAA;AAAA;AAAsC;AACM;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,kDAAkD;AAClD;AACA,0BAA0B,mEAAO;AACjC,gBAAgB,wDAAI;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACrCrB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C,6BAA6B,IAAI,GAAG,eAAe;AACnD,uCAAuC;AACvC,uCAAuC;AACvC;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yEAAa;AACtB;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACvCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,sBAAsB;AACtB,mBAAmB;AACnB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAAgD;AACjB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,kCAAkC;AAClC,2CAA2C;AAC3C;AACA,0BAA0B,yDAAK,CAAC,6DAAS;AAC1B,qEAAM,E;;;;;;;;;;;;ACrBrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC5BpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACA;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,gBAAgB;AAC3B,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM,MAAM,0DAAM;AAC3B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA,4DAA4D;AAC5D,4DAA4D;AAC5D,kDAAkD;AAClD,kDAAkD;AAClD;AACA;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3CtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,kBAAkB,iBAAiB,EAAE;AACrC;AACA,0BAA0B,mEAAO;AACjC,cAAc,wDAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,sBAAsB;AACtB;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC/BvB;AAAA;AAA4C;;AAE5C;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW,EAAE;AACpC,uBAAuB,WAAW,EAAE;AACpC;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACnCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,kCAAkC;AAClC;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACjCnB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,KAAK,UAAU;AAC/C,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAA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SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAO;AACkB;AAC3B;;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AAC1C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACe;AAC3B;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACN;AACgB;AAC9C;AACP;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAE;AACzB;AACA,uBAAuB,yEAAU;AACjC;AACA,uBAAuB,+DAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACuD;AACJ;AACmB;AAC1B;AACV;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAY;AAC/B;AACA;AACA;AACA;AACA,qCAAqC,8CAAM;AAC3C;AACA;AACA;AACA,YAAY,8CAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA,gBAAgB,2EAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAiB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,EAAE,kBAAkB,oBAAoB,EAAE,eAAe,uBAAuB,EAAE;AAC9I,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA,sBAAsB,8CAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnHA;AAAA;AAAA;AAAA;AAAA;AACkC;AACuB;AAClD;AACP;AACA,4BAA4B,EAAE;AAC9B;AACA,YAAY,8CAAM;AAClB;AACA;AACA;AACA,YAAY,6EAAe;AAC3B;AACA,KAAK;AACL,2BAA2B;AAC3B;AACA;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AAC1C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACe;AAC3B;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACG;AACM;AACI;AACc;AACa;AACb;AAC5D;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA,2BAA2B,0DAAY;AACvC;AACA;AACA;AACA,+BAA+B,wEAAmB;AAClD;AACA;AACA,4CAA4C,wEAAmB;AAC/D;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAO;AACgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;ACpHA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA,CAAC;AACoB;AACrB;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACA;AACI;AAC2B;AACb;AACyB;AACrF;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACiB;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,uBAAuB,wEAAmB;AAC1C;AACA;AACA;AACA,6BAA6B,sDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACO;AACnB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;;AC7JA;AAAA;AAAA;AAAA;AAAA;AACiC;AACa;AAC9C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACiB;AAC/B;;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACK;AACN;AACuC;AACnD;AACuB;AACzD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAAa;AACjD;AACA;AACA;AACA,wCAAwC,+CAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAkB,iBAAiB,aAAa;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACQ;AACtB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+CAAa;AAChD;AACA,oBAAoB,mEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8CAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8CAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6EAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6CAA6C;AAChG,qBAAqB,8CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA,aAAa,8CAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;;;;;;;;;;;;ACxOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACyC;AACE;AACI;AACkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA,sCAAsC,6EAAmB;AACzD;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB,+DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,yCAAyC,6EAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6EAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACuB;AACxB;AACA,+CAA+C,oCAAoC,6EAAmB,sBAAsB,EAAE;AAC9H;AACA;;;;;;;;;;;;;ACvIA;AAAA;AAAA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACJ;AACA;AACI;AACyB;AACxE;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0DAAY;AAC5D;AACA;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAmB;AAClC;AACA;AACA,CAAC,CAAC,sDAAU;AACqB;AAC1B;AACP;AACA;AACA,mBAAmB,cAAc;AACjC,oBAAoB,2BAA2B;AAC/C,mBAAmB,8BAA8B;AACjD,sBAAsB,8BAA8B;AACpD,qBAAqB,qCAAqC;AAC1D,sBAAsB,sDAAsD;AAC5E,qBAAqB,qCAAqC;AAC1D,kBAAkB,kCAAkC;AACpD,mBAAmB;AACnB;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAiB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACF;AACK;AAC9C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAI;AAC5B;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA;AACA,8BAA8B,oDAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,sDAAU;AACqB;AACjC;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACR;AACiB;AACd;AACQ;AAC3C;AACP;AACA,YAAY,qEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,sFAAsF,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AAC/L;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2EAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAY;AACnD;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA,2DAA2D,iCAAiC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACR;AACiB;AACN;AACR;AACnC;AACP;AACA,YAAY,qEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,0FAA0F,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACnM;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA;AACA;AACA;AACA,mDAAmD,0DAAY;AAC/D;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2EAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2DAA2D;AACnH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAY;AACnD;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA,gEAAgE,6BAA6B;AAC7F;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6BAA6B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AACR;AACW;AACS;AACtB;AACxC;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,yBAAyB,iFAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACkB;AACnC;;;;;;;;;;;;;ACpGA;AAAA;AAAA;AAAA;AAAA;AAC0B;AACyB;AAC5C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,WAAW,sEAAS,GAAG,sCAAE;AACzB;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kDAAI,UAAU,oDAAK;AAChD;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACM;AACO;AACA;AACJ;AAC1C;AACA,QAAQ,+CAAI;AACZ,mBAAmB,+CAAI;AACvB;AACA,eAAe,+CAAI;AACnB,mBAAmB,+CAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+CAAI;AACZ,mBAAmB,+CAAI;AACvB;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,4BAA4B,+CAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,+BAA+B,4CAA4C;AAC3E;AACO;AACP,+BAA+B,yDAAyD;AACxF;AACO;AACP,+BAA+B,+CAA+C;AAC9E;AACO;AACP,+BAA+B,wDAAwD;AACvF;AACO;AACP,+BAA+B,0DAA0D;AACzF;AACA,gCAAgC,0DAAG,sBAAsB,mBAAmB,EAAE;AACvE;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,sDAAU;AACc;AAC1B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAAI,qCAAqC,+CAAI;AACjF,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+CAAI,6BAA6B,+CAAI;AACtD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,sEAAsE,EAAE;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;;;;;;;;;;;;ACrXA;AAAA;AAAA;AAAA;AACkD;AAC3C,uCAAuC,QAAQ,8DAAc,QAAQ,EAAE;AAC9E;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACpC,8BAA8B,sDAAU,wBAAwB,8BAA8B,EAAE;AAChG;AACP;AACA;AACA;AACA,eAAe,sDAAU,wBAAwB,wCAAwC,8BAA8B,EAAE,EAAE,EAAE;AAC7H;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACH;AACK;AACd;AACvB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,YAAY,+DAAQ;AACpB;AACA,6DAA6D,qBAAqB,EAAE;AACpF;AACA;AACA;AACA;AACA,2CAA2C,6DAAO;AAClD,oDAAoD,0DAAG,kBAAkB,6CAA6C,EAAE;AACxH;AACA;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,uCAAuC,8BAA8B,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA,uEAAuE,0CAA0C,EAAE,IAAI;AACvH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACO;AACC;AAC5C;AACP;AACA,6BAA6B,sDAAU;AACvC;AACA;AACA,mBAAmB,sDAAU,CAAC,qEAAW;AACzC;AACA;AACA,eAAe,sEAAS;AACxB;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACiB;AACD;AACpD;AACP;AACA,mBAAmB,sDAAU,CAAC,+EAAgB;AAC9C;AACA;AACA,eAAe,8EAAa;AAC5B;AACA;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACM;AACT;AACvC,2CAA2C,kCAAkC,EAAE;AACxE;AACP,QAAQ,mEAAU;AAClB;AACA;AACA;AACA;AACA,0DAA0D,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACnK;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kEAAkE;AACrG;AACA;AACA;AACA;AACA,mCAAmC,yCAAyC;AAC5E;AACA;AACA;AACA;AACA,mCAAmC,oDAAoD;AACvF;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACM;AACT;AAChC;AACP;AACA,gEAAgE,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACzK;AACA,eAAe,sDAAU;AACzB;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAU;AACvB;AACA;AACA,4BAA4B,yCAAyC;AACrE,KAAK;AACL;AACA;;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACC;AACM;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uDAAQ;AAC3D;AACA;AACA,yDAAyD,qEAAW;AACpE;AACA,yBAAyB,uDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5HA;AAAA;AAAA;AAAA;AAAA;AACgC;AACA;AACzB;AACP;AACA,qBAAqB,4CAAK;AAC1B;AACA;AACA,sBAAsB,4CAAK;AAC3B;AACA,WAAW,oDAAK,cAAc,+CAA+C,EAAE;AAC/E;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACA;AACG;AACvC;AACP;AACA;AACA;AACA;AACA,oBAAoB,sDAAK;AACzB;AACA,SAAS,iEAAS;AAClB;AACA;AACA;AACA,oBAAoB,sDAAK;AACzB;AACA,eAAe,sDAAU;AACzB,6DAA6D,qDAAqD;AAClH;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,+DAA+D;AAClF;AACA;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACO;AACD;AACT;AACjC;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,sDAAU;AAC9F;AACA;AACA,WAAW,oEAAQ,aAAa,4DAAS;AACzC;AACA;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACP;AAC7B,8BAA8B,sDAAU,CAAC,+CAAI;AAC7C;AACP;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AACkD;AACV;AACmB;AACpD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA,eAAe,8EAAa;AAC5B;AACA;AACA,eAAe,4DAAS;AACxB;AACA;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACY;AACV;AACzB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,eAAe,4CAAK;AACpB;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA,eAAe,sDAAU;AACzB,mCAAmC,yFAAyF;AAC5H,eAAe,kDAAI;AACnB,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP;AACA,mBAAmB,sDAAU;AAC7B;AACA,2BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA,mCAAmC,0DAAY;AAC/C,8DAA8D,qFAAqF;AACnJ;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,4CAA4C,6FAA6F;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACkC;AACgB;AACL;AACF;AACpC;AACP;AACA,QAAQ,gEAAM,yBAAyB,sDAAU,CAAC,qEAAW;AAC7D,QAAQ,gEAAM,CAAC,qDAAG,0BAA0B,sDAAU,CAAC,qEAAW;AAClE;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACF;AACa;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACS;AAC1B;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA,mBAAmB,sDAAU,wBAAwB,gCAAgC,EAAE;AACvF;AACA;AACA,mBAAmB,sDAAU,wBAAwB,yCAAyC,uCAAuC,EAAE,EAAE;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACA;AACG;AACI;AAC3C;AACP;AACA;AACA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA,aAAa,qEAAW;AACxB;AACA;AACA,SAAS,qEAAW;AACpB,oBAAoB,sDAAK;AACzB;AACA,eAAe,sDAAU;AACzB,kBAAkB,iEAAS;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAI,WAAW,4CAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACO;AACE;AACC;AACU;AACS;AACe;AACtE;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,8BAA8B,kEAAe;AAC7C,oDAAoD,kEAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAe;AACjD;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B,IAAI;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iFAAiB;AAChC;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACzNA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iFAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACX;AACY;AACrC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,oDAAK,cAAc,QAAQ,+DAAK,sBAAsB,EAAE;AACnE;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA,kBAAkB,iFAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACO;AAC3C;AACP;AACA,oBAAoB,sDAAK;AACzB,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,2CAA2C;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACe;AACT;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAkB,iFAAiB;AACnC;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAY;AAC3C,uBAAuB;AACvB;AACA,gCAAgC,iFAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACM;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA,gCAAgC,iFAAiB;AACjD;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gEAAe;AACrD;AACA,YAAY,iFAAiB;AAC7B;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AACoE;AAC7D;AACP,8BAA8B,wBAAwB,+EAAqB,WAAW;AACtF;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0C;AAC0B;AAC1B;AAC1C;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,8BAA8B,yBAAyB,6DAAI,oCAAoC,+EAAqB,WAAW;AAC/H;AACA;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAC8D;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,yBAAyB,yDAAY,8CAA8C;AACjH;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP,WAAW,0DAAQ;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP,WAAW,0DAAQ;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACwC;AACjC;AACP,WAAW,4DAAS,cAAc,wBAAwB,EAAE;AAC5D;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,0DAA0D;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,4DAA4D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iFAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACpC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,8BAA8B,kEAAkE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;;;;;;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,8DAA8D;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACH;AACG;AACI;AACxC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,wBAAwB,2DAAM;AAC9B;AACA,8BAA8B,4DAA4D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;AC5FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACU;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAkE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACnIA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,gEAAgE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,sBAAsB,iFAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACa;AAC9B;;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,4EAA4E;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC3DA;AAAA;AAAA;AAAA;AAC8D;AACvD;AACP,WAAW,kFAAoB,kBAAkB,8DAA8D,EAAE;AACjH;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0E;AACxC;AACY;AACI;AACpB;AACvB;AACP;AACA,kBAAkB,qFAAuB;AACzC;AACA;AACA;AACA,2BAA2B,sDAAM,kBAAkB,oBAAoB,EAAE,GAAG,kDAAI;AAChF,cAAc,sEAAc;AAC5B,cAAc,kEAAY,cAAc,YAAY,qFAAuB,GAAG,EAAE;AAChF;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAC8C;AACR;AAC/B;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,QAAQ,iEAAM,SAAS,iDAAE,uBAAuB;AAC9E;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,mEAAmE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,+CAA+C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iFAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AAClC;AACc;AACnC;AACP;AACA,kCAAkC,gDAAgD,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,GAAG;AACvL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wEAAwE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACW;AAC5B;;;;;;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP,8BAA8B,mDAAmD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,8EAA8E;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACmB;AAC/B;;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AACsD;AAC/C;AACP,8BAA8B,wBAAwB,iEAAiB,oCAAoC;AAC3G;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgD;AACd;AACJ;AACoB;AACJ;AACF;AACrC;AACP;AACA,8BAA8B,gCAAgC,sDAAM,kBAAkB,gCAAgC,EAAE,IAAI,uDAAQ,EAAE,kDAAI,uBAAuB,sEAAc,iBAAiB,kEAAY,cAAc,YAAY,2DAAU,GAAG,EAAE,GAAG;AACxP;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACJ;AACN;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,gDAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACiB;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACd;;;;;;;;;;;;;ACrLA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,2CAA2C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgD;AACd;AACI;AACQ;AACI;AACN;AACrC;AACP;AACA,8BAA8B,gCAAgC,sDAAM,kBAAkB,gCAAgC,EAAE,IAAI,uDAAQ,EAAE,0DAAQ,uBAAuB,sEAAc,iBAAiB,kEAAY,cAAc,YAAY,2DAAU,GAAG,EAAE,GAAG;AAC5P;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,8CAA8C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA,8BAA8B,0DAAY;AAC1C;AACA;AACA;AACA,yBAAyB,0DAAY;AACrC;AACA;AACA;AACA;AACA,yBAAyB,0DAAY;AACrC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AACkC;AAC3B;AACP;AACA,2BAA2B,mCAAmC;AAC9D,2BAA2B,sBAAsB;AACjD,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAC2D;AACpD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,yBAAyB,uDAAW,8CAA8C;AAChH;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AACsC;AACM;AACrC;AACP;AACA;AACA;AACA,WAAW,0DAAQ,CAAC,uDAAQ;AAC5B;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AAC6B;AACT;AACA;AACzB;AACc;AACnC;AACP;AACA;AACA;AACA;AACA,kCAAkC,8CAA8C,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,eAAe;AACjM;AACA;AACA;AACA;AACA,8BAA8B,+DAA+D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACa;AAC9B;;;;;;;;;;;;;ACnGA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP;AACA;AACA;AACA;AACA,eAAe,0DAAQ,cAAc,wBAAwB,EAAE;AAC/D;AACA;AACA;AACA;AACA,WAAW,0DAAQ,cAAc,wBAAwB,EAAE;AAC3D;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AAC6B;AACT;AACA;AAC9C;AACP;AACA;AACA;AACA,8BAA8B,0EAA0E;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACc;AAC/B;;;;;;;;;;;;;AChGA;AAAA;AAAA;AAAA;AACkC;AAC3B;AACP;AACA,2BAA2B,mCAAmC;AAC9D,2BAA2B,sBAAsB;AACjD,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AACsF;AAC/E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iGAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACA;AACW;AACA;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,8BAA8B,gEAAgE;AAC9F;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA,WAAW,6DAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gEAAe;AACrD;AACA;AACA,YAAY,iFAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,4CAA4C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AACkC;AACA;AAC3B;AACP;AACA;AACA,YAAY,sDAAM;AAClB,YAAY,sDAAM,CAAC,qDAAG;AACtB;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAC4B;AACrB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,QAAQ,gDAAG,sCAAsC;AAC/E;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AACqC;AACG;AACjC;AACP;AACA,QAAQ,4DAAS,cAAc,YAAY,gDAAO,GAAG,EAAE;AACvD,QAAQ,4DAAS,KAAK,gDAAO;AAC7B;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AACqD;AACb;AACjC;AACP,8BAA8B,QAAQ,4DAAS,KAAK,gEAAe,iBAAiB;AACpF;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAC+C;AACP;AACjC;AACP,8BAA8B,QAAQ,4DAAS,KAAK,0DAAY,YAAY;AAC5E;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AACiD;AACT;AACjC;AACP;AACA;AACA;AACA;AACA,sBAAsB,4DAAa;AACnC,8BAA8B,QAAQ,4DAAS,cAAc,gBAAgB,EAAE,oBAAoB;AACnG;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAC0C;AACc;AACjD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,wCAAwC,6DAAO;AAC/C;AACA;AACA,gCAAgC,qDAAU;AAC1C;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC8B;AACQ;AACY;AACd;AAC7B;AACP;AACA;AACA,mBAAmB,uDAAI,CAAC,kDAAI,qBAAqB,0DAAQ,KAAK,sEAAc;AAC5E;AACA;AACA;AACA,eAAe,uDAAI,CAAC,kDAAI,+BAA+B,2CAA2C,EAAE,GAAG,0DAAQ;AAC/G;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACC;AACrC;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gDAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP,8BAA8B,6DAA6D;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iFAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,kDAAkD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iFAAiB;AAC1C;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACpC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,8BAA8B,+DAA+D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,oEAAoE,oCAAoC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,sEAAsE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACuB;AACnC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAAA;AACwC;AACF;AACD;AACrC;AACA,eAAe,gDAAO;AACtB;AACO;AACP,8BAA8B,QAAQ,0DAAQ,GAAG,4DAAS,+BAA+B;AACzF;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AACiD;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAa;AACvC;AACA,wCAAwC,qBAAqB,EAAE;AAC/D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACK;AACzC;AACP,8BAA8B,2DAA2D;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2DAAU;AAC5C;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,6CAA6C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AACnE;AACP,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA,wCAAwC,sDAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AACvD;AACP,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAC8C;AACI;AAC3C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA,kCAAkC,QAAQ,iEAAM,2BAA2B;AAC3E;AACA;AACA,kCAAkC,QAAQ,iEAAM,gBAAgB;AAChE;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAC4E;AACrE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uFAAqB;AACxC;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AACwC;AACI;AACrC;AACP,WAAW,4DAAS,CAAC,uDAAQ;AAC7B;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AAClC;AACc;AACnC;AACP;AACA,kCAAkC,+CAA+C,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,GAAG;AACtL;AACA,8BAA8B,oDAAoD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,iCAAiC,iFAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AACwC;AACjC;AACP,4BAA4B,4DAAS,cAAc,wBAAwB,EAAE,oBAAoB,4DAAS,cAAc,wBAAwB,EAAE;AAClJ;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACP;AACY;AACzC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,yBAAyB,+CAAI;AAC7B,0BAA0B,+CAAI;AAC9B,6BAA6B,+CAAI;AACjC,mCAAmC,+CAAI;AACvC,yCAAyC,+CAAI;AAC7C,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA;AACA,oDAAoD,+CAAI;AACxD,sDAAsD,+CAAI;AAC1D,4DAA4D,+CAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,8BAA8B,6FAA6F;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iFAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACQ;AAC5C;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,iBAAiB,+DAAqB;AACtC;AACA,8BAA8B,oGAAoG;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,mBAAmB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACe;AACL;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,eAAe,2DAAU;AACzB;AACA;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACc;AAChB;AACrB;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,eAAe,+DAAK;AACpB,+BAA+B,kDAAI;AACnC;AACA,yBAAyB,wDAAwD;AACjF,aAAa,GAAG,8DAA8D,GAAG,gDAAG;AACpF;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACS;AACR;AACU;AAC/C;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,gEAAW,MAAM,yEAAU,KAAK,+DAAY;AACvD;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACH;AACa;AACS;AACvD;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,8BAA8B,2DAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iFAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACf;AACrB;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,gDAAG,mBAAmB,8CAA8C,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iFAAiB;AAClD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,2BAA2B,gDAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gDAAO;AACjD;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACN;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACM;AACA;AACG;AACI;AAC3C;AACP,oBAAoB,sDAAK;AACzB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,gDAAO;AACT;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACU;AACM;AACS;AACvD;AACP,8BAA8B,yEAAyE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,2CAA2C,iFAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC,mCAAmC,0DAAY;AAC/C,6BAA6B;AAC7B;AACA,oCAAoC,iFAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AChIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gDAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iFAAiB;AAC7D;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACnFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA,uBAAuB,SAAS;AAChC;AACA,sBAAsB,iFAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AACqD;AAC9C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,gCAAgC,mDAAS;AACzC;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AACgD;AACzC;AACP,8BAA8B,wBAAwB,2DAAW,WAAW;AAC5E;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,yDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACwB;AAChE;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA,mCAAmC,6DAAiB;AACpD;AACA,wCAAwC,yCAAyC,+BAA+B,EAAE,GAAG,EAAE;AACvH,uCAAuC,yCAAyC,8BAA8B,EAAE,GAAG,EAAE;AACrH,uCAAuC,yCAAyC,8BAA8B,EAAE,GAAG,EAAE;AACrH,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA,4DAA4D,8BAA8B,EAAE;AAC5F,iBAAiB;AACjB,aAAa;AACb,wDAAwD,8BAA8B,EAAE;AACxF,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0D;AACN;AACJ;AACM;AACY;AACpB;AACI;AACF;AACzC;AACP;AACA,YAAY,qFAAmB;AAC/B,mBAAmB,8EAAkB;AACrC;AACA,iBAAiB,iEAAS;AAC1B,mBAAmB,wEAAe;AAClC;AACA,iBAAiB,qEAAW;AAC5B,mBAAmB,oEAAa;AAChC;AACA,iBAAiB,mEAAU;AAC3B,mBAAmB,0EAAgB;AACnC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AAC/C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACI;AAClB;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,8BAA8B,EAAE;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACmB;AAChC;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACmB;AACnC;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACa;AACF;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,yDAAS;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACS;AACtB;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACS;AACzB;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACC;AAClC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8CAAM;AACe;AACvB;;;;;;;;;;;;;AC9FA;AAAA;AAAA;AAAA;AAAA;AACiC;AACQ;AACzC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,kBAAkB,oDAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oDAAS;AACe;AAC1B;;;;;;;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACU;AACvB;;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACU;AAC1B;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AACM;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,oBAAoB,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACgB;AAChC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACY;AACzB;;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAC8D;AACM;AAC7D,uCAAuC,gFAAuB,CAAC,0EAAoB;AAC1F;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC0C;AACM;AACzC,6BAA6B,4DAAa,CAAC,sDAAU;AAC5D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC4C;AACM;AAC3C,8BAA8B,8DAAc,CAAC,wDAAW;AAC/D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC4C;AACM;AAC3C,8BAA8B,8DAAc,CAAC,wDAAW;AAC/D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;;;;;;;;;;;;;ACTA;AAAA;AAAA;AACO,6CAA6C,4EAA4E,EAAE;AAClI;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACPA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,4CAA4C,6BAA6B,EAAE;AAC3E;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,wGAAwG,sCAAsC,EAAE;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA,uDAAuD,sDAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AACO;AACP,4BAA4B,WAAW,EAAE;AACzC;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO,0CAA0C,wCAAwC,0CAA0C,EAAE,EAAE,EAAE;AACzI;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO,iCAAiC,qEAAqE,EAAE;AAC/G;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AACuE;AAChE;AACP,iCAAiC,6DAAiB;AAClD;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACiE;AAC1D;AACP,iCAAiC,yDAAe;AAChD;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACoC;AAC7B;AACP,YAAY,wDAAO;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP,oCAAoC,sDAAU;AAC9C;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO,iBAAiB;AACxB;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAC8B;AACvB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,0CAAI;AACnB;AACA;AACA;AACA;AACA;AACA,+CAA+C,iBAAiB,EAAE;AAClE;AACA;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACsD;AACI;AACE;AACI;AACpB;AACJ;AACF;AAC2B;AACM;AAChE;AACP,kCAAkC,6DAAiB;AACnD,eAAe,oFAAqB;AACpC;AACA,aAAa,gEAAW;AACxB,eAAe,0EAAgB;AAC/B;AACA,aAAa,4DAAS;AACtB,eAAe,8EAAkB;AACjC;AACA,uCAAuC,yDAAe;AACtD,eAAe,gFAAmB;AAClC;AACA;AACA,oBAAoB,0DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9BA;AAAA;AAAA;AACO;AACP;AACA,2CAA2C,+BAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AACiE;AAC1D;AACP;AACA,gCAAgC,yDAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AACuE;AAChE;AACP;AACA,sBAAsB,6DAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AACoD;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,8BAA8B,EAAE;AAC3D,wBAAwB,gEAAe;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AACqD;AACT;AACD;AACpC;AACP;AACA,0BAA0B,gEAAe;AACzC;AACA;AACA;AACA;AACA,0BAA0B,sDAAU;AACpC;AACA;AACA,WAAW,gEAAW;AACtB;AACA;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACiC;AACvB;AAC9C;AACP;AACA,sCAAsC,sDAAU;AAChD;AACA;AACA,2BAA2B,iEAAkB;AAC7C,kCAAkC,iEAAkB;AACpD;AACA;AACA;AACA,mBAAmB,sDAAU,CAAC,+CAAa;AAC3C;AACA,eAAe,sDAAU;AACzB;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACoD;AACQ;AACN;AACU;AACF;AACI;AACJ;AACA;AACA;AACM;AACd;AACM;AACA;AACI;AACZ;AACM;AACQ;AACI;AAClB;AACQ;AACQ;AACV;AACwB;AACM;AAC5B;AACJ;AACJ;AACI;AACM;AACR;AACA;AACI;AACR;AACU;AACR;AACI;AACc;AACd;AACN;AACF;AACI;AACY;AAChB;AACI;AACM;AACA;AACW;AACP;AACF;AACZ;AACY;AACA;AACgB;AAClB;AACE;AACR;AACI;AACgB;AACR;AACI;AAClB;AACI;AACA;AACQ;AACV;AACQ;AACF;AACJ;AACQ;AACZ;AACkB;AAChB;AACY;AACV;AACJ;AACQ;AACE;AACA;AACA;AACI;AACJ;AACA;AACI;AACd;AACQ;AACE;AACA;AACZ;AACU;AACQ;AACA;AACA;AACV;AACQ;AACJ;AACJ;AACF;AACU;AACF;AACI;AACJ;AACQ;AACtB;AACM;AACtD;;;;;;;;;;;;;ACzGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEO;AACP;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;;;;;;;;;;;ACnMA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACI,SAAS,eAAe,CAC7B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC7C,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACD;;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,cAAc,CAC5B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACA;AACF;AACE;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,SAAS,CACvB,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,WAAW,CACzB,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuB;AACD;AACG;;;;;;;;;;;;;ACxB5B;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAeH;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,oBAAoB,CAClC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,uBAAuB,GAAG,OAAO;AAC5C,CAAC;AAED;;;;GAIG;AACI,SAAS,sBAAsB,CACpC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE;AACvC,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,MAAI,KAAK,OAAI;AAC9B,CAAC;AAED;;;;GAIG;AACI,SAAS,eAAe,CAC7B,EAAe;IAEf,IAAM,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7C,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;IACjB,IAAI,KAAK;QACP,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AAC7B,CAAC;;;;;;;;;;;;;ACzFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,gBAAgB,CAC9B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAM,KAAK,OAAI;AAC7B,CAAC;AAED;;;;GAIG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;AACnB,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,gBAAgB,CAC9B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,KAAK,CAAC,MAAM,GAAM,KAAK,OAAI;AAChC,CAAC;AAED;;;;GAIG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;AACtB,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,cAAc,CAC5B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;ACjGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;;;;;;;;;;;;;ACtBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEkC;AAErC;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,mBAAmB,CACjC,EAAe,EAAE,KAAa;IAE9B,QAAQ,KAAK,EAAE;QAEb,gBAAgB;QAChB,KAAK,CAAC;YACJ,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,oBAAoB,CAAC;YAChD,MAAK;QAEP,gBAAgB;QAChB,KAAK,CAAC;YACJ,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,mBAAmB,CAAC;YAC/C,MAAK;QAEP,qBAAqB;QACrB;YACE,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,qBAAqB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;KACtE;AACH,CAAC;AAED;;;;GAIG;AACI,SAAS,qBAAqB,CACnC,EAAe;IAEf,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,2BAA2B,CAAC;AACzD,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,qBAAqB,CACnC,EAAe,EAAE,KAAkB;IAEnC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACI,SAAS,qBAAqB,CACnC,EAAe;IAEf,EAAE,CAAC,SAAS,GAAG,EAAE;AACnB,CAAC;;;;;;;;;;;;;ACzFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEyC;AAOrB;AAEiB;AAyCxC;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,WAAqC;AAEzC;;+EAE+E;AAE/E;;;;;;;;GAQG;AACI,SAAS,eAAe,CAC7B,KAAkB,EAAE,EAA2B;QAAzB,wBAAS;IAE/B,WAAW,GAAG,SAAS;SACpB,IAAI;IAEH,yBAAyB;IACzB,0DAAG,CAAC,kBAAQ,IAAI,YAAK,CAAC,MAAM,CAAe,UAAC,UAAU,EAAE,IAAI;;QAC1D,IAAM,EAAE,GAAG,8DAAU,CAAC,wBAAsB,IAAI,MAAG,EAAE,QAAQ,CAAC;QAC9D,OAAO,kHACF,UAAU,GACV,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,WAAG,GAAC,IAAI,IAAG,EAAE,MAAG,CAAC,CAAC,EAAE,EACnD;IACH,CAAC,EAAE,EAAE,CAAC,EANU,CAMV,CAAC;IAEP,iDAAiD;IACjD,2DAAI,CAAC,UAAC,IAAI,EAAE,IAAI;;;YACd,KAAmB,0EAAK,4EAAE;gBAArB,IAAM,IAAI;gBACb,QAAQ,IAAI,EAAE;oBAEZ,kCAAkC;oBAClC,KAAK,cAAc,CAAC;oBACpB,KAAK,WAAW;wBACd,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;4BACrD,IAAI,CAAC,IAAI,CAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;4BACpC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;yBACxB;wBACD,MAAK;oBAEP,kCAAkC;oBAClC;wBACE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW;4BACnC,IAAI,CAAC,IAAI,CAAC,GAAG,8DAAU,CAAC,wBAAsB,IAAI,MAAG,CAAC;;4BAEtD,OAAO,IAAI,CAAC,IAAI,CAAC;iBACtB;aACF;;;;;;;;;QACD,OAAO,IAAI;IACb,CAAC,CAAC;IAEF,+BAA+B;IAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAoBM,SAAS,YAAY,CAC1B,IAAe;IAEf,OAAO,WAAW;SACf,IAAI,CACH,gEAAS,CAAC,oBAAU,IAAI,QACtB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW;QACrC,CAAC,CAAC,+CAAE,CAAC,UAAU,CAAC,IAAI,CAAM,CAAC;QAC3B,CAAC,CAAC,0CAAK,CACV,EAJuB,CAIvB,CAAC,EACF,2EAAoB,EAAE,CACvB;AACL,CAAC;;;;;;;;;;;;;ACzKD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACf;AAEiB;AAa3D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,sEAAW,CAAC,EAAE,EAAE,EAAE,SAAS,aAAE,CAAC,EAA9B,CAA8B,CAAC,CAChD;AACH,CAAC;;;;;;;;;;;;;ACvDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACF;AAQnC;AAEkB;AActC;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,6DAAY,CAAC,MAAM,CAAC;SACjC,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,qEAAU,CAAC,wBAAwB,EAAE,IAAI,CAAE,EAA3C,CAA2C,CAAC,EACxD,6DAAM,CAAC,YAAE,IAAI,cAAO,EAAE,KAAK,WAAW,EAAzB,CAAyB,CAAC,EACvC,gEAAS,CAAC,YAAE,IAAI,0EAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;SACxD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAiB;YAAL,eAAC;QAAS,QAAC,IAAI,EAAE,CAAC,YAAY;IAApB,CAAoB,CAAC,EAChD,oEAAgB,CAAC,EAAE,CAAC,CACrB,EAJa,CAIb,CACF,CACF,EAVa,CAUb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC3ED;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACV;AAO3B;AAyBpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,SAAS,CACvB,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,0EAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;SACxD,IAAI,CACH,iEAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EACrB,0DAAG,CAAC,gBAAM,IAAI,QAAC,EAAE,MAAM,UAAE,CAAC,EAAZ,CAAY,CAAC,CAC5B,EAJa,CAIb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC7ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACF;AACA;AACM;AACJ;AACF;AACD;;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE+D;AACM;AAQpD;AAEe;AAcnC;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,SAAS,CACvB,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,IAAM,KAAK,GAAG,IAAI,4CAAO,EAAQ;IAEjC,6DAA6D;IAC7D,sDAAY,CAAC,QAAQ,CAAC;SACnB,IAAI,CACH,gEAAS,CAAC,gBAAM,IAAI,YAAK;SACtB,IAAI,CACH,8EAAuB,CAAC,QAAQ,CAAC,EACjC,qEAAiB,CAAC,MAAM,CAAC,CAC1B,EAJiB,CAIjB,CACF,CACF;SACE,SAAS,EAAE;IAEhB,qBAAqB;IACrB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,oEAAS,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EAArC,CAAqC,CAAC,EACtD,0DAAG,CAAC,cAAI,IAAI,YAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAhB,CAAgB,CAAC,CAC9B;AACH,CAAC;;;;;;;;;;;;;ACrFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACV;AAa3B;AA2CpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,EAAoD;QAAlD,oBAAO,EAAE,gBAAK,EAAE,wBAAS,EAAE,oBAAO;IAEpC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,6CAA6C;QAC7C,IAAI,MAAM,EAAE;YACV,OAAO,gEAAY,CAAC,EAAE,EAAE,EAAE,KAAK,SAAE,SAAS,aAAE,CAAC;iBAC1C,IAAI,CACH,gEAAY,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,CAAC,EAC7B,0DAAG,CAAC,iBAAO,IAAI,QAAC,EAAE,OAAO,WAAE,CAAC,EAAb,CAAa,CAAC,CAC9B;YAEL,4CAA4C;SAC3C;aAAM;YACL,IAAM,GAAG,GAAG,+DAAW,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,OAAO,wEAAoB,CAAC,GAAG,CAAC;iBAC7B,IAAI,CACH,wEAAoB,CAAC,GAAG,CAAC,EACzB,0DAAG,CAAC,eAAK,IAAI,QAAC,EAAE,KAAK,SAAE,CAAC,EAAX,CAAW,CAAC,CAC1B;SACJ;IACH,CAAC,CAAC,CACH,EAtBa,CAsBb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;ACvHD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqE;AACzB;AA8B/C;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAAyC;QAAvC,kBAAM,EAAE,kBAAM,EAAE,oBAAO;IAEzB,OAAO,iDAAI,CACT,gEAAS,CAAC,cAAM,iEAAa,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACrD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAe;YAAf,gEAAe,EAAd,aAAK,EAAE,cAAM;QAAM,QAAC,EAAE,KAAK,SAAE,MAAM,UAAE,CAAC;IAAnB,CAAmB,CAAC,CAC9C,EAHa,CAGb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;AACA;AACC;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE0C;AAMtB;AAQH;AAKJ;AAahB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,gBAAgB,CAC9B,EAAqC,EAAE,OAA0B;QAA/D,YAAG;IAAkC,sCAA0B;IAEjE,IAAM,OAAO,GAAG,6DAAS,CAAC,QAAQ,CAAC;IACnC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE;QACV,IAAM,MAAM,GAAG,oEAAgB,CAAC,EAAE,EAAE,OAAO,CAAC;QAE5C,sCAAsC;QACtC,MAAM;aACH,IAAI,CACH,8EAAuB,CAAC,OAAO,CAAC,EAChC,0DAAG,CAAkC,UAAC,EAAS;gBAAP,gBAAK;YAAO,QAAC;gBACnD,IAAI,EAAE,yDAAiB,CAAC,KAAK;gBAC7B,IAAI,EAAE,KAAK;aACZ,CAAC;QAHkD,CAGlD,CAAC,CACJ;aACE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElC,4BAA4B;QAC5B,MAAM;aACH,IAAI,CACH,8EAAuB,CAAC,OAAO,CAAC,EAChC,qEAAc,CAAC,OAAO,CAAC,CACxB;aACE,SAAS,CAAC,UAAC,EAAmB;gBAAnB,gEAAmB,EAAhB,mBAAK,EAAI,cAAM;YAC5B,IAAI,KAAK;gBACP,6DAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5B,CAAC,CAAC;QAEN,yBAAyB;QACzB,OAAO,MAAM;IACf,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACpGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0C;AAOtB;AAEwC;AAEzB;AAEtC;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,gBAAgB;IAC9B,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,2EAAgB,CAAC,EAAE,CAAC;SACjC,IAAI,CACH,kEAAW,CAAC,sDAAY,CAAC,cAAc,CAAC,CAAC,EACzC,0DAAG,CAAC,2DAAe,CAAC,EACpB,4DAAK,CAAC,SAAS,CAAC,CACjB,EALa,CAKb,CACF,EACD,gEAAS,CAAC,SAAS,CAAC,CACrB;AACH,CAAC;;;;;;;;;;;;;ACvDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE6B;AACyB;AAOlC;AAQH;AAIJ;AAahB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,iBAAiB,CAC/B,EAAqC,EAAE,EAAwB;QAA7D,YAAG;QAAoC,kBAAM;IAE/C,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE;QACV,IAAM,SAAS,GAAG,EAAE,CAAC,aAAc;QAEnC,4DAA4D;QAC5D,IAAM,MAAM,GAAG,sEAAkB,CAAC,SAAS,CAAC;aACzC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAK;gBAAH,QAAC;YACN,OAAO,CAAC,IAAI,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,GAAG,EAAE;QAClE,CAAC,CAAC,EACF,2EAAoB,EAAE,EACtB,6DAAM,CAAC,8CAAQ,CAAC,CACjB;QAEH,0BAA0B;QAC1B,OAAO,GAAG;aACP,IAAI,CACH,6DAAM,CAAC,6DAAqB,CAAC,EAC7B,4DAAK,CAAC,MAAM,CAAC,EACb,qEAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,UAAE,MAAM,UAAE,CAAC,CAC1C;IACL,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0D;AACd;AAO3B;AA0BpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,SAAS,CACvB,EAA6C;QAA3C,oBAAO,EAAE,wBAAS,EAAE,oBAAO;IAE7B,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,wCAAwC;QACxC,IAAI,MAAM,EAAE;YACV,OAAO,mEAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;iBAC/C,IAAI,CACH,iEAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EACrB,0DAAG,CAAC,gBAAM,IAAI,QAAC,EAAE,MAAM,UAAE,CAAC,EAAZ,CAAY,CAAC,CAC5B;YAEL,wCAAwC;SACvC;aAAM;YACL,OAAO,+CAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC5B;IACH,CAAC,CAAC,CACH,EAjBa,CAiBb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC3FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAQU;AACkC;AAa3B;AA0CpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,EAAmD;QAAjD,oBAAO,EAAE,gBAAK,EAAE,wBAAS,EAAE,oBAAO;IAEpC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,oDAAoD;QACpD,IAAI,MAAM,EAAE;YACV,IAAM,GAAG,GAAG,+DAAW,CAAoB,eAAe,EAAE,EAAE,CAAC;YAE/D,6BAA6B;YAC7B,IAAM,QAAQ,GAAG,gEAAY,CAAC,EAAE,EAAE,EAAE,KAAK,SAAE,SAAS,aAAE,CAAC;iBACpD,IAAI,CACH,gEAAY,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,CAAC,CAC9B;YAEH,8CAA8C;YAC9C,IAAM,QAAQ,GAAG,mEAAe,CAAC,GAAG,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;iBAC1D,IAAI,CACH,mEAAe,CAAC,GAAG,CAAC,CACrB;YAEH,0CAA0C;YAC1C,OAAO,0DAAa,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBACvC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAkB;oBAAlB,gEAAkB,EAAjB,eAAO,EAAE,eAAO;gBAAM,QAAC,EAAE,OAAO,WAAE,OAAO,WAAE,CAAC;YAAtB,CAAsB,CAAC,CACpD;YAEL,2CAA2C;SAC1C;aAAM;YACL,OAAO,+CAAE,CAAC,EAAE,CAAC;SACd;IACH,CAAC,CAAC,CACH,EA/Ba,CA+Bb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;ACrID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEH,kDAAkD;AAClD,iBAAiB;AAEgB;AACG;AAEN;AAQjB;AAmBU;AAiBD;AACuB;AAEW;AAerC;AACsC;AACF;AAOvC;AACoB;AACa;AAEjD,+EAA+E;AAE/E,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAClD,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAE5C,kBAAkB;AAClB,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAClD,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAE/C;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,UAAU,CAAC,MAAe;;IACxC,IAAI,CAAC,2DAAQ,CAAC,MAAM,CAAC;QACnB,MAAM,IAAI,WAAW,CAAC,4BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAG,CAAC;IAE3E,sCAAsC;IACtC,IAAM,SAAS,GAAG,kEAAa,EAAE;IACjC,IAAM,KAAK,GAAO,sEAAiB,EAAE;IACrC,IAAM,SAAS,GAAG,kEAAa,EAAE;IACjC,IAAM,OAAO,GAAK,+DAAU,CAAC,oBAAoB,CAAC;IAClD,IAAM,OAAO,GAAK,+DAAU,CAAC,qBAAqB,CAAC;IAEnD,+BAA+B;IAC/B,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;QACtC,CAAC,CAAC,kEAAa,CAAC,EAAE,SAAS,aAAE,CAAC;QAC9B,CAAC,CAAC,kEAAa,EAAE;IAEnB,2BAA2B;IAC3B,iEAAY,CAAC;QACX,QAAQ;QACR,QAAQ,CAA2B,uBAAuB;KAC3D,EAAE,EAAE,SAAS,aAAE,CAAC;IAEjB,8BAA8B;IAC9B,kEAAe,CAAC;QACd,WAAW;QACX,QAAQ;QACR,cAAc;QACd,MAAM;QACN,MAAM;QACN,YAAY;QACZ,QAAQ;QACR,cAAc;QACd,cAAc;QACd,eAAe;QACf,MAAM;QACN,KAAK,CAA8B,uBAAuB;KAC3D,EAAE,EAAE,SAAS,aAAE,CAAC;IAEjB,6EAA6E;IAE7E,IAAM,MAAM,GAAG,kEAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACrD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS;KAC7B,CAAC;IAEF,6EAA6E;IAE7E,8BAA8B;IAC9B,IAAM,OAAO,GAAG,+DAAY,CAAC,QAAQ,CAAC;SACnC,IAAI,CACH,8DAAW,CAAC,EAAE,SAAS,aAAE,CAAC,EAC1B,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,wBAAwB;IACxB,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,CAAC,MAAM,CAAC,EACxB,kEAAW,CAAC,CAAC,CAAC,CAAC,+CAA+C;KAC/D;IAEH,wBAAwB;IACxB,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,EAAE,EAClB,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,yBAAyB;IACzB,IAAM,OAAO,GAAG,+DAAY,CAAC,eAAe,CAAC;SAC1C,IAAI,CACH,oEAAiB,CAAC,MAAM,EAAE,EAAE,MAAM,UAAE,CAAC,EACrC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,OAAO,GAAG,+DAAY,CAAC,QAAQ,CAAC;SACnC,IAAI,CACH,8DAAW,CAAC,EAAE,MAAM,UAAE,MAAM,UAAE,OAAO,WAAE,CAAC,EACxC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,WAAW,GAAG,+DAAY,CAAC,YAAY,CAAC;SAC3C,IAAI,CACH,kEAAe,CAAC,EAAE,OAAO,WAAE,KAAK,SAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EACvD,kEAAW,CAAC,CAAC,CAAC,CAAC,sDAAsD;KACtE;IAEH,IAAM,IAAI,GAAG,+DAAY,CAAC,KAAK,CAAC;SAC7B,IAAI,CACH,uEAAoB,CAAC,EAAE,OAAO,WAAE,KAAK,SAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EAC5D,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EAC1C,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACxC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,SAAS,GAAG,6EAAa,EAAE;IAEjC,6DAAY,CAAC,EAAE,SAAS,aAAE,KAAK,SAAE,CAAC;IAClC,6DAAY,CAAC,EAAE,SAAS,aAAE,CAAC;IAC3B,4DAAW,CAAC,EAAE,SAAS,aAAE,CAAC;IAC1B,4DAAW,CAAC,EAAE,SAAS,aAAE,CAAC;IAE1B,2DAA2D;IAC3D,+DAAc,CAAC,EAAE,SAAS,aAAE,CAAC;IAE7B,gCAAgC;IAChC,IAAM,OAAO,GAAG,wEAAW,EAAE;IAC7B,IAAM,UAAU,GAAG,+EAAc,CAAC,EAAE,SAAS,aAAE,OAAO,WAAE,CAAC;IAEzD,6EAA6E;IAE7E,yCAAyC;IACzC,yBAAyB;IACzB,+BAA+B;IAC/B,KAAK,CAAC,SAAS,CAAC;QACd,8DAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAE;YAC9B,8DAAS,CAAC,EAAE,EAAE,KAAK,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,qBAAqB;IACrB,KAAK;SACF,IAAI,CACH,gEAAS,CAAC,cAAI,IAAI,qEAAS,CAAC,QAAQ,CAAC;SAClC,IAAI,CACH,6DAAM,CAAC,WAAC,IAAI,QAAC,CAAC,OAAO,EAAT,CAAS,CAAC,EAAE,cAAc;IACtC,0DAAG,CAAC,gBAAM,IAAI,qEAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAxB,CAAwB,CAAC,EACvC,4DAAK,CAAC,GAAG,CAAC,EAAE,qDAAqD;IACjE,4DAAK,CAAC,IAAI,CAAC,CACZ,EANe,CAMf,CACF,CACF;SACE,SAAS,CAAC,cAAI;QACb,+DAAU,CAAC,WAAQ,IAAI,QAAI,CAAE,CAAC,cAAc,EAAE;IAChD,CAAC,CAAC;IAEN,sDAAsD;IACtD,qBAAqB;IACrB,IAAM,OAAO,GAAG,8DAAS,CAAC,QAAQ,CAAC;IACnC,0DAAa,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,gEAAS,CAAC,wDAAW,CAAC,CAAC;QACpC,OAAO;KACR,CAAC;SACC,IAAI,CACH,qEAAc,CAAC,SAAS,CAAC,EACzB,gEAAS,CAAC,UAAC,EAAoC;YAApC,gEAAoC,EAAnC,mEAAgB,EAAf,cAAM,EAAE,cAAM,EAAe,kBAAC;QACzC,IAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM;QAChC,OAAO,SAAS;aACb,IAAI,CACH,4DAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,6CAA6C;QACxE,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;gBAAN,cAAI;YAAO,aAAM;gBACtB,CAAC,CAAC,6DAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxB,CAAC,CAAC,+DAAe,CAAC,IAAI,CAAC;QAFP,CAEO,CACxB,CACF;IACL,CAAC,CAAC,CACH;SACE,SAAS,EAAE;IAYhB,SAAS,cAAc,CAAC,EAA2B;QACjD,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI;QAClC,sBAAsB;QACtB,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,gCAAgC;SACrH;IACH,CAAC;IAED,gBAAgB;IAChB,SAAS,YAAY,CAAC,EAA2B;QAC/C,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;IAChE,CAAC;IAED,SAAS,YAAY,CACnB,EAAiB,EAAE,EAAiB;YAAlC,UAAM;YAAa,UAAM;QAE3B,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;IAC1B,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;QAE1B,qEAAqE;QACrE,IAAI,mBAAmB,IAAI,OAAO;YAChC,OAAO,CAAC,iBAAiB,GAAG,QAAQ;;YAEtC,0CAA0C;YAC1C,KAAuB;gBACrB,6BAA2B;gBAC3B,0BAAwB;aACzB;gBAHI,IAAM,QAAQ;;oBAIjB,KAAiB,+IAAW,CAAkB,QAAQ,CAAC;wBAAlD,IAAM,EAAE;wBACX,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;qBAAA;;;;;;;;;aAAA;;;;;;;;;QAErB,oCAAoC;QACpC,IAAM,SAAS,GAAG,sDAAS,CAAa,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;aAC5D,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,QAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EACzC,gEAAS,CAAC,YAAE;YACV,IAAI,EAAE,CAAC,MAAM,YAAY,WAAW,EAAE;gBACpC,IAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBACjC,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;wBACnB,EAAE,CAAC,cAAc,EAAE;oBACrB,OAAO,+CAAE,CAAC,EAAE,CAAC,IAAI,CAAC;iBACnB;aACF;YACD,OAAO,0CAAK;QACd,CAAC,CAAC,EACF,2EAAoB,EAAE,EACtB,0DAAG,CAAgB,cAAI,IAAI,QAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAxB,CAAwB,CAAC,EACpD,4DAAK,EAAE,CACR;QAEH,0CAA0C;QAC1C,IAAM,SAAS,GAAG,SAAS;aACxB,IAAI,CACH,6DAAM,CAAC,UAAC,EAAO;gBAAL,YAAG;YAAO,QAAC,YAAY,CAAC,GAAG,CAAC;QAAlB,CAAkB,CAAC,EACvC,4DAAK,EAAE,CACR;QAEH,0DAA0D;QAC1D,IAAM,SAAS,GAAG,sDAAS,CAAgB,MAAM,EAAE,UAAU,CAAC;aAC3D,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,SAAE,CAAC,KAAK,KAAK,IAAI,EAAjB,CAAiB,CAAC,EAC/B,0DAAG,CAAuB,YAAE,IAAI,QAAC;YAC/B,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,EAAE,CAAC,KAAK;SACf,CAAC,EAH8B,CAG9B,CAAC,EACH,4DAAK,EAAE,CACR;QAEH,0BAA0B;QAC1B,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,4DAAK,CAAC,KAAK,CAAC,CACb;aACE,SAAS,CAAC,SAAS,CAAC;QAEzB,oCAAoC;QACpC,SAAS;aACN,IAAI;QACH,2EAA2E;QAC3E,2EAAoB,CAAC,YAAY,CAAC,EAClC,6DAAM,CAAC,UAAC,EAAO;gBAAL,YAAG;YAAO,QAAC,YAAY,CAAC,GAAG,CAAC;QAAlB,CAAkB,CAAC,CACxC;aACE,SAAS,CAAC,UAAC,EAAO;gBAAL,YAAG;YACf,qCAAqC;YACrC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC,CAAC;QAEN,eAAe;QACf,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,kEAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAKlB;aACE,SAAS,CAAC,UAAC,EAAY;gBAAZ,gEAAY,EAAX,YAAI,EAAE,YAAI;YACrB,OAAO,CAAC,GAAG,CAAC,QAAM,IAAI,CAAC,GAAK,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,QAAM,IAAI,CAAC,GAAK,CAAC;YAE7B,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;gBAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACtB;gBACA,4FAA4F;gBAC5F,sEAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACzC;YACC,qCAAqC;QACzC,CAAC,CAAC;QACF,2EAA2E;QAC/E,iCAAiC;QACjC,2DAA2D;QAC3D,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,sDAAsD;QACtD,iDAAiD;QACjD,MAAM;QACN,gCAAgC;QAChC,sCAAsC;QACtC,SAAS;QAET,2DAA2D;QAC3D,SAAS;aACN,IAAI,CACH,mEAAY,CAAC,GAAG,CAAC,EACjB,8EAAuB,CAAC,QAAQ,CAAC,CAClC;aACE,SAAS,CAAC,UAAC,EAAU;gBAAR,kBAAM;YAClB,gCAAgC;YAChC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,CAAC,CAAC;QAEN,MAAM;QACN,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,6DAAM,CAAC,SAAS,CAAC,EACjB,qEAAc,CAAC,SAAS,CAAC,CAC1B;aACE,SAAS,CAAC,UAAC,EAAgC;;gBAAhC,gEAAgC,EAA/B,UAAa,EAAX,YAAG,EAAE,cAAI,EAAI,UAAe,EAAb,gBAAK,EAAE,cAAI;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;YAEnC,uBAAuB;YACvB,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAE3D,mBAAmB;YACnB,QAAQ,CAAC,KAAK,GAAG,KAAK;;gBAEtB,oBAAoB;gBACpB,KAAuB;oBACrB,yBAAuB;oBACvB,uBAAqB;oBACrB,4BAA0B;iBAC3B,6CAAE;oBAJE,IAAM,QAAQ;oBAKjB,IAAM,IAAI,GAAG,+DAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;oBACvC,IAAM,IAAI,GAAG,+DAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;oBAChD,IACE,OAAO,IAAI,KAAK,WAAW;wBAC3B,OAAO,IAAI,KAAK,WAAW,EAC3B;wBACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;qBACvB;iBACF;;;;;;;;;YAED,sBAAsB;YACtB,8DAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAE;gBAC9B,8DAAS,CAAC,EAAE,EAAE,KAAK,CAAC;YACtB,CAAC,CAAC;YAEF,wCAAwC;YACxC,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC;gBAC/B,IAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;gBACrC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;gBACjB,CAAC,CAAC,KAAK,EAAE;aACV;iBAAM;gBACL,sEAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,cAAc;aACnD;QACH,CAAC,CAAC;QAEN,qCAAqC;QACrC,mCAAmC;QACnC,KAAK;QAEL,qCAAqC;QACrC,mCAAmC;QACnC,KAAK;QAEL,SAAS,CAAC,SAAS,CAAC,UAAC,EAAO;gBAAL,YAAG;YACxB,OAAO,CAAC,GAAG,CAAC,cAAY,GAAG,CAAC,IAAM,EAAE,GAAG,CAAC;QAC1C,CAAC,CAAC;KACH;IAED,6EAA6E;IAE7E,mEAAmE;IACnE,kCAAkC;IAClC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,aAAG,IAAI,UAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAnD,CAAmD,CAAC,EAClE,2DAAI,CAAC,CAAC,CAAC,CACR;SACA,SAAS,CAAC;;;YACT,KAAmB,gIAAW,CAAC,aAAa,CAAC;gBAAxC,IAAM,IAAI;gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;aAAA;;;;;;;;;IACrC,CAAC,CAAC;IAEJ,6EAA6E;IAE7E,IAAM,KAAK,GAAG;QACZ,OAAO;QACP,UAAU;QACV,SAAS;QACT,KAAK;QACL,SAAS;QACT,OAAO;QACP,KAAK;QACL,WAAW;QACX,IAAI;QACJ,KAAK;QACL,KAAK;QACL,MAAM,SAAC,qBAAqB;KAC7B;IAED,IAAQ,sEAAiB;IACzB,0CAAK,sEAAI,oDAAM,CAAC,IAAI,CAAC,GAClB,SAAS,EAAE,EAAC,sCAAsC;IAErD,OAAO;QACL,SAAS;QACT,KAAK;KACN;AACH,CAAC;;;;;;;;;;;;;AC3iBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqC;AAC2B;AACjB;AAET;AACE;AACN;AAcrC;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,cAAc,CAC5B,EAAoC;QAAlC,wBAAS,EAAE,oBAAO;IAEpB,IAAI,CAAC,qDAAuB,EAAE;QAC5B,OAAO,0CAAK;IAEd,wCAAwC;IACxC,SAAS,CAAC,SAAS,CAAC;;QAClB,IAAM,MAAM,GAAG,+DAAW,CAAC,YAAY,CAAC;;YACxC,KAA6B,sEAAM,CAAC,OAAO,EAAE,6CAAE;gBAApC,0EAAc,EAAb,aAAK,EAAE,aAAK;gBACtB,IAAM,MAAM,GAAG,KAAK,CAAC,aAAc;gBACnC,MAAM,CAAC,EAAE,GAAG,YAAU,KAAO;gBAC7B,MAAM,CAAC,YAAY,CAAC,iEAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;aACvD;;;;;;;;;IACH,CAAC,CAAC;IAEF,oCAAoC;IACpC,IAAM,UAAU,GAAG,6DAAgB,CAAoB,cAAI;QACzD,IAAI,sCAAW,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IACtD,CAAC,CAAC;SACC,IAAI,CACH,4DAAK,EAAE,CACR;IAEH,8CAA8C;IAC9C,UAAU;SACP,IAAI,CACH,0DAAG,CAAC,YAAE,IAAI,SAAE,CAAC,cAAc,EAAE,EAAnB,CAAmB,CAAC,EAC9B,4DAAK,CAAC,2DAAS,CAAC,kBAAkB,CAAC,CAAC,CACrC;SACE,SAAS,CAAC,OAAO,CAAC;IAEvB,sBAAsB;IACtB,OAAO,UAAU;AACnB,CAAC;;;;;;;;;;;;;AC1FD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEwD;AAQpC;AAevB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAA+B;QAA7B,6CAAQ;IAEV,IAAM,OAAO,GAAG,IAAI,4CAAO,EAAU;IAErC,mBAAmB;IACnB,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAkC,wBAAwB;IACtG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;IAE/C,oBAAoB;IACpB,OAAO;SACJ,IAAI,CACH,gEAAS,CAAC,cAAI,IAAI,sDAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B;SAC7D,IAAI,CACH,0DAAG,CAAC,mBAAS,IAAI,gBAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAA7B,CAA6B,CAAC,EAC/C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,4DAAK,CAAC,CAAC,CAAC,EAAE,6EAA6E;IACvF,0DAAG,CAAC,YAAE;QACJ,EAAE,CAAC,SAAS,GAAG,IAAI;QACnB,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAC1C,CAAC,CAAC,EACF,4DAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,EACvB,0DAAG,CAAC,YAAE,IAAI,SAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAAnC,CAAmC,CAAC,EAC9C,4DAAK,CAAC,GAAG,CAAC,EACV,0DAAG,CAAC,YAAE;QACJ,EAAE,CAAC,SAAS,GAAG,EAAE;QACjB,EAAE,CAAC,MAAM,EAAE;IACb,CAAC,CAAC,CACH,EAhBe,CAgBf,CACF,CACF;SACE,SAAS,EAAE;IAEhB,2BAA2B;IAC3B,OAAO,OAAO;AAChB,CAAC;;;;;;;;;;;;;AC3FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AASoB;AAEkB;AAarB;AAsBpB;;+EAE+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACI,SAAS,aAAa;IAC3B,IAAM,OAAO,GAAG,6DAAS,CAAC,QAAQ,CAAC;IACnC,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,gEAAS,CAAC,uDAAW,CAAC,CACvB;IAEH,uCAAuC;IACvC,IAAM,SAAS,GAAG,iEAAa,EAAE;SAC9B,IAAI,CACH,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAa;YAAb,gEAAa,EAAZ,WAAG,EAAE,cAAM;QAAgB,QAAC,yDAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAC/B,GAAG,EACN;IAH+B,CAG/B,CAAC,EACH,4DAAK,EAAE,CACR;IAEH,oCAAoC;IACpC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,WAAI,KAAK,QAAQ;IAAjB,CAAiB,CAAC,EACvC,qEAAc,CACZ,OAAO,EACP,+DAAY,CAAC,cAAc,CAAC,EAC5B,+DAAY,CAAC,eAAe,CAAC,CAC9B,CACF;SACE,SAAS,CAAC,UAAC,EAA4B;YAA5B,gEAA4B,EAA3B,WAAG,EAAE,cAAM,EAAE,aAAK,EAAE,cAAM;QACrC,IAAM,MAAM,GAAG,oEAAgB,EAAE;QACjC,QAAQ,GAAG,CAAC,IAAI,EAAE;YAEhB,oCAAoC;YACpC,KAAK,OAAO;gBACV,IAAI,MAAM,KAAK,KAAK;oBAClB,GAAG,CAAC,KAAK,EAAE;gBACb,MAAK;YAEP,iCAAiC;YACjC,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK;gBACR,6DAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxB,mEAAe,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC7B,MAAK;YAEP,4DAA4D;YAC5D,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;oBACjC,mEAAe,CAAC,KAAK,CAAC;iBACvB;qBAAM;oBACL,IAAM,GAAG,GAAG,wDAAC,KAAK,GAAK,+DAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CACpB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAC9C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjC,CACF,GAAG,GAAG,CAAC,MAAM,CAAC;oBACf,mEAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB;gBAED,+BAA+B;gBAC/B,GAAG,CAAC,KAAK,EAAE;gBACX,MAAK;YAEP,0CAA0C;YAC1C;gBACE,IAAI,KAAK,KAAK,oEAAgB,EAAE;oBAC9B,mEAAe,CAAC,KAAK,CAAC;SAC3B;IACH,CAAC,CAAC;IAEN,oCAAoC;IACpC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,UAAC,EAAQ;YAAN,cAAI;QACZ,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,IAAM,MAAM,GAAG,oEAAgB,EAAE;YACjC,IAAI,OAAO,MAAM,KAAK,WAAW;gBAC/B,OAAO,CAAC,2EAAuB,CAAC,MAAM,CAAC;SAC1C;QACD,OAAO,KAAK;IACd,CAAC,CAAC,EACF,qEAAc,CAAC,+DAAY,CAAC,cAAc,CAAC,CAAC,CAC7C;SACE,SAAS,CAAC,UAAC,EAAY;YAAZ,gEAAY,EAAX,WAAG,EAAE,aAAK;QACrB,QAAQ,GAAG,CAAC,IAAI,EAAE;YAEhB,kCAAkC;YAClC,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,mEAAe,CAAC,KAAK,CAAC;gBACtB,uEAAmB,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,EAAE;gBACX,MAAK;YAEP,yBAAyB;YACzB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,IAAM,IAAI,GAAG,8DAAU,CAAC,kBAAkB,CAAC;gBAC3C,IAAI,OAAO,IAAI,KAAK,WAAW;oBAC7B,IAAI,CAAC,KAAK,EAAE;gBACd,MAAK;YAEP,qBAAqB;YACrB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,IAAM,IAAI,GAAG,8DAAU,CAAC,kBAAkB,CAAC;gBAC3C,IAAI,OAAO,IAAI,KAAK,WAAW;oBAC7B,IAAI,CAAC,KAAK,EAAE;gBACd,MAAK;SACR;IACH,CAAC,CAAC;IAEN,qBAAqB;IACrB,OAAO,SAAS;AAClB,CAAC;;;;;;;;;;;;;AC5MD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuD;AACP;AAEJ;AAa/C;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,aAAa,CAC3B,EAAgC;QAA9B,+CAAS;IAEX,OAAO,kDAAK,CACV,sDAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;SACpC,IAAI,CACH,4DAAK,CAAC,QAAQ,CAAC,CAChB,EACH,OAAO,SAAS,KAAK,WAAW;QAC9B,CAAC,CAAC,mEAAmB,CAAC,EAAE,SAAS,aAAE,CAAC;QACpC,CAAC,CAAC,0CAAK,CACV;SACE,IAAI,CACH,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;;;;;;;;;;;;;ACvBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqC;AACR;AAQT;AAEqB;AAa5C;;+EAE+E;AAE/E;;;;;;;;;;;;;GAaG;AACI,SAAS,mBAAmB,CACjC,EAA2B;QAAzB,wBAAS;IAEX,OAAO,SAAS;SACb,IAAI,CACH,8EAAuB,CAAC,UAAU,CAAC,EACnC,2DAAI,CAAC,CAAC,CAAC;IAEP,oBAAoB;IACpB,gEAAS,CAAC,aAAG,IAAI,6DAAI,CAAC;QACpB,GAAG,EAAE,GAAG,CAAC,IAAI;QACb,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,IAAI;KACtB,CAAC;SACC,IAAI,CACH,4DAAK,CAAC,UAAU,CAAC,EACjB,iEAAU,CAAC;QACT,6DAAW,CAAC,GAAG,CAAC;QAChB,OAAO,0CAAK;IACd,CAAC,CAAC,CACH,EAXc,CAWd,CACF,EACD,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACxFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,UAAU,CACxB,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,OAAO,IAAI,CAAC,aAAa,CAAI,QAAQ,CAAC,IAAI,SAAS;AACrD,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,iBAAiB,CAC/B,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,IAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,EAAE,IAAI,CAAC;IACxC,IAAI,OAAO,EAAE,KAAK,WAAW;QAC3B,MAAM,IAAI,cAAc,CACtB,iCAA8B,QAAQ,qBAAiB,CACxD;IACH,OAAO,EAAE;AACX,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB;IAC9B,OAAO,QAAQ,CAAC,aAAa,YAAY,WAAW;QAClD,CAAC,CAAC,QAAQ,CAAC,aAAa;QACxB,CAAC,CAAC,SAAS;AACf,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,WAAW,CACzB,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAI,QAAQ,CAAC,CAAC;AACvD,CAAC;;;;;;;;;;;;;ACxFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACW;AAEvB;AAEvC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAqB;IAArB,oCAAqB;IAEtC,IAAI,KAAK;QACP,EAAE,CAAC,KAAK,EAAE;;QAEV,EAAE,CAAC,IAAI,EAAE;AACb,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,IAAM,MAAM,GAAG,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC;IACrC,IAAM,KAAK,GAAI,sDAAS,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpC,iCAAiC;IACjC,OAAO,kDAAK,CACV,MAAM,CAAC,IAAI,CAAC,4DAAK,CAAC,IAAI,CAAC,CAAC,EACxB,KAAK,CAAC,IAAI,CAAC,4DAAK,CAAC,KAAK,CAAC,CAAC,CACzB;SACE,IAAI,CACH,gEAAS,CAAC,EAAE,KAAK,0DAAgB,EAAE,CAAC,EACpC,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;AACC;AACA;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACS;AAc5D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAAC,EAAe;IAC9C,OAAO;QACL,CAAC,EAAE,EAAE,CAAC,UAAU;QAChB,CAAC,EAAE,EAAE,CAAC,SAAS;KAChB;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,OAAO,kDAAK,CACV,sDAAS,CAAU,EAAE,EAAE,QAAQ,CAAC,EAChC,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,CACrC;SACE,IAAI,CACH,0DAAG,CAAC,cAAM,uBAAgB,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAC/B,gEAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;AC5ED;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,mBAAmB,CACjC,EAAe;IAEf,IAAI,EAAE,YAAY,gBAAgB;QAChC,EAAE,CAAC,MAAM,EAAE;;QAEX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AACtC,CAAC;;;;;;;;;;;;;ACtCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuB;AACD;AACC;AACA;AACH;AACG;AACF;;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACO;AAcnD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,uBAAuB,CAAC,EAAe;IACrD,QAAQ,EAAE,CAAC,OAAO,EAAE;QAElB,mBAAmB;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACb,OAAO,IAAI;QAEb,qBAAqB;QACrB;YACE,OAAO,EAAE,CAAC,iBAAiB;KAC9B;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,sDAAS,CAAgB,MAAM,EAAE,SAAS,CAAC;SAC/C,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,QAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EACzC,0DAAG,CAAC,YAAE,IAAI,QAAC;QACT,IAAI,EAAE,EAAE,CAAC,GAAG;QACZ,KAAK;YACH,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,eAAe,EAAE;QACtB,CAAC;KACF,CAAC,EANQ,CAMR,CAAC,EACH,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEmC;AAEtC;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,WAAW;IACzB,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACI,SAAS,WAAW,CAAC,GAAQ;IAClC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AAC1B,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,IAAI,oDAAe,CAAM,WAAW,EAAE,CAAC;AAChD,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACkB;AAE9D;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,eAAe;IAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,iBAAiB;IAC/B,OAAO,sDAAS,CAAkB,MAAM,EAAE,YAAY,CAAC;SACpD,IAAI,CACH,0DAAG,CAAC,eAAe,CAAC,EACpB,gEAAS,CAAC,eAAe,EAAE,CAAC,EAC5B,6DAAM,CAAC,cAAI,IAAI,WAAI,CAAC,MAAM,GAAG,CAAC,EAAf,CAAe,CAAC,EAC/B,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACrDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACG;;;;;;;;;;;;;ACvBtB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACI;AAEvD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,UAAU,CAAC,KAAa;IACtC,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,OAAO,6DAAgB,CAAU,cAAI;QACnC,YAAK,CAAC,WAAW,CAAC,cAAM,WAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAnB,CAAmB,CAAC;IAA5C,CAA4C,CAC7C;SACE,IAAI,CACH,gEAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;AC7CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AAKzB;AAML;AAIF;AA0BhB;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,0DAAa,CAAC;QACnB,mEAAmB,EAAE;QACrB,+DAAiB,EAAE;KACpB,CAAC;SACC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,cAAM,EAAE,YAAI;QAAM,QAAC,EAAE,MAAM,UAAE,IAAI,QAAE,CAAC;IAAlB,CAAkB,CAAC,EAC3C,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAED;;;;;;;GAOG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,EAA4C;QAA1C,oBAAO,EAAE,wBAAS;IAErC,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,0DAAG,CAA2B,cAAM,QAAC;QACnC,CAAC,EAAE,EAAE,CAAC,UAAU;QAChB,CAAC,EAAE,EAAE,CAAC,SAAS;KAChB,CAAC,EAHkC,CAGlC,CAAC,CACJ;IAEH,sDAAsD;IACtD,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAwC;YAAxC,gEAAwC,EAArC,qBAAM,EAAI,UAAgB,EAAd,kBAAM,EAAE,cAAI,EAAI,UAAQ,EAAN,QAAC,EAAE,QAAC;QAAQ,QAAC;YACjD,MAAM,EAAE;gBACN,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;gBACf,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;aACzB;YACD,IAAI;SACL,CAAC;IANgD,CAMhD,CAAC,EACH,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACF;;;;;;;;;;;;;ACxBtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACJ;AAc/C;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,iBAAiB;IAC/B,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;KAC5B;AACH,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAiC;QAA/B,QAAC,EAAE,QAAC;IAEN,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,mBAAmB;IACjC,OAAO,kDAAK,CACV,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,EACpC,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,CACrC;SACE,IAAI,CACH,0DAAG,CAAC,iBAAiB,CAAC,EACtB,gEAAS,CAAC,iBAAiB,EAAE,CAAC,CAC/B;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACG;AAc/C;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,eAAe;IAC7B,OAAO;QACL,KAAK,EAAG,UAAU;QAClB,MAAM,EAAE,WAAW;KACpB;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,iBAAiB;IAC/B,OAAO,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC;SACxC,IAAI,CACH,0DAAG,CAAC,eAAe,CAAC,EACpB,gEAAS,CAAC,eAAe,EAAE,CAAC,CAC7B;AACL,CAAC;;;;;;;;;;;;;AClED;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyD;AAOrC;AAuCvB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,WAAW,CACzB,MAAc,EAAE,EAAwB;QAAtB,YAAG;IAGrB,iDAAiD;IACjD,IAAM,GAAG,GAAG,6DAAgB,CAAQ,cAAI;QACtC,aAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;IAAxC,CAAwC,CACzC;SACE,IAAI,CACH,4DAAK,CAAW,MAAM,CAAC,CACxB;IAEH,sDAAsD;IACtD,OAAO,GAAG;SACP,IAAI,CACH,+DAAQ,CAAC,cAAM,UAAG,EAAH,CAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACtD,0DAAG,CAAC,iBAAO,IAAI,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EAC3C,kEAAW,CAAC,GAAG,CAAC,EAChB,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACzGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE4B;AAOlB;AAYU;AAOP;AAE+B;AA2B/C;;+EAE+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACI,SAAS,eAAe,CAC7B,GAAwB,EAAE,EAAoC;;QAAlC,oBAAO,EAAE,wBAAS;IAE9C,IAAM,KAAK,GAAG,IAAI,GAAG,EAAkC;;QACvD,KAAiB,sEAAG,kEAAE;YAAjB,IAAM,EAAE;YACX,IAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnD,IAAM,MAAM,GAAG,yDAAU,CAAC,WAAQ,EAAE,QAAI,CAAC;YACzC,IAAI,OAAO,MAAM,KAAK,WAAW;gBAC/B,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;SACxB;;;;;;;;;IAED,6CAA6C;IAC7C,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,0DAAG,CAAC,gBAAM,IAAI,SAAE,GAAG,MAAM,CAAC,MAAM,EAAlB,CAAkB,CAAC,CAClC;IAEH,oDAAoD;IACpD,IAAM,UAAU,GAAG,SAAS;SACzB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC;IAE/B,yDAAyD;IACzD,0DAAG,CAAC;QACF,IAAI,IAAI,GAAwB,EAAE;QAClC,OAAO,uDAAI,KAAK,EAAE,MAAM,CAAC,UAAC,KAAK,EAAE,EAAgB;gBAAhB,gEAAgB,EAAf,cAAM,EAAE,cAAM;YAC9C,OAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAE;gBAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;oBAClC,IAAI,CAAC,GAAG,EAAE;iBACX;qBAAM;oBACL,MAAK;iBACN;aACF;YAED,+DAA+D;YAC/D,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS;YAC7B,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;gBACtC,MAAM,GAAG,MAAM,CAAC,aAAa;gBAC7B,MAAM,GAAG,MAAM,CAAC,SAAS;aAC1B;YAED,iDAAiD;YACjD,OAAO,KAAK,CAAC,GAAG,CACd,qDAAO,CAAC,IAAI,GAAG,uDAAI,IAAI,GAAE,MAAM,EAAC,CAAC,EACjC,MAAM,CACP;QACH,CAAC,EAAE,IAAI,GAAG,EAA+B,CAAC;IAC5C,CAAC,CAAC;IAEF,uDAAuD;IACvD,gEAAS,CAAC,eAAK,IAAI,iEAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACnD,IAAI,CACH,2DAAI,CAAC,UAAC,EAAY,EAAE,EAA2B;YAAzC,gEAAY,EAAX,YAAI,EAAE,YAAI;YAAG,gEAA2B,EAA1B,cAAM,EAAc,kBAAC;QAExC,kBAAkB;QAClB,OAAO,IAAI,CAAC,MAAM,EAAE;YACZ,yEAAoB,EAAjB,cAAiB;YAC1B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,GAAG,uDAAI,IAAI,GAAE,IAAI,CAAC,KAAK,EAAG,EAAC;aAChC;iBAAM;gBACL,MAAK;aACN;SACF;QAED,mBAAmB;QACnB,OAAO,IAAI,CAAC,MAAM,EAAE;YACZ,uFAAkC,EAA/B,cAA+B;YACxC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;gBACxB,IAAI,GAAG,wDAAC,IAAI,CAAC,GAAG,EAAG,GAAK,IAAI,CAAC;aAC9B;iBAAM;gBACL,MAAK;aACN;SACF;QAED,sBAAsB;QACtB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,CAAC,EAAE,CAAC,EAAE,EAAE,uDAAI,KAAK,EAAE,CAAC,EACpB,2EAAoB,CAAC,UAAC,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;eACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CACH,EA/BgB,CA+BhB,CACF,CACF;IAEH,+CAA+C;IAC/C,OAAO,UAAU;SACd,IAAI,CACH,0DAAG,CAAC,UAAC,EAAY;YAAZ,gEAAY,EAAX,YAAI,EAAE,YAAI;QAAM,QAAC;YACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAM;oBAAN,gEAAM,EAAL,YAAI;gBAAM,WAAI;YAAJ,CAAI,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAM;oBAAN,gEAAM,EAAL,YAAI;gBAAM,WAAI;YAAJ,CAAI,CAAC;SACjC,CAAC;IAHoB,CAGpB,CAAC;IAEH,oCAAoC;IACpC,gEAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,0DAAG,CAAC,UAAC,EAAM;YAAN,gEAAM,EAAL,SAAC,EAAE,SAAC;QAER,iBAAiB;QACjB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;YACjC,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjE,IAAI,EAAE,EAAE;aACT;YAEH,eAAe;SACd;aAAM;YACL,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;aACrD;SACF;IACH,CAAC,CAAC,CACH;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,GAAwB;IAExB,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAc;;YAAZ,cAAI,EAAE,cAAI;;YAEf,kBAAkB;YAClB,KAAmB,wEAAI,uEAAE;gBAAd,gFAAI,EAAH,UAAE;gBACZ,iEAAiB,CAAC,EAAE,CAAC;gBACrB,+DAAe,CAAC,EAAE,CAAC;aACpB;;;;;;;;;;YAED,mBAAmB;YACnB,KAA4B,oEAAI,CAAC,OAAO,EAAE,6CAAE;gBAAjC,0EAAa,EAAZ,aAAK,EAAE,mEAAI,EAAH,UAAE;gBACpB,+DAAe,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,6DAAa,CAAC,EAAE,EAAE,IAAI,CAAC;aACxB;;;;;;;;;IACH,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;;;YACP,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,iEAAiB,CAAC,EAAE,CAAC;gBACrB,+DAAe,CAAC,EAAE,CAAC;aACpB;;;;;;;;;IACH,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACjQD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEkC;AAC8B;AA2BnE;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,WAAW,CACzB,EAAe,EAAE,EAA2B;QAAzB,wBAAS;IAE5B,OAAO,SAAS;SACb,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,gEAAS,CAAC;QACR,IAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;QACnC,IAAM,MAAM,GAAG;YACb,QAAQ;YACR,gBAAgB,CAAa,gBAAgB;SAC9C,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3B,OAAO,+CAAE,CAAC;YACR,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC;IACJ,CAAC,CAAC,CACH;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACD;;;;;;;;;;;;;ACxBvB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMU;AAC4C;AAEG;AAI5D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAU;YAAR,kBAAM;QACX,+DAAe,CAAC,EAAE,EAAE,MAAM,CAAC;IAC7B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,iEAAiB,CAAC,EAAE,CAAC;IACvB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMU;AAC4C;AAEC;AAE1D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,gBAAM;QACR,8DAAc,CAAC,EAAE,EAAE,MAAM,CAAC;IAC5B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,gEAAgB,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;AACC;AACA;AACF;AACM;AACJ;AACA;;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AACiB;AA8BjE;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,SAAS,CACvB,EAAe,EAAE,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAGrC,6CAA6C;IAC7C,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,4DAAK,CAAC,QAAQ,CAAC,CAChB;IAEH,4CAA4C;IAC5C,IAAM,OAAO,GAAG,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAA6C;YAA7C,gEAA6C,EAA5C,cAAM,EAAE,UAAmC,EAAvB,eAAC,EAAY,uBAAM;QAC3C,IAAM,GAAG,GAAM,EAAE,CAAC,SAAS;QAC3B,IAAM,MAAM,GAAG,EAAE,CAAC,YAAY,GAAG,GAAG;QACpC,OAAO,MAAM;cACT,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAM,CAAC,EAAG,MAAM,CAAC;cAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;IACtC,CAAC,CAAC,EACF,0DAAG,CAAC,gBAAM,IAAI,WAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAnB,CAAmB,CAAC,EAClC,2EAAoB,EAAE,CACvB;IAEH,qEAAqE;IACrE,IAAM,OAAO,GAAG,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAA2B;YAA3B,gEAA2B,EAA1B,cAAM,EAAc,kBAAC;QAAU,QAAC,IAAI,EAAE,CAAC,SAAS,GAAG,MAAM;IAA1B,CAA0B,CAAC,EAChE,2EAAoB,EAAE,CACvB;IAEH,sCAAsC;IACtC,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC9C,IAAI,CACH,0DAAG,CAAC,UAAC,EAAwB;YAAxB,gEAAwB,EAAvB,cAAM,EAAE,cAAM,EAAE,cAAM;QAAM,QAAC;YACjC,MAAM,EAAE,EAAE,CAAC,SAAS,GAAG,MAAM;YAC7B,MAAM;YACN,MAAM;SACP,CAAC;IAJgC,CAIhC,CAAC,CACJ;AACL,CAAC;;;;;;;;;;;;;AC7GD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEmE;AAO/C;AAEyB;AAIhD;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,MAAkB;IAAlB,mCAAkB;IAEnC,OAAO,iDAAI,CACT,0DAAG,CAAC,UAAC,EAAiB;YAAL,eAAC;QAAS,QAAC,IAAI,MAAM;IAAX,CAAW,CAAC,EACvC,2EAAoB,EAAE;IAEtB,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,eAAK;QACP,yDAAS,CAAC,EAAE,EAAE,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,2DAAW,CAAC,EAAE,CAAC;IACjB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACO;AACD;;;;;;;;;;;;;ACxBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAQU;AASU;AASP;AAqChB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,YAAY,CAC1B,EAAe,EAAE,EAAkC;QAAhC,gBAAK,EAAE,wBAAS;IAGnC,0CAA0C;IAC1C,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,0DAAG,CAAC,cAAM,iBAAU,CAClB,gBAAgB,CAAC,EAAE,CAAC,aAAc,CAAC;SAChC,gBAAgB,CAAC,aAAa,CAAC,CACnC,EAHS,CAGT,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,4CAA4C;IAC5C,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,qEAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAC9B,0DAAG,CAAC,UAAC,EAA+C;YAA/C,gEAA+C,EAAlC,kBAAC,EAAM,cAAM,EAAE,UAAkB,EAAhB,kBAAM,EAAE,kBAAM;QAAQ,QACvD,MAAM;cACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;cACzC,MAAM,CACX;IAJwD,CAIxD,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,kDAAkD;IAClD,IAAM,KAAK,GAAG,SAAS;SACpB,IAAI,CACH,qEAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAC9B,0DAAG,CAAC,UAAC,EAAuC;YAAvC,gEAAuC,EAA1B,kBAAC,EAAM,cAAM,EAAI,qBAAM;QAAQ,QAC/C,CAAC,IAAI,MAAM,GAAG,MAAM,CACrB;IAFgD,CAEhD,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,oCAAoC;IACpC,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACnC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,cAAM,EAAE,YAAI;QAAM,QAAC,EAAE,MAAM,UAAE,IAAI,QAAE,CAAC;IAAlB,CAAkB,CAAC,CAC5C;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAAe,EAAE,EAAyB;QAAvB,oBAAO;IAE1B,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAsC;YAAtC,gEAAsC,EAArC,UAAgB,EAAd,kBAAM,EAAE,cAAI,EAAM,qBAAc;QACtC,gEAAgB,CAAC,EAAE,EAAE,MAAM,CAAC;QAC5B,8DAAc,CAAC,EAAE,EAAE,IAAI,CAAC;QAExB,2DAA2D;QAC3D,IAAI,IAAI;YACN,gEAAgB,CAAC,EAAE,EAAE,MAAM,CAAC;;YAE5B,kEAAkB,CAAC,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,uBAAuB;IACvB,0DAAG,CAAC,UAAC,EAAS;YAAT,gEAAS,EAAR,eAAO;QAAM,cAAO;IAAP,CAAO,CAAC;IAE3B,gCAAgC;IAChC,+DAAQ,CAAC;QACP,kEAAkB,CAAC,EAAE,CAAC;QACtB,kEAAkB,CAAC,EAAE,CAAC;QACtB,gEAAgB,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACvLD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;;;;;;;;;;;;;ACtBvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6B;AAQnB;AAQU;AAKP;AAKI;AAcpB;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,oBAAoB,CAClC,GAAkB;;IAElB,IAAM,KAAK,GAAG,IAAI,GAAG,EAAiC;;QACtD,KAAiB,sEAAG,kEAAE;YAAjB,IAAM,EAAE;YACX,IAAM,KAAK,GAAG,yDAAU,CAAmB,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;gBAChC,IAAM,KAAK,GAAG,gEAAiB,CAAmB,MAAI,KAAK,CAAC,OAAS,CAAC;gBACtE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;aACrB;SACF;;;;;;;;;IAED,6BAA6B;IAC7B,IAAM,MAAM,GAAG,0CAAK,sEAAI,uDAAI,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,eAAK,IAAI,QACrD,sDAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,EAFsD,CAEtD,CAAC,GACC,IAAI,CACH,0DAAG,CAAC,cAAM,uEAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CACpD,sDAAQ,CAAC,UAAC,EAAW;YAAT,oBAAO;QAAO,cAAO;IAAP,CAAO,EAAE,uDAAI,KAAK,CAAC,IAAI,EAAE,EAAG,CACvD,CAAC,EAFQ,CAER,CAAC,CACJ;IAEH,oCAAoC;IACpC,OAAO,MAAM;SACV,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,QAAC,EAAE,IAAI,QAAE,CAAC,EAAV,CAAU,CAAC,EACvB,2DAAI,CAAC,UAAC,EAAc,EAAE,EAAQ;YAAtB,cAAU;YAAM,cAAI;QAAO,QAAC,EAAE,IAAI,QAAE,IAAI,QAAE,CAAC;IAAhB,CAAgB,CAAC,CACrD;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,GAAkB;IAElB,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QACT,IAAI,IAAI;YACN,sEAAsB,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC;IAEF,wCAAwC;IACxC,4DAAK,CAAC,GAAG,CAAC;IAEV,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QACT,oEAAoB,CAAC,IAAI,CAAC;IAC5B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;;;YACP,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,sEAAsB,CACpB,gEAAiB,CAAC,eAAe,EAAE,EAAE,CAAC,CACvC;aAAA;;;;;;;;;IACL,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AClJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;AACA;AACC;;;;;;;;;;;;;ACxBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE+D;AAM3C;AAEwB;AAyB/C;;+EAE+E;AAE/E;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK;SACT,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;SAC3C,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AAC9B,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,gBAAgB,CAC9B,EAAoB,EAAE,EAAgC;QAA9B,+CAAS;IAEjC,IAAM,EAAE,GAAG,SAAS,IAAI,gBAAgB;IAExC,+BAA+B;IAC/B,IAAM,MAAM,GAAG,kDAAK,CAClB,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EACtB,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,4DAAK,CAAC,CAAC,CAAC,CAAC,CACtC;SACE,IAAI,CACH,0DAAG,CAAC,cAAM,SAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC,EACvB,gEAAS,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EACvB,2EAAoB,EAAE,CACvB;IAEH,4BAA4B;IAC5B,IAAM,MAAM,GAAG,gEAAiB,CAAC,EAAE,CAAC;IAEpC,sCAAsC;IACtC,OAAO,0DAAa,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,aAAK,EAAE,aAAK;QAAM,QAAC,EAAE,KAAK,SAAE,KAAK,SAAE,CAAC;IAAlB,CAAkB,CAAC,CAC5C;AACL,CAAC;;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACN;AAEtC;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,OAAO,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC;SAC1B,IAAI,CACH,4DAAK,CAAC,SAAS,CAAC,CACjB;AACL,CAAC;;;;;;;;;;;;;AC3CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAOU;AASU;AAOP;AAE8B;AAEC;AAe/C;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,iBAAiB,CAC/B,EAAe,EAAE,EAAgC;QAA9B,kBAAM,EAAE,kBAAM;IAEjC,IAAM,IAAI,GAAG,gEAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC7D,IAAM,IAAI,GAAG,gEAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC7D,OAAO,iDAAI;IAET,kCAAkC;IAClC,qEAAc,CAAC,MAAM,CAAC,EACtB,0DAAG,CAAC,UAAC,EAAe;YAAf,gEAAe,EAAd,cAAM,EAAE,aAAK;QACjB,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,mEAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;SACzC;aAAM;YACL,qEAAqB,CAAC,IAAI,CAAC;SAC5B;QACD,OAAO,MAAM;IACf,CAAC,CAAC;IAEF,8BAA8B;IAC9B,gEAAS,CAAC,gBAAM,IAAI,aAAM;SACvB,IAAI;IAEH,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,2DAAI,CAAC,eAAK;QACR,IAAM,SAAS,GAAG,EAAE,CAAC,aAAc;QACnC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;YAC5B,qEAAqB,CAAC,IAAI,EAAE,oEAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,GAAG,EAAE;gBACtD,MAAK;SACR;QACD,OAAO,KAAK;IACd,CAAC,EAAE,CAAC,CAAC;IAEL,6BAA6B;IAC7B,4DAAK,CAAC,MAAM,CAAC;IAEb,gCAAgC;IAChC,+DAAQ,CAAC;QACP,qEAAqB,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC,CACH,EAtBiB,CAsBjB,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC1HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEoD;AAQhC;AAEc;AA+BrC;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,QAA+B;AAEnC;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,YAAY,CAC1B,KAAe,EAAE,EAA2B;QAAzB,wBAAS;IAE5B,QAAQ,GAAG,SAAS;SACjB,IAAI;IAEH,8BAA8B;IAC9B,2DAAI,CAAC,CAAC,CAAC;IAEP,sBAAsB;IACtB,0DAAG,CAAC,kBAAQ,IAAI,YAAK,CAAC,MAAM,CAAY,UAAC,OAAO,EAAE,IAAI;;QACpD,IAAM,EAAE,GAAG,yDAAU,CAAC,qBAAmB,IAAI,MAAG,EAAE,QAAQ,CAAC;QAC3D,OAAO,kHACF,OAAO,GACP,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,WAAG,GAAC,IAAI,IAAG,EAAE,MAAG,CAAC,CAAC,EAAE,EACnD;IACH,CAAC,EAAE,EAAE,CAAC,EANU,CAMV,CAAC;IAEP,+BAA+B;IAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,SAAS,CACvB,IAAY;IAEZ,OAAO,QAAQ;SACZ,IAAI,CACH,gEAAS,CAAC,iBAAO,IAAI,QACnB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW;QAClC,CAAC,CAAC,+CAAE,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QACpB,CAAC,CAAC,0CAAK,CACV,EAJoB,CAIpB,CAAC,EACF,2EAAoB,EAAE,CACvB;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,SAAS,CACvB,EAAoB,EAAE,KAAc;IAEpC,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK;QACtB,EAAE,CAAC,KAAK,EAAE;AACd,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAAoB;IAEpB,OAAO,sDAAS,CAAC,EAAE,EAAE,QAAQ,CAAC;SAC3B,IAAI,CACH,0DAAG,CAAC,cAAM,SAAE,CAAC,OAAO,EAAV,CAAU,CAAC,EACrB,gEAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CACtB;AACL,CAAC;;;;;;;;;;;;;ACtKD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6B;AACmB;AAM5B;AAMH;AAcpB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAAkC;QAAhC,wBAAS,EAAE,gBAAK;IAElB,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAqB,SAAS,CAAC,EAA1C,CAA0C,CAAC,CACtD;IAEH,sCAAsC;IACtC,kDAAK,CACH,8DAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,6DAAM,CAAC,8CAAQ,CAAC,CAAC,EAAE,YAAY,CACxD,sDAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY,YAAY,CACzD;SACE,IAAI,CACH,kEAAW,CAAC,IAAI,CAAC,CAClB;SACE,SAAS,CAAC,aAAG;;;YACZ,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;aAAA;;;;;;;;;IAC/B,CAAC,CAAC;IAEN,6CAA6C;IAC7C,KAAK;SACF,IAAI,CACH,0DAAG,CAAC,YAAE,IAAI,qEAAU,CAAC,WAAQ,EAAE,QAAI,CAAE,EAA3B,CAA2B,CAAC,EACtC,6DAAM,CAAC,YAAE,IAAI,cAAO,EAAE,KAAK,WAAW,EAAzB,CAAyB,CAAC,EACvC,0DAAG,CAAC,YAAE;QACJ,IAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;IACpC,CAAC,CAAC,CACH;SACE,SAAS,CAAC,YAAE,IAAI,SAAE,CAAC,cAAc,EAAE,EAAnB,CAAmB,CAAC;AAC3C,CAAC;;;;;;;;;;;;;AC9FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsB;AACD;AACG;AACH;AACD;;;;;;;;;;;;;AC1BvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGuD;AAEjB;AACA;AAazC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAA2B;QAAzB,wBAAS;IAEX,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,2DAAI,CAAC,CAAC,CAAC,EACP,qEAAc,CAAC,+DAAY,CAAC,WAAW,CAAC,CAAC,EACzC,0DAAG,CAAC,UAAC,EAAM;YAAN,gEAAM,EAAH,UAAE;QAAM,sEAAW,CAAoB,QAAQ,EAAE,EAAE,CAAC;IAA5C,CAA4C,CAAC,CAC9D;IAEH,0CAA0C;IAC1C,IAAI,CAAC,SAAS,CAAC,aAAG;;;YAChB,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,IAAI,EAAE,CAAC,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBAChD,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAC/C,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;oBACxC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;oBACrB,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;iBACvB;aACF;;;;;;;;;IACH,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE4D;AACI;AAE1B;AAazC;;+EAE+E;AAE/E;;;;GAIG;AACH,SAAS,aAAa;IACpB,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,cAAc,CAC5B,EAA2B;QAAzB,wBAAS;IAEX,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAC,qBAAqB,CAAC,EAAlC,CAAkC,CAAC,EAC7C,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6DAA6D;IAC7D,IAAI,CAAC,SAAS,CAAC,aAAG;;;YAChB,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC;aAAA;;;;;;;;;IAC3C,CAAC,CAAC;IAEF,6CAA6C;IAC7C,gDAAG,CAAC,aAAa,EAAE,IAAI,EAAE,0CAAK,CAAC;SAC5B,IAAI,CACH,gEAAS,CAAC,aAAG,IAAI,iDAAK,sEAAI,GAAG,CAAC,GAAG,CAAC,YAAE,IAAI,QACtC,sDAAS,CAAC,EAAE,EAAE,YAAY,CAAC;SACxB,IAAI,CACH,4DAAK,CAAC,EAAE,CAAC,CACV,CACJ,EALuC,CAKvC,CAAC,IALe,CAKd,CAAC,CACL;SACE,SAAS,CAAC,YAAE;QACX,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS;QAExB,uCAAuC;QACvC,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,EAAE,CAAC,SAAS,GAAG,CAAC;YAElB,0CAA0C;SACzC;aAAM,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,EAAE;YACpD,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC;SACvB;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACvGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGkC;AACL;AACyB;AAExB;AAIjC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,0BAA0B,CACxC,IAAY,EAAE,IAAa;IAE3B,OAAO,sDAAI,CAAC;QACV,GAAG,EAAE,OAAO,IAAI,KAAK,WAAW;YAC9B,CAAC,CAAC,kCAAgC,IAAI,SAAI,IAAM;YAChD,CAAC,CAAC,kCAAgC,IAAM;QAC1C,YAAY,EAAE,MAAM;KACrB,CAAC;SACC,IAAI,CACH,6DAAM,CAAC,UAAC,EAAU;YAAR,kBAAM;QAAO,aAAM,KAAK,GAAG;IAAd,CAAc,CAAC,EACtC,4DAAK,CAAC,UAAU,CAAC,EACjB,gEAAS,CAAC,cAAI;QAEZ,uBAAuB;QACvB,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YACvB,4CAAgB,EAAE,8BAAW,CAAe;YACpD,OAAO,+CAAE,CAAC;gBACL,uDAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,WAAQ;gBACpC,uDAAK,CAAC,WAAW,IAAI,CAAC,CAAC,WAAQ;aACnC,CAAC;YAEJ,8BAA8B;SAC7B;aAAM;YACG,oCAAY,CAAe;YACnC,OAAO,+CAAE,CAAC;gBACL,uDAAK,CAAC,YAAY,IAAI,CAAC,CAAC,kBAAe;aAC3C,CAAC;SACH;IACH,CAAC,CAAC,CACH;AACL,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAI6B;AACmB;AAElB;AAIjC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,0BAA0B,CACxC,IAAY,EAAE,OAAe;IAE7B,OAAO,sDAAI,CAAC;QACV,GAAG,EAAE,aAAW,IAAI,yBAAoB,kBAAkB,CAAC,OAAO,CAAG;QACrE,YAAY,EAAE,MAAM;KACrB,CAAC;SACC,IAAI,CACH,6DAAM,CAAC,UAAC,EAAU;YAAR,kBAAM;QAAO,aAAM,KAAK,GAAG;IAAd,CAAc,CAAC,EACtC,4DAAK,CAAC,UAAU,CAAC,EACjB,0DAAG,CAAC,UAAC,EAA0C;YAAxC,0BAAU,EAAE,4BAAW;QAAsB,QAAC;YAChD,uDAAK,CAAC,UAAU,CAAC,WAAQ;YACzB,uDAAK,CAAC,WAAW,CAAC,WAAQ;SAC9B,CAAC;IAHkD,CAGlD,CAAC,CACJ;AACL,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqC;AACmB;AAEC;AACpB;AACD;AAEc;AACA;AAsBrD;;+EAE+E;AAE/E;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,GAAW;IAEL,sGAA6C,EAA5C,YAA4C;IACnD,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;QAE1B,uBAAuB;QACvB,KAAK,QAAQ;YACL,mHAAkE,EAA/D,YAAI,EAAE,YAAyD;YACxE,OAAO,0EAA0B,CAAC,IAAI,EAAE,IAAI,CAAC;QAE/C,uBAAuB;QACvB,KAAK,QAAQ;YACL,8GAAgE,EAA7D,YAAI,EAAE,eAAuD;YACtE,OAAO,0EAA0B,CAAC,IAAI,EAAE,OAAO,CAAC;QAElD,qBAAqB;QACrB;YACE,OAAO,0CAAK;KACf;AACH,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,SAAS;SACN,IAAI,CACH,0DAAG,CAAC,cAAM,4EAAiB,CAAoB,kBAAkB,CAAC,EAAxD,CAAwD,CAAC,EACnE,gEAAS,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,QACtB,uDAAK,CAAC,KAAG,sDAAI,CAAC,IAAI,CAAG,EAAE,cAAM,uBAAgB,CAAC,IAAI,CAAC,EAAtB,CAAsB,CAAC,CACrD;IAFuB,CAEvB,CAAC,EACF,iEAAU,CAAC,cAAM,iDAAK,EAAL,CAAK,CAAC,CACxB;SACE,SAAS,CAAC,eAAK;;;YACd,KAAiB,+HAAW,CAAC,wBAAwB,CAAC,6CAAE;gBAAnD,IAAM,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;oBACrC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;oBACxC,EAAE,CAAC,WAAW,CAAC,8DAAY,CAAC,KAAK,CAAC,CAAC;iBACpC;aACF;;;;;;;;;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACpHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGiC;AAEK;AACF;AAavC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAChD,SAAS;SACN,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAmB,oBAAoB,CAAC,EAAnD,CAAmD,CAAC,CAC/D;SACE,SAAS,CAAC,aAAG;;;YACZ,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACxB,QAAQ,CAAC,WAAW,CAAC,6DAAW,CAAC,EAAE,CAAC,CAAC;aACtC;;;;;;;;;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqC;AAExC;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,SAAS,EAAE,sBAAsB;CAClC;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,EAAU;IAEV,IAAM,IAAI,GAAG,mBAAO,CAAC,2HAAmD,CAAC;IACzE,OAAO,CACL,gEACE,KAAK,EAAE,GAAG,CAAC,SAAS,EACpB,KAAK,EAAE,2DAAS,CAAC,gBAAgB,CAAC,2BACX,MAAI,EAAE,UAAO;QAEpC,6DAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW;YACzD,8DAAM,CAAC,EAAE,IAAI,GAAS,CAClB,CACC,CACV;AACH,CAAC;;;;;;;;;;;;;AC7DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEwB;AACH;AACA;AACD;;;;;;;;;;;;;ACzBvB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGoC;AAEvC;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,IAAI,EAAK,wBAAwB;IACjC,IAAI,EAAK,wBAAwB;IACjC,OAAO,EAAE,+DAA+D;IACxE,OAAO,EAAE,2BAA2B;IACpC,KAAK,EAAI,yBAAyB;IAClC,MAAM,EAAG,0BAA0B;CACpC;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,kBAAkB,CAChC,EAAmC;QAAjC,oBAAO,EAAE,sBAAQ;IAGnB,wBAAwB;IACxB,IAAM,IAAI,GAAG,mBAAO,CAAC,yIAA0D,CAAC;IAEhF,IAAM,QAAQ,GAAG,wDAAC,OAAO,GAAK,QAAQ,EAAE,GAAG,CAAC,kBAAQ;QAC1C,gCAAQ,EAAE,sBAAK,EAAE,oBAAI,CAAa;QAC1C,OAAO,CACL,2DAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,iEAAS,KAAK,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;gBAC7D,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;oBACtB,CAAC,CAAC,6DAAK,KAAK,EAAC,gCAAgC;wBACzC,6DAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW;4BACzD,8DAAM,CAAC,EAAE,IAAI,GAAS,CAClB,CACF;oBACR,CAAC,CAAC,IAAI;gBAER,4DAAI,KAAK,EAAE,GAAG,CAAC,KAAK,IAAG,KAAK,CAAM;gBACjC,IAAI,CAAC,MAAM;oBACV,CAAC,CAAC,2DAAG,KAAK,EAAE,GAAG,CAAC,MAAM,IAAG,0DAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAK;oBACjD,CAAC,CAAC,SAAS,CAEL,CACR,CACL;IACH,CAAC,CAAC;IACF,OAAO,CACL,4DAAI,KAAK,EAAE,GAAG,CAAC,IAAI,IAChB,QAAQ,CACN,CACN;AACH,CAAC;;;;;;;;;;;;;ACtFD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAG0B;AAE7B;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAG,iBAAiB;CACzB;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,YAAY,CAC1B,KAAkB;IAElB,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,cAAI,IAAI,QACjC,4DAAI,KAAK,EAAE,GAAG,CAAC,IAAI,IAAG,IAAI,CAAM,CACjC,EAFkC,CAElC,CAAC;IACF,OAAO,CACL,4DAAI,KAAK,EAAE,GAAG,CAAC,KAAK,IACjB,QAAQ,CACN,CACN;AACH,CAAC;;;;;;;;;;;;;AC3DD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0B;AAE7B;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,OAAO,EAAE,wBAAwB;IACjC,KAAK,EAAI,mBAAmB;CAC7B;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,KAAuB;IAEvB,OAAO,CACL,6DAAK,KAAK,EAAE,GAAG,CAAC,OAAO;QACrB,6DAAK,KAAK,EAAE,GAAG,CAAC,KAAK,IAClB,KAAK,CACF,CACF,CACP;AACH,CAAC;;;;;;;;;;;;;ACzDD;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmBH;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,QAAQ,CAAC,MAAW;IAClC,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC1B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;WAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;WACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;AACjD,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACH;AACC;AACE;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAKyB;AAwB5B;;+EAE+E;AAE/E;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,QAAQ,GAAG,EAAE;QAEX,kBAAkB;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,GAAG,CAAC;QAEpE,mBAAmB;QACnB;YACE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;KACrC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,EAA4B,EAAE,IAAY,EAAE,KAAa;IACzD,QAAQ,IAAI,EAAE;QAEZ,8BAA8B;QAC9B,KAAK,OAAO;YACV,MAAK;QAEP,gCAAgC;QAChC,KAAK,SAAS,CAAC;QACf,KAAK,GAAG;YACN,IAAI,OAAO,KAAK,KAAK,SAAS;gBAC5B,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;iBACjC,IAAI,KAAK;gBACZ,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACnC,MAAK;QAEP,iCAAiC;QACjC;YACE,IAAI,OAAO,KAAK,KAAK,SAAS;gBAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;iBACzB,IAAI,KAAK;gBACZ,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;KAC9B;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,EAA4B,EAAE,KAAsB;;IAGpD,iDAAiD;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1D,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;QAElC,kBAAkB;KACjB;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE;QAChC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;QAEvB,4BAA4B;KAC3B;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;YAC/B,KAAmB,0EAAK;gBAAnB,IAAM,IAAI;gBACb,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;aAAA;;;;;;;;;KACxB;AACH,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;GAQG;AACI,SAAS,CAAC,CACf,GAAW,EAAE,UAA6B;;IAAE,kBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,iCAAoB;;IAEhE,IAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC;IAE7B,4BAA4B;IAC5B,IAAI,UAAU;;YACZ,KAAmB,kHAAI,CAAC,UAAU,CAAC;gBAA9B,IAAM,IAAI;gBACb,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;aAAA;;;;;;;;SAAA;;QAE5C,wBAAwB;QACxB,KAAoB,gFAAQ;YAAvB,IAAM,KAAK;YACd,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC;SAAA;;;;;;;;;IAExB,oBAAoB;IACpB,OAAO,EAAE;AACX,CAAC;;;;;;;;;;;;;ACjKD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AAE5C;;+EAE+E;AAE/E;;;;;;;;;;;;;;GAcG;AACI,SAAS,KAAK,CACnB,GAAW,EAAE,OAA4B;IAEzC,OAAO,kDAAK,CAAC;QACX,IAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,IAAI,IAAI,EAAE;YACR,OAAO,+CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;YAElC,iEAAiE;SAChE;aAAM;YACL,IAAM,MAAM,GAAG,OAAO,EAAE;YACxB,MAAM,CAAC,SAAS,CAAC,eAAK;gBACpB,IAAI;oBACF,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACnD;gBAAC,OAAO,GAAG,EAAE;oBACZ,8BAA8B;iBAC/B;YACH,CAAC,CAAC;YAEF,kBAAkB;YAClB,OAAO,MAAM;SACd;IACH,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;;;;AClED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE4C;AAE/C;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,IAA4B;AAEhC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,SAAS,CAAC,GAAW,EAAE,KAAc;IACnD,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,IAAM,EAAE,GAAG,qEAAiB,CAAC,SAAS,CAAC;QACvC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC;KAChC;IACD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;QACpC,MAAM,IAAI,cAAc,CAAC,0BAAwB,GAAK,CAAC;KACxD;IACD,OAAO,OAAO,KAAK,KAAK,WAAW;QACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,SAAS,QAAQ,CAAC,KAAa,EAAE,CAAS;IAC/C,IAAI,CAAC,GAAG,CAAC;IACT,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC;YAAC,CAAC,CAAC,sBAAsB;QAC3D,OAAU,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,QAAK;KACrC;IACD,OAAO,KAAK;AACd,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,SAAS,KAAK,CAAC,KAAa;IACjC,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,IAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3C,OAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAG;KAClD;SAAM;QACL,OAAO,KAAK,CAAC,QAAQ,EAAE;KACxB;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,SAAS,IAAI,CAAC,KAAa;IAC9B,IAAI,CAAC,GAAG,CAAC;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAChD,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,CAAC,IAAI,CAAC,EAAC,2BAA2B;KACnC;IACD,OAAO,CAAC;AACV,CAAC;;;;;;;;;;;;;ACzHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;;;;;;;;;;;;;ACtBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AAChB;AAQT;AAMH;AAOD;AAenB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,iBAAiB,CAC/B,GAAW,EAAE,EAAwC;QAAtC,cAAI,EAAE,gBAAK,EAAE,wBAAS;IAErC,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IAE9B,4BAA4B;IAC5B,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,2DAAI,CAAC,CAAC,CAAC,EACP,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,WAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;aAClC,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAFH,CAEG,CACpB,CACF;IAEH,8DAA8D;IAC9D,IAAM,GAAG,GAAG,IAAI,4CAAO,EAAiB;IACxC,IAAM,GAAG,GAAG,+DAAW,CAAC,MAAM,EAAE,EAAE,GAAG,OAAE,CAAC;SACrC,IAAI,CACH,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAiB;;YAAjB,gEAAiB,EAAhB,eAAO,EAAE,cAAM;QACnB,IAAI,sEAAqB,CAAC,OAAO,CAAC,EAAE;;gBAClC,KAAoC,uEAAO,CAAC,IAAI,6CAAE;oBAAvC,iBAAqB,EAAnB,oBAAO,EAAE,sBAAQ;oBAC5B,OAAO,CAAC,QAAQ,GAAM,MAAM,SAAI,OAAO,CAAC,QAAU;;wBAClD,KAAsB,+FAAQ;4BAAzB,IAAM,OAAO;4BAChB,OAAO,CAAC,QAAQ,GAAM,MAAM,SAAI,OAAO,CAAC,QAAU;yBAAA;;;;;;;;;iBACrD;;;;;;;;;SACF;QACD,OAAO,OAAO;IAChB,CAAC,CAAC,EACF,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,gDAAgD;IAChD,IAAM,MAAM,GAAG,OAAO,KAAK,KAAK,WAAW;QACzC,CAAC,CAAC,iDAAI,CAAC,KAAK,CAAC;QACb,CAAC,CAAC,OAAO;aACJ,IAAI,CACH,gEAAS,CAAC,gBAAM,IAAI,6DAAI,CAAC;YACvB,GAAG,EAAK,MAAM,8BAA2B;YACzC,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,IAAI;SACtB,CAAC;aACC,IAAI,CACH,4DAAK,CAAC,UAAU,CAAC,CAClB,EAPiB,CAOjB,CAAC,CACL;IAEP,0BAA0B;IAC1B,MAAM;SACH,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,QAAC;QACX,IAAI,EAAE,0DAAiB,CAAC,KAAK;QAC7B,IAAI;KACL,CAAC,EAHU,CAGV,CAAC,CACJ;SACE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElC,2BAA2B;IAC3B,OAAO,EAAE,GAAG,OAAE,GAAG,OAAE;AACrB,CAAC;;;;;;;;;;;;;ACxID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACM;;;;;;;;;;;;;ACvBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;+EAE+E;AAE/E;;GAEG;AACH,IAAkB,iBAKjB;AALD,WAAkB,iBAAiB;IACjC,2DAAK;IACL,yDAAI;IACJ,2DAAK;IACL,6DAAM,EAA+B,oBAAoB;AAC3D,CAAC,EALiB,iBAAiB,KAAjB,iBAAiB,QAKlC;AA+CD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,mBAAmB,CACjC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI;AAChD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,qBAAqB,CACnC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;AAClD,CAAC;;;;;;;;;;;;;ACzID;AAAe,sJAAuF,E;;;;;;;;;;;;ACAtG;AAAe,yJAA0F,E","file":"assets/javascripts/bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/assets/javascripts/index.ts\");\n","/*!\n * clipboard.js v2.0.4\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clipboardAction = __webpack_require__(1);\n\nvar _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\nvar _tinyEmitter = __webpack_require__(3);\n\nvar _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\nvar _goodListener = __webpack_require__(4);\n\nvar _goodListener2 = _interopRequireDefault(_goodListener);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\nvar Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(_tinyEmitter2.default);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\nmodule.exports = Clipboard;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _select = __webpack_require__(2);\n\nvar _select2 = _interopRequireDefault(_select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nvar ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\nmodule.exports = ClipboardAction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(5);\nvar delegate = __webpack_require__(6);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(7);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ })\n/******/ ]);\n});","\n\n/**\n * A function that always returns `false`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.T\n * @example\n *\n * R.F(); //=> false\n */\nvar F = function () {\n return false;\n};\nexport default F;","\n\n/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\nexport default T;","/**\n * A special placeholder value used to specify \"gaps\" within curried functions,\n * allowing partial application of any combination of arguments, regardless of\n * their positions.\n *\n * If `g` is a curried ternary function and `_` is `R.__`, the following are\n * equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2, _)(1, 3)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @name __\n * @constant\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @example\n *\n * const greet = R.replace('{name}', R.__, 'Hello, {name}!');\n * greet('Alice'); //=> 'Hello, Alice!'\n */\nexport default { '@@functional/placeholder': true };","import _curry2 from './internal/_curry2.js';\n\n/**\n * Adds two values.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @see R.subtract\n * @example\n *\n * R.add(2, 3); //=> 5\n * R.add(7)(10); //=> 17\n */\nvar add = /*#__PURE__*/_curry2(function add(a, b) {\n return Number(a) + Number(b);\n});\nexport default add;","import _concat from './internal/_concat.js';\nimport _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Creates a new list iteration function from an existing one by adding two new\n * parameters to its callback function: the current index, and the entire list.\n *\n * This would turn, for instance, [`R.map`](#map) function into one that\n * more closely resembles `Array.prototype.map`. Note that this will only work\n * for functions in which the iteration callback function is the first\n * parameter, and where the list is the last parameter. (This latter might be\n * unimportant if the list parameter is not used.)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Function\n * @category List\n * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n * const mapIndexed = R.addIndex(R.map);\n * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\nvar addIndex = /*#__PURE__*/_curry1(function addIndex(fn) {\n return curryN(fn.length, function () {\n var idx = 0;\n var origFn = arguments[0];\n var list = arguments[arguments.length - 1];\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = function () {\n var result = origFn.apply(this, _concat(arguments, [idx, list]));\n idx += 1;\n return result;\n };\n return fn.apply(this, args);\n });\n});\nexport default addIndex;","import _concat from './internal/_concat.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Applies a function to the value at the given index of an array, returning a\n * new copy of the array with the element at the given index replaced with the\n * result of the function application.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> (a -> a) -> [a] -> [a]\n * @param {Number} idx The index.\n * @param {Function} fn The function to apply.\n * @param {Array|Arguments} list An array-like object whose value\n * at the supplied index will be replaced.\n * @return {Array} A copy of the supplied array-like object with\n * the element at index `idx` replaced with the value\n * returned by applying `fn` to the existing element.\n * @see R.update\n * @example\n *\n * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd']\n * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D']\n * @symb R.adjust(-1, f, [a, b]) = [a, f(b)]\n * @symb R.adjust(0, f, [a, b]) = [f(a), b]\n */\nvar adjust = /*#__PURE__*/_curry3(function adjust(idx, fn, list) {\n if (idx >= list.length || idx < -list.length) {\n return list;\n }\n var start = idx < 0 ? list.length : 0;\n var _idx = start + idx;\n var _list = _concat(list);\n _list[_idx] = fn(list[_idx]);\n return _list;\n});\nexport default adjust;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xall from './internal/_xall.js';\n\n/**\n * Returns `true` if all elements of the list match the predicate, `false` if\n * there are any that don't.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by every element, `false`\n * otherwise.\n * @see R.any, R.none, R.transduce\n * @example\n *\n * const equals3 = R.equals(3);\n * R.all(equals3)([3, 3, 3, 3]); //=> true\n * R.all(equals3)([3, 3, 1, 3]); //=> false\n */\nvar all = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['all'], _xall, function all(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (!fn(list[idx])) {\n return false;\n }\n idx += 1;\n }\n return true;\n}));\nexport default all;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if every one of the provided predicates is satisfied\n * by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.anyPass\n * @example\n *\n * const isQueen = R.propEq('rank', 'Q');\n * const isSpade = R.propEq('suit', '♠︎');\n * const isQueenOfSpades = R.allPass([isQueen, isSpade]);\n *\n * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false\n * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true\n */\nvar allPass = /*#__PURE__*/_curry1(function allPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (!preds[idx].apply(this, arguments)) {\n return false;\n }\n idx += 1;\n }\n return true;\n });\n});\nexport default allPass;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\nvar always = /*#__PURE__*/_curry1(function always(val) {\n return function () {\n return val;\n };\n});\nexport default always;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if both arguments are `true`; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any} the first argument if it is falsy, otherwise the second argument.\n * @see R.both\n * @example\n *\n * R.and(true, true); //=> true\n * R.and(true, false); //=> false\n * R.and(false, true); //=> false\n * R.and(false, false); //=> false\n */\nvar and = /*#__PURE__*/_curry2(function and(a, b) {\n return a && b;\n});\nexport default and;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xany from './internal/_xany.js';\n\n/**\n * Returns `true` if at least one of the elements of the list match the predicate,\n * `false` otherwise.\n *\n * Dispatches to the `any` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false`\n * otherwise.\n * @see R.all, R.none, R.transduce\n * @example\n *\n * const lessThan0 = R.flip(R.lt)(0);\n * const lessThan2 = R.flip(R.lt)(2);\n * R.any(lessThan0)([1, 2]); //=> false\n * R.any(lessThan2)([1, 2]); //=> true\n */\nvar any = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['any'], _xany, function any(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (fn(list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}));\nexport default any;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if at least one of the provided predicates is\n * satisfied by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.allPass\n * @example\n *\n * const isClub = R.propEq('suit', '♣');\n * const isSpade = R.propEq('suit', '♠');\n * const isBlackCard = R.anyPass([isClub, isSpade]);\n *\n * isBlackCard({rank: '10', suit: '♣'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♠'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♦'}); //=> false\n */\nvar anyPass = /*#__PURE__*/_curry1(function anyPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (preds[idx].apply(this, arguments)) {\n return true;\n }\n idx += 1;\n }\n return false;\n });\n});\nexport default anyPass;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport map from './map.js';\n\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\nvar ap = /*#__PURE__*/_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\nexport default ap;","import _aperture from './internal/_aperture.js';\nimport _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xaperture from './internal/_xaperture.js';\n\n/**\n * Returns a new list, composed of n-tuples of consecutive elements. If `n` is\n * greater than the length of the list, an empty list is returned.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @param {Number} n The size of the tuples to create\n * @param {Array} list The list to split into `n`-length tuples\n * @return {Array} The resulting list of `n`-length tuples\n * @see R.transduce\n * @example\n *\n * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]\n * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]\n * R.aperture(7, [1, 2, 3, 4, 5]); //=> []\n */\nvar aperture = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xaperture, _aperture));\nexport default aperture;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n * list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']\n * R.append('tests', []); //=> ['tests']\n * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]\n */\nvar append = /*#__PURE__*/_curry2(function append(el, list) {\n return _concat(list, [el]);\n});\nexport default append;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Applies function `fn` to the argument list `args`. This is useful for\n * creating a fixed-arity function from a variadic function. `fn` should be a\n * bound function if context is significant.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> a) -> [*] -> a\n * @param {Function} fn The function which will be called with `args`\n * @param {Array} args The arguments to call `fn` with\n * @return {*} result The result, equivalent to `fn(...args)`\n * @see R.call, R.unapply\n * @example\n *\n * const nums = [1, 2, 3, -99, 42, 6, 7];\n * R.apply(Math.max, nums); //=> 42\n * @symb R.apply(f, [a, b, c]) = f(a, b, c)\n */\nvar apply = /*#__PURE__*/_curry2(function apply(fn, args) {\n return fn.apply(this, args);\n});\nexport default apply;","import _curry1 from './internal/_curry1.js';\nimport apply from './apply.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\nimport keys from './keys.js';\nimport values from './values.js';\n\n// Use custom mapValues function to avoid issues with specs that include a \"map\" key and R.map\n// delegating calls to .map\nfunction mapValues(fn, obj) {\n return keys(obj).reduce(function (acc, key) {\n acc[key] = fn(obj[key]);\n return acc;\n }, {});\n}\n\n/**\n * Given a spec object recursively mapping properties to functions, creates a\n * function producing an object of the same structure, by mapping each property\n * to the result of calling its associated function with the supplied arguments.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v})\n * @param {Object} spec an object recursively mapping properties to functions for\n * producing the values for these properties.\n * @return {Function} A function that returns an object of the same structure\n * as `spec', with each property set to the value returned by calling its\n * associated function with the supplied arguments.\n * @see R.converge, R.juxt\n * @example\n *\n * const getMetrics = R.applySpec({\n * sum: R.add,\n * nested: { mul: R.multiply }\n * });\n * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }\n * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }\n */\nvar applySpec = /*#__PURE__*/_curry1(function applySpec(spec) {\n spec = mapValues(function (v) {\n return typeof v == 'function' ? v : applySpec(v);\n }, spec);\n\n return curryN(reduce(max, 0, pluck('length', values(spec))), function () {\n var args = arguments;\n return mapValues(function (f) {\n return apply(f, args);\n }, spec);\n });\n});\nexport default applySpec;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a value and applies a function to it.\n *\n * This function is also known as the `thrush` combinator.\n *\n * @func\n * @memberOf R\n * @since v0.25.0\n * @category Function\n * @sig a -> (a -> b) -> b\n * @param {*} x The value\n * @param {Function} f The function to apply\n * @return {*} The result of applying `f` to `x`\n * @example\n *\n * const t42 = R.applyTo(42);\n * t42(R.identity); //=> 42\n * t42(R.add(1)); //=> 43\n */\nvar applyTo = /*#__PURE__*/_curry2(function applyTo(x, f) {\n return f(x);\n});\nexport default applyTo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes an ascending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0`\n * @see R.descend\n * @example\n *\n * const byAge = R.ascend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByYoungestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar ascend = /*#__PURE__*/_curry3(function ascend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n});\nexport default ascend;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig String -> a -> {k: v} -> {k: v}\n * @param {String} prop The property name to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except for the changed property.\n * @see R.dissoc, R.pick\n * @example\n *\n * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}\n */\nvar assoc = /*#__PURE__*/_curry3(function assoc(prop, val, obj) {\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n result[prop] = val;\n return result;\n});\nexport default assoc;","import _curry3 from './internal/_curry3.js';\nimport _has from './internal/_has.js';\nimport _isArray from './internal/_isArray.js';\nimport _isInteger from './internal/_isInteger.js';\nimport assoc from './assoc.js';\nimport isNil from './isNil.js';\n\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n */\nvar assocPath = /*#__PURE__*/_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n var idx = path[0];\n if (path.length > 1) {\n var nextObj = !isNil(obj) && _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {};\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n if (_isInteger(idx) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[idx] = val;\n return arr;\n } else {\n return assoc(idx, val, obj);\n }\n});\nexport default assocPath;","import _curry1 from './internal/_curry1.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 2 parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (* -> c) -> (a, b -> c)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 2.\n * @see R.nAry, R.unary\n * @example\n *\n * const takesThreeArgs = function(a, b, c) {\n * return [a, b, c];\n * };\n * takesThreeArgs.length; //=> 3\n * takesThreeArgs(1, 2, 3); //=> [1, 2, 3]\n *\n * const takesTwoArgs = R.binary(takesThreeArgs);\n * takesTwoArgs.length; //=> 2\n * // Only 2 arguments are passed to the wrapped function\n * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]\n * @symb R.binary(f)(a, b, c) = f(a, b)\n */\nvar binary = /*#__PURE__*/_curry1(function binary(fn) {\n return nAry(2, fn);\n});\nexport default binary;","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\nvar bind = /*#__PURE__*/_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\nexport default bind;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport and from './and.js';\nimport lift from './lift.js';\n\n/**\n * A function which calls the two provided functions and returns the `&&`\n * of the results.\n * It returns the result of the first function if it is false-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * false-y value.\n *\n * In addition to functions, `R.both` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together.\n * @see R.and\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const lt20 = R.lt(R.__, 20)\n * const f = R.both(gt10, lt20);\n * f(15); //=> true\n * f(30); //=> false\n *\n * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false)\n * R.both([false, false, 'a'], [11]); //=> [false, false, 11]\n */\nvar both = /*#__PURE__*/_curry2(function both(f, g) {\n return _isFunction(f) ? function _both() {\n return f.apply(this, arguments) && g.apply(this, arguments);\n } : lift(and)(f, g);\n});\nexport default both;","import curry from './curry.js';\n\n/**\n * Returns the result of calling its first argument with the remaining\n * arguments. This is occasionally useful as a converging function for\n * [`R.converge`](#converge): the first branch can produce a function while the\n * remaining branches produce values to be passed to that function as its\n * arguments.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig (*... -> a),*... -> a\n * @param {Function} fn The function to apply to the remaining arguments.\n * @param {...*} args Any number of positional arguments.\n * @return {*}\n * @see R.apply\n * @example\n *\n * R.call(R.add, 1, 2); //=> 3\n *\n * const indentN = R.pipe(R.repeat(' '),\n * R.join(''),\n * R.replace(/^(?!$)/gm));\n *\n * const format = R.converge(R.call, [\n * R.pipe(R.prop('indent'), indentN),\n * R.prop('value')\n * ]);\n *\n * format({indent: 2, value: 'foo\\nbar\\nbaz\\n'}); //=> ' foo\\n bar\\n baz\\n'\n * @symb R.call(f, a, b) = f(a, b)\n */\nvar call = /*#__PURE__*/curry(function call(fn) {\n return fn.apply(this, Array.prototype.slice.call(arguments, 1));\n});\nexport default call;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _makeFlat from './internal/_makeFlat.js';\nimport _xchain from './internal/_xchain.js';\nimport map from './map.js';\n\n/**\n * `chain` maps a function over a list and concatenates the results. `chain`\n * is also known as `flatMap` in some libraries.\n *\n * Dispatches to the `chain` method of the second argument, if present,\n * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain).\n *\n * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain m => (a -> m b) -> m a -> m b\n * @param {Function} fn The function to map with\n * @param {Array} list The list to map over\n * @return {Array} The result of flat-mapping `list` with `fn`\n * @example\n *\n * const duplicate = n => [n, n];\n * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3]\n *\n * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]\n */\nvar chain = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) {\n if (typeof monad === 'function') {\n return function (x) {\n return fn(monad(x))(x);\n };\n }\n return _makeFlat(false)(map(fn, monad));\n}));\nexport default chain;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Restricts a number to be within a range.\n *\n * Also works for other ordered types such as Strings and Dates.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Relation\n * @sig Ord a => a -> a -> a -> a\n * @param {Number} minimum The lower limit of the clamp (inclusive)\n * @param {Number} maximum The upper limit of the clamp (inclusive)\n * @param {Number} value Value to be clamped\n * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise\n * @example\n *\n * R.clamp(1, 10, -5) // => 1\n * R.clamp(1, 10, 15) // => 10\n * R.clamp(1, 10, 4) // => 4\n */\nvar clamp = /*#__PURE__*/_curry3(function clamp(min, max, value) {\n if (min > max) {\n throw new Error('min must not be greater than max in clamp(min, max, value)');\n }\n return value < min ? min : value > max ? max : value;\n});\nexport default clamp;","import _clone from './internal/_clone.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a deep copy of the value which may contain (nested) `Array`s and\n * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are\n * assigned by reference rather than copied\n *\n * Dispatches to a `clone` method if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, [], [], true);\n});\nexport default clone;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Makes a comparator function out of a function that reports whether the first\n * element is less than the second.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b) -> Boolean) -> ((a, b) -> Number)\n * @param {Function} pred A predicate function of arity two which will return `true` if the first argument\n * is less than the second, `false` otherwise\n * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0`\n * @example\n *\n * const byAge = R.comparator((a, b) => a.age < b.age);\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByIncreasingAge = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar comparator = /*#__PURE__*/_curry1(function comparator(pred) {\n return function (a, b) {\n return pred(a, b) ? -1 : pred(b, a) ? 1 : 0;\n };\n});\nexport default comparator;","import lift from './lift.js';\nimport not from './not.js';\n\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * isNil(null); //=> true\n * isNotNil(null); //=> false\n * isNil(7); //=> false\n * isNotNil(7); //=> true\n */\nvar complement = /*#__PURE__*/lift(not);\nexport default complement;","import pipe from './pipe.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left function composition. The rightmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n * const classyGreeting = (firstName, lastName) => \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n * const yellGreeting = R.compose(R.toUpper, classyGreeting);\n * yellGreeting('James', 'Bond'); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n */\nexport default function compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n return pipe.apply(this, reverse(arguments));\n}","import chain from './chain.js';\nimport compose from './compose.js';\nimport map from './map.js';\n\n/**\n * Returns the right-to-left Kleisli composition of the provided functions,\n * each of which must return a value of a type supported by [`chain`](#chain).\n *\n * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Function\n * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipeK\n * @deprecated since v0.26.0\n * @example\n *\n * // get :: String -> Object -> Maybe *\n * const get = R.curry((propName, obj) => Maybe(obj[propName]))\n *\n * // getStateCode :: Maybe String -> Maybe String\n * const getStateCode = R.composeK(\n * R.compose(Maybe.of, R.toUpper),\n * get('state'),\n * get('address'),\n * get('user'),\n * );\n * getStateCode({\"user\":{\"address\":{\"state\":\"ny\"}}}); //=> Maybe.Just(\"NY\")\n * getStateCode({}); //=> Maybe.Nothing()\n * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a)))\n */\nexport default function composeK() {\n if (arguments.length === 0) {\n throw new Error('composeK requires at least one argument');\n }\n var init = Array.prototype.slice.call(arguments);\n var last = init.pop();\n return compose(compose.apply(this, map(chain, init)), last);\n}","import pipeP from './pipeP.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left composition of one or more Promise-returning\n * functions. The rightmost function may have any arity; the remaining\n * functions must be unary.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z)\n * @param {...Function} functions The functions to compose\n * @return {Function}\n * @see R.pipeP\n * @deprecated since v0.26.0\n * @example\n *\n * const db = {\n * users: {\n * JOE: {\n * name: 'Joe',\n * followers: ['STEVE', 'SUZY']\n * }\n * }\n * }\n *\n * // We'll pretend to do a db lookup which returns a promise\n * const lookupUser = (userId) => Promise.resolve(db.users[userId])\n * const lookupFollowers = (user) => Promise.resolve(user.followers)\n * lookupUser('JOE').then(lookupFollowers)\n *\n * // followersForUser :: String -> Promise [UserId]\n * const followersForUser = R.composeP(lookupFollowers, lookupUser);\n * followersForUser('JOE').then(followers => console.log('Followers:', followers))\n * // Followers: [\"STEVE\",\"SUZY\"]\n */\nexport default function composeP() {\n if (arguments.length === 0) {\n throw new Error('composeP requires at least one argument');\n }\n return pipeP.apply(this, reverse(arguments));\n}","import _curry2 from './internal/_curry2.js';\nimport pipeWith from './pipeWith.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left function composition using transforming function. The rightmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.compose, R.pipeWith\n * @example\n *\n * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res));\n *\n * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2\n * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined\n *\n * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, f(i, ...args)))\n */\nvar composeWith = /*#__PURE__*/_curry2(function composeWith(xf, list) {\n return pipeWith.apply(this, [xf, reverse(list)]);\n});\nexport default composeWith;","import _curry2 from './internal/_curry2.js';\nimport _isArray from './internal/_isArray.js';\nimport _isFunction from './internal/_isFunction.js';\nimport _isString from './internal/_isString.js';\nimport toString from './toString.js';\n\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n * R.concat('ABC', 'DEF'); // 'ABCDEF'\n * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n * R.concat([], []); //=> []\n */\nvar concat = /*#__PURE__*/_curry2(function concat(a, b) {\n if (_isArray(a)) {\n if (_isArray(b)) {\n return a.concat(b);\n }\n throw new TypeError(toString(b) + ' is not an array');\n }\n if (_isString(a)) {\n if (_isString(b)) {\n return a + b;\n }\n throw new TypeError(toString(b) + ' is not a string');\n }\n if (a != null && _isFunction(a['fantasy-land/concat'])) {\n return a['fantasy-land/concat'](b);\n }\n if (a != null && _isFunction(a.concat)) {\n return a.concat(b);\n }\n throw new TypeError(toString(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\nexport default concat;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\nimport map from './map.js';\nimport max from './max.js';\nimport reduce from './reduce.js';\n\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\nvar cond = /*#__PURE__*/_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n idx += 1;\n }\n });\n});\nexport default cond;","import _curry1 from './internal/_curry1.js';\nimport constructN from './constructN.js';\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> {*}) -> (* -> {*})\n * @param {Function} fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @see R.invoker\n * @example\n *\n * // Constructor function\n * function Animal(kind) {\n * this.kind = kind;\n * };\n * Animal.prototype.sighting = function() {\n * return \"It's a \" + this.kind + \"!\";\n * }\n *\n * const AnimalConstructor = R.construct(Animal)\n *\n * // Notice we no longer need the 'new' keyword:\n * AnimalConstructor('Pig'); //=> {\"kind\": \"Pig\", \"sighting\": function (){...}};\n *\n * const animalTypes = [\"Lion\", \"Tiger\", \"Bear\"];\n * const animalSighting = R.invoker(0, 'sighting');\n * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);\n * R.map(sightNewAnimal, animalTypes); //=> [\"It's a Lion!\", \"It's a Tiger!\", \"It's a Bear!\"]\n */\nvar construct = /*#__PURE__*/_curry1(function construct(Fn) {\n return constructN(Fn.length, Fn);\n});\nexport default construct;","import _curry2 from './internal/_curry2.js';\nimport curry from './curry.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type. The arity of the function\n * returned is specified to allow using variadic constructor functions.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Function\n * @sig Number -> (* -> {*}) -> (* -> {*})\n * @param {Number} n The arity of the constructor function.\n * @param {Function} Fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @example\n *\n * // Variadic Constructor function\n * function Salad() {\n * this.ingredients = arguments;\n * }\n *\n * Salad.prototype.recipe = function() {\n * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);\n * return R.join('\\n', instructions);\n * };\n *\n * const ThreeLayerSalad = R.constructN(3, Salad);\n *\n * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.\n * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');\n *\n * console.log(salad.recipe());\n * // Add a dollop of Mayonnaise\n * // Add a dollop of Potato Chips\n * // Add a dollop of Ketchup\n */\nvar constructN = /*#__PURE__*/_curry2(function constructN(n, Fn) {\n if (n > 10) {\n throw new Error('Constructor with greater than ten arguments');\n }\n if (n === 0) {\n return function () {\n return new Fn();\n };\n }\n return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {\n switch (arguments.length) {\n case 1:\n return new Fn($0);\n case 2:\n return new Fn($0, $1);\n case 3:\n return new Fn($0, $1, $2);\n case 4:\n return new Fn($0, $1, $2, $3);\n case 5:\n return new Fn($0, $1, $2, $3, $4);\n case 6:\n return new Fn($0, $1, $2, $3, $4, $5);\n case 7:\n return new Fn($0, $1, $2, $3, $4, $5, $6);\n case 8:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7);\n case 9:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8);\n case 10:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9);\n }\n }));\n});\nexport default constructN;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.includes\n * @deprecated since v0.26.0\n * @example\n *\n * R.contains(3, [1, 2, 3]); //=> true\n * R.contains(4, [1, 2, 3]); //=> false\n * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.contains([42], [[42]]); //=> true\n * R.contains('ba', 'banana'); //=>true\n */\nvar contains = /*#__PURE__*/_curry2(_includes);\nexport default contains;","import _curry2 from './internal/_curry2.js';\nimport _map from './internal/_map.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Accepts a converging function and a list of branching functions and returns\n * a new function. The arity of the new function is the same as the arity of\n * the longest branching function. When invoked, this new function is applied\n * to some arguments, and each branching function is applied to those same\n * arguments. The results of each branching function are passed as arguments\n * to the converging function to produce the return value.\n *\n * @func\n * @memberOf R\n * @since v0.4.2\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} after A function. `after` will be invoked with the return values of\n * `fn1` and `fn2` as its arguments.\n * @param {Array} functions A list of functions.\n * @return {Function} A new function.\n * @see R.useWith\n * @example\n *\n * const average = R.converge(R.divide, [R.sum, R.length])\n * average([1, 2, 3, 4, 5, 6, 7]) //=> 4\n *\n * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])\n * strangeConcat(\"Yodel\") //=> \"YODELyodel\"\n *\n * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))\n */\nvar converge = /*#__PURE__*/_curry2(function converge(after, fns) {\n return curryN(reduce(max, 0, pluck('length', fns)), function () {\n var args = arguments;\n var context = this;\n return after.apply(context, _map(function (fn) {\n return fn.apply(context, args);\n }, fns));\n });\n});\nexport default converge;","import reduceBy from './reduceBy.js';\n\n/**\n * Counts the elements of a list according to how many match each value of a\n * key generated by the supplied function. Returns an object mapping the keys\n * produced by `fn` to the number of occurrences in the list. Note that all\n * keys are coerced to strings because of how JavaScript objects work.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig (a -> String) -> [a] -> {*}\n * @param {Function} fn The function used to map values to keys.\n * @param {Array} list The list to count elements from.\n * @return {Object} An object mapping keys to number of occurrences in the list.\n * @example\n *\n * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];\n * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1}\n *\n * const letters = ['a', 'b', 'A', 'a', 'B', 'c'];\n * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1}\n */\nvar countBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return acc + 1;\n}, 0);\nexport default countBy;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n *\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curry = /*#__PURE__*/_curry1(function curry(fn) {\n return curryN(fn.length, fn);\n});\nexport default curry;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\nimport _curry2 from './internal/_curry2.js';\nimport _curryN from './internal/_curryN.js';\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n return _arity(length, _curryN(length, [], fn));\n});\nexport default curryN;","import add from './add.js';\n\n/**\n * Decrements its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n - 1\n * @see R.inc\n * @example\n *\n * R.dec(42); //=> 41\n */\nvar dec = /*#__PURE__*/add(-1);\nexport default dec;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\nvar defaultTo = /*#__PURE__*/_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\nexport default defaultTo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes a descending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0`\n * @see R.ascend\n * @example\n *\n * const byAge = R.descend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByOldestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }]\n */\nvar descend = /*#__PURE__*/_curry3(function descend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa > bb ? -1 : aa < bb ? 1 : 0;\n});\nexport default descend;","import _curry2 from './internal/_curry2.js';\nimport _Set from './internal/_Set.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Objects and Arrays are compared in terms of\n * value equality, not reference equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without\n * @example\n *\n * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]\n * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]\n * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]\n */\nvar difference = /*#__PURE__*/_curry2(function difference(first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n var secondLen = second.length;\n var toFilterOut = new _Set();\n\n for (var i = 0; i < secondLen; i += 1) {\n toFilterOut.add(second[i]);\n }\n\n while (idx < firstLen) {\n if (toFilterOut.add(first[idx])) {\n out[out.length] = first[idx];\n }\n idx += 1;\n }\n return out;\n});\nexport default difference;","import _includesWith from './internal/_includesWith.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Duplication is determined according to the\n * value returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith\n * @example\n *\n * const cmp = (x, y) => x.a === y.a;\n * const l1 = [{a: 1}, {a: 2}, {a: 3}];\n * const l2 = [{a: 3}, {a: 4}];\n * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}]\n */\nvar differenceWith = /*#__PURE__*/_curry3(function differenceWith(pred, first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n while (idx < firstLen) {\n if (!_includesWith(pred, first[idx], second) && !_includesWith(pred, first[idx], out)) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n return out;\n});\nexport default differenceWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Object\n * @sig String -> {k: v} -> {k: v}\n * @param {String} prop The name of the property to dissociate\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n * @see R.assoc, R.omit\n * @example\n *\n * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3}\n */\nvar dissoc = /*#__PURE__*/_curry2(function dissoc(prop, obj) {\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n delete result[prop];\n return result;\n});\nexport default dissoc;","import _curry2 from './internal/_curry2.js';\nimport _isInteger from './internal/_isInteger.js';\nimport _isArray from './internal/_isArray.js';\nimport assoc from './assoc.js';\nimport dissoc from './dissoc.js';\nimport remove from './remove.js';\nimport update from './update.js';\n\n/**\n * Makes a shallow clone of an object, omitting the property at the given path.\n * Note that this copies and flattens prototype properties onto the new object\n * as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.11.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {Array} path The path to the value to omit\n * @param {Object} obj The object to clone\n * @return {Object} A new object without the property at path\n * @see R.assocPath\n * @example\n *\n * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}}\n */\nvar dissocPath = /*#__PURE__*/_curry2(function dissocPath(path, obj) {\n switch (path.length) {\n case 0:\n return obj;\n case 1:\n return _isInteger(path[0]) && _isArray(obj) ? remove(path[0], 1, obj) : dissoc(path[0], obj);\n default:\n var head = path[0];\n var tail = Array.prototype.slice.call(path, 1);\n if (obj[head] == null) {\n return obj;\n } else if (_isInteger(head) && _isArray(obj)) {\n return update(head, dissocPath(tail, obj[head]), obj);\n } else {\n return assoc(head, dissocPath(tail, obj[head]), obj);\n }\n }\n});\nexport default dissocPath;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Divides two numbers. Equivalent to `a / b`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a / b`.\n * @see R.multiply\n * @example\n *\n * R.divide(71, 100); //=> 0.71\n *\n * const half = R.divide(R.__, 2);\n * half(42); //=> 21\n *\n * const reciprocal = R.divide(1);\n * reciprocal(4); //=> 0.25\n */\nvar divide = /*#__PURE__*/_curry2(function divide(a, b) {\n return a / b;\n});\nexport default divide;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdrop from './internal/_xdrop.js';\nimport slice from './slice.js';\n\n/**\n * Returns all but the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `drop` method).\n *\n * Dispatches to the `drop` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*} A copy of list without the first `n` elements\n * @see R.take, R.transduce, R.dropLast, R.dropWhile\n * @example\n *\n * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.drop(3, ['foo', 'bar', 'baz']); //=> []\n * R.drop(4, ['foo', 'bar', 'baz']); //=> []\n * R.drop(3, 'ramda'); //=> 'da'\n */\nvar drop = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['drop'], _xdrop, function drop(n, xs) {\n return slice(Math.max(0, n), Infinity, xs);\n}));\nexport default drop;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _dropLast from './internal/_dropLast.js';\nimport _xdropLast from './internal/_xdropLast.js';\n\n/**\n * Returns a list containing all but the last `n` elements of the given `list`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements of `list` to skip.\n * @param {Array} list The list of elements to consider.\n * @return {Array} A copy of the list with only the first `list.length - n` elements\n * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile\n * @example\n *\n * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.dropLast(3, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(4, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(3, 'ramda'); //=> 'ra'\n */\nvar dropLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLast, _dropLast));\nexport default dropLast;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _dropLastWhile from './internal/_dropLastWhile.js';\nimport _xdropLastWhile from './internal/_xdropLastWhile.js';\n\n/**\n * Returns a new list excluding all the tailing elements of a given list which\n * satisfy the supplied predicate function. It passes each value from the right\n * to the supplied predicate function, skipping elements until the predicate\n * function returns a `falsy` value. The predicate function is applied to one argument:\n * *(value)*.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} predicate The function to be called on each element\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.\n * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile\n * @example\n *\n * const lteThree = x => x <= 3;\n *\n * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4]\n *\n * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'\n */\nvar dropLastWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLastWhile, _dropLastWhile));\nexport default dropLastWhile;","import _curry1 from './internal/_curry1.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropRepeatsWith from './internal/_xdropRepeatsWith.js';\nimport dropRepeatsWith from './dropRepeatsWith.js';\nimport equals from './equals.js';\n\n/**\n * Returns a new list without any consecutively repeating elements.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]\n */\nvar dropRepeats = /*#__PURE__*/_curry1( /*#__PURE__*/_dispatchable([], /*#__PURE__*/_xdropRepeatsWith(equals), /*#__PURE__*/dropRepeatsWith(equals)));\nexport default dropRepeats;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropRepeatsWith from './internal/_xdropRepeatsWith.js';\nimport last from './last.js';\n\n/**\n * Returns a new list without any consecutively repeating elements. Equality is\n * determined by applying the supplied predicate to each pair of consecutive elements. The\n * first element in a series of equal elements will be preserved.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];\n * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]\n */\nvar dropRepeatsWith = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) {\n var result = [];\n var idx = 1;\n var len = list.length;\n if (len !== 0) {\n result[0] = list[0];\n while (idx < len) {\n if (!pred(last(result), list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n }\n return result;\n}));\nexport default dropRepeatsWith;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropWhile from './internal/_xdropWhile.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list excluding the leading elements of a given list which\n * satisfy the supplied predicate function. It passes each value to the supplied\n * predicate function, skipping elements while the predicate function returns\n * `true`. The predicate function is applied to one argument: *(value)*.\n *\n * Dispatches to the `dropWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.takeWhile, R.transduce, R.addIndex\n * @example\n *\n * const lteTwo = x => x <= 2;\n *\n * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1]\n *\n * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'\n */\nvar dropWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && pred(xs[idx])) {\n idx += 1;\n }\n return slice(idx, Infinity, xs);\n}));\nexport default dropWhile;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport lift from './lift.js';\nimport or from './or.js';\n\n/**\n * A function wrapping calls to the two functions in an `||` operation,\n * returning the result of the first function if it is truth-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * truth-y value.\n *\n * In addition to functions, `R.either` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f a predicate\n * @param {Function} g another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together.\n * @see R.or\n * @example\n *\n * const gt10 = x => x > 10;\n * const even = x => x % 2 === 0;\n * const f = R.either(gt10, even);\n * f(101); //=> true\n * f(8); //=> true\n *\n * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55)\n * R.either([false, false, 'a'], [11]) // => [11, 11, \"a\"]\n */\nvar either = /*#__PURE__*/_curry2(function either(f, g) {\n return _isFunction(f) ? function _either() {\n return f.apply(this, arguments) || g.apply(this, arguments);\n } : lift(or)(f, g);\n});\nexport default either;","import _curry1 from './internal/_curry1.js';\nimport _isArguments from './internal/_isArguments.js';\nimport _isArray from './internal/_isArray.js';\nimport _isObject from './internal/_isObject.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other\n * types are supported if they define `.empty`,\n * `.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n */\nvar empty = /*#__PURE__*/_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : void 0 // else\n ;\n});\nexport default empty;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport takeLast from './takeLast.js';\n\n/**\n * Checks if a list ends with the provided sublist.\n *\n * Similarly, checks if a string ends with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} suffix\n * @param {*} list\n * @return {Boolean}\n * @see R.startsWith\n * @example\n *\n * R.endsWith('c', 'abc') //=> true\n * R.endsWith('b', 'abc') //=> false\n * R.endsWith(['c'], ['a', 'b', 'c']) //=> true\n * R.endsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar endsWith = /*#__PURE__*/_curry2(function (suffix, list) {\n return equals(takeLast(suffix.length, list), suffix);\n});\nexport default endsWith;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Takes a function and two values in its domain and returns `true` if the\n * values map to the same value in the codomain; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Relation\n * @sig (a -> b) -> a -> a -> Boolean\n * @param {Function} f\n * @param {*} x\n * @param {*} y\n * @return {Boolean}\n * @example\n *\n * R.eqBy(Math.abs, 5, -5); //=> true\n */\nvar eqBy = /*#__PURE__*/_curry3(function eqBy(f, x, y) {\n return equals(f(x), f(y));\n});\nexport default eqBy;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Reports whether two objects have the same value, in [`R.equals`](#equals)\n * terms, for the specified property. Useful as a curried predicate.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig k -> {k: v} -> {k: v} -> Boolean\n * @param {String} prop The name of the property to compare\n * @param {Object} obj1\n * @param {Object} obj2\n * @return {Boolean}\n *\n * @example\n *\n * const o1 = { a: 1, b: 2, c: 3, d: 4 };\n * const o2 = { a: 10, b: 20, c: 3, d: 40 };\n * R.eqProps('a', o1, o2); //=> false\n * R.eqProps('c', o1, o2); //=> true\n */\nvar eqProps = /*#__PURE__*/_curry3(function eqProps(prop, obj1, obj2) {\n return equals(obj1[prop], obj2[prop]);\n});\nexport default eqProps;","import _curry2 from './internal/_curry2.js';\nimport _equals from './internal/_equals.js';\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new object by recursively evolving a shallow copy of `object`,\n * according to the `transformation` functions. All non-primitive properties\n * are copied by reference.\n *\n * A `transformation` function will not be invoked if its corresponding key\n * does not exist in the evolved object.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {k: (v -> v)} -> {k: v} -> {k: v}\n * @param {Object} transformations The object specifying transformation functions to apply\n * to the object.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};\n * const transformations = {\n * firstName: R.trim,\n * lastName: R.trim, // Will not get invoked.\n * data: {elapsed: R.add(1), remaining: R.add(-1)}\n * };\n * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}\n */\nvar evolve = /*#__PURE__*/_curry2(function evolve(transformations, object) {\n var result = object instanceof Array ? [] : {};\n var transformation, key, type;\n for (key in object) {\n transformation = transformations[key];\n type = typeof transformation;\n result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key];\n }\n return result;\n});\nexport default evolve;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _filter from './internal/_filter.js';\nimport _isObject from './internal/_isObject.js';\nimport _reduce from './internal/_reduce.js';\nimport _xfilter from './internal/_xfilter.js';\nimport keys from './keys.js';\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar filter = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n return acc;\n }, {}, keys(filterable)) :\n // else\n _filter(pred, filterable);\n}));\nexport default filter;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfind from './internal/_xfind.js';\n\n/**\n * Returns the first element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Dispatches to the `find` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.find(R.propEq('a', 2))(xs); //=> {a: 2}\n * R.find(R.propEq('a', 4))(xs); //=> undefined\n */\nvar find = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['find'], _xfind, function find(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx += 1;\n }\n}));\nexport default find;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindIndex from './internal/_xfindIndex.js';\n\n/**\n * Returns the index of the first element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.findIndex(R.propEq('a', 2))(xs); //=> 1\n * R.findIndex(R.propEq('a', 4))(xs); //=> -1\n */\nvar findIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindIndex, function findIndex(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}));\nexport default findIndex;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindLast from './internal/_xfindLast.js';\n\n/**\n * Returns the last element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1}\n * R.findLast(R.propEq('a', 4))(xs); //=> undefined\n */\nvar findLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLast, function findLast(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx -= 1;\n }\n}));\nexport default findLast;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindLastIndex from './internal/_xfindLastIndex.js';\n\n/**\n * Returns the index of the last element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1\n * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1\n */\nvar findLastIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n}));\nexport default findLastIndex;","import _curry1 from './internal/_curry1.js';\nimport _makeFlat from './internal/_makeFlat.js';\n\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\nvar flatten = /*#__PURE__*/_curry1( /*#__PURE__*/_makeFlat(true));\nexport default flatten;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\nvar flip = /*#__PURE__*/_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\nexport default flip;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Iterate over an input `list`, calling a provided function `fn` for each\n * element in the list.\n *\n * `fn` receives one argument: *(value)*.\n *\n * Note: `R.forEach` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.forEach` method. For more\n * details on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description\n *\n * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns\n * the original array. In some libraries this function is named `each`.\n *\n * Dispatches to the `forEach` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> *) -> [a] -> [a]\n * @param {Function} fn The function to invoke. Receives one argument, `value`.\n * @param {Array} list The list to iterate over.\n * @return {Array} The original list.\n * @see R.addIndex\n * @example\n *\n * const printXPlusFive = x => console.log(x + 5);\n * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3]\n * // logs 6\n * // logs 7\n * // logs 8\n * @symb R.forEach(f, [a, b, c]) = [a, b, c]\n */\nvar forEach = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('forEach', function forEach(fn, list) {\n var len = list.length;\n var idx = 0;\n while (idx < len) {\n fn(list[idx]);\n idx += 1;\n }\n return list;\n}));\nexport default forEach;","import _curry2 from './internal/_curry2.js';\nimport keys from './keys.js';\n\n/**\n * Iterate over an input `object`, calling a provided function `fn` for each\n * key and value in the object.\n *\n * `fn` receives three argument: *(value, key, obj)*.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Object\n * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a\n * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`.\n * @param {Object} obj The object to iterate over.\n * @return {Object} The original object.\n * @example\n *\n * const printKeyConcatValue = (value, key) => console.log(key + ':' + value);\n * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}\n * // logs x:1\n * // logs y:2\n * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b}\n */\nvar forEachObjIndexed = /*#__PURE__*/_curry2(function forEachObjIndexed(fn, obj) {\n var keyList = keys(obj);\n var idx = 0;\n while (idx < keyList.length) {\n var key = keyList[idx];\n fn(obj[key], key, obj);\n idx += 1;\n }\n return obj;\n});\nexport default forEachObjIndexed;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -> {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}\n */\nvar fromPairs = /*#__PURE__*/_curry1(function fromPairs(pairs) {\n var result = {};\n var idx = 0;\n while (idx < pairs.length) {\n result[pairs[idx][0]] = pairs[idx][1];\n idx += 1;\n }\n return result;\n});\nexport default fromPairs;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\nimport reduceBy from './reduceBy.js';\n\n/**\n * Splits a list into sub-lists stored in an object, based on the result of\n * calling a String-returning function on each element, and grouping the\n * results according to values returned.\n *\n * Dispatches to the `groupBy` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> String) -> [a] -> {String: [a]}\n * @param {Function} fn Function :: a -> String\n * @param {Array} list The array to group\n * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements\n * that produced that key when passed to `fn`.\n * @see R.reduceBy, R.transduce\n * @example\n *\n * const byGrade = R.groupBy(function(student) {\n * const score = student.score;\n * return score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A';\n * });\n * const students = [{name: 'Abby', score: 84},\n * {name: 'Eddy', score: 58},\n * // ...\n * {name: 'Jack', score: 69}];\n * byGrade(students);\n * // {\n * // 'A': [{name: 'Dianne', score: 99}],\n * // 'B': [{name: 'Abby', score: 84}]\n * // // ...,\n * // 'F': [{name: 'Eddy', score: 58}]\n * // }\n */\nvar groupBy = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('groupBy', /*#__PURE__*/reduceBy(function (acc, item) {\n if (acc == null) {\n acc = [];\n }\n acc.push(item);\n return acc;\n}, null)));\nexport default groupBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a list and returns a list of lists where each sublist's elements are\n * all satisfied pairwise comparison according to the provided function.\n * Only adjacent elements are passed to the comparison function.\n *\n * @func\n * @memberOf R\n * @since v0.21.0\n * @category List\n * @sig ((a, a) → Boolean) → [a] → [[a]]\n * @param {Function} fn Function for determining whether two given (adjacent)\n * elements should be in the same group\n * @param {Array} list The array to group. Also accepts a string, which will be\n * treated as a list of characters.\n * @return {List} A list that contains sublists of elements,\n * whose concatenations are equal to the original list.\n * @example\n *\n * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]]\n *\n * R.groupWith(R.eqBy(isVowel), 'aestiou')\n * //=> ['ae', 'st', 'iou']\n */\nvar groupWith = /*#__PURE__*/_curry2(function (fn, list) {\n var res = [];\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n var nextidx = idx + 1;\n while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) {\n nextidx += 1;\n }\n res.push(list.slice(idx, nextidx));\n idx = nextidx;\n }\n return res;\n});\nexport default groupWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is greater than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.lt\n * @example\n *\n * R.gt(2, 1); //=> true\n * R.gt(2, 2); //=> false\n * R.gt(2, 3); //=> false\n * R.gt('a', 'z'); //=> false\n * R.gt('z', 'a'); //=> true\n */\nvar gt = /*#__PURE__*/_curry2(function gt(a, b) {\n return a > b;\n});\nexport default gt;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is greater than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.lte\n * @example\n *\n * R.gte(2, 1); //=> true\n * R.gte(2, 2); //=> true\n * R.gte(2, 3); //=> false\n * R.gte('a', 'z'); //=> false\n * R.gte('z', 'a'); //=> true\n */\nvar gte = /*#__PURE__*/_curry2(function gte(a, b) {\n return a >= b;\n});\nexport default gte;","import _curry2 from './internal/_curry2.js';\nimport hasPath from './hasPath.js';\n\n/**\n * Returns whether or not an object has an own property with the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * const hasName = R.has('name');\n * hasName({name: 'alice'}); //=> true\n * hasName({name: 'bob'}); //=> true\n * hasName({}); //=> false\n *\n * const point = {x: 0, y: 0};\n * const pointHas = R.has(R.__, point);\n * pointHas('x'); //=> true\n * pointHas('y'); //=> true\n * pointHas('z'); //=> false\n */\nvar has = /*#__PURE__*/_curry2(function has(prop, obj) {\n return hasPath([prop], obj);\n});\nexport default has;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns whether or not an object or its prototype chain has a property with\n * the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * function Rectangle(width, height) {\n * this.width = width;\n * this.height = height;\n * }\n * Rectangle.prototype.area = function() {\n * return this.width * this.height;\n * };\n *\n * const square = new Rectangle(2, 2);\n * R.hasIn('width', square); //=> true\n * R.hasIn('area', square); //=> true\n */\nvar hasIn = /*#__PURE__*/_curry2(function hasIn(prop, obj) {\n return prop in obj;\n});\nexport default hasIn;","import _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Returns whether or not a path exists in an object. Only the object's\n * own properties are checked.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> Boolean\n * @param {Array} path The path to use.\n * @param {Object} obj The object to check the path in.\n * @return {Boolean} Whether the path exists.\n * @see R.has\n * @example\n *\n * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true\n * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true\n * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false\n * R.hasPath(['a', 'b'], {}); // => false\n */\nvar hasPath = /*#__PURE__*/_curry2(function hasPath(_path, obj) {\n if (_path.length === 0) {\n return false;\n }\n var val = obj;\n var idx = 0;\n while (idx < _path.length) {\n if (_has(_path[idx], val)) {\n val = val[_path[idx]];\n idx += 1;\n } else {\n return false;\n }\n }\n return true;\n});\nexport default hasPath;","import nth from './nth.js';\n\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head(['fi', 'fo', 'fum']); //=> 'fi'\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head(''); //=> ''\n */\nvar head = /*#__PURE__*/nth(0);\nexport default head;","import _objectIs from './internal/_objectIs.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns true if its arguments are identical, false otherwise. Values are\n * identical if they reference the same memory. `NaN` is identical to `NaN`;\n * `0` and `-0` are not identical.\n *\n * Note this is merely a curried version of ES6 `Object.is`.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * const o = {};\n * R.identical(o, o); //=> true\n * R.identical(1, 1); //=> true\n * R.identical(1, '1'); //=> false\n * R.identical([], []); //=> false\n * R.identical(0, -0); //=> false\n * R.identical(NaN, NaN); //=> true\n */\nvar identical = /*#__PURE__*/_curry2(_objectIs);\nexport default identical;","import _curry1 from './internal/_curry1.js';\nimport _identity from './internal/_identity.js';\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _curry3 from './internal/_curry3.js';\nimport curryN from './curryN.js';\n\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({}); //=> { count: 1 }\n * incCount({ count: 1 }); //=> { count: 2 }\n */\nvar ifElse = /*#__PURE__*/_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\nexport default ifElse;","import add from './add.js';\n\n/**\n * Increments its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n + 1\n * @see R.dec\n * @example\n *\n * R.inc(42); //=> 43\n */\nvar inc = /*#__PURE__*/add(1);\nexport default inc;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\nvar includes = /*#__PURE__*/_curry2(_includes);\nexport default includes;","export { default as F } from './F.js';\nexport { default as T } from './T.js';\nexport { default as __ } from './__.js';\nexport { default as add } from './add.js';\nexport { default as addIndex } from './addIndex.js';\nexport { default as adjust } from './adjust.js';\nexport { default as all } from './all.js';\nexport { default as allPass } from './allPass.js';\nexport { default as always } from './always.js';\nexport { default as and } from './and.js';\nexport { default as any } from './any.js';\nexport { default as anyPass } from './anyPass.js';\nexport { default as ap } from './ap.js';\nexport { default as aperture } from './aperture.js';\nexport { default as append } from './append.js';\nexport { default as apply } from './apply.js';\nexport { default as applySpec } from './applySpec.js';\nexport { default as applyTo } from './applyTo.js';\nexport { default as ascend } from './ascend.js';\nexport { default as assoc } from './assoc.js';\nexport { default as assocPath } from './assocPath.js';\nexport { default as binary } from './binary.js';\nexport { default as bind } from './bind.js';\nexport { default as both } from './both.js';\nexport { default as call } from './call.js';\nexport { default as chain } from './chain.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as comparator } from './comparator.js';\nexport { default as complement } from './complement.js';\nexport { default as compose } from './compose.js';\nexport { default as composeK } from './composeK.js';\nexport { default as composeP } from './composeP.js';\nexport { default as composeWith } from './composeWith.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as construct } from './construct.js';\nexport { default as constructN } from './constructN.js';\nexport { default as contains } from './contains.js';\nexport { default as converge } from './converge.js';\nexport { default as countBy } from './countBy.js';\nexport { default as curry } from './curry.js';\nexport { default as curryN } from './curryN.js';\nexport { default as dec } from './dec.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as descend } from './descend.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as dissoc } from './dissoc.js';\nexport { default as dissocPath } from './dissocPath.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropLast } from './dropLast.js';\nexport { default as dropLastWhile } from './dropLastWhile.js';\nexport { default as dropRepeats } from './dropRepeats.js';\nexport { default as dropRepeatsWith } from './dropRepeatsWith.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as either } from './either.js';\nexport { default as empty } from './empty.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as eqBy } from './eqBy.js';\nexport { default as eqProps } from './eqProps.js';\nexport { default as equals } from './equals.js';\nexport { default as evolve } from './evolve.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flip } from './flip.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachObjIndexed } from './forEachObjIndexed.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as groupWith } from './groupWith.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as hasPath } from './hasPath.js';\nexport { default as head } from './head.js';\nexport { default as identical } from './identical.js';\nexport { default as identity } from './identity.js';\nexport { default as ifElse } from './ifElse.js';\nexport { default as inc } from './inc.js';\nexport { default as includes } from './includes.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as init } from './init.js';\nexport { default as innerJoin } from './innerJoin.js';\nexport { default as insert } from './insert.js';\nexport { default as insertAll } from './insertAll.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersperse } from './intersperse.js';\nexport { default as into } from './into.js';\nexport { default as invert } from './invert.js';\nexport { default as invertObj } from './invertObj.js';\nexport { default as invoker } from './invoker.js';\nexport { default as is } from './is.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isNil } from './isNil.js';\nexport { default as join } from './join.js';\nexport { default as juxt } from './juxt.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as length } from './length.js';\nexport { default as lens } from './lens.js';\nexport { default as lensIndex } from './lensIndex.js';\nexport { default as lensPath } from './lensPath.js';\nexport { default as lensProp } from './lensProp.js';\nexport { default as lift } from './lift.js';\nexport { default as liftN } from './liftN.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapAccum } from './mapAccum.js';\nexport { default as mapAccumRight } from './mapAccumRight.js';\nexport { default as mapObjIndexed } from './mapObjIndexed.js';\nexport { default as match } from './match.js';\nexport { default as mathMod } from './mathMod.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as median } from './median.js';\nexport { default as memoizeWith } from './memoizeWith.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeAll } from './mergeAll.js';\nexport { default as mergeDeepLeft } from './mergeDeepLeft.js';\nexport { default as mergeDeepRight } from './mergeDeepRight.js';\nexport { default as mergeDeepWith } from './mergeDeepWith.js';\nexport { default as mergeDeepWithKey } from './mergeDeepWithKey.js';\nexport { default as mergeLeft } from './mergeLeft.js';\nexport { default as mergeRight } from './mergeRight.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as mergeWithKey } from './mergeWithKey.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as modulo } from './modulo.js';\nexport { default as move } from './move.js';\nexport { default as multiply } from './multiply.js';\nexport { default as nAry } from './nAry.js';\nexport { default as negate } from './negate.js';\nexport { default as none } from './none.js';\nexport { default as not } from './not.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as o } from './o.js';\nexport { default as objOf } from './objOf.js';\nexport { default as of } from './of.js';\nexport { default as omit } from './omit.js';\nexport { default as once } from './once.js';\nexport { default as or } from './or.js';\nexport { default as otherwise } from './otherwise.js';\nexport { default as over } from './over.js';\nexport { default as pair } from './pair.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as path } from './path.js';\nexport { default as pathEq } from './pathEq.js';\nexport { default as pathOr } from './pathOr.js';\nexport { default as pathSatisfies } from './pathSatisfies.js';\nexport { default as pick } from './pick.js';\nexport { default as pickAll } from './pickAll.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as pipe } from './pipe.js';\nexport { default as pipeK } from './pipeK.js';\nexport { default as pipeP } from './pipeP.js';\nexport { default as pipeWith } from './pipeWith.js';\nexport { default as pluck } from './pluck.js';\nexport { default as prepend } from './prepend.js';\nexport { default as product } from './product.js';\nexport { default as project } from './project.js';\nexport { default as prop } from './prop.js';\nexport { default as propEq } from './propEq.js';\nexport { default as propIs } from './propIs.js';\nexport { default as propOr } from './propOr.js';\nexport { default as propSatisfies } from './propSatisfies.js';\nexport { default as props } from './props.js';\nexport { default as range } from './range.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceBy } from './reduceBy.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reduceWhile } from './reduceWhile.js';\nexport { default as reduced } from './reduced.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as reverse } from './reverse.js';\nexport { default as scan } from './scan.js';\nexport { default as sequence } from './sequence.js';\nexport { default as set } from './set.js';\nexport { default as slice } from './slice.js';\nexport { default as sort } from './sort.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortWith } from './sortWith.js';\nexport { default as split } from './split.js';\nexport { default as splitAt } from './splitAt.js';\nexport { default as splitEvery } from './splitEvery.js';\nexport { default as splitWhen } from './splitWhen.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as symmetricDifference } from './symmetricDifference.js';\nexport { default as symmetricDifferenceWith } from './symmetricDifferenceWith.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeLast } from './takeLast.js';\nexport { default as takeLastWhile } from './takeLastWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as test } from './test.js';\nexport { default as then } from './then.js';\nexport { default as times } from './times.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transduce } from './transduce.js';\nexport { default as transpose } from './transpose.js';\nexport { default as traverse } from './traverse.js';\nexport { default as trim } from './trim.js';\nexport { default as tryCatch } from './tryCatch.js';\nexport { default as type } from './type.js';\nexport { default as unapply } from './unapply.js';\nexport { default as unary } from './unary.js';\nexport { default as uncurryN } from './uncurryN.js';\nexport { default as unfold } from './unfold.js';\nexport { default as union } from './union.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as unless } from './unless.js';\nexport { default as unnest } from './unnest.js';\nexport { default as until } from './until.js';\nexport { default as update } from './update.js';\nexport { default as useWith } from './useWith.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as view } from './view.js';\nexport { default as when } from './when.js';\nexport { default as where } from './where.js';\nexport { default as whereEq } from './whereEq.js';\nexport { default as without } from './without.js';\nexport { default as xprod } from './xprod.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObj } from './zipObj.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default as thunkify } from './thunkify.js';","import reduceBy from './reduceBy.js';\n\n/**\n * Given a function that generates a key, turns a list of objects into an\n * object indexing the objects by the given key. Note that if multiple\n * objects generate the same value for the indexing key only the last value\n * will be included in the generated object.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -> String) -> [{k: v}] -> {k: {k: v}}\n * @param {Function} fn Function :: a -> String\n * @param {Array} array The array of objects to index\n * @return {Object} An object indexing each array element by the given property.\n * @example\n *\n * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];\n * R.indexBy(R.prop('id'), list);\n * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}\n */\nvar indexBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return elem;\n}, null);\nexport default indexBy;","import _curry2 from './internal/_curry2.js';\nimport _indexOf from './internal/_indexOf.js';\nimport _isArray from './internal/_isArray.js';\n\n/**\n * Returns the position of the first occurrence of an item in an array, or -1\n * if the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.lastIndexOf\n * @example\n *\n * R.indexOf(3, [1,2,3,4]); //=> 2\n * R.indexOf(10, [1,2,3,4]); //=> -1\n */\nvar indexOf = /*#__PURE__*/_curry2(function indexOf(target, xs) {\n return typeof xs.indexOf === 'function' && !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0);\n});\nexport default indexOf;","import slice from './slice.js';\n\n/**\n * Returns all but the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.last, R.head, R.tail\n * @example\n *\n * R.init([1, 2, 3]); //=> [1, 2]\n * R.init([1, 2]); //=> [1]\n * R.init([1]); //=> []\n * R.init([]); //=> []\n *\n * R.init('abc'); //=> 'ab'\n * R.init('ab'); //=> 'a'\n * R.init('a'); //=> ''\n * R.init(''); //=> ''\n */\nvar init = /*#__PURE__*/slice(0, -1);\nexport default init;","import _includesWith from './internal/_includesWith.js';\nimport _curry3 from './internal/_curry3.js';\nimport _filter from './internal/_filter.js';\n\n/**\n * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list\n * `xs'` comprising each of the elements of `xs` which is equal to one or more\n * elements of `ys` according to `pred`.\n *\n * `pred` must be a binary function expecting an element from each list.\n *\n * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should\n * not be significant, but since `xs'` is ordered the implementation guarantees\n * that its values are in the same order as they appear in `xs`. Duplicates are\n * not removed, so `xs'` may contain duplicates if `xs` contains duplicates.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Relation\n * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a]\n * @param {Function} pred\n * @param {Array} xs\n * @param {Array} ys\n * @return {Array}\n * @see R.intersection\n * @example\n *\n * R.innerJoin(\n * (record, id) => record.id === id,\n * [{id: 824, name: 'Richie Furay'},\n * {id: 956, name: 'Dewey Martin'},\n * {id: 313, name: 'Bruce Palmer'},\n * {id: 456, name: 'Stephen Stills'},\n * {id: 177, name: 'Neil Young'}],\n * [177, 456, 999]\n * );\n * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}]\n */\nvar innerJoin = /*#__PURE__*/_curry3(function innerJoin(pred, xs, ys) {\n return _filter(function (x) {\n return _includesWith(pred, x, ys);\n }, xs);\n});\nexport default innerJoin;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Inserts the supplied element into the list, at the specified `index`. _Note that\n\n * this is not destructive_: it returns a copy of the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} index The position to insert the element\n * @param {*} elt The element to insert into the Array\n * @param {Array} list The list to insert into\n * @return {Array} A new Array with `elt` inserted at `index`.\n * @example\n *\n * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4]\n */\nvar insert = /*#__PURE__*/_curry3(function insert(idx, elt, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n var result = Array.prototype.slice.call(list, 0);\n result.splice(idx, 0, elt);\n return result;\n});\nexport default insert;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Inserts the sub-list into the list, at the specified `index`. _Note that this is not\n * destructive_: it returns a copy of the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig Number -> [a] -> [a] -> [a]\n * @param {Number} index The position to insert the sub-list\n * @param {Array} elts The sub-list to insert into the Array\n * @param {Array} list The list to insert the sub-list into\n * @return {Array} A new Array with `elts` inserted starting at `index`.\n * @example\n *\n * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4]\n */\nvar insertAll = /*#__PURE__*/_curry3(function insertAll(idx, elts, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx));\n});\nexport default insertAll;","import _includes from './_includes.js';\n\nvar _Set = /*#__PURE__*/function () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n };\n\n //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n };\n\n //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n return false;\n }\n }\n // these types can all utilise the native Set\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n return false;\n }\n return true;\n }\n /* falls through */\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n // scan through all previously applied items\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n}\n\n// A simple Set type that honours R.equals semantics\nexport default _Set;","export default function _aperture(n, list) {\n var idx = 0;\n var limit = list.length - (n - 1);\n var acc = new Array(limit >= 0 ? limit : 0);\n while (idx < limit) {\n acc[idx] = Array.prototype.slice.call(list, idx, idx + n);\n idx += 1;\n }\n return acc;\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","import _isFunction from './_isFunction.js';\nimport _toString from './_toString.js';\n\nexport default function _assertPromise(name, p) {\n if (p == null || !_isFunction(p.then)) {\n throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, []));\n }\n}","import _isArray from './_isArray.js';\n\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implemtation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n if (length === 0) {\n return fn();\n }\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _cloneRegExp from './_cloneRegExp.js';\nimport type from '../type.js';\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Array} refFrom Array containing the source references\n * @param {Array} refTo Array containing the copied source references\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, refFrom, refTo, deep) {\n var copy = function copy(copiedValue) {\n var len = refFrom.length;\n var idx = 0;\n while (idx < len) {\n if (value === refFrom[idx]) {\n return refTo[idx];\n }\n idx += 1;\n }\n refFrom[idx + 1] = value;\n refTo[idx + 1] = copiedValue;\n for (var key in value) {\n copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key];\n }\n return copiedValue;\n };\n switch (type(value)) {\n case 'Object':\n return copy({});\n case 'Array':\n return copy([]);\n case 'Date':\n return new Date(value.valueOf());\n case 'RegExp':\n return _cloneRegExp(value);\n default:\n return value;\n }\n}","export default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : ''));\n}","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n\n idx = 0;\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n idx = 0;\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n return result;\n}","import _arity from './_arity.js';\nimport _curry2 from './_curry2.js';\n\nexport default function _createPartialApplicator(concat) {\n return _curry2(function (fn, args) {\n return _arity(Math.max(0, fn.length - args.length), function () {\n return fn.apply(this, concat(args, arguments));\n });\n });\n}","import _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from './_curry1.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry1 from './_curry1.js';\nimport _curry2 from './_curry2.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","import _arity from './_arity.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n combined[combinedIdx] = result;\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n combinedIdx += 1;\n }\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}","import _isArray from './_isArray.js';\nimport _isTransformer from './_isTransformer.js';\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","import take from '../take.js';\n\nexport default function dropLast(n, xs) {\n return take(n < xs.length ? xs.length - n : 0, xs);\n}","import slice from '../slice.js';\n\nexport default function dropLastWhile(pred, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && pred(xs[idx])) {\n idx -= 1;\n }\n return slice(0, idx + 1, xs);\n}","import _arrayFromIterator from './_arrayFromIterator.js';\nimport _includesWith from './_includesWith.js';\nimport _functionName from './_functionName.js';\nimport _has from './_has.js';\nimport _objectIs from './_objectIs.js';\nimport keys from '../keys.js';\nimport type from '../type.js';\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n}","import _forceReduced from './_forceReduced.js';\nimport _isArrayLike from './_isArrayLike.js';\nimport _reduce from './_reduce.js';\nimport _xfBase from './_xfBase.js';\n\nvar preservingReduced = function (xf) {\n return {\n '@@transducer/init': _xfBase.init,\n '@@transducer/result': function (result) {\n return xf['@@transducer/result'](result);\n },\n '@@transducer/step': function (result, input) {\n var ret = xf['@@transducer/step'](result, input);\n return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;\n }\n };\n};\n\nvar _flatCat = function _xcat(xf) {\n var rxf = preservingReduced(xf);\n return {\n '@@transducer/init': _xfBase.init,\n '@@transducer/result': function (result) {\n return rxf['@@transducer/result'](result);\n },\n '@@transducer/step': function (result, input) {\n return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input);\n }\n };\n};\n\nexport default _flatCat;","export default function _forceReduced(x) {\n return {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","export default function _identity(x) {\n return x;\n}","import _indexOf from './_indexOf.js';\n\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","import equals from '../equals.js';\n\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _has from './_has.js';\n\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","import _curry1 from './_curry1.js';\nimport _isArray from './_isArray.js';\nimport _isString from './_isString.js';\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\nvar _isArrayLike = /*#__PURE__*/_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n if (!x) {\n return false;\n }\n if (typeof x !== 'object') {\n return false;\n }\n if (_isString(x)) {\n return false;\n }\n if (x.nodeType === 1) {\n return !!x.length;\n }\n if (x.length === 0) {\n return true;\n }\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n return false;\n});\nexport default _isArrayLike;","export default function _isFunction(x) {\n return Object.prototype.toString.call(x) === '[object Function]';\n}","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","export default function _isNumber(x) {\n return Object.prototype.toString.call(x) === '[object Number]';\n}","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","export default function _isRegExp(x) {\n return Object.prototype.toString.call(x) === '[object RegExp]';\n}","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArrayLike from './_isArrayLike.js';\n\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\nexport default function _makeFlat(recursive) {\n return function flatt(list) {\n var value, jlen, j;\n var result = [];\n var idx = 0;\n var ilen = list.length;\n\n while (idx < ilen) {\n if (_isArrayLike(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n };\n}","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n return result;\n}","import _has from './_has.js';\n\n// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nfunction _objectAssign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n var idx = 1;\n var length = arguments.length;\n while (idx < length) {\n var source = arguments[idx];\n if (source != null) {\n for (var nextKey in source) {\n if (_has(nextKey, source)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n idx += 1;\n }\n return output;\n}\n\nexport default typeof Object.assign === 'function' ? Object.assign : _objectAssign;","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","export default function _of(x) {\n return [x];\n}","export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","export default function _pipeP(f, g) {\n return function () {\n var ctx = this;\n return f.apply(ctx, arguments).then(function (x) {\n return g.call(ctx, x);\n });\n };\n}","export default function _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","import _isArrayLike from './_isArrayLike.js';\nimport _xwrap from './_xwrap.js';\nimport bind from '../bind.js';\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n idx += 1;\n }\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n step = iter.next();\n }\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\n\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","export default function _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","import _objectAssign from './_objectAssign.js';\nimport _identity from './_identity.js';\nimport _isArrayLike from './_isArrayLike.js';\nimport _isTransformer from './_isTransformer.js';\nimport objOf from '../objOf.js';\n\nvar _stepCatArray = {\n '@@transducer/init': Array,\n '@@transducer/step': function (xs, x) {\n xs.push(x);\n return xs;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatString = {\n '@@transducer/init': String,\n '@@transducer/step': function (a, b) {\n return a + b;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatObject = {\n '@@transducer/init': Object,\n '@@transducer/step': function (result, input) {\n return _objectAssign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input);\n },\n '@@transducer/result': _identity\n};\n\nexport default function _stepCat(obj) {\n if (_isTransformer(obj)) {\n return obj;\n }\n if (_isArrayLike(obj)) {\n return _stepCatArray;\n }\n if (typeof obj === 'string') {\n return _stepCatString;\n }\n if (typeof obj === 'object') {\n return _stepCatObject;\n }\n throw new Error('Cannot create transformer for ' + obj);\n}","/**\n * Polyfill from .\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\n\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\n\nexport default _toISOString;","import _includes from './_includes.js';\nimport _map from './_map.js';\nimport _quote from './_quote.js';\nimport _toISOString from './_toISOString.js';\nimport keys from '../keys.js';\nimport reject from '../reject.js';\n\nexport default function _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '' : _toString(y, xs);\n };\n\n // mapPairs :: (Object, [String]) -> [String]\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n return (/^\\d+$/.test(k)\n );\n }, keys(x)))).join(', ') + ']';\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n case '[object Null]':\n return 'null';\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n case '[object Undefined]':\n return 'undefined';\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n }\n}","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAll = /*#__PURE__*/function () {\n function XAll(f, xf) {\n this.xf = xf;\n this.f = f;\n this.all = true;\n }\n XAll.prototype['@@transducer/init'] = _xfBase.init;\n XAll.prototype['@@transducer/result'] = function (result) {\n if (this.all) {\n result = this.xf['@@transducer/step'](result, true);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAll.prototype['@@transducer/step'] = function (result, input) {\n if (!this.f(input)) {\n this.all = false;\n result = _reduced(this.xf['@@transducer/step'](result, false));\n }\n return result;\n };\n\n return XAll;\n}();\n\nvar _xall = /*#__PURE__*/_curry2(function _xall(f, xf) {\n return new XAll(f, xf);\n});\nexport default _xall;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAny = /*#__PURE__*/function () {\n function XAny(f, xf) {\n this.xf = xf;\n this.f = f;\n this.any = false;\n }\n XAny.prototype['@@transducer/init'] = _xfBase.init;\n XAny.prototype['@@transducer/result'] = function (result) {\n if (!this.any) {\n result = this.xf['@@transducer/step'](result, false);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAny.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.any = true;\n result = _reduced(this.xf['@@transducer/step'](result, true));\n }\n return result;\n };\n\n return XAny;\n}();\n\nvar _xany = /*#__PURE__*/_curry2(function _xany(f, xf) {\n return new XAny(f, xf);\n});\nexport default _xany;","import _concat from './_concat.js';\nimport _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAperture = /*#__PURE__*/function () {\n function XAperture(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XAperture.prototype['@@transducer/init'] = _xfBase.init;\n XAperture.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XAperture.prototype['@@transducer/step'] = function (result, input) {\n this.store(input);\n return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;\n };\n XAperture.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n XAperture.prototype.getCopy = function () {\n return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));\n };\n\n return XAperture;\n}();\n\nvar _xaperture = /*#__PURE__*/_curry2(function _xaperture(n, xf) {\n return new XAperture(n, xf);\n});\nexport default _xaperture;","import _curry2 from './_curry2.js';\nimport _flatCat from './_flatCat.js';\nimport map from '../map.js';\n\nvar _xchain = /*#__PURE__*/_curry2(function _xchain(f, xf) {\n return map(f, _flatCat(xf));\n});\nexport default _xchain;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDrop = /*#__PURE__*/function () {\n function XDrop(n, xf) {\n this.xf = xf;\n this.n = n;\n }\n XDrop.prototype['@@transducer/init'] = _xfBase.init;\n XDrop.prototype['@@transducer/result'] = _xfBase.result;\n XDrop.prototype['@@transducer/step'] = function (result, input) {\n if (this.n > 0) {\n this.n -= 1;\n return result;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XDrop;\n}();\n\nvar _xdrop = /*#__PURE__*/_curry2(function _xdrop(n, xf) {\n return new XDrop(n, xf);\n});\nexport default _xdrop;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropLast = /*#__PURE__*/function () {\n function XDropLast(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XDropLast.prototype['@@transducer/init'] = _xfBase.init;\n XDropLast.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.full) {\n result = this.xf['@@transducer/step'](result, this.acc[this.pos]);\n }\n this.store(input);\n return result;\n };\n XDropLast.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n\n return XDropLast;\n}();\n\nvar _xdropLast = /*#__PURE__*/_curry2(function _xdropLast(n, xf) {\n return new XDropLast(n, xf);\n});\nexport default _xdropLast;","import _curry2 from './_curry2.js';\nimport _reduce from './_reduce.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropLastWhile = /*#__PURE__*/function () {\n function XDropLastWhile(fn, xf) {\n this.f = fn;\n this.retained = [];\n this.xf = xf;\n }\n XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropLastWhile.prototype['@@transducer/result'] = function (result) {\n this.retained = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLastWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.retain(result, input) : this.flush(result, input);\n };\n XDropLastWhile.prototype.flush = function (result, input) {\n result = _reduce(this.xf['@@transducer/step'], result, this.retained);\n this.retained = [];\n return this.xf['@@transducer/step'](result, input);\n };\n XDropLastWhile.prototype.retain = function (result, input) {\n this.retained.push(input);\n return result;\n };\n\n return XDropLastWhile;\n}();\n\nvar _xdropLastWhile = /*#__PURE__*/_curry2(function _xdropLastWhile(fn, xf) {\n return new XDropLastWhile(fn, xf);\n});\nexport default _xdropLastWhile;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropRepeatsWith = /*#__PURE__*/function () {\n function XDropRepeatsWith(pred, xf) {\n this.xf = xf;\n this.pred = pred;\n this.lastValue = undefined;\n this.seenFirstValue = false;\n }\n\n XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init;\n XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result;\n XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) {\n var sameAsLast = false;\n if (!this.seenFirstValue) {\n this.seenFirstValue = true;\n } else if (this.pred(this.lastValue, input)) {\n sameAsLast = true;\n }\n this.lastValue = input;\n return sameAsLast ? result : this.xf['@@transducer/step'](result, input);\n };\n\n return XDropRepeatsWith;\n}();\n\nvar _xdropRepeatsWith = /*#__PURE__*/_curry2(function _xdropRepeatsWith(pred, xf) {\n return new XDropRepeatsWith(pred, xf);\n});\nexport default _xdropRepeatsWith;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropWhile = /*#__PURE__*/function () {\n function XDropWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XDropWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropWhile.prototype['@@transducer/result'] = _xfBase.result;\n XDropWhile.prototype['@@transducer/step'] = function (result, input) {\n if (this.f) {\n if (this.f(input)) {\n return result;\n }\n this.f = null;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XDropWhile;\n}();\n\nvar _xdropWhile = /*#__PURE__*/_curry2(function _xdropWhile(f, xf) {\n return new XDropWhile(f, xf);\n});\nexport default _xdropWhile;","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFilter = /*#__PURE__*/function () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter = /*#__PURE__*/_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\nexport default _xfilter;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFind = /*#__PURE__*/function () {\n function XFind(f, xf) {\n this.xf = xf;\n this.f = f;\n this.found = false;\n }\n XFind.prototype['@@transducer/init'] = _xfBase.init;\n XFind.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, void 0);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFind.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, input));\n }\n return result;\n };\n\n return XFind;\n}();\n\nvar _xfind = /*#__PURE__*/_curry2(function _xfind(f, xf) {\n return new XFind(f, xf);\n});\nexport default _xfind;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindIndex = /*#__PURE__*/function () {\n function XFindIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.found = false;\n }\n XFindIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindIndex.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, -1);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFindIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, this.idx));\n }\n return result;\n };\n\n return XFindIndex;\n}();\n\nvar _xfindIndex = /*#__PURE__*/_curry2(function _xfindIndex(f, xf) {\n return new XFindIndex(f, xf);\n});\nexport default _xfindIndex;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindLast = /*#__PURE__*/function () {\n function XFindLast(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFindLast.prototype['@@transducer/init'] = _xfBase.init;\n XFindLast.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));\n };\n XFindLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.last = input;\n }\n return result;\n };\n\n return XFindLast;\n}();\n\nvar _xfindLast = /*#__PURE__*/_curry2(function _xfindLast(f, xf) {\n return new XFindLast(f, xf);\n});\nexport default _xfindLast;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindLastIndex = /*#__PURE__*/function () {\n function XFindLastIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.lastIdx = -1;\n }\n XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindLastIndex.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx));\n };\n XFindLastIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.lastIdx = this.idx;\n }\n return result;\n };\n\n return XFindLastIndex;\n}();\n\nvar _xfindLastIndex = /*#__PURE__*/_curry2(function _xfindLastIndex(f, xf) {\n return new XFindLastIndex(f, xf);\n});\nexport default _xfindLastIndex;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XMap = /*#__PURE__*/function () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap = /*#__PURE__*/_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\nexport default _xmap;","import _curryN from './_curryN.js';\nimport _has from './_has.js';\nimport _xfBase from './_xfBase.js';\n\nvar XReduceBy = /*#__PURE__*/function () {\n function XReduceBy(valueFn, valueAcc, keyFn, xf) {\n this.valueFn = valueFn;\n this.valueAcc = valueAcc;\n this.keyFn = keyFn;\n this.xf = xf;\n this.inputs = {};\n }\n XReduceBy.prototype['@@transducer/init'] = _xfBase.init;\n XReduceBy.prototype['@@transducer/result'] = function (result) {\n var key;\n for (key in this.inputs) {\n if (_has(key, this.inputs)) {\n result = this.xf['@@transducer/step'](result, this.inputs[key]);\n if (result['@@transducer/reduced']) {\n result = result['@@transducer/value'];\n break;\n }\n }\n }\n this.inputs = null;\n return this.xf['@@transducer/result'](result);\n };\n XReduceBy.prototype['@@transducer/step'] = function (result, input) {\n var key = this.keyFn(input);\n this.inputs[key] = this.inputs[key] || [key, this.valueAcc];\n this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);\n return result;\n };\n\n return XReduceBy;\n}();\n\nvar _xreduceBy = /*#__PURE__*/_curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {\n return new XReduceBy(valueFn, valueAcc, keyFn, xf);\n});\nexport default _xreduceBy;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTake = /*#__PURE__*/function () {\n function XTake(n, xf) {\n this.xf = xf;\n this.n = n;\n this.i = 0;\n }\n XTake.prototype['@@transducer/init'] = _xfBase.init;\n XTake.prototype['@@transducer/result'] = _xfBase.result;\n XTake.prototype['@@transducer/step'] = function (result, input) {\n this.i += 1;\n var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);\n return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret;\n };\n\n return XTake;\n}();\n\nvar _xtake = /*#__PURE__*/_curry2(function _xtake(n, xf) {\n return new XTake(n, xf);\n});\nexport default _xtake;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTakeWhile = /*#__PURE__*/function () {\n function XTakeWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTakeWhile.prototype['@@transducer/init'] = _xfBase.init;\n XTakeWhile.prototype['@@transducer/result'] = _xfBase.result;\n XTakeWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result);\n };\n\n return XTakeWhile;\n}();\n\nvar _xtakeWhile = /*#__PURE__*/_curry2(function _xtakeWhile(f, xf) {\n return new XTakeWhile(f, xf);\n});\nexport default _xtakeWhile;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTap = /*#__PURE__*/function () {\n function XTap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTap.prototype['@@transducer/init'] = _xfBase.init;\n XTap.prototype['@@transducer/result'] = _xfBase.result;\n XTap.prototype['@@transducer/step'] = function (result, input) {\n this.f(input);\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XTap;\n}();\n\nvar _xtap = /*#__PURE__*/_curry2(function _xtap(f, xf) {\n return new XTap(f, xf);\n});\nexport default _xtap;","var XWrap = /*#__PURE__*/function () {\n function XWrap(fn) {\n this.f = fn;\n }\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\nimport _filter from './internal/_filter.js';\nimport flip from './flip.js';\nimport uniq from './uniq.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]\n */\nvar intersection = /*#__PURE__*/_curry2(function intersection(list1, list2) {\n var lookupList, filteredList;\n if (list1.length > list2.length) {\n lookupList = list1;\n filteredList = list2;\n } else {\n lookupList = list2;\n filteredList = list1;\n }\n return uniq(_filter(flip(_includes)(lookupList), filteredList));\n});\nexport default intersection;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list with the separator interposed between elements.\n *\n * Dispatches to the `intersperse` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} separator The element to add to the list.\n * @param {Array} list The list to be interposed.\n * @return {Array} The new list.\n * @example\n *\n * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's']\n */\nvar intersperse = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('intersperse', function intersperse(separator, list) {\n var out = [];\n var idx = 0;\n var length = list.length;\n while (idx < length) {\n if (idx === length - 1) {\n out.push(list[idx]);\n } else {\n out.push(list[idx], separator);\n }\n idx += 1;\n }\n return out;\n}));\nexport default intersperse;","import _clone from './internal/_clone.js';\nimport _curry3 from './internal/_curry3.js';\nimport _isTransformer from './internal/_isTransformer.js';\nimport _reduce from './internal/_reduce.js';\nimport _stepCat from './internal/_stepCat.js';\n\n/**\n * Transforms the items of the list with the transducer and appends the\n * transformed items to the accumulator using an appropriate iterator function\n * based on the accumulator type.\n *\n * The accumulator can be an array, string, object or a transformer. Iterated\n * items will be appended to arrays and concatenated to strings. Objects will\n * be merged directly or 2-item arrays will be merged as key, value pairs.\n *\n * The accumulator can also be a transformer object that provides a 2-arity\n * reducing iterator function, step, 0-arity initial value function, init, and\n * 1-arity result extraction function result. The step function is used as the\n * iterator function in reduce. The result function is used to convert the\n * final accumulator into the return type and in most cases is R.identity. The\n * init function is used to provide the initial accumulator.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the\n * transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig a -> (b -> b) -> [c] -> a\n * @param {*} acc The initial accumulator value.\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.transduce\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n *\n * R.into([], transducer, numbers); //=> [2, 3]\n *\n * const intoArray = R.into([]);\n * intoArray(transducer, numbers); //=> [2, 3]\n */\nvar into = /*#__PURE__*/_curry3(function into(acc, xf, list) {\n return _isTransformer(acc) ? _reduce(xf(acc), acc['@@transducer/init'](), list) : _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list);\n});\nexport default into;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\nimport keys from './keys.js';\n\n/**\n * Same as [`R.invertObj`](#invertObj), however this accounts for objects with\n * duplicate values by putting the values into an array.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: [ s, ... ]}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object with keys in an array.\n * @see R.invertObj\n * @example\n *\n * const raceResultsByFirstName = {\n * first: 'alice',\n * second: 'jake',\n * third: 'alice',\n * };\n * R.invert(raceResultsByFirstName);\n * //=> { 'alice': ['first', 'third'], 'jake':['second'] }\n */\nvar invert = /*#__PURE__*/_curry1(function invert(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n\n while (idx < len) {\n var key = props[idx];\n var val = obj[key];\n var list = _has(val, out) ? out[val] : out[val] = [];\n list[list.length] = key;\n idx += 1;\n }\n return out;\n});\nexport default invert;","import _curry1 from './internal/_curry1.js';\nimport keys from './keys.js';\n\n/**\n * Returns a new object with the keys of the given object as values, and the\n * values of the given object, which are coerced to strings, as keys. Note\n * that the last key found is preferred when handling the same value.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: s}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object\n * @see R.invert\n * @example\n *\n * const raceResults = {\n * first: 'alice',\n * second: 'jake'\n * };\n * R.invertObj(raceResults);\n * //=> { 'alice': 'first', 'jake':'second' }\n *\n * // Alternatively:\n * const raceResults = ['alice', 'jake'];\n * R.invertObj(raceResults);\n * //=> { 'alice': '0', 'jake':'1' }\n */\nvar invertObj = /*#__PURE__*/_curry1(function invertObj(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n\n while (idx < len) {\n var key = props[idx];\n out[obj[key]] = key;\n idx += 1;\n }\n return out;\n});\nexport default invertObj;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport curryN from './curryN.js';\nimport toString from './toString.js';\n\n/**\n * Turns a named method with a specified arity into a function that can be\n * called directly supplied with arguments and a target object.\n *\n * The returned function is curried and accepts `arity + 1` parameters where\n * the final parameter is the target object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)\n * @param {Number} arity Number of arguments the returned function should take\n * before the target object.\n * @param {String} method Name of the method to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n *\n * const sliceFrom = R.invoker(1, 'slice');\n * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'\n * const sliceFrom6 = R.invoker(2, 'slice')(6);\n * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\nvar invoker = /*#__PURE__*/_curry2(function invoker(arity, method) {\n return curryN(arity + 1, function () {\n var target = arguments[arity];\n if (target != null && _isFunction(target[method])) {\n return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n }\n throw new TypeError(toString(target) + ' does not have a method named \"' + method + '\"');\n });\n});\nexport default invoker;","import _curry2 from './internal/_curry2.js';\n\n/**\n * See if an object (`val`) is an instance of the supplied constructor. This\n * function will check up the inheritance chain, if any.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Type\n * @sig (* -> {*}) -> a -> Boolean\n * @param {Object} ctor A constructor\n * @param {*} val The value to test\n * @return {Boolean}\n * @example\n *\n * R.is(Object, {}); //=> true\n * R.is(Number, 1); //=> true\n * R.is(Object, 1); //=> false\n * R.is(String, 's'); //=> true\n * R.is(String, new String('')); //=> true\n * R.is(Object, new String('')); //=> true\n * R.is(Object, 's'); //=> false\n * R.is(Number, {}); //=> false\n */\nvar is = /*#__PURE__*/_curry2(function is(Ctor, val) {\n return val != null && val.constructor === Ctor || val instanceof Ctor;\n});\nexport default is;","import _curry1 from './internal/_curry1.js';\nimport empty from './empty.js';\nimport equals from './equals.js';\n\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n */\nvar isEmpty = /*#__PURE__*/_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\nexport default isEmpty;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\nvar isNil = /*#__PURE__*/_curry1(function isNil(x) {\n return x == null;\n});\nexport default isNil;","import invoker from './invoker.js';\n\n/**\n * Returns a string made by inserting the `separator` between each element and\n * concatenating all the elements into a single string.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig String -> [a] -> String\n * @param {Number|String} separator The string used to separate the elements.\n * @param {Array} xs The elements to join into a string.\n * @return {String} str The string made by concatenating `xs` with `separator`.\n * @see R.split\n * @example\n *\n * const spacer = R.join(' ');\n * spacer(['a', 2, 3.4]); //=> 'a 2 3.4'\n * R.join('|', [1, 2, 3]); //=> '1|2|3'\n */\nvar join = /*#__PURE__*/invoker(1, 'join');\nexport default join;","import _curry1 from './internal/_curry1.js';\nimport converge from './converge.js';\n\n/**\n * juxt applies a list of functions to a list of values.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Function\n * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n])\n * @param {Array} fns An array of functions\n * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters.\n * @see R.applySpec\n * @example\n *\n * const getRange = R.juxt([Math.min, Math.max]);\n * getRange(3, 4, 9, -3); //=> [-3, 9]\n * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)]\n */\nvar juxt = /*#__PURE__*/_curry1(function juxt(fns) {\n return converge(function () {\n return Array.prototype.slice.call(arguments, 0);\n }, fns);\n});\nexport default juxt;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\nimport _isArguments from './internal/_isArguments.js';\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a list containing the names of all the properties of the supplied\n * object, including prototype properties.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own and prototype properties.\n * @see R.keys, R.valuesIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.keysIn(f); //=> ['x', 'y']\n */\nvar keysIn = /*#__PURE__*/_curry1(function keysIn(obj) {\n var prop;\n var ks = [];\n for (prop in obj) {\n ks[ks.length] = prop;\n }\n return ks;\n});\nexport default keysIn;","import nth from './nth.js';\n\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> ''\n */\nvar last = /*#__PURE__*/nth(-1);\nexport default last;","import _curry2 from './internal/_curry2.js';\nimport _isArray from './internal/_isArray.js';\nimport equals from './equals.js';\n\n/**\n * Returns the position of the last occurrence of an item in an array, or -1 if\n * the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.indexOf\n * @example\n *\n * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6\n * R.lastIndexOf(10, [1,2,3,4]); //=> -1\n */\nvar lastIndexOf = /*#__PURE__*/_curry2(function lastIndexOf(target, xs) {\n if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) {\n return xs.lastIndexOf(target);\n } else {\n var idx = xs.length - 1;\n while (idx >= 0) {\n if (equals(xs[idx], target)) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n }\n});\nexport default lastIndexOf;","import _curry1 from './internal/_curry1.js';\nimport _isNumber from './internal/_isNumber.js';\n\n/**\n * Returns the number of elements in the array by returning `list.length`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [a] -> Number\n * @param {Array} list The array to inspect.\n * @return {Number} The length of the array.\n * @example\n *\n * R.length([]); //=> 0\n * R.length([1, 2, 3]); //=> 3\n */\nvar length = /*#__PURE__*/_curry1(function length(list) {\n return list != null && _isNumber(list.length) ? list.length : NaN;\n});\nexport default length;","import _curry2 from './internal/_curry2.js';\nimport map from './map.js';\n\n/**\n * Returns a lens for the given getter and setter functions. The getter \"gets\"\n * the value of the focus; the setter \"sets\" the value of the focus. The setter\n * should not mutate the data structure.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig (s -> a) -> ((a, s) -> s) -> Lens s a\n * @param {Function} getter\n * @param {Function} setter\n * @return {Lens}\n * @see R.view, R.set, R.over, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lens(R.prop('x'), R.assoc('x'));\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lens = /*#__PURE__*/_curry2(function lens(getter, setter) {\n return function (toFunctorFn) {\n return function (target) {\n return map(function (focus) {\n return setter(focus, target);\n }, toFunctorFn(getter(target)));\n };\n };\n});\nexport default lens;","import _curry1 from './internal/_curry1.js';\nimport lens from './lens.js';\nimport nth from './nth.js';\nimport update from './update.js';\n\n/**\n * Returns a lens whose focus is the specified index.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Number -> Lens s a\n * @param {Number} n\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.view(headLens, ['a', 'b', 'c']); //=> 'a'\n * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c']\n * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c']\n */\nvar lensIndex = /*#__PURE__*/_curry1(function lensIndex(n) {\n return lens(nth(n), update(n));\n});\nexport default lensIndex;","import _curry1 from './internal/_curry1.js';\nimport assocPath from './assocPath.js';\nimport lens from './lens.js';\nimport path from './path.js';\n\n/**\n * Returns a lens whose focus is the specified path.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @typedefn Idx = String | Int\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig [Idx] -> Lens s a\n * @param {Array} path The path to use.\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xHeadYLens = R.lensPath(['x', 0, 'y']);\n *\n * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> 2\n * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}\n * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]}\n */\nvar lensPath = /*#__PURE__*/_curry1(function lensPath(p) {\n return lens(path(p), assocPath(p));\n});\nexport default lensPath;","import _curry1 from './internal/_curry1.js';\nimport assoc from './assoc.js';\nimport lens from './lens.js';\nimport prop from './prop.js';\n\n/**\n * Returns a lens whose focus is the specified property.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig String -> Lens s a\n * @param {String} k\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lensProp = /*#__PURE__*/_curry1(function lensProp(k) {\n return lens(prop(k), assoc(k));\n});\nexport default lensProp;","import _curry1 from './internal/_curry1.js';\nimport liftN from './liftN.js';\n\n/**\n * \"lifts\" a function of arity > 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]\n */\nvar lift = /*#__PURE__*/_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\nexport default lift;","import _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport ap from './ap.js';\nimport curryN from './curryN.js';\nimport map from './map.js';\n\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\nvar liftN = /*#__PURE__*/_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\nexport default liftN;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is less than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.gt\n * @example\n *\n * R.lt(2, 1); //=> false\n * R.lt(2, 2); //=> false\n * R.lt(2, 3); //=> true\n * R.lt('a', 'z'); //=> true\n * R.lt('z', 'a'); //=> false\n */\nvar lt = /*#__PURE__*/_curry2(function lt(a, b) {\n return a < b;\n});\nexport default lt;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is less than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.gte\n * @example\n *\n * R.lte(2, 1); //=> false\n * R.lte(2, 2); //=> true\n * R.lte(2, 3); //=> true\n * R.lte('a', 'z'); //=> true\n * R.lte('z', 'a'); //=> false\n */\nvar lte = /*#__PURE__*/_curry2(function lte(a, b) {\n return a <= b;\n});\nexport default lte;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _map from './internal/_map.js';\nimport _reduce from './internal/_reduce.js';\nimport _xmap from './internal/_xmap.js';\nimport curryN from './curryN.js';\nimport keys from './keys.js';\n\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\nvar map = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n default:\n return _map(fn, functor);\n }\n}));\nexport default map;","import _curry3 from './internal/_curry3.js';\n\n/**\n * The `mapAccum` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from left to right, and returning a final value of this\n * accumulator together with the new list.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.scan, R.addIndex, R.mapAccumRight\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [a + b, a + b];\n *\n * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']]\n * @symb R.mapAccum(f, a, [b, c, d]) = [\n * f(f(f(a, b)[0], c)[0], d)[0],\n * [\n * f(a, b)[1],\n * f(f(a, b)[0], c)[1],\n * f(f(f(a, b)[0], c)[0], d)[1]\n * ]\n * ]\n */\nvar mapAccum = /*#__PURE__*/_curry3(function mapAccum(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var tuple = [acc];\n while (idx < len) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx += 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccum;","import _curry3 from './internal/_curry3.js';\n\n/**\n * The `mapAccumRight` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from right to left, and returning a final value of this\n * accumulator together with the new list.\n *\n * Similar to [`mapAccum`](#mapAccum), except moves through the input list from\n * the right to the left.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.addIndex, R.mapAccum\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [b + a, b + a];\n *\n * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']]\n * @symb R.mapAccumRight(f, a, [b, c, d]) = [\n * f(f(f(a, d)[0], c)[0], b)[0],\n * [\n * f(a, d)[1],\n * f(f(a, d)[0], c)[1],\n * f(f(f(a, d)[0], c)[0], b)[1]\n * ]\n * ]\n */\nvar mapAccumRight = /*#__PURE__*/_curry3(function mapAccumRight(fn, acc, list) {\n var idx = list.length - 1;\n var result = [];\n var tuple = [acc];\n while (idx >= 0) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx -= 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccumRight;","import _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport keys from './keys.js';\n\n/**\n * An Object-specific version of [`map`](#map). The function is applied to three\n * arguments: *(value, key, obj)*. If only the value is significant, use\n * [`map`](#map) instead.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig ((*, String, Object) -> *) -> Object -> Object\n * @param {Function} fn\n * @param {Object} obj\n * @return {Object}\n * @see R.map\n * @example\n *\n * const xyz = { x: 1, y: 2, z: 3 };\n * const prependKeyAndDouble = (num, key, obj) => key + (num * 2);\n *\n * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' }\n */\nvar mapObjIndexed = /*#__PURE__*/_curry2(function mapObjIndexed(fn, obj) {\n return _reduce(function (acc, key) {\n acc[key] = fn(obj[key], key, obj);\n return acc;\n }, {}, keys(obj));\n});\nexport default mapObjIndexed;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Tests a regular expression against a String. Note that this function will\n * return an empty array when there are no matches. This differs from\n * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)\n * which returns `null` when there are no matches.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig RegExp -> String -> [String | Undefined]\n * @param {RegExp} rx A regular expression.\n * @param {String} str The string to match against\n * @return {Array} The list of matches or empty array.\n * @see R.test\n * @example\n *\n * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na']\n * R.match(/a/, 'b'); //=> []\n * R.match(/a/, null); //=> TypeError: null does not have a method named \"match\"\n */\nvar match = /*#__PURE__*/_curry2(function match(rx, str) {\n return str.match(rx) || [];\n});\nexport default match;","import _curry2 from './internal/_curry2.js';\nimport _isInteger from './internal/_isInteger.js';\n\n/**\n * `mathMod` behaves like the modulo operator should mathematically, unlike the\n * `%` operator (and by extension, [`R.modulo`](#modulo)). So while\n * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer\n * arguments, and returns NaN when the modulus is zero or negative.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} m The dividend.\n * @param {Number} p the modulus.\n * @return {Number} The result of `b mod a`.\n * @see R.modulo\n * @example\n *\n * R.mathMod(-17, 5); //=> 3\n * R.mathMod(17, 5); //=> 2\n * R.mathMod(17, -5); //=> NaN\n * R.mathMod(17, 0); //=> NaN\n * R.mathMod(17.2, 5); //=> NaN\n * R.mathMod(17, 5.3); //=> NaN\n *\n * const clock = R.mathMod(R.__, 12);\n * clock(15); //=> 3\n * clock(24); //=> 0\n *\n * const seventeenMod = R.mathMod(17);\n * seventeenMod(3); //=> 2\n * seventeenMod(4); //=> 1\n * seventeenMod(10); //=> 7\n */\nvar mathMod = /*#__PURE__*/_curry2(function mathMod(m, p) {\n if (!_isInteger(m)) {\n return NaN;\n }\n if (!_isInteger(p) || p < 1) {\n return NaN;\n }\n return (m % p + p) % p;\n});\nexport default mathMod;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\nvar max = /*#__PURE__*/_curry2(function max(a, b) {\n return b > a ? b : a;\n});\nexport default max;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * larger result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.max, R.minBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.maxBy(square, -3, 2); //=> -3\n *\n * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5\n * R.reduce(R.maxBy(square), 0, []); //=> 0\n */\nvar maxBy = /*#__PURE__*/_curry3(function maxBy(f, a, b) {\n return f(b) > f(a) ? b : a;\n});\nexport default maxBy;","import _curry1 from './internal/_curry1.js';\nimport sum from './sum.js';\n\n/**\n * Returns the mean of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.median\n * @example\n *\n * R.mean([2, 7, 9]); //=> 6\n * R.mean([]); //=> NaN\n */\nvar mean = /*#__PURE__*/_curry1(function mean(list) {\n return sum(list) / list.length;\n});\nexport default mean;","import _curry1 from './internal/_curry1.js';\nimport mean from './mean.js';\n\n/**\n * Returns the median of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.mean\n * @example\n *\n * R.median([2, 9, 7]); //=> 7\n * R.median([7, 2, 10, 9]); //=> 8\n * R.median([]); //=> NaN\n */\nvar median = /*#__PURE__*/_curry1(function median(list) {\n var len = list.length;\n if (len === 0) {\n return NaN;\n }\n var width = 2 - len % 2;\n var idx = (len - width) / 2;\n return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }).slice(idx, idx + width));\n});\nexport default median;","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Creates a new function that, when invoked, caches the result of calling `fn`\n * for a given argument set and returns the result. Subsequent calls to the\n * memoized `fn` with the same argument set will not result in an additional\n * call to `fn`; instead, the cached result for that set of arguments will be\n * returned.\n *\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (*... -> String) -> (*... -> a) -> (*... -> a)\n * @param {Function} fn The function to generate the cache key.\n * @param {Function} fn The function to memoize.\n * @return {Function} Memoized version of `fn`.\n * @example\n *\n * let count = 0;\n * const factorial = R.memoizeWith(R.identity, n => {\n * count += 1;\n * return R.product(R.range(1, n + 1));\n * });\n * factorial(5); //=> 120\n * factorial(5); //=> 120\n * factorial(5); //=> 120\n * count; //=> 1\n */\nvar memoizeWith = /*#__PURE__*/_curry2(function memoizeWith(mFn, fn) {\n var cache = {};\n return _arity(fn.length, function () {\n var key = mFn.apply(this, arguments);\n if (!_has(key, cache)) {\n cache[key] = fn.apply(this, arguments);\n }\n return cache[key];\n });\n});\nexport default memoizeWith;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @deprecated\n * @example\n *\n * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.merge({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.merge(a, b) = {...a, ...b}\n */\nvar merge = /*#__PURE__*/_curry2(function merge(l, r) {\n return _objectAssign({}, l, r);\n});\nexport default merge;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Merges a list of objects together into one object.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -> {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}\n * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\nvar mergeAll = /*#__PURE__*/_curry1(function mergeAll(list) {\n return _objectAssign.apply(null, [{}].concat(list));\n});\nexport default mergeAll;","import _curry2 from './internal/_curry2.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }}\n */\nvar mergeDeepLeft = /*#__PURE__*/_curry2(function mergeDeepLeft(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return lVal;\n }, lObj, rObj);\n});\nexport default mergeDeepLeft;","import _curry2 from './internal/_curry2.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }}\n */\nvar mergeDeepRight = /*#__PURE__*/_curry2(function mergeDeepRight(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return rVal;\n }, lObj, rObj);\n});\nexport default mergeDeepRight;","import _curry3 from './internal/_curry3.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to associated values using the\n * resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepWith(R.concat,\n * { a: true, c: { values: [10, 20] }},\n * { b: true, c: { values: [15, 35] }});\n * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWith = /*#__PURE__*/_curry3(function mergeDeepWith(fn, lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return fn(lVal, rVal);\n }, lObj, rObj);\n});\nexport default mergeDeepWith;","import _curry3 from './internal/_curry3.js';\nimport _isObject from './internal/_isObject.js';\nimport mergeWithKey from './mergeWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n * using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeDeepWithKey(concatValues,\n * { a: true, c: { thing: 'foo', values: [10, 20] }},\n * { b: true, c: { thing: 'bar', values: [15, 35] }});\n * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWithKey = /*#__PURE__*/_curry3(function mergeDeepWithKey(fn, lObj, rObj) {\n return mergeWithKey(function (k, lVal, rVal) {\n if (_isObject(lVal) && _isObject(rVal)) {\n return mergeDeepWithKey(fn, lVal, rVal);\n } else {\n return fn(k, lVal, rVal);\n }\n }, lObj, rObj);\n});\nexport default mergeDeepWithKey;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const resetToDefault = R.mergeLeft({x: 0});\n * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeLeft(a, b) = {...b, ...a}\n */\nvar mergeLeft = /*#__PURE__*/_curry2(function mergeLeft(l, r) {\n return _objectAssign({}, r, l);\n});\nexport default mergeLeft;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.mergeRight({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeRight(a, b) = {...a, ...b}\n */\nvar mergeRight = /*#__PURE__*/_curry2(function mergeRight(l, r) {\n return _objectAssign({}, l, r);\n});\nexport default mergeRight;","import _curry3 from './internal/_curry3.js';\nimport mergeWithKey from './mergeWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the values\n * associated with the key in each object, with the result being used as the\n * value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWith, R.merge, R.mergeWithKey\n * @example\n *\n * R.mergeWith(R.concat,\n * { a: true, values: [10, 20] },\n * { b: true, values: [15, 35] });\n * //=> { a: true, b: true, values: [10, 20, 15, 35] }\n */\nvar mergeWith = /*#__PURE__*/_curry3(function mergeWith(fn, l, r) {\n return mergeWithKey(function (_, _l, _r) {\n return fn(_l, _r);\n }, l, r);\n});\nexport default mergeWith;","import _curry3 from './internal/_curry3.js';\nimport _has from './internal/_has.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.merge, R.mergeWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeWithKey(concatValues,\n * { a: true, thing: 'foo', values: [10, 20] },\n * { b: true, thing: 'bar', values: [15, 35] });\n * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */\nvar mergeWithKey = /*#__PURE__*/_curry3(function mergeWithKey(fn, l, r) {\n var result = {};\n var k;\n\n for (k in l) {\n if (_has(k, l)) {\n result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];\n }\n }\n\n for (k in r) {\n if (_has(k, r) && !_has(k, result)) {\n result[k] = r[k];\n }\n }\n\n return result;\n});\nexport default mergeWithKey;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the smaller of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.minBy, R.max\n * @example\n *\n * R.min(789, 123); //=> 123\n * R.min('a', 'b'); //=> 'a'\n */\nvar min = /*#__PURE__*/_curry2(function min(a, b) {\n return b < a ? b : a;\n});\nexport default min;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * smaller result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.min, R.maxBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.minBy(square, -3, 2); //=> 2\n *\n * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1\n * R.reduce(R.minBy(square), Infinity, []); //=> Infinity\n */\nvar minBy = /*#__PURE__*/_curry3(function minBy(f, a, b) {\n return f(b) < f(a) ? b : a;\n});\nexport default minBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Divides the first parameter by the second and returns the remainder. Note\n * that this function preserves the JavaScript-style behavior for modulo. For\n * mathematical modulo see [`mathMod`](#mathMod).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The value to the divide.\n * @param {Number} b The pseudo-modulus\n * @return {Number} The result of `b % a`.\n * @see R.mathMod\n * @example\n *\n * R.modulo(17, 3); //=> 2\n * // JS behavior:\n * R.modulo(-17, 3); //=> -2\n * R.modulo(17, -3); //=> 2\n *\n * const isOdd = R.modulo(R.__, 2);\n * isOdd(42); //=> 0\n * isOdd(21); //=> 1\n */\nvar modulo = /*#__PURE__*/_curry2(function modulo(a, b) {\n return a % b;\n});\nexport default modulo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Move an item, at index `from`, to index `to`, in a list of elements.\n * A new list will be created containing the new elements order.\n *\n * @func\n * @memberOf R\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} from The source index\n * @param {Number} to The destination index\n * @param {Array} list The list which will serve to realise the move\n * @return {Array} The new list reordered\n * @example\n *\n * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f']\n * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation\n */\nvar move = /*#__PURE__*/_curry3(function (from, to, list) {\n var length = list.length;\n var result = list.slice();\n var positiveFrom = from < 0 ? length + from : from;\n var positiveTo = to < 0 ? length + to : to;\n var item = result.splice(positiveFrom, 1);\n\n return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length));\n});\n\nexport default move;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Multiplies two numbers. Equivalent to `a * b` but curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a * b`.\n * @see R.divide\n * @example\n *\n * const double = R.multiply(2);\n * const triple = R.multiply(3);\n * double(3); //=> 6\n * triple(4); //=> 12\n * R.multiply(2, 5); //=> 10\n */\nvar multiply = /*#__PURE__*/_curry2(function multiply(a, b) {\n return a * b;\n});\nexport default multiply;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly `n` parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} n The desired arity of the new function.\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity `n`.\n * @see R.binary, R.unary\n * @example\n *\n * const takesTwoArgs = (a, b) => [a, b];\n *\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.nAry(1, takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only `n` arguments are passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.nAry(0, f)(a, b) = f()\n * @symb R.nAry(1, f)(a, b) = f(a)\n * @symb R.nAry(2, f)(a, b) = f(a, b)\n */\nvar nAry = /*#__PURE__*/_curry2(function nAry(n, fn) {\n switch (n) {\n case 0:\n return function () {\n return fn.call(this);\n };\n case 1:\n return function (a0) {\n return fn.call(this, a0);\n };\n case 2:\n return function (a0, a1) {\n return fn.call(this, a0, a1);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.call(this, a0, a1, a2);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.call(this, a0, a1, a2, a3);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.call(this, a0, a1, a2, a3, a4);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.call(this, a0, a1, a2, a3, a4, a5);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n };\n default:\n throw new Error('First argument to nAry must be a non-negative integer no greater than ten');\n }\n});\nexport default nAry;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Negates its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number}\n * @example\n *\n * R.negate(42); //=> -42\n */\nvar negate = /*#__PURE__*/_curry1(function negate(n) {\n return -n;\n});\nexport default negate;","import _complement from './internal/_complement.js';\nimport _curry2 from './internal/_curry2.js';\nimport all from './all.js';\n\n/**\n * Returns `true` if no elements of the list match the predicate, `false`\n * otherwise.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise.\n * @see R.all, R.any\n * @example\n *\n * const isEven = n => n % 2 === 0;\n * const isOdd = n => n % 2 === 1;\n *\n * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true\n * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false\n */\nvar none = /*#__PURE__*/_curry2(function none(fn, input) {\n return all(_complement(fn), input);\n});\nexport default none;","import _curry1 from './internal/_curry1.js';\n\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\nvar not = /*#__PURE__*/_curry1(function not(a) {\n return !a;\n});\nexport default not;","import _curry2 from './internal/_curry2.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\nvar nth = /*#__PURE__*/_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\nexport default nth;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport nth from './nth.js';\n\n/**\n * Returns a function which returns its nth argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig Number -> *... -> *\n * @param {Number} n\n * @return {Function}\n * @example\n *\n * R.nthArg(1)('a', 'b', 'c'); //=> 'b'\n * R.nthArg(-1)('a', 'b', 'c'); //=> 'c'\n * @symb R.nthArg(-1)(a, b, c) = c\n * @symb R.nthArg(0)(a, b, c) = a\n * @symb R.nthArg(1)(a, b, c) = b\n */\nvar nthArg = /*#__PURE__*/_curry1(function nthArg(n) {\n var arity = n < 0 ? 1 : n + 1;\n return curryN(arity, function () {\n return nth(n, arguments);\n });\n});\nexport default nthArg;","import _curry3 from './internal/_curry3.js';\n\n/**\n * `o` is a curried composition function that returns a unary function.\n * Like [`compose`](#compose), `o` performs right-to-left function composition.\n * Unlike [`compose`](#compose), the rightmost function passed to `o` will be\n * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is\n * limited to accepting only 2 unary functions. The name o was chosen because\n * of its similarity to the mathematical composition operator ∘.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (b -> c) -> (a -> b) -> a -> c\n * @param {Function} f\n * @param {Function} g\n * @return {Function}\n * @see R.compose, R.pipe\n * @example\n *\n * const classyGreeting = name => \"The name's \" + name.last + \", \" + name.first + \" \" + name.last\n * const yellGreeting = R.o(R.toUpper, classyGreeting);\n * yellGreeting({first: 'James', last: 'Bond'}); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.o(R.multiply(10), R.add(10))(-4) //=> 60\n *\n * @symb R.o(f, g, x) = f(g(x))\n */\nvar o = /*#__PURE__*/_curry3(function o(f, g, x) {\n return f(g(x));\n});\nexport default o;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates an object containing a single key:value pair.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @sig String -> a -> {String:a}\n * @param {String} key\n * @param {*} val\n * @return {Object}\n * @see R.pair\n * @example\n *\n * const matchPhrases = R.compose(\n * R.objOf('must'),\n * R.map(R.objOf('match_phrase'))\n * );\n * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]}\n */\nvar objOf = /*#__PURE__*/_curry2(function objOf(key, val) {\n var obj = {};\n obj[key] = val;\n return obj;\n});\nexport default objOf;","import _curry1 from './internal/_curry1.js';\nimport _of from './internal/_of.js';\n\n/**\n * Returns a singleton array containing the value provided.\n *\n * Note this `of` is different from the ES6 `of`; See\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> [a]\n * @param {*} x any value\n * @return {Array} An array wrapping `x`.\n * @example\n *\n * R.of(null); //=> [null]\n * R.of([42]); //=> [[42]]\n */\nvar of = /*#__PURE__*/_curry1(_of);\nexport default of;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -> {String: *} -> {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}\n */\nvar omit = /*#__PURE__*/_curry2(function omit(names, obj) {\n var result = {};\n var index = {};\n var idx = 0;\n var len = names.length;\n\n while (idx < len) {\n index[names[idx]] = 1;\n idx += 1;\n }\n\n for (var prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default omit;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Accepts a function `fn` and returns a function that guards invocation of\n * `fn` such that `fn` can only ever be called once, no matter how many times\n * the returned function is invoked. The first value calculated is returned in\n * subsequent invocations.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a... -> b) -> (a... -> b)\n * @param {Function} fn The function to wrap in a call-only-once wrapper.\n * @return {Function} The wrapped function.\n * @example\n *\n * const addOneOnce = R.once(x => x + 1);\n * addOneOnce(10); //=> 11\n * addOneOnce(addOneOnce(50)); //=> 11\n */\nvar once = /*#__PURE__*/_curry1(function once(fn) {\n var called = false;\n var result;\n return _arity(fn.length, function () {\n if (called) {\n return result;\n }\n called = true;\n result = fn.apply(this, arguments);\n return result;\n });\n});\nexport default once;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if one or both of its arguments are `true`. Returns `false`\n * if both arguments are `false`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any} the first argument if truthy, otherwise the second argument.\n * @see R.either\n * @example\n *\n * R.or(true, true); //=> true\n * R.or(true, false); //=> true\n * R.or(false, true); //=> true\n * R.or(false, false); //=> false\n */\nvar or = /*#__PURE__*/_curry2(function or(a, b) {\n return a || b;\n});\nexport default or;","import _curry2 from './internal/_curry2.js';\nimport _assertPromise from './internal/_assertPromise.js';\n\n/**\n * Returns the result of applying the onFailure function to the value inside\n * a failed promise. This is useful for handling rejected promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig (e -> b) -> (Promise e a) -> (Promise e b)\n * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b)\n * @param {Function} onFailure The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(null, onFailure)`\n * @see R.then\n * @example\n *\n * var failedFetch = (id) => Promise.reject('bad ID');\n * var useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' })\n *\n * //recoverFromFailure :: String -> Promise ({firstName, lastName})\n * var recoverFromFailure = R.pipe(\n * failedFetch,\n * R.otherwise(useDefault),\n * R.then(R.pick(['firstName', 'lastName'])),\n * );\n * recoverFromFailure(12345).then(console.log)\n */\nvar otherwise = /*#__PURE__*/_curry2(function otherwise(f, p) {\n _assertPromise('otherwise', p);\n\n return p.then(null, f);\n});\nexport default otherwise;","import _curry3 from './internal/_curry3.js';\n\n// `Identity` is a functor that holds a single value, where `map` simply\n// transforms the held value with the provided function.\nvar Identity = function (x) {\n return { value: x, map: function (f) {\n return Identity(f(x));\n } };\n};\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the result of applying the given function to\n * the focused value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> (a -> a) -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']\n */\nvar over = /*#__PURE__*/_curry3(function over(lens, f, x) {\n // The value returned by the getter function is first transformed with `f`,\n // then set as the value of an `Identity`. This is then mapped over with the\n // setter function of the lens.\n return lens(function (y) {\n return Identity(f(y));\n })(x).value;\n});\nexport default over;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category List\n * @sig a -> b -> (a,b)\n * @param {*} fst\n * @param {*} snd\n * @return {Array}\n * @see R.objOf, R.of\n * @example\n *\n * R.pair('foo', 'bar'); //=> ['foo', 'bar']\n */\nvar pair = /*#__PURE__*/_curry2(function pair(fst, snd) {\n return [fst, snd];\n});\nexport default pair;","import _concat from './internal/_concat.js';\nimport _createPartialApplicator from './internal/_createPartialApplicator.js';\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided initially followed by the arguments provided to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partialRight, R.curry\n * @example\n *\n * const multiply2 = (a, b) => a * b;\n * const double = R.partial(multiply2, [2]);\n * double(2); //=> 4\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const sayHello = R.partial(greet, ['Hello']);\n * const sayHelloToMs = R.partial(sayHello, ['Ms.']);\n * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d)\n */\nvar partial = /*#__PURE__*/_createPartialApplicator(_concat);\nexport default partial;","import _concat from './internal/_concat.js';\nimport _createPartialApplicator from './internal/_createPartialApplicator.js';\nimport flip from './flip.js';\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided to `g` followed by the arguments provided initially.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partial\n * @example\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);\n *\n * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b)\n */\nvar partialRight = /*#__PURE__*/_createPartialApplicator( /*#__PURE__*/flip(_concat));\nexport default partialRight;","import filter from './filter.js';\nimport juxt from './juxt.js';\nimport reject from './reject.js';\n\n/**\n * Takes a predicate and a list or other `Filterable` object and returns the\n * pair of filterable objects of the same type of elements which do and do not\n * satisfy, the predicate, respectively. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a]\n * @param {Function} pred A predicate to determine which side the element belongs to.\n * @param {Array} filterable the list (or other filterable) to partition.\n * @return {Array} An array, containing first the subset of elements that satisfy the\n * predicate, and second the subset of elements that do not satisfy.\n * @see R.filter, R.reject\n * @example\n *\n * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);\n * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ]\n *\n * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });\n * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ]\n */\nvar partition = /*#__PURE__*/juxt([filter, reject]);\nexport default partition;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n */\nvar path = /*#__PURE__*/_curry2(function path(paths, obj) {\n var val = obj;\n var idx = 0;\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n val = val[paths[idx]];\n idx += 1;\n }\n return val;\n});\nexport default path;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\nimport path from './path.js';\n\n/**\n * Determines whether a nested path on an object has a specific value, in\n * [`R.equals`](#equals) terms. Most likely used to filter a list.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Relation\n * @typedefn Idx = String | Int\n * @sig [Idx] -> a -> {a} -> Boolean\n * @param {Array} path The path of the nested property to use\n * @param {*} val The value to compare the nested property with\n * @param {Object} obj The object to check the nested property in\n * @return {Boolean} `true` if the value equals the nested object property,\n * `false` otherwise.\n * @example\n *\n * const user1 = { address: { zipCode: 90210 } };\n * const user2 = { address: { zipCode: 55555 } };\n * const user3 = { name: 'Bob' };\n * const users = [ user1, user2, user3 ];\n * const isFamous = R.pathEq(['address', 'zipCode'], 90210);\n * R.filter(isFamous, users); //=> [ user1 ]\n */\nvar pathEq = /*#__PURE__*/_curry3(function pathEq(_path, val, obj) {\n return equals(path(_path, obj), val);\n});\nexport default pathEq;","import _curry3 from './internal/_curry3.js';\nimport defaultTo from './defaultTo.js';\nimport path from './path.js';\n\n/**\n * If the given, non-null object has a value at the given path, returns the\n * value at that path. Otherwise returns the provided default value.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig a -> [Idx] -> {a} -> a\n * @param {*} d The default value.\n * @param {Array} p The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path` of the supplied object or the default value.\n * @example\n *\n * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2\n * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> \"N/A\"\n */\nvar pathOr = /*#__PURE__*/_curry3(function pathOr(d, p, obj) {\n return defaultTo(d, path(p, obj));\n});\nexport default pathOr;","import _curry3 from './internal/_curry3.js';\nimport path from './path.js';\n\n/**\n * Returns `true` if the specified object property at given path satisfies the\n * given predicate; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Logic\n * @typedefn Idx = String | Int\n * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean\n * @param {Function} pred\n * @param {Array} propPath\n * @param {*} obj\n * @return {Boolean}\n * @see R.propSatisfies, R.path\n * @example\n *\n * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true\n */\nvar pathSatisfies = /*#__PURE__*/_curry3(function pathSatisfies(pred, propPath, obj) {\n return propPath.length > 0 && pred(path(propPath, obj));\n});\nexport default pathSatisfies;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object containing only the keys specified. If\n * the key does not exist, the property is ignored.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.omit, R.props\n * @example\n *\n * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}\n */\nvar pick = /*#__PURE__*/_curry2(function pick(names, obj) {\n var result = {};\n var idx = 0;\n while (idx < names.length) {\n if (names[idx] in obj) {\n result[names[idx]] = obj[names[idx]];\n }\n idx += 1;\n }\n return result;\n});\nexport default pick;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Similar to `pick` except that this one includes a `key: undefined` pair for\n * properties that don't exist.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.pick\n * @example\n *\n * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined}\n */\nvar pickAll = /*#__PURE__*/_curry2(function pickAll(names, obj) {\n var result = {};\n var idx = 0;\n var len = names.length;\n while (idx < len) {\n var name = names[idx];\n result[name] = obj[name];\n idx += 1;\n }\n return result;\n});\nexport default pickAll;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n * should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n * on it.\n * @see R.pick, R.filter\n * @example\n *\n * const isUpperCase = (val, key) => key.toUpperCase() === key;\n * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */\nvar pickBy = /*#__PURE__*/_curry2(function pickBy(test, obj) {\n var result = {};\n for (var prop in obj) {\n if (test(obj[prop], prop, obj)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default pickBy;","import _arity from './internal/_arity.js';\nimport _pipe from './internal/_pipe.js';\nimport reduce from './reduce.js';\nimport tail from './tail.js';\n\n/**\n * Performs left-to-right function composition. The leftmost function may have\n * any arity; the remaining functions must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import composeK from './composeK.js';\nimport reverse from './reverse.js';\n\n/**\n * Returns the left-to-right Kleisli composition of the provided functions,\n * each of which must return a value of a type supported by [`chain`](#chain).\n *\n * `R.pipeK(f, g, h)` is equivalent to `R.pipe(f, R.chain(g), R.chain(h))`.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Function\n * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z)\n * @param {...Function}\n * @return {Function}\n * @see R.composeK\n * @deprecated since v0.26.0\n * @example\n *\n * // parseJson :: String -> Maybe *\n * // get :: String -> Object -> Maybe *\n *\n * // getStateCode :: Maybe String -> Maybe String\n * const getStateCode = R.pipeK(\n * parseJson,\n * get('user'),\n * get('address'),\n * get('state'),\n * R.compose(Maybe.of, R.toUpper)\n * );\n *\n * getStateCode('{\"user\":{\"address\":{\"state\":\"ny\"}}}');\n * //=> Just('NY')\n * getStateCode('[Invalid JSON]');\n * //=> Nothing()\n * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a)))\n */\nexport default function pipeK() {\n if (arguments.length === 0) {\n throw new Error('pipeK requires at least one argument');\n }\n return composeK.apply(this, reverse(arguments));\n}","import _arity from './internal/_arity.js';\nimport _pipeP from './internal/_pipeP.js';\nimport reduce from './reduce.js';\nimport tail from './tail.js';\n\n/**\n * Performs left-to-right composition of one or more Promise-returning\n * functions. The leftmost function may have any arity; the remaining functions\n * must be unary.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.composeP\n * @deprecated since v0.26.0\n * @example\n *\n * // followersForUser :: String -> Promise [User]\n * const followersForUser = R.pipeP(db.getUserById, db.getFollowers);\n */\nexport default function pipeP() {\n if (arguments.length === 0) {\n throw new Error('pipeP requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipeP, arguments[0], tail(arguments)));\n}","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\nimport head from './head.js';\nimport _reduce from './internal/_reduce.js';\nimport tail from './tail.js';\nimport identity from './identity.js';\n\n/**\n * Performs left-to-right function composition using transforming function. The leftmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of pipeWith is not automatically curried.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.composeWith, R.pipe\n * @example\n *\n * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res));\n * const f = pipeWhileNotNil([Math.pow, R.negate, R.inc])\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, f(g, ...args)))\n */\nvar pipeWith = /*#__PURE__*/_curry2(function pipeWith(xf, list) {\n if (list.length <= 0) {\n return identity;\n }\n\n var headList = head(list);\n var tailList = tail(list);\n\n return _arity(headList.length, function () {\n return _reduce(function (result, f) {\n return xf.call(this, f, result);\n }, headList.apply(this, arguments), tailList);\n });\n});\nexport default pipeWith;","import _curry2 from './internal/_curry2.js';\nimport map from './map.js';\nimport prop from './prop.js';\n\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => k -> f {k: v} -> f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.props\n * @example\n *\n * var getAges = R.pluck('age');\n * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]\n *\n * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]\n * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\nvar pluck = /*#__PURE__*/_curry2(function pluck(p, list) {\n return map(prop(p), list);\n});\nexport default pluck;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list with the given element at the front, followed by the\n * contents of the list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The item to add to the head of the output list.\n * @param {Array} list The array to add to the tail of the output list.\n * @return {Array} A new array.\n * @see R.append\n * @example\n *\n * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']\n */\nvar prepend = /*#__PURE__*/_curry2(function prepend(el, list) {\n return _concat([el], list);\n});\nexport default prepend;","import multiply from './multiply.js';\nimport reduce from './reduce.js';\n\n/**\n * Multiplies together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The product of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.product([2,4,6,8,100,1]); //=> 38400\n */\nvar product = /*#__PURE__*/reduce(multiply, 1);\nexport default product;","import _map from './internal/_map.js';\nimport identity from './identity.js';\nimport pickAll from './pickAll.js';\nimport useWith from './useWith.js';\n\n/**\n * Reasonable analog to SQL `select` statement.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @category Relation\n * @sig [k] -> [{k: v}] -> [{k: v}]\n * @param {Array} props The property names to project\n * @param {Array} objs The objects to query\n * @return {Array} An array of objects with just the `props` properties.\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};\n * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};\n * const kids = [abby, fred];\n * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]\n */\nvar project = /*#__PURE__*/useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity\nexport default project;","import _curry2 from './internal/_curry2.js';\nimport path from './path.js';\n\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig s -> {s: a} -> a | Undefined\n * @param {String} p The property name\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop = /*#__PURE__*/_curry2(function prop(p, obj) {\n return path([p], obj);\n});\nexport default prop;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Returns `true` if the specified object property is equal, in\n * [`R.equals`](#equals) terms, to the given value; `false` otherwise.\n * You can test multiple properties with [`R.whereEq`](#whereEq).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig String -> a -> Object -> Boolean\n * @param {String} name\n * @param {*} val\n * @param {*} obj\n * @return {Boolean}\n * @see R.whereEq, R.propSatisfies, R.equals\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond'};\n * const fred = {name: 'Fred', age: 12, hair: 'brown'};\n * const rusty = {name: 'Rusty', age: 10, hair: 'brown'};\n * const alois = {name: 'Alois', age: 15, disposition: 'surly'};\n * const kids = [abby, fred, rusty, alois];\n * const hasBrownHair = R.propEq('hair', 'brown');\n * R.filter(hasBrownHair, kids); //=> [fred, rusty]\n */\nvar propEq = /*#__PURE__*/_curry3(function propEq(name, val, obj) {\n return equals(val, obj[name]);\n});\nexport default propEq;","import _curry3 from './internal/_curry3.js';\nimport is from './is.js';\n\n/**\n * Returns `true` if the specified object property is of the given type;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Type\n * @sig Type -> String -> Object -> Boolean\n * @param {Function} type\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.is, R.propSatisfies\n * @example\n *\n * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true\n * R.propIs(Number, 'x', {x: 'foo'}); //=> false\n * R.propIs(Number, 'x', {}); //=> false\n */\nvar propIs = /*#__PURE__*/_curry3(function propIs(type, name, obj) {\n return is(type, obj[name]);\n});\nexport default propIs;","import _curry3 from './internal/_curry3.js';\nimport pathOr from './pathOr.js';\n\n/**\n * If the given, non-null object has an own property with the specified name,\n * returns the value of that property. Otherwise returns the provided default\n * value.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Object\n * @sig a -> String -> Object -> a\n * @param {*} val The default value.\n * @param {String} p The name of the property to return.\n * @param {Object} obj The object to query.\n * @return {*} The value of given property of the supplied object or the default value.\n * @example\n *\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const favorite = R.prop('favoriteLibrary');\n * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');\n *\n * favorite(alice); //=> undefined\n * favoriteWithDefault(alice); //=> 'Ramda'\n */\nvar propOr = /*#__PURE__*/_curry3(function propOr(val, p, obj) {\n return pathOr(val, [p], obj);\n});\nexport default propOr;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Returns `true` if the specified object property satisfies the given\n * predicate; `false` otherwise. You can test multiple properties with\n * [`R.where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Logic\n * @sig (a -> Boolean) -> String -> {String: a} -> Boolean\n * @param {Function} pred\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.where, R.propEq, R.propIs\n * @example\n *\n * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true\n */\nvar propSatisfies = /*#__PURE__*/_curry3(function propSatisfies(pred, name, obj) {\n return pred(obj[name]);\n});\nexport default propSatisfies;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Acts as multiple `prop`: array of keys in, array of values out. Preserves\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> [v]\n * @param {Array} ps The property names to fetch\n * @param {Object} obj The object to query\n * @return {Array} The corresponding values or partially applied function.\n * @example\n *\n * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]\n * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]\n *\n * const fullName = R.compose(R.join(' '), R.props(['first', 'last']));\n * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth'\n */\nvar props = /*#__PURE__*/_curry2(function props(ps, obj) {\n var len = ps.length;\n var out = [];\n var idx = 0;\n\n while (idx < len) {\n out[idx] = obj[ps[idx]];\n idx += 1;\n }\n\n return out;\n});\nexport default props;","import _curry2 from './internal/_curry2.js';\nimport _isNumber from './internal/_isNumber.js';\n\n/**\n * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> Number -> [Number]\n * @param {Number} from The first number in the list.\n * @param {Number} to One more than the last number in the list.\n * @return {Array} The list of numbers in the set `[a, b)`.\n * @example\n *\n * R.range(1, 5); //=> [1, 2, 3, 4]\n * R.range(50, 53); //=> [50, 51, 52]\n */\nvar range = /*#__PURE__*/_curry2(function range(from, to) {\n if (!(_isNumber(from) && _isNumber(to))) {\n throw new TypeError('Both arguments to range must be numbers');\n }\n var result = [];\n var n = from;\n while (n < to) {\n result.push(n);\n n += 1;\n }\n return result;\n});\nexport default range;","import _curry3 from './internal/_curry3.js';\nimport _reduce from './internal/_reduce.js';\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\nvar reduce = /*#__PURE__*/_curry3(_reduce);\nexport default reduce;","import _curryN from './internal/_curryN.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _has from './internal/_has.js';\nimport _reduce from './internal/_reduce.js';\nimport _xreduceBy from './internal/_xreduceBy.js';\n\n/**\n * Groups the elements of the list according to the result of calling\n * the String-returning function `keyFn` on each element and reduces the elements\n * of each group to a single value via the reducer function `valueFn`.\n *\n * This function is basically a more general [`groupBy`](#groupBy) function.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category List\n * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a}\n * @param {Function} valueFn The function that reduces the elements of each group to a single\n * value. Receives two values, accumulator for a particular group and the current element.\n * @param {*} acc The (initial) accumulator value for each group.\n * @param {Function} keyFn The function that maps the list's element into a key.\n * @param {Array} list The array to group.\n * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of\n * `valueFn` for elements which produced that key when passed to `keyFn`.\n * @see R.groupBy, R.reduce\n * @example\n *\n * const groupNames = (acc, {name}) => acc.concat(name)\n * const toGrade = ({score}) =>\n * score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A'\n *\n * var students = [\n * {name: 'Abby', score: 83},\n * {name: 'Bart', score: 62},\n * {name: 'Curt', score: 88},\n * {name: 'Dora', score: 92},\n * ]\n *\n * reduceBy(groupNames, [], toGrade, students)\n * //=> {\"A\": [\"Dora\"], \"B\": [\"Abby\", \"Curt\"], \"F\": [\"Bart\"]}\n */\nvar reduceBy = /*#__PURE__*/_curryN(4, [], /*#__PURE__*/_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {\n return _reduce(function (acc, elt) {\n var key = keyFn(elt);\n acc[key] = valueFn(_has(key, acc) ? acc[key] : valueAcc, elt);\n return acc;\n }, {}, list);\n}));\nexport default reduceBy;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * Similar to [`reduce`](#reduce), except moves through the input list from the\n * right to the left.\n *\n * The iterator function receives two values: *(value, acc)*, while the arguments'\n * order of `reduce`'s iterator function is *(acc, value)*.\n *\n * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduceRight` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> b) -> b -> [a] -> b\n * @param {Function} fn The iterator function. Receives two values, the current element from the array\n * and the accumulator.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.addIndex\n * @example\n *\n * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2\n * // - -2\n * // / \\ / \\\n * // 1 - 1 3\n * // / \\ / \\\n * // 2 - ==> 2 -1\n * // / \\ / \\\n * // 3 - 3 4\n * // / \\ / \\\n * // 4 0 4 0\n *\n * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))\n */\nvar reduceRight = /*#__PURE__*/_curry3(function reduceRight(fn, acc, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n acc = fn(list[idx], acc);\n idx -= 1;\n }\n return acc;\n});\nexport default reduceRight;","import _curryN from './internal/_curryN.js';\nimport _reduce from './internal/_reduce.js';\nimport _reduced from './internal/_reduced.js';\n\n/**\n * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating\n * through the list, successively calling the iterator function. `reduceWhile`\n * also takes a predicate that is evaluated before each step. If the predicate\n * returns `false`, it \"short-circuits\" the iteration and returns the current\n * value of the accumulator.\n *\n * @func\n * @memberOf R\n * @since v0.22.0\n * @category List\n * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} pred The predicate. It is passed the accumulator and the\n * current element.\n * @param {Function} fn The iterator function. Receives two values, the\n * accumulator and the current element.\n * @param {*} a The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced\n * @example\n *\n * const isOdd = (acc, x) => x % 2 === 1;\n * const xs = [1, 3, 5, 60, 777, 800];\n * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9\n *\n * const ys = [2, 4, 6]\n * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111\n */\nvar reduceWhile = /*#__PURE__*/_curryN(4, [], function _reduceWhile(pred, fn, a, list) {\n return _reduce(function (acc, x) {\n return pred(acc, x) ? fn(acc, x) : _reduced(acc);\n }, a, list);\n});\nexport default reduceWhile;","import _curry1 from './internal/_curry1.js';\nimport _reduced from './internal/_reduced.js';\n\n/**\n * Returns a value wrapped to indicate that it is the final value of the reduce\n * and transduce functions. The returned value should be considered a black\n * box: the internal structure is not guaranteed to be stable.\n *\n * Note: this optimization is only available to the below functions:\n * - [`reduce`](#reduce)\n * - [`reduceWhile`](#reduceWhile)\n * - [`transduce`](#transduce)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category List\n * @sig a -> *\n * @param {*} x The final value of the reduce.\n * @return {*} The wrapped value.\n * @see R.reduce, R.reduceWhile, R.transduce\n * @example\n *\n * R.reduce(\n * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item),\n * [],\n * [1, 2, 3, 4, 5]) // [1, 2, 3]\n */\nvar reduced = /*#__PURE__*/_curry1(_reduced);\nexport default reduced;","import _complement from './internal/_complement.js';\nimport _curry2 from './internal/_curry2.js';\nimport filter from './filter.js';\n\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar reject = /*#__PURE__*/_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\nexport default reject;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Removes the sub-list of `list` starting at index `start` and containing\n * `count` elements. _Note that this is not destructive_: it returns a copy of\n * the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} start The position to start removing elements\n * @param {Number} count The number of elements to remove\n * @param {Array} list The list to remove from\n * @return {Array} A new Array with `count` elements from `start` removed.\n * @see R.without\n * @example\n *\n * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8]\n */\nvar remove = /*#__PURE__*/_curry3(function remove(start, count, list) {\n var result = Array.prototype.slice.call(list, 0);\n result.splice(start, count);\n return result;\n});\nexport default remove;","import _curry2 from './internal/_curry2.js';\nimport always from './always.js';\nimport times from './times.js';\n\n/**\n * Returns a fixed list of size `n` containing a specified identical value.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig a -> n -> [a]\n * @param {*} value The value to repeat.\n * @param {Number} n The desired size of the output list.\n * @return {Array} A new array containing `n` `value`s.\n * @see R.times\n * @example\n *\n * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']\n *\n * const obj = {};\n * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}]\n * repeatedObjs[0] === repeatedObjs[1]; //=> true\n * @symb R.repeat(a, 0) = []\n * @symb R.repeat(a, 1) = [a]\n * @symb R.repeat(a, 2) = [a, a]\n */\nvar repeat = /*#__PURE__*/_curry2(function repeat(value, n) {\n return times(always(value), n);\n});\nexport default repeat;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\nvar replace = /*#__PURE__*/_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\nexport default replace;","import _curry1 from './internal/_curry1.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\nvar reverse = /*#__PURE__*/_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\nexport default reverse;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Scan is similar to [`reduce`](#reduce), but returns a list of successively\n * reduced values from the left\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> [a]\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {Array} A list of all intermediately reduced values.\n * @see R.reduce, R.mapAccum\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24]\n * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)]\n */\nvar scan = /*#__PURE__*/_curry3(function scan(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = [acc];\n while (idx < len) {\n acc = fn(acc, list[idx]);\n result[idx + 1] = acc;\n idx += 1;\n }\n return result;\n});\nexport default scan;","import _curry2 from './internal/_curry2.js';\nimport ap from './ap.js';\nimport map from './map.js';\nimport prepend from './prepend.js';\nimport reduceRight from './reduceRight.js';\n\n/**\n * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)\n * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an\n * Applicative of Traversable.\n *\n * Dispatches to the `sequence` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a)\n * @param {Function} of\n * @param {*} traversable\n * @return {*}\n * @see R.traverse\n * @example\n *\n * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3])\n * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing()\n *\n * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)]\n * R.sequence(R.of, Nothing()); //=> [Nothing()]\n */\nvar sequence = /*#__PURE__*/_curry2(function sequence(of, traversable) {\n return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) {\n return ap(map(prepend, x), acc);\n }, of([]), traversable);\n});\nexport default sequence;","import _curry3 from './internal/_curry3.js';\nimport always from './always.js';\nimport over from './over.js';\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the given value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> a -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2}\n */\nvar set = /*#__PURE__*/_curry3(function set(lens, v, x) {\n return over(lens, always(v), x);\n});\nexport default set;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\nvar slice = /*#__PURE__*/_curry3( /*#__PURE__*/_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\nexport default slice;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a copy of the list, sorted according to the comparator function,\n * which should accept two values at a time and return a negative number if the\n * first value is smaller, a positive number if it's larger, and zero if they\n * are equal. Please note that this is a **copy** of the list. It does not\n * modify the original.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, a) -> Number) -> [a] -> [a]\n * @param {Function} comparator A sorting function :: a -> b -> Int\n * @param {Array} list The list to sort\n * @return {Array} a new array with its elements sorted by the comparator function.\n * @example\n *\n * const diff = function(a, b) { return a - b; };\n * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]\n */\nvar sort = /*#__PURE__*/_curry2(function sort(comparator, list) {\n return Array.prototype.slice.call(list, 0).sort(comparator);\n});\nexport default sort;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Sorts the list according to the supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord b => (a -> b) -> [a] -> [a]\n * @param {Function} fn\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted by the keys generated by `fn`.\n * @example\n *\n * const sortByFirstItem = R.sortBy(R.prop(0));\n * const pairs = [[-1, 1], [-2, 2], [-3, 3]];\n * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]\n *\n * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const bob = {\n * name: 'Bob',\n * age: -10\n * };\n * const clara = {\n * name: 'clara',\n * age: 314.159\n * };\n * const people = [clara, bob, alice];\n * sortByNameCaseInsensitive(people); //=> [alice, bob, clara]\n */\nvar sortBy = /*#__PURE__*/_curry2(function sortBy(fn, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n});\nexport default sortBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Sorts a list according to a list of comparators.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Relation\n * @sig [(a, a) -> Number] -> [a] -> [a]\n * @param {Array} functions A list of comparator functions.\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted according to the comarator functions.\n * @example\n *\n * const alice = {\n * name: 'alice',\n * age: 40\n * };\n * const bob = {\n * name: 'bob',\n * age: 30\n * };\n * const clara = {\n * name: 'clara',\n * age: 40\n * };\n * const people = [clara, bob, alice];\n * const ageNameSort = R.sortWith([\n * R.descend(R.prop('age')),\n * R.ascend(R.prop('name'))\n * ]);\n * ageNameSort(people); //=> [alice, clara, bob]\n */\nvar sortWith = /*#__PURE__*/_curry2(function sortWith(fns, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var result = 0;\n var i = 0;\n while (result === 0 && i < fns.length) {\n result = fns[i](a, b);\n i += 1;\n }\n return result;\n });\n});\nexport default sortWith;","import invoker from './invoker.js';\n\n/**\n * Splits a string into an array of strings based on the given\n * separator.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig (String | RegExp) -> String -> [String]\n * @param {String|RegExp} sep The pattern.\n * @param {String} str The string to separate into an array.\n * @return {Array} The array of strings from `str` separated by `str`.\n * @see R.join\n * @example\n *\n * const pathComponents = R.split('/');\n * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']\n *\n * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd']\n */\nvar split = /*#__PURE__*/invoker(1, 'split');\nexport default split;","import _curry2 from './internal/_curry2.js';\nimport length from './length.js';\nimport slice from './slice.js';\n\n/**\n * Splits a given list or string at a given index.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig Number -> [a] -> [[a], [a]]\n * @sig Number -> String -> [String, String]\n * @param {Number} index The index where the array/string is split.\n * @param {Array|String} array The array/string to be split.\n * @return {Array}\n * @example\n *\n * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]]\n * R.splitAt(5, 'hello world'); //=> ['hello', ' world']\n * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r']\n */\nvar splitAt = /*#__PURE__*/_curry2(function splitAt(index, array) {\n return [slice(0, index, array), slice(index, length(array), array)];\n});\nexport default splitAt;","import _curry2 from './internal/_curry2.js';\nimport slice from './slice.js';\n\n/**\n * Splits a collection into slices of the specified length.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @sig Number -> String -> [String]\n * @param {Number} n\n * @param {Array} list\n * @return {Array}\n * @example\n *\n * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]]\n * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz']\n */\nvar splitEvery = /*#__PURE__*/_curry2(function splitEvery(n, list) {\n if (n <= 0) {\n throw new Error('First argument to splitEvery must be a positive integer');\n }\n var result = [];\n var idx = 0;\n while (idx < list.length) {\n result.push(slice(idx, idx += n, list));\n }\n return result;\n});\nexport default splitEvery;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a list and a predicate and returns a pair of lists with the following properties:\n *\n * - the result of concatenating the two output lists is equivalent to the input list;\n * - none of the elements of the first output list satisfies the predicate; and\n * - if the second output list is non-empty, its first element satisfies the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [[a], [a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]]\n */\nvar splitWhen = /*#__PURE__*/_curry2(function splitWhen(pred, list) {\n var idx = 0;\n var len = list.length;\n var prefix = [];\n\n while (idx < len && !pred(list[idx])) {\n prefix.push(list[idx]);\n idx += 1;\n }\n\n return [prefix, Array.prototype.slice.call(list, idx)];\n});\nexport default splitWhen;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport take from './take.js';\n\n/**\n * Checks if a list starts with the provided sublist.\n *\n * Similarly, checks if a string starts with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} prefix\n * @param {*} list\n * @return {Boolean}\n * @see R.endsWith\n * @example\n *\n * R.startsWith('a', 'abc') //=> true\n * R.startsWith('b', 'abc') //=> false\n * R.startsWith(['a'], ['a', 'b', 'c']) //=> true\n * R.startsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar startsWith = /*#__PURE__*/_curry2(function (prefix, list) {\n return equals(take(prefix.length, list), prefix);\n});\nexport default startsWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Subtracts its second argument from its first argument.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a - b`.\n * @see R.add\n * @example\n *\n * R.subtract(10, 8); //=> 2\n *\n * const minus5 = R.subtract(R.__, 5);\n * minus5(17); //=> 12\n *\n * const complementaryAngle = R.subtract(90);\n * complementaryAngle(30); //=> 60\n * complementaryAngle(72); //=> 18\n */\nvar subtract = /*#__PURE__*/_curry2(function subtract(a, b) {\n return Number(a) - Number(b);\n});\nexport default subtract;","import add from './add.js';\nimport reduce from './reduce.js';\n\n/**\n * Adds together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The sum of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.sum([2,4,6,8,100,1]); //=> 121\n */\nvar sum = /*#__PURE__*/reduce(add, 0);\nexport default sum;","import _curry2 from './internal/_curry2.js';\nimport concat from './concat.js';\nimport difference from './difference.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifferenceWith, R.difference, R.differenceWith\n * @example\n *\n * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5]\n * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2]\n */\nvar symmetricDifference = /*#__PURE__*/_curry2(function symmetricDifference(list1, list2) {\n return concat(difference(list1, list2), difference(list2, list1));\n});\nexport default symmetricDifference;","import _curry3 from './internal/_curry3.js';\nimport concat from './concat.js';\nimport differenceWith from './differenceWith.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both. Duplication is determined according to the value\n * returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifference, R.difference, R.differenceWith\n * @example\n *\n * const eqA = R.eqBy(R.prop('a'));\n * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];\n * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];\n * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}]\n */\nvar symmetricDifferenceWith = /*#__PURE__*/_curry3(function symmetricDifferenceWith(pred, list1, list2) {\n return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1));\n});\nexport default symmetricDifferenceWith;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry1 from './internal/_curry1.js';\nimport slice from './slice.js';\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\nexport default tail;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtake from './internal/_xtake.js';\nimport slice from './slice.js';\n\n/**\n * Returns the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `take` method).\n *\n * Dispatches to the `take` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*}\n * @see R.drop\n * @example\n *\n * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(3, 'ramda'); //=> 'ram'\n *\n * const personnel = [\n * 'Dave Brubeck',\n * 'Paul Desmond',\n * 'Eugene Wright',\n * 'Joe Morello',\n * 'Gerry Mulligan',\n * 'Bob Bates',\n * 'Joe Dodge',\n * 'Ron Crotty'\n * ];\n *\n * const takeFive = R.take(5);\n * takeFive(personnel);\n * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']\n * @symb R.take(-1, [a, b]) = [a, b]\n * @symb R.take(0, [a, b]) = []\n * @symb R.take(1, [a, b]) = [a]\n * @symb R.take(2, [a, b]) = [a, b]\n */\nvar take = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['take'], _xtake, function take(n, xs) {\n return slice(0, n < 0 ? Infinity : n, xs);\n}));\nexport default take;","import _curry2 from './internal/_curry2.js';\nimport drop from './drop.js';\n\n/**\n * Returns a new list containing the last `n` elements of the given list.\n * If `n > list.length`, returns a list of `list.length` elements.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements to return.\n * @param {Array} xs The collection to consider.\n * @return {Array}\n * @see R.dropLast\n * @example\n *\n * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(3, 'ramda'); //=> 'mda'\n */\nvar takeLast = /*#__PURE__*/_curry2(function takeLast(n, xs) {\n return drop(n >= 0 ? xs.length - n : 0, xs);\n});\nexport default takeLast;","import _curry2 from './internal/_curry2.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list containing the last `n` elements of a given list, passing\n * each value to the supplied predicate function, and terminating when the\n * predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropLastWhile, R.addIndex\n * @example\n *\n * const isNotOne = x => x !== 1;\n *\n * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4]\n *\n * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda'\n */\nvar takeLastWhile = /*#__PURE__*/_curry2(function takeLastWhile(fn, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && fn(xs[idx])) {\n idx -= 1;\n }\n return slice(idx + 1, Infinity, xs);\n});\nexport default takeLastWhile;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtakeWhile from './internal/_xtakeWhile.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list containing the first `n` elements of a given list,\n * passing each value to the supplied predicate function, and terminating when\n * the predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * Dispatches to the `takeWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropWhile, R.transduce, R.addIndex\n * @example\n *\n * const isNotFour = x => x !== 4;\n *\n * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3]\n *\n * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'\n */\nvar takeWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && fn(xs[idx])) {\n idx += 1;\n }\n return slice(0, idx, xs);\n}));\nexport default takeWhile;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtap from './internal/_xtap.js';\n\n/**\n * Runs the given function with the supplied object, then returns the object.\n *\n * Acts as a transducer if a transformer is given as second parameter.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a -> *) -> a -> a\n * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away.\n * @param {*} x\n * @return {*} `x`.\n * @example\n *\n * const sayX = x => console.log('x is ' + x);\n * R.tap(sayX, 100); //=> 100\n * // logs 'x is 100'\n * @symb R.tap(f, a) = a\n */\nvar tap = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xtap, function tap(fn, x) {\n fn(x);\n return x;\n}));\nexport default tap;","import _cloneRegExp from './internal/_cloneRegExp.js';\nimport _curry2 from './internal/_curry2.js';\nimport _isRegExp from './internal/_isRegExp.js';\nimport toString from './toString.js';\n\n/**\n * Determines whether a given string matches a given regular expression.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category String\n * @sig RegExp -> String -> Boolean\n * @param {RegExp} pattern\n * @param {String} str\n * @return {Boolean}\n * @see R.match\n * @example\n *\n * R.test(/^x/, 'xyz'); //=> true\n * R.test(/^y/, 'xyz'); //=> false\n */\nvar test = /*#__PURE__*/_curry2(function test(pattern, str) {\n if (!_isRegExp(pattern)) {\n throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));\n }\n return _cloneRegExp(pattern).test(str);\n});\nexport default test;","import _curry2 from './internal/_curry2.js';\nimport _assertPromise from './internal/_assertPromise.js';\n\n/**\n * Returns the result of applying the onSuccess function to the value inside\n * a successfully resolved promise. This is useful for working with promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig (a -> b) -> (Promise e a) -> (Promise e b)\n * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b)\n * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(onSuccess)`\n * @see R.otherwise\n * @example\n *\n * var makeQuery = (email) => ({ query: { email }});\n *\n * //getMemberName :: String -> Promise ({firstName, lastName})\n * var getMemberName = R.pipe(\n * makeQuery,\n * fetchMember,\n * R.then(R.pick(['firstName', 'lastName']))\n * );\n */\nvar then = /*#__PURE__*/_curry2(function then(f, p) {\n _assertPromise('then', p);\n\n return p.then(f);\n});\nexport default then;","import curryN from './curryN.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a thunk out of a function. A thunk delays a calculation until\n * its result is needed, providing lazy evaluation of arguments.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k)\n * @param {Function} fn A function to wrap in a thunk\n * @return {Function} Expects arguments for `fn` and returns a new function\n * that, when called, applies those arguments to `fn`.\n * @see R.partial, R.partialRight\n * @example\n *\n * R.thunkify(R.identity)(42)(); //=> 42\n * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42\n */\nvar thunkify = /*#__PURE__*/_curry1(function thunkify(fn) {\n return curryN(fn.length, function createThunk() {\n var fnArgs = arguments;\n return function invokeThunk() {\n return fn.apply(this, fnArgs);\n };\n });\n});\n\nexport default thunkify;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Calls an input function `n` times, returning an array containing the results\n * of those function calls.\n *\n * `fn` is passed one argument: The current value of `n`, which begins at `0`\n * and is gradually incremented to `n - 1`.\n *\n * @func\n * @memberOf R\n * @since v0.2.3\n * @category List\n * @sig (Number -> a) -> Number -> [a]\n * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`.\n * @param {Number} n A value between `0` and `n - 1`. Increments after each function call.\n * @return {Array} An array containing the return values of all calls to `fn`.\n * @see R.repeat\n * @example\n *\n * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4]\n * @symb R.times(f, 0) = []\n * @symb R.times(f, 1) = [f(0)]\n * @symb R.times(f, 2) = [f(0), f(1)]\n */\nvar times = /*#__PURE__*/_curry2(function times(fn, n) {\n var len = Number(n);\n var idx = 0;\n var list;\n\n if (len < 0 || isNaN(len)) {\n throw new RangeError('n must be a non-negative number');\n }\n list = new Array(len);\n while (idx < len) {\n list[idx] = fn(idx);\n idx += 1;\n }\n return list;\n});\nexport default times;","import invoker from './invoker.js';\n\n/**\n * The lower case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to lower case.\n * @return {String} The lower case version of `str`.\n * @see R.toUpper\n * @example\n *\n * R.toLower('XYZ'); //=> 'xyz'\n */\nvar toLower = /*#__PURE__*/invoker(0, 'toLowerCase');\nexport default toLower;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\n\n/**\n * Converts an object into an array of key, value arrays. Only the object's\n * own properties are used.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own properties.\n * @see R.fromPairs\n * @example\n *\n * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]]\n */\nvar toPairs = /*#__PURE__*/_curry1(function toPairs(obj) {\n var pairs = [];\n for (var prop in obj) {\n if (_has(prop, obj)) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n }\n return pairs;\n});\nexport default toPairs;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Converts an object into an array of key, value arrays. The object's own\n * properties and prototype properties are used. Note that the order of the\n * output array is not guaranteed to be consistent across different JS\n * platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own\n * and prototype properties.\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.toPairsIn(f); //=> [['x','X'], ['y','Y']]\n */\nvar toPairsIn = /*#__PURE__*/_curry1(function toPairsIn(obj) {\n var pairs = [];\n for (var prop in obj) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n return pairs;\n});\nexport default toPairsIn;","import _curry1 from './internal/_curry1.js';\nimport _toString from './internal/_toString.js';\n\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\nvar toString = /*#__PURE__*/_curry1(function toString(val) {\n return _toString(val, []);\n});\nexport default toString;","import invoker from './invoker.js';\n\n/**\n * The upper case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to upper case.\n * @return {String} The upper case version of `str`.\n * @see R.toLower\n * @example\n *\n * R.toUpper('abc'); //=> 'ABC'\n */\nvar toUpper = /*#__PURE__*/invoker(0, 'toUpperCase');\nexport default toUpper;","import _reduce from './internal/_reduce.js';\nimport _xwrap from './internal/_xwrap.js';\nimport curryN from './curryN.js';\n\n/**\n * Initializes a transducer using supplied iterator function. Returns a single\n * item by iterating through the list, successively calling the transformed\n * iterator function and passing it an accumulator value and the current value\n * from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It will be\n * wrapped as a transformer to initialize the transducer. A transformer can be\n * passed directly in place of an iterator function. In both cases, iteration\n * may be stopped early with the [`R.reduced`](#reduced) function.\n *\n * A transducer is a function that accepts a transformer and returns a\n * transformer and can be composed directly.\n *\n * A transformer is an an object that provides a 2-arity reducing iterator\n * function, step, 0-arity initial value function, init, and 1-arity result\n * extraction function, result. The step function is used as the iterator\n * function in reduce. The result function is used to convert the final\n * accumulator into the return type and in most cases is\n * [`R.identity`](#identity). The init function can be used to provide an\n * initial accumulator, but is ignored by transduce.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array. Wrapped as transformer, if necessary, and used to\n * initialize the transducer\n * @param {*} acc The initial accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced, R.into\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3]\n *\n * const isOdd = (x) => x % 2 === 1;\n * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1));\n * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1]\n */\nvar transduce = /*#__PURE__*/curryN(4, function transduce(xf, fn, acc, list) {\n return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);\n});\nexport default transduce;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Transposes the rows and columns of a 2D list.\n * When passed a list of `n` lists of length `x`,\n * returns a list of `x` lists of length `n`.\n *\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [[a]] -> [[a]]\n * @param {Array} list A 2D list\n * @return {Array} A 2D list\n * @example\n *\n * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']]\n * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n *\n * // If some of the rows are shorter than the following rows, their elements are skipped:\n * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]]\n * @symb R.transpose([[a], [b], [c]]) = [a, b, c]\n * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]]\n * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]]\n */\nvar transpose = /*#__PURE__*/_curry1(function transpose(outerlist) {\n var i = 0;\n var result = [];\n while (i < outerlist.length) {\n var innerlist = outerlist[i];\n var j = 0;\n while (j < innerlist.length) {\n if (typeof result[j] === 'undefined') {\n result[j] = [];\n }\n result[j].push(innerlist[j]);\n j += 1;\n }\n i += 1;\n }\n return result;\n});\nexport default transpose;","import _curry3 from './internal/_curry3.js';\nimport map from './map.js';\nimport sequence from './sequence.js';\n\n/**\n * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b)\n * @param {Function} of\n * @param {Function} f\n * @param {*} traversable\n * @return {*}\n * @see R.sequence\n * @example\n *\n * // Returns `Maybe.Nothing` if the given divisor is `0`\n * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2])\n * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing\n */\nvar traverse = /*#__PURE__*/_curry3(function traverse(of, f, traversable) {\n return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : sequence(of, map(f, traversable));\n});\nexport default traverse;","import _curry1 from './internal/_curry1.js';\n\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n * R.trim(' xyz '); //=> 'xyz'\n * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']\n */\nvar trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? /*#__PURE__*/_curry1(function trim(str) {\n var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n return str.replace(beginRx, '').replace(endRx, '');\n}) : /*#__PURE__*/_curry1(function trim(str) {\n return str.trim();\n});\nexport default trim;","import _arity from './internal/_arity.js';\nimport _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned\n * function evaluates the `tryer`; if it does not throw, it simply returns the\n * result. If the `tryer` *does* throw, the returned function evaluates the\n * `catcher` function and returns its result. Note that for effective\n * composition with this function, both the `tryer` and `catcher` functions\n * must return the same type of results.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a)\n * @param {Function} tryer The function that may throw.\n * @param {Function} catcher The function that will be evaluated if `tryer` throws.\n * @return {Function} A new function that will catch exceptions and send then to the catcher.\n * @example\n *\n * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true\n * R.tryCatch(() => { throw 'foo'}, R.always('catched'))('bar') // => 'catched'\n * R.tryCatch(R.times(R.identity), R.always([]))('s') // => []\n `` */\nvar tryCatch = /*#__PURE__*/_curry2(function _tryCatch(tryer, catcher) {\n return _arity(tryer.length, function () {\n try {\n return tryer.apply(this, arguments);\n } catch (e) {\n return catcher.apply(this, _concat([e], arguments));\n }\n });\n});\nexport default tryCatch;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Takes a function `fn`, which takes a single array argument, and returns a\n * function which:\n *\n * - takes any number of positional arguments;\n * - passes these arguments to `fn` as an array; and\n * - returns the result.\n *\n * In other words, `R.unapply` derives a variadic function from a function which\n * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Function\n * @sig ([*...] -> a) -> (*... -> a)\n * @param {Function} fn\n * @return {Function}\n * @see R.apply\n * @example\n *\n * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'\n * @symb R.unapply(f)(a, b) = f([a, b])\n */\nvar unapply = /*#__PURE__*/_curry1(function unapply(fn) {\n return function () {\n return fn(Array.prototype.slice.call(arguments, 0));\n };\n});\nexport default unapply;","import _curry1 from './internal/_curry1.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 1 parameter. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (* -> b) -> (a -> b)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 1.\n * @see R.binary, R.nAry\n * @example\n *\n * const takesTwoArgs = function(a, b) {\n * return [a, b];\n * };\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.unary(takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only 1 argument is passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.unary(f)(a, b, c) = f(a)\n */\nvar unary = /*#__PURE__*/_curry1(function unary(fn) {\n return nAry(1, fn);\n});\nexport default unary;","import _curry2 from './internal/_curry2.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a function of arity `n` from a (manually) curried function.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Function\n * @sig Number -> (a -> b) -> (a -> c)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to uncurry.\n * @return {Function} A new function.\n * @see R.curry\n * @example\n *\n * const addFour = a => b => c => d => a + b + c + d;\n *\n * const uncurriedAddFour = R.uncurryN(4, addFour);\n * uncurriedAddFour(1, 2, 3, 4); //=> 10\n */\nvar uncurryN = /*#__PURE__*/_curry2(function uncurryN(depth, fn) {\n return curryN(depth, function () {\n var currentDepth = 1;\n var value = fn;\n var idx = 0;\n var endIdx;\n while (currentDepth <= depth && typeof value === 'function') {\n endIdx = currentDepth === depth ? arguments.length : idx + value.length;\n value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx));\n currentDepth += 1;\n idx = endIdx;\n }\n return value;\n });\n});\nexport default uncurryN;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Builds a list from a seed value. Accepts an iterator function, which returns\n * either false to stop iteration or an array of length 2 containing the value\n * to add to the resulting list and the seed to be used in the next call to the\n * iterator function.\n *\n * The iterator function receives one argument: *(seed)*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig (a -> [b]) -> * -> [b]\n * @param {Function} fn The iterator function. receives one argument, `seed`, and returns\n * either false to quit iteration or an array of length two to proceed. The element\n * at index 0 of this array will be added to the resulting array, and the element\n * at index 1 will be passed to the next call to `fn`.\n * @param {*} seed The seed value.\n * @return {Array} The final list.\n * @example\n *\n * const f = n => n > 50 ? false : [-n, n + 10];\n * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50]\n * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...]\n */\nvar unfold = /*#__PURE__*/_curry2(function unfold(fn, seed) {\n var pair = fn(seed);\n var result = [];\n while (pair && pair.length) {\n result[result.length] = pair[0];\n pair = fn(pair[1]);\n }\n return result;\n});\nexport default unfold;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\nimport compose from './compose.js';\nimport uniq from './uniq.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @example\n *\n * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]\n */\nvar union = /*#__PURE__*/_curry2( /*#__PURE__*/compose(uniq, _concat));\nexport default union;","import _concat from './internal/_concat.js';\nimport _curry3 from './internal/_curry3.js';\nimport uniqWith from './uniqWith.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list. Duplication is determined according to the value returned by\n * applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @see R.union\n * @example\n *\n * const l1 = [{a: 1}, {a: 2}];\n * const l2 = [{a: 1}, {a: 4}];\n * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}]\n */\nvar unionWith = /*#__PURE__*/_curry3(function unionWith(pred, list1, list2) {\n return uniqWith(pred, _concat(list1, list2));\n});\nexport default unionWith;","import identity from './identity.js';\nimport uniqBy from './uniqBy.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\nvar uniq = /*#__PURE__*/uniqBy(identity);\nexport default uniq;","import _Set from './internal/_Set.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\nvar uniqBy = /*#__PURE__*/_curry2(function uniqBy(fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n if (set.add(appliedItem)) {\n result.push(item);\n }\n idx += 1;\n }\n return result;\n});\nexport default uniqBy;","import _includesWith from './internal/_includesWith.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied predicate to\n * two list elements. Prefers the first item if two items compare equal based\n * on the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * const strEq = R.eqBy(String);\n * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]\n * R.uniqWith(strEq)([{}, {}]); //=> [{}]\n * R.uniqWith(strEq)([1, '1', 1]); //=> [1]\n * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1']\n */\nvar uniqWith = /*#__PURE__*/_curry2(function uniqWith(pred, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var item;\n while (idx < len) {\n item = list[idx];\n if (!_includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n idx += 1;\n }\n return result;\n});\nexport default uniqWith;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is not satisfied, the function will return the result of\n * calling the `whenFalseFn` function with the same argument. If the predicate\n * is satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates\n * to a falsy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenFalseFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`.\n * @see R.ifElse, R.when, R.cond\n * @example\n *\n * let safeInc = R.unless(R.isNil, R.inc);\n * safeInc(null); //=> null\n * safeInc(1); //=> 2\n */\nvar unless = /*#__PURE__*/_curry3(function unless(pred, whenFalseFn, x) {\n return pred(x) ? x : whenFalseFn(x);\n});\nexport default unless;","import _identity from './internal/_identity.js';\nimport chain from './chain.js';\n\n/**\n * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from\n * any [Chain](https://github.com/fantasyland/fantasy-land#chain).\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain c => c (c a) -> c a\n * @param {*} list\n * @return {*}\n * @see R.flatten, R.chain\n * @example\n *\n * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]]\n * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]\n */\nvar unnest = /*#__PURE__*/chain(_identity);\nexport default unnest;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a predicate, a transformation function, and an initial value,\n * and returns a value of the same type as the initial value.\n * It does so by applying the transformation until the predicate is satisfied,\n * at which point it returns the satisfactory value.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} fn The iterator function\n * @param {*} init Initial value\n * @return {*} Final value that satisfies predicate\n * @example\n *\n * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128\n */\nvar until = /*#__PURE__*/_curry3(function until(pred, fn, init) {\n var val = init;\n while (!pred(val)) {\n val = fn(val);\n }\n return val;\n});\nexport default until;","import _curry3 from './internal/_curry3.js';\nimport adjust from './adjust.js';\nimport always from './always.js';\n\n/**\n * Returns a new copy of the array with the element at the provided index\n * replaced with the given value.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} idx The index to update.\n * @param {*} x The value to exist at the given index of the returned array.\n * @param {Array|Arguments} list The source array-like object to be updated.\n * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`.\n * @see R.adjust\n * @example\n *\n * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c']\n * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_']\n * @symb R.update(-1, a, [b, c]) = [b, a]\n * @symb R.update(0, a, [b, c]) = [a, c]\n * @symb R.update(1, a, [b, c]) = [b, a]\n */\nvar update = /*#__PURE__*/_curry3(function update(idx, x, list) {\n return adjust(idx, always(x), list);\n});\nexport default update;","import _curry2 from './internal/_curry2.js';\nimport curryN from './curryN.js';\n\n/**\n * Accepts a function `fn` and a list of transformer functions and returns a\n * new curried function. When the new function is invoked, it calls the\n * function `fn` with parameters consisting of the result of calling each\n * supplied handler on successive arguments to the new function.\n *\n * If more arguments are passed to the returned function than transformer\n * functions, those arguments are passed directly to `fn` as additional\n * parameters. If you expect additional arguments that don't need to be\n * transformed, although you can ignore them, it's best to pass an identity\n * function so that the new function reports the correct arity.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} fn The function to wrap.\n * @param {Array} transformers A list of transformer functions\n * @return {Function} The wrapped function.\n * @see R.converge\n * @example\n *\n * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81\n * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81\n * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32\n * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32\n * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b))\n */\nvar useWith = /*#__PURE__*/_curry2(function useWith(fn, transformers) {\n return curryN(transformers.length, function () {\n var args = [];\n var idx = 0;\n while (idx < transformers.length) {\n args.push(transformers[idx].call(this, arguments[idx]));\n idx += 1;\n }\n return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length)));\n });\n});\nexport default useWith;","import _curry1 from './internal/_curry1.js';\nimport keys from './keys.js';\n\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\nvar values = /*#__PURE__*/_curry1(function values(obj) {\n var props = keys(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n return vals;\n});\nexport default values;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a list of all the properties, including prototype properties, of the\n * supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own and prototype properties.\n * @see R.values, R.keysIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.valuesIn(f); //=> ['X', 'Y']\n */\nvar valuesIn = /*#__PURE__*/_curry1(function valuesIn(obj) {\n var prop;\n var vs = [];\n for (prop in obj) {\n vs[vs.length] = obj[prop];\n }\n return vs;\n});\nexport default valuesIn;","import _curry2 from './internal/_curry2.js';\n\n// `Const` is a functor that effectively ignores the function given to `map`.\nvar Const = function (x) {\n return { value: x, 'fantasy-land/map': function () {\n return this;\n } };\n};\n\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> s -> a\n * @param {Lens} lens\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.view(xLens, {x: 4, y: 2}); //=> 4\n */\nvar view = /*#__PURE__*/_curry2(function view(lens, x) {\n // Using `Const` effectively ignores the setter function of the `lens`,\n // leaving the value returned by the getter function unmodified.\n return lens(Const)(x).value;\n});\nexport default view;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is satisfied, the function will return the result of calling\n * the `whenTrueFn` function with the same argument. If the predicate is not\n * satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} whenTrueFn A function to invoke when the `condition`\n * evaluates to a truthy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenTrueFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`.\n * @see R.ifElse, R.unless, R.cond\n * @example\n *\n * // truncate :: String -> String\n * const truncate = R.when(\n * R.propSatisfies(R.gt(R.__, 10), 'length'),\n * R.pipe(R.take(10), R.append('…'), R.join(''))\n * );\n * truncate('12345'); //=> '12345'\n * truncate('0123456789ABC'); //=> '0123456789…'\n */\nvar when = /*#__PURE__*/_curry3(function when(pred, whenTrueFn, x) {\n return pred(x) ? whenTrueFn(x) : x;\n});\nexport default when;","import _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec. Each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `where` returns true if all the predicates return true, false\n * otherwise.\n *\n * `where` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Object\n * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.whereEq\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.where({\n * a: R.equals('foo'),\n * b: R.complement(R.equals('bar')),\n * x: R.gt(R.__, 10),\n * y: R.lt(R.__, 20)\n * });\n *\n * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true\n * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false\n */\nvar where = /*#__PURE__*/_curry2(function where(spec, testObj) {\n for (var prop in spec) {\n if (_has(prop, spec) && !spec[prop](testObj[prop])) {\n return false;\n }\n }\n return true;\n});\nexport default where;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport map from './map.js';\nimport where from './where.js';\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec, false otherwise. An object satisfies the spec if, for each of the\n * spec's own properties, accessing that property of the object gives the same\n * value (in [`R.equals`](#equals) terms) as accessing that property of the\n * spec.\n *\n * `whereEq` is a specialization of [`where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @sig {String: *} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propEq, R.where\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.whereEq({a: 1, b: 2});\n *\n * pred({a: 1}); //=> false\n * pred({a: 1, b: 2}); //=> true\n * pred({a: 1, b: 2, c: 3}); //=> true\n * pred({a: 1, b: 1}); //=> false\n */\nvar whereEq = /*#__PURE__*/_curry2(function whereEq(spec, testObj) {\n return where(map(equals, spec), testObj);\n});\nexport default whereEq;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\nimport flip from './flip.js';\nimport reject from './reject.js';\n\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\nvar without = /*#__PURE__*/_curry2(function (xs, list) {\n return reject(flip(_includes)(xs), list);\n});\nexport default without;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list out of the two supplied by creating each possible pair\n * from the lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The list made by combining each possible pair from\n * `as` and `bs` into pairs (`[a, b]`).\n * @example\n *\n * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]\n * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]]\n */\nvar xprod = /*#__PURE__*/_curry2(function xprod(a, b) {\n // = xprodWith(prepend); (takes about 3 times as long...)\n var idx = 0;\n var ilen = a.length;\n var j;\n var jlen = b.length;\n var result = [];\n while (idx < ilen) {\n j = 0;\n while (j < jlen) {\n result[result.length] = [a[idx], b[j]];\n j += 1;\n }\n idx += 1;\n }\n return result;\n});\nexport default xprod;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list out of the two supplied by pairing up equally-positioned\n * items from both lists. The returned list is truncated to the length of the\n * shorter of the two input lists.\n * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.\n * @example\n *\n * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]\n */\nvar zip = /*#__PURE__*/_curry2(function zip(a, b) {\n var rv = [];\n var idx = 0;\n var len = Math.min(a.length, b.length);\n while (idx < len) {\n rv[idx] = [a[idx], b[idx]];\n idx += 1;\n }\n return rv;\n});\nexport default zip;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new object out of a list of keys and a list of values.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [String] -> [*] -> {String: *}\n * @param {Array} keys The array that will be properties on the output object.\n * @param {Array} values The list of values on the output object.\n * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.\n * @example\n *\n * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3}\n */\nvar zipObj = /*#__PURE__*/_curry2(function zipObj(keys, values) {\n var idx = 0;\n var len = Math.min(keys.length, values.length);\n var out = {};\n while (idx < len) {\n out[keys[idx]] = values[idx];\n idx += 1;\n }\n return out;\n});\nexport default zipObj;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Creates a new list out of the two supplied by applying the function to each\n * equally-positioned pair in the lists. The returned list is truncated to the\n * length of the shorter of the two input lists.\n *\n * @function\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> c) -> [a] -> [b] -> [c]\n * @param {Function} fn The function used to combine the two elements into one value.\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by combining same-indexed elements of `list1` and `list2`\n * using `fn`.\n * @example\n *\n * const f = (x, y) => {\n * // ...\n * };\n * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);\n * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]\n * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)]\n */\nvar zipWith = /*#__PURE__*/_curry3(function zipWith(fn, a, b) {\n var rv = [];\n var idx = 0;\n var len = Math.min(a.length, b.length);\n while (idx < len) {\n rv[idx] = fn(a[idx], b[idx]);\n idx += 1;\n }\n return rv;\n});\nexport default zipWith;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { ajax } from '../internal/observable/dom/ajax';\nexport { AjaxResponse, AjaxError, AjaxTimeoutError } from '../internal/observable/dom/AjaxObservable';\n//# sourceMappingURL=index.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { Observable } from './internal/Observable';\nexport { ConnectableObservable } from './internal/observable/ConnectableObservable';\nexport { GroupedObservable } from './internal/operators/groupBy';\nexport { observable } from './internal/symbol/observable';\nexport { Subject } from './internal/Subject';\nexport { BehaviorSubject } from './internal/BehaviorSubject';\nexport { ReplaySubject } from './internal/ReplaySubject';\nexport { AsyncSubject } from './internal/AsyncSubject';\nexport { asap as asapScheduler } from './internal/scheduler/asap';\nexport { async as asyncScheduler } from './internal/scheduler/async';\nexport { queue as queueScheduler } from './internal/scheduler/queue';\nexport { animationFrame as animationFrameScheduler } from './internal/scheduler/animationFrame';\nexport { VirtualTimeScheduler, VirtualAction } from './internal/scheduler/VirtualTimeScheduler';\nexport { Scheduler } from './internal/Scheduler';\nexport { Subscription } from './internal/Subscription';\nexport { Subscriber } from './internal/Subscriber';\nexport { Notification, NotificationKind } from './internal/Notification';\nexport { pipe } from './internal/util/pipe';\nexport { noop } from './internal/util/noop';\nexport { identity } from './internal/util/identity';\nexport { isObservable } from './internal/util/isObservable';\nexport { ArgumentOutOfRangeError } from './internal/util/ArgumentOutOfRangeError';\nexport { EmptyError } from './internal/util/EmptyError';\nexport { ObjectUnsubscribedError } from './internal/util/ObjectUnsubscribedError';\nexport { UnsubscriptionError } from './internal/util/UnsubscriptionError';\nexport { TimeoutError } from './internal/util/TimeoutError';\nexport { bindCallback } from './internal/observable/bindCallback';\nexport { bindNodeCallback } from './internal/observable/bindNodeCallback';\nexport { combineLatest } from './internal/observable/combineLatest';\nexport { concat } from './internal/observable/concat';\nexport { defer } from './internal/observable/defer';\nexport { empty } from './internal/observable/empty';\nexport { forkJoin } from './internal/observable/forkJoin';\nexport { from } from './internal/observable/from';\nexport { fromEvent } from './internal/observable/fromEvent';\nexport { fromEventPattern } from './internal/observable/fromEventPattern';\nexport { generate } from './internal/observable/generate';\nexport { iif } from './internal/observable/iif';\nexport { interval } from './internal/observable/interval';\nexport { merge } from './internal/observable/merge';\nexport { never } from './internal/observable/never';\nexport { of } from './internal/observable/of';\nexport { onErrorResumeNext } from './internal/observable/onErrorResumeNext';\nexport { pairs } from './internal/observable/pairs';\nexport { partition } from './internal/observable/partition';\nexport { race } from './internal/observable/race';\nexport { range } from './internal/observable/range';\nexport { throwError } from './internal/observable/throwError';\nexport { timer } from './internal/observable/timer';\nexport { using } from './internal/observable/using';\nexport { zip } from './internal/observable/zip';\nexport { scheduled } from './internal/scheduled/scheduled';\nexport { EMPTY } from './internal/observable/empty';\nexport { NEVER } from './internal/observable/never';\nexport { config } from './internal/config';\n//# sourceMappingURL=index.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nvar AsyncSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.value = null;\n _this.hasNext = false;\n _this.hasCompleted = false;\n return _this;\n }\n AsyncSubject.prototype._subscribe = function (subscriber) {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return _super.prototype._subscribe.call(this, subscriber);\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n };\n AsyncSubject.prototype.error = function (error) {\n if (!this.hasCompleted) {\n _super.prototype.error.call(this, error);\n }\n };\n AsyncSubject.prototype.complete = function () {\n this.hasCompleted = true;\n if (this.hasNext) {\n _super.prototype.next.call(this, this.value);\n }\n _super.prototype.complete.call(this);\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n var connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\nvar SubscribeOnObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscribeOnObservable, _super);\n function SubscribeOnObservable(source, delayTime, scheduler) {\n if (delayTime === void 0) {\n delayTime = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.delayTime = delayTime;\n _this.scheduler = scheduler;\n if (!isNumeric(delayTime) || delayTime < 0) {\n _this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n _this.scheduler = asap;\n }\n return _this;\n }\n SubscribeOnObservable.create = function (source, delay, scheduler) {\n if (delay === void 0) {\n delay = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n return new SubscribeOnObservable(source, delay, scheduler);\n };\n SubscribeOnObservable.dispatch = function (arg) {\n var source = arg.source, subscriber = arg.subscriber;\n return this.add(source.subscribe(subscriber));\n };\n SubscribeOnObservable.prototype._subscribe = function (subscriber) {\n var delay = this.delayTime;\n var source = this.source;\n var scheduler = this.scheduler;\n return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {\n source: source, subscriber: subscriber\n });\n };\n return SubscribeOnObservable;\n}(Observable));\nexport { SubscribeOnObservable };\n//# sourceMappingURL=SubscribeOnObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var subject;\n var params = {\n context: context,\n subject: subject,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n };\n return new Observable(function (subscriber) {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n var state = {\n args: args, subscriber: subscriber, params: params,\n };\n return scheduler.schedule(dispatch, 0, state);\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var self = this;\n var args = state.args, subscriber = state.subscriber, params = state.params;\n var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n subject.error(err);\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n var value = state.value, subject = state.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(state) {\n var err = state.err, subject = state.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {\n subject: undefined,\n args: args,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n context: this,\n };\n return new Observable(function (subscriber) {\n var context = params.context;\n var subject = params.subject;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n subject.error(err);\n return;\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var params = state.params, subscriber = state.subscriber, context = state.context;\n var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n else {\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n }\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n var value = arg.value, subject = arg.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(arg) {\n var err = arg.err, subject = arg.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = null;\n var scheduler = null;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","/** PURE_IMPORTS_START tslib,_.._util_root,_.._Observable,_.._Subscriber,_.._operators_map PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { root } from '../../util/root';\nimport { Observable } from '../../Observable';\nimport { Subscriber } from '../../Subscriber';\nimport { map } from '../../operators/map';\nfunction getCORSRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else if (!!root.XDomainRequest) {\n return new root.XDomainRequest();\n }\n else {\n throw new Error('CORS is not supported by your browser');\n }\n}\nfunction getXMLHttpRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else {\n var progId = void 0;\n try {\n var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n for (var i = 0; i < 3; i++) {\n try {\n progId = progIds[i];\n if (new root.ActiveXObject(progId)) {\n break;\n }\n }\n catch (e) {\n }\n }\n return new root.ActiveXObject(progId);\n }\n catch (e) {\n throw new Error('XMLHttpRequest is not supported by your browser');\n }\n }\n}\nexport function ajaxGet(url, headers) {\n if (headers === void 0) {\n headers = null;\n }\n return new AjaxObservable({ method: 'GET', url: url, headers: headers });\n}\nexport function ajaxPost(url, body, headers) {\n return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers });\n}\nexport function ajaxDelete(url, headers) {\n return new AjaxObservable({ method: 'DELETE', url: url, headers: headers });\n}\nexport function ajaxPut(url, body, headers) {\n return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers });\n}\nexport function ajaxPatch(url, body, headers) {\n return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers });\n}\nvar mapResponse = /*@__PURE__*/ map(function (x, index) { return x.response; });\nexport function ajaxGetJSON(url, headers) {\n return mapResponse(new AjaxObservable({\n method: 'GET',\n url: url,\n responseType: 'json',\n headers: headers\n }));\n}\nvar AjaxObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxObservable, _super);\n function AjaxObservable(urlOrRequest) {\n var _this = _super.call(this) || this;\n var request = {\n async: true,\n createXHR: function () {\n return this.crossDomain ? getCORSRequest() : getXMLHttpRequest();\n },\n crossDomain: true,\n withCredentials: false,\n headers: {},\n method: 'GET',\n responseType: 'json',\n timeout: 0\n };\n if (typeof urlOrRequest === 'string') {\n request.url = urlOrRequest;\n }\n else {\n for (var prop in urlOrRequest) {\n if (urlOrRequest.hasOwnProperty(prop)) {\n request[prop] = urlOrRequest[prop];\n }\n }\n }\n _this.request = request;\n return _this;\n }\n AjaxObservable.prototype._subscribe = function (subscriber) {\n return new AjaxSubscriber(subscriber, this.request);\n };\n AjaxObservable.create = (function () {\n var create = function (urlOrRequest) {\n return new AjaxObservable(urlOrRequest);\n };\n create.get = ajaxGet;\n create.post = ajaxPost;\n create.delete = ajaxDelete;\n create.put = ajaxPut;\n create.patch = ajaxPatch;\n create.getJSON = ajaxGetJSON;\n return create;\n })();\n return AjaxObservable;\n}(Observable));\nexport { AjaxObservable };\nvar AjaxSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxSubscriber, _super);\n function AjaxSubscriber(destination, request) {\n var _this = _super.call(this, destination) || this;\n _this.request = request;\n _this.done = false;\n var headers = request.headers = request.headers || {};\n if (!request.crossDomain && !_this.getHeader(headers, 'X-Requested-With')) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n var contentTypeHeader = _this.getHeader(headers, 'Content-Type');\n if (!contentTypeHeader && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n request.body = _this.serializeBody(request.body, _this.getHeader(request.headers, 'Content-Type'));\n _this.send();\n return _this;\n }\n AjaxSubscriber.prototype.next = function (e) {\n this.done = true;\n var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination;\n var result;\n try {\n result = new AjaxResponse(e, xhr, request);\n }\n catch (err) {\n return destination.error(err);\n }\n destination.next(result);\n };\n AjaxSubscriber.prototype.send = function () {\n var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body;\n try {\n var xhr = this.xhr = request.createXHR();\n this.setupEvents(xhr, request);\n if (user) {\n xhr.open(method, url, async, user, password);\n }\n else {\n xhr.open(method, url, async);\n }\n if (async) {\n xhr.timeout = request.timeout;\n xhr.responseType = request.responseType;\n }\n if ('withCredentials' in xhr) {\n xhr.withCredentials = !!request.withCredentials;\n }\n this.setHeaders(xhr, headers);\n if (body) {\n xhr.send(body);\n }\n else {\n xhr.send();\n }\n }\n catch (err) {\n this.error(err);\n }\n };\n AjaxSubscriber.prototype.serializeBody = function (body, contentType) {\n if (!body || typeof body === 'string') {\n return body;\n }\n else if (root.FormData && body instanceof root.FormData) {\n return body;\n }\n if (contentType) {\n var splitIndex = contentType.indexOf(';');\n if (splitIndex !== -1) {\n contentType = contentType.substring(0, splitIndex);\n }\n }\n switch (contentType) {\n case 'application/x-www-form-urlencoded':\n return Object.keys(body).map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(body[key]); }).join('&');\n case 'application/json':\n return JSON.stringify(body);\n default:\n return body;\n }\n };\n AjaxSubscriber.prototype.setHeaders = function (xhr, headers) {\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n AjaxSubscriber.prototype.getHeader = function (headers, headerName) {\n for (var key in headers) {\n if (key.toLowerCase() === headerName.toLowerCase()) {\n return headers[key];\n }\n }\n return undefined;\n };\n AjaxSubscriber.prototype.setupEvents = function (xhr, request) {\n var progressSubscriber = request.progressSubscriber;\n function xhrTimeout(e) {\n var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxTimeoutError(this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n xhr.ontimeout = xhrTimeout;\n xhrTimeout.request = request;\n xhrTimeout.subscriber = this;\n xhrTimeout.progressSubscriber = progressSubscriber;\n if (xhr.upload && 'withCredentials' in xhr) {\n if (progressSubscriber) {\n var xhrProgress_1;\n xhrProgress_1 = function (e) {\n var progressSubscriber = xhrProgress_1.progressSubscriber;\n progressSubscriber.next(e);\n };\n if (root.XDomainRequest) {\n xhr.onprogress = xhrProgress_1;\n }\n else {\n xhr.upload.onprogress = xhrProgress_1;\n }\n xhrProgress_1.progressSubscriber = progressSubscriber;\n }\n var xhrError_1;\n xhrError_1 = function (e) {\n var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxError('ajax error', this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n };\n xhr.onerror = xhrError_1;\n xhrError_1.request = request;\n xhrError_1.subscriber = this;\n xhrError_1.progressSubscriber = progressSubscriber;\n }\n function xhrReadyStateChange(e) {\n return;\n }\n xhr.onreadystatechange = xhrReadyStateChange;\n xhrReadyStateChange.subscriber = this;\n xhrReadyStateChange.progressSubscriber = progressSubscriber;\n xhrReadyStateChange.request = request;\n function xhrLoad(e) {\n var _a = xhrLoad, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (this.readyState === 4) {\n var status_1 = this.status === 1223 ? 204 : this.status;\n var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response);\n if (status_1 === 0) {\n status_1 = response ? 200 : 0;\n }\n if (status_1 < 400) {\n if (progressSubscriber) {\n progressSubscriber.complete();\n }\n subscriber.next(e);\n subscriber.complete();\n }\n else {\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error = void 0;\n try {\n error = new AjaxError('ajax error ' + status_1, this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n }\n }\n xhr.onload = xhrLoad;\n xhrLoad.subscriber = this;\n xhrLoad.progressSubscriber = progressSubscriber;\n xhrLoad.request = request;\n };\n AjaxSubscriber.prototype.unsubscribe = function () {\n var _a = this, done = _a.done, xhr = _a.xhr;\n if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') {\n xhr.abort();\n }\n _super.prototype.unsubscribe.call(this);\n };\n return AjaxSubscriber;\n}(Subscriber));\nexport { AjaxSubscriber };\nvar AjaxResponse = /*@__PURE__*/ (function () {\n function AjaxResponse(originalEvent, xhr, request) {\n this.originalEvent = originalEvent;\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n }\n return AjaxResponse;\n}());\nexport { AjaxResponse };\nvar AjaxErrorImpl = /*@__PURE__*/ (function () {\n function AjaxErrorImpl(message, xhr, request) {\n Error.call(this);\n this.message = message;\n this.name = 'AjaxError';\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n return this;\n }\n AjaxErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return AjaxErrorImpl;\n})();\nexport var AjaxError = AjaxErrorImpl;\nfunction parseJson(xhr) {\n if ('response' in xhr) {\n return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null');\n }\n else {\n return JSON.parse(xhr.responseText || 'null');\n }\n}\nfunction parseXhrResponse(responseType, xhr) {\n switch (responseType) {\n case 'json':\n return parseJson(xhr);\n case 'xml':\n return xhr.responseXML;\n case 'text':\n default:\n return ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n}\nfunction AjaxTimeoutErrorImpl(xhr, request) {\n AjaxError.call(this, 'ajax timeout', xhr, request);\n this.name = 'AjaxTimeoutError';\n return this;\n}\nexport var AjaxTimeoutError = AjaxTimeoutErrorImpl;\n//# sourceMappingURL=AjaxObservable.js.map\n","/** PURE_IMPORTS_START _AjaxObservable PURE_IMPORTS_END */\nimport { AjaxObservable } from './AjaxObservable';\nexport var ajax = /*@__PURE__*/ (function () { return AjaxObservable.create; })();\n//# sourceMappingURL=ajax.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n","/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n var resultSelector;\n var initialState;\n if (arguments.length == 1) {\n var options = initialStateOrOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity;\n scheduler = options.scheduler;\n }\n else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions;\n resultSelector = identity;\n scheduler = resultSelectorOrObservable;\n }\n else {\n initialState = initialStateOrOptions;\n resultSelector = resultSelectorOrObservable;\n }\n return new Observable(function (subscriber) {\n var state = initialState;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n subscriber: subscriber,\n iterate: iterate,\n condition: condition,\n resultSelector: resultSelector,\n state: state\n });\n }\n do {\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n var value = void 0;\n try {\n value = resultSelector(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n return undefined;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, condition = state.condition;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n }\n else {\n state.needIterate = true;\n }\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n var value;\n try {\n value = state.resultSelector(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map\n","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, counter = state.counter, period = state.period;\n subscriber.next(counter);\n this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 0) {\n return EMPTY;\n }\n var first = sources[0], remainder = sources.slice(1);\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext.apply(void 0, first);\n }\n return new Observable(function (subscriber) {\n var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n return from(first).subscribe({\n next: function (value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function pairs(obj, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n }\n else {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n var subscription = new Subscription();\n subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n return subscription;\n });\n }\n}\nexport function dispatch(state) {\n var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n if (!subscriber.closed) {\n if (index < keys.length) {\n var key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n }\n else {\n subscriber.complete();\n }\n }\n}\n//# sourceMappingURL=pairs.js.map\n","/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { Observable } from '../Observable';\nexport function partition(source, predicate, thisArg) {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg))(new Observable(subscribeTo(source)))\n ];\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nvar RaceOperator = /*@__PURE__*/ (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexport { RaceOperator };\nvar RaceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasFirst = false;\n _this.observables = [];\n _this.subscriptions = [];\n return _this;\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult(this, observable, observable, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber));\nexport { RaceSubscriber };\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function range(start, count, scheduler) {\n if (start === void 0) {\n start = 0;\n }\n return new Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexport function dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from(result) : EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map\n","/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexport { ZipOperator };\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) {\n values = Object.create(null);\n }\n var _this = _super.call(this, destination) || this;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null;\n _this.values = values;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe(iterator, i));\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber));\nexport { ZipSubscriber };\nvar StaticIterator = /*@__PURE__*/ (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return nextResult && nextResult.done;\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function (value, index) {\n return subscribeToResult(this, this.observable, this, index);\n };\n return ZipBufferIterator;\n}(OuterSubscriber));\n//# sourceMappingURL=zip.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function audit(durationSelector) {\n return function auditOperatorFunction(source) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\nvar AuditOperator = /*@__PURE__*/ (function () {\n function AuditOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n AuditOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n };\n return AuditOperator;\n}());\nvar AuditSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AuditSubscriber, _super);\n function AuditSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n return _this;\n }\n AuditSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n var duration = void 0;\n try {\n var durationSelector = this.durationSelector;\n duration = durationSelector(value);\n }\n catch (err) {\n return this.destination.error(err);\n }\n var innerSubscription = subscribeToResult(this, duration);\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n }\n else {\n this.add(this.throttled = innerSubscription);\n }\n }\n };\n AuditSubscriber.prototype.clearThrottle = function () {\n var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = null;\n this.hasValue = false;\n this.destination.next(value);\n }\n };\n AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n this.clearThrottle();\n };\n AuditSubscriber.prototype.notifyComplete = function () {\n this.clearThrottle();\n };\n return AuditSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=audit.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function buffer(closingNotifier) {\n return function bufferOperatorFunction(source) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\nvar BufferOperator = /*@__PURE__*/ (function () {\n function BufferOperator(closingNotifier) {\n this.closingNotifier = closingNotifier;\n }\n BufferOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n };\n return BufferOperator;\n}());\nvar BufferSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferSubscriber, _super);\n function BufferSubscriber(destination, closingNotifier) {\n var _this = _super.call(this, destination) || this;\n _this.buffer = [];\n _this.add(subscribeToResult(_this, closingNotifier));\n return _this;\n }\n BufferSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var buffer = this.buffer;\n this.buffer = [];\n this.destination.next(buffer);\n };\n return BufferSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=buffer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) {\n startBufferEvery = null;\n }\n return function bufferCountOperatorFunction(source) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\nvar BufferCountOperator = /*@__PURE__*/ (function () {\n function BufferCountOperator(bufferSize, startBufferEvery) {\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n }\n else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n BufferCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n };\n return BufferCountOperator;\n}());\nvar BufferCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferCountSubscriber, _super);\n function BufferCountSubscriber(destination, bufferSize) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.buffer = [];\n return _this;\n }\n BufferCountSubscriber.prototype._next = function (value) {\n var buffer = this.buffer;\n buffer.push(value);\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n };\n BufferCountSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n return BufferCountSubscriber;\n}(Subscriber));\nvar BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferSkipCountSubscriber, _super);\n function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.startBufferEvery = startBufferEvery;\n _this.buffers = [];\n _this.count = 0;\n return _this;\n }\n BufferSkipCountSubscriber.prototype._next = function (value) {\n var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n for (var i = buffers.length; i--;) {\n var buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n };\n BufferSkipCountSubscriber.prototype._complete = function () {\n var _a = this, buffers = _a.buffers, destination = _a.destination;\n while (buffers.length > 0) {\n var buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n _super.prototype._complete.call(this);\n };\n return BufferSkipCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=bufferCount.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isScheduler } from '../util/isScheduler';\nexport function bufferTime(bufferTimeSpan) {\n var length = arguments.length;\n var scheduler = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n var bufferCreationInterval = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n var maxBufferSize = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n return function bufferTimeOperatorFunction(source) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\nvar BufferTimeOperator = /*@__PURE__*/ (function () {\n function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n this.bufferTimeSpan = bufferTimeSpan;\n this.bufferCreationInterval = bufferCreationInterval;\n this.maxBufferSize = maxBufferSize;\n this.scheduler = scheduler;\n }\n BufferTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));\n };\n return BufferTimeOperator;\n}());\nvar Context = /*@__PURE__*/ (function () {\n function Context() {\n this.buffer = [];\n }\n return Context;\n}());\nvar BufferTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferTimeSubscriber, _super);\n function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.bufferTimeSpan = bufferTimeSpan;\n _this.bufferCreationInterval = bufferCreationInterval;\n _this.maxBufferSize = maxBufferSize;\n _this.scheduler = scheduler;\n _this.contexts = [];\n var context = _this.openContext();\n _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (_this.timespanOnly) {\n var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n else {\n var closeState = { subscriber: _this, context: context };\n var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n return _this;\n }\n BufferTimeSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n var filledBufferContext;\n for (var i = 0; i < len; i++) {\n var context_1 = contexts[i];\n var buffer = context_1.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context_1;\n }\n }\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n };\n BufferTimeSubscriber.prototype._error = function (err) {\n this.contexts.length = 0;\n _super.prototype._error.call(this, err);\n };\n BufferTimeSubscriber.prototype._complete = function () {\n var _a = this, contexts = _a.contexts, destination = _a.destination;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n destination.next(context_2.buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferTimeSubscriber.prototype._unsubscribe = function () {\n this.contexts = null;\n };\n BufferTimeSubscriber.prototype.onBufferFull = function (context) {\n this.closeContext(context);\n var closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n var bufferTimeSpan = this.bufferTimeSpan;\n var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n };\n BufferTimeSubscriber.prototype.openContext = function () {\n var context = new Context();\n this.contexts.push(context);\n return context;\n };\n BufferTimeSubscriber.prototype.closeContext = function (context) {\n this.destination.next(context.buffer);\n var contexts = this.contexts;\n var spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n };\n return BufferTimeSubscriber;\n}(Subscriber));\nfunction dispatchBufferTimeSpanOnly(state) {\n var subscriber = state.subscriber;\n var prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\nfunction dispatchBufferCreation(state) {\n var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;\n var context = subscriber.openContext();\n var action = this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\nfunction dispatchBufferClose(arg) {\n var subscriber = arg.subscriber, context = arg.context;\n subscriber.closeContext(context);\n}\n//# sourceMappingURL=bufferTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nexport function bufferToggle(openings, closingSelector) {\n return function bufferToggleOperatorFunction(source) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\nvar BufferToggleOperator = /*@__PURE__*/ (function () {\n function BufferToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n BufferToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return BufferToggleOperator;\n}());\nvar BufferToggleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferToggleSubscriber, _super);\n function BufferToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(subscribeToResult(_this, openings));\n return _this;\n }\n BufferToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n };\n BufferToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_1 = contexts.shift();\n context_1.subscription.unsubscribe();\n context_1.buffer = null;\n context_1.subscription = null;\n }\n this.contexts = null;\n _super.prototype._error.call(this, err);\n };\n BufferToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n this.destination.next(context_2.buffer);\n context_2.subscription.unsubscribe();\n context_2.buffer = null;\n context_2.subscription = null;\n }\n this.contexts = null;\n _super.prototype._complete.call(this);\n };\n BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n };\n BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {\n this.closeBuffer(innerSub.context);\n };\n BufferToggleSubscriber.prototype.openBuffer = function (value) {\n try {\n var closingSelector = this.closingSelector;\n var closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n }\n catch (err) {\n this._error(err);\n }\n };\n BufferToggleSubscriber.prototype.closeBuffer = function (context) {\n var contexts = this.contexts;\n if (contexts && context) {\n var buffer = context.buffer, subscription = context.subscription;\n this.destination.next(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n };\n BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {\n var contexts = this.contexts;\n var buffer = [];\n var subscription = new Subscription();\n var context = { buffer: buffer, subscription: subscription };\n contexts.push(context);\n var innerSubscription = subscribeToResult(this, closingNotifier, context);\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n }\n else {\n innerSubscription.context = context;\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n };\n return BufferToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferToggle.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function bufferWhen(closingSelector) {\n return function (source) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\nvar BufferWhenOperator = /*@__PURE__*/ (function () {\n function BufferWhenOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n BufferWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n };\n return BufferWhenOperator;\n}());\nvar BufferWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferWhenSubscriber, _super);\n function BufferWhenSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.closingSelector = closingSelector;\n _this.subscribing = false;\n _this.openBuffer();\n return _this;\n }\n BufferWhenSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferWhenSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferWhenSubscriber.prototype._unsubscribe = function () {\n this.buffer = null;\n this.subscribing = false;\n };\n BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openBuffer();\n };\n BufferWhenSubscriber.prototype.notifyComplete = function () {\n if (this.subscribing) {\n this.complete();\n }\n else {\n this.openBuffer();\n }\n };\n BufferWhenSubscriber.prototype.openBuffer = function () {\n var closingSubscription = this.closingSubscription;\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n var buffer = this.buffer;\n if (this.buffer) {\n this.destination.next(buffer);\n }\n this.buffer = [];\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(subscribeToResult(this, closingNotifier));\n this.subscribing = false;\n };\n return BufferWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */\nimport { CombineLatestOperator } from '../observable/combineLatest';\nexport function combineAll(project) {\n return function (source) { return source.lift(new CombineLatestOperator(project)); };\n}\n//# sourceMappingURL=combineAll.js.map\n","/** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nvar none = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var project = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0].slice();\n }\n return function (source) { return source.lift.call(from([source].concat(observables)), new CombineLatestOperator(project)); };\n}\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */\nimport { concat as concatStatic } from '../observable/concat';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(concatStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n//# sourceMappingURL=concatMap.js.map\n","/** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */\nimport { concatMap } from './concatMap';\nexport function concatMapTo(innerObservable, resultSelector) {\n return concatMap(function () { return innerObservable; }, resultSelector);\n}\n//# sourceMappingURL=concatMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function count(predicate) {\n return function (source) { return source.lift(new CountOperator(predicate, source)); };\n}\nvar CountOperator = /*@__PURE__*/ (function () {\n function CountOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n CountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n };\n return CountOperator;\n}());\nvar CountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CountSubscriber, _super);\n function CountSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.count = 0;\n _this.index = 0;\n return _this;\n }\n CountSubscriber.prototype._next = function (value) {\n if (this.predicate) {\n this._tryPredicate(value);\n }\n else {\n this.count++;\n }\n };\n CountSubscriber.prototype._tryPredicate = function (value) {\n var result;\n try {\n result = this.predicate(value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.count++;\n }\n };\n CountSubscriber.prototype._complete = function () {\n this.destination.next(this.count);\n this.destination.complete();\n };\n return CountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=count.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function debounce(durationSelector) {\n return function (source) { return source.lift(new DebounceOperator(durationSelector)); };\n}\nvar DebounceOperator = /*@__PURE__*/ (function () {\n function DebounceOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n DebounceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n };\n return DebounceOperator;\n}());\nvar DebounceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DebounceSubscriber, _super);\n function DebounceSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n _this.durationSubscription = null;\n return _this;\n }\n DebounceSubscriber.prototype._next = function (value) {\n try {\n var result = this.durationSelector.call(this, value);\n if (result) {\n this._tryNext(value, result);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DebounceSubscriber.prototype._complete = function () {\n this.emitValue();\n this.destination.complete();\n };\n DebounceSubscriber.prototype._tryNext = function (value, duration) {\n var subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n subscription = subscribeToResult(this, duration);\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n };\n DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n DebounceSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n DebounceSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n var value = this.value;\n var subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = null;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n this.value = null;\n this.hasValue = false;\n _super.prototype._next.call(this, value);\n }\n };\n return DebounceSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=debounce.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nvar DebounceTimeOperator = /*@__PURE__*/ (function () {\n function DebounceTimeOperator(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n DebounceTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n };\n return DebounceTimeOperator;\n}());\nvar DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DebounceTimeSubscriber, _super);\n function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.dueTime = dueTime;\n _this.scheduler = scheduler;\n _this.debouncedSubscription = null;\n _this.lastValue = null;\n _this.hasValue = false;\n return _this;\n }\n DebounceTimeSubscriber.prototype._next = function (value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n };\n DebounceTimeSubscriber.prototype._complete = function () {\n this.debouncedNext();\n this.destination.complete();\n };\n DebounceTimeSubscriber.prototype.debouncedNext = function () {\n this.clearDebounce();\n if (this.hasValue) {\n var lastValue = this.lastValue;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n };\n DebounceTimeSubscriber.prototype.clearDebounce = function () {\n var debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n };\n return DebounceTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = null;\n }\n return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nvar DefaultIfEmptyOperator = /*@__PURE__*/ (function () {\n function DefaultIfEmptyOperator(defaultValue) {\n this.defaultValue = defaultValue;\n }\n DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n };\n return DefaultIfEmptyOperator;\n}());\nvar DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DefaultIfEmptySubscriber, _super);\n function DefaultIfEmptySubscriber(destination, defaultValue) {\n var _this = _super.call(this, destination) || this;\n _this.defaultValue = defaultValue;\n _this.isEmpty = true;\n return _this;\n }\n DefaultIfEmptySubscriber.prototype._next = function (value) {\n this.isEmpty = false;\n this.destination.next(value);\n };\n DefaultIfEmptySubscriber.prototype._complete = function () {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n };\n return DefaultIfEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n var absoluteDelay = isDate(delay);\n var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nvar DelayOperator = /*@__PURE__*/ (function () {\n function DelayOperator(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n DelayOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n };\n return DelayOperator;\n}());\nvar DelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelaySubscriber, _super);\n function DelaySubscriber(destination, delay, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.delay = delay;\n _this.scheduler = scheduler;\n _this.queue = [];\n _this.active = false;\n _this.errored = false;\n return _this;\n }\n DelaySubscriber.dispatch = function (state) {\n var source = state.source;\n var queue = source.queue;\n var scheduler = state.scheduler;\n var destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay_1);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n };\n DelaySubscriber.prototype._schedule = function (scheduler) {\n this.active = true;\n var destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n };\n DelaySubscriber.prototype.scheduleNotification = function (notification) {\n if (this.errored === true) {\n return;\n }\n var scheduler = this.scheduler;\n var message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n };\n DelaySubscriber.prototype._next = function (value) {\n this.scheduleNotification(Notification.createNext(value));\n };\n DelaySubscriber.prototype._error = function (err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n };\n DelaySubscriber.prototype._complete = function () {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n };\n return DelaySubscriber;\n}(Subscriber));\nvar DelayMessage = /*@__PURE__*/ (function () {\n function DelayMessage(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n };\n }\n return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };\n}\nvar DelayWhenOperator = /*@__PURE__*/ (function () {\n function DelayWhenOperator(delayDurationSelector) {\n this.delayDurationSelector = delayDurationSelector;\n }\n DelayWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n };\n return DelayWhenOperator;\n}());\nvar DelayWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelayWhenSubscriber, _super);\n function DelayWhenSubscriber(destination, delayDurationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.delayDurationSelector = delayDurationSelector;\n _this.completed = false;\n _this.delayNotifierSubscriptions = [];\n _this.index = 0;\n return _this;\n }\n DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n var value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next(value);\n }\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype._next = function (value) {\n var index = this.index++;\n try {\n var delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DelayWhenSubscriber.prototype._complete = function () {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n };\n DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {\n subscription.unsubscribe();\n var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n return subscription.outerValue;\n };\n DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {\n var notifierSubscription = subscribeToResult(this, delayNotifier, value);\n if (notifierSubscription && !notifierSubscription.closed) {\n var destination = this.destination;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n };\n DelayWhenSubscriber.prototype.tryComplete = function () {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete();\n }\n };\n return DelayWhenSubscriber;\n}(OuterSubscriber));\nvar SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscriptionDelayObservable, _super);\n function SubscriptionDelayObservable(source, subscriptionDelay) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subscriptionDelay = subscriptionDelay;\n return _this;\n }\n SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n };\n return SubscriptionDelayObservable;\n}(Observable));\nvar SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscriptionDelaySubscriber, _super);\n function SubscriptionDelaySubscriber(parent, source) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.source = source;\n _this.sourceSubscribed = false;\n return _this;\n }\n SubscriptionDelaySubscriber.prototype._next = function (unused) {\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype._error = function (err) {\n this.unsubscribe();\n this.parent.error(err);\n };\n SubscriptionDelaySubscriber.prototype._complete = function () {\n this.unsubscribe();\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n };\n return SubscriptionDelaySubscriber;\n}(Subscriber));\n//# sourceMappingURL=delayWhen.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function dematerialize() {\n return function dematerializeOperatorFunction(source) {\n return source.lift(new DeMaterializeOperator());\n };\n}\nvar DeMaterializeOperator = /*@__PURE__*/ (function () {\n function DeMaterializeOperator() {\n }\n DeMaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n };\n return DeMaterializeOperator;\n}());\nvar DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DeMaterializeSubscriber, _super);\n function DeMaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n DeMaterializeSubscriber.prototype._next = function (value) {\n value.observe(this.destination);\n };\n return DeMaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=dematerialize.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function distinct(keySelector, flushes) {\n return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };\n}\nvar DistinctOperator = /*@__PURE__*/ (function () {\n function DistinctOperator(keySelector, flushes) {\n this.keySelector = keySelector;\n this.flushes = flushes;\n }\n DistinctOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n };\n return DistinctOperator;\n}());\nvar DistinctSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctSubscriber, _super);\n function DistinctSubscriber(destination, keySelector, flushes) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.values = new Set();\n if (flushes) {\n _this.add(subscribeToResult(_this, flushes));\n }\n return _this;\n }\n DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values.clear();\n };\n DistinctSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DistinctSubscriber.prototype._next = function (value) {\n if (this.keySelector) {\n this._useKeySelector(value);\n }\n else {\n this._finalizeNext(value, value);\n }\n };\n DistinctSubscriber.prototype._useKeySelector = function (value) {\n var key;\n var destination = this.destination;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this._finalizeNext(key, value);\n };\n DistinctSubscriber.prototype._finalizeNext = function (key, value) {\n var values = this.values;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next(value);\n }\n };\n return DistinctSubscriber;\n}(OuterSubscriber));\nexport { DistinctSubscriber };\n//# sourceMappingURL=distinct.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = /*@__PURE__*/ (function () {\n function DistinctUntilChangedOperator(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n };\n return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctUntilChangedSubscriber, _super);\n function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.hasKey = false;\n if (typeof compare === 'function') {\n _this.compare = compare;\n }\n return _this;\n }\n DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n return x === y;\n };\n DistinctUntilChangedSubscriber.prototype._next = function (value) {\n var key;\n try {\n var keySelector = this.keySelector;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n var result = false;\n if (this.hasKey) {\n try {\n var compare = this.compare;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n };\n return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map\n","/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */\nimport { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map\n","/** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n };\n}\n//# sourceMappingURL=elementAt.js.map\n","/** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n return function (source) { return concat(source, of.apply(void 0, array)); };\n}\n//# sourceMappingURL=endWith.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function every(predicate, thisArg) {\n return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };\n}\nvar EveryOperator = /*@__PURE__*/ (function () {\n function EveryOperator(predicate, thisArg, source) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.source = source;\n }\n EveryOperator.prototype.call = function (observer, source) {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n };\n return EveryOperator;\n}());\nvar EverySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(EverySubscriber, _super);\n function EverySubscriber(destination, predicate, thisArg, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.source = source;\n _this.index = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n };\n EverySubscriber.prototype._next = function (value) {\n var result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (!result) {\n this.notifyComplete(false);\n }\n };\n EverySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return EverySubscriber;\n}(Subscriber));\n//# sourceMappingURL=every.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function exhaust() {\n return function (source) { return source.lift(new SwitchFirstOperator()); };\n}\nvar SwitchFirstOperator = /*@__PURE__*/ (function () {\n function SwitchFirstOperator() {\n }\n SwitchFirstOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n };\n return SwitchFirstOperator;\n}());\nvar SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchFirstSubscriber, _super);\n function SwitchFirstSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasCompleted = false;\n _this.hasSubscription = false;\n return _this;\n }\n SwitchFirstSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(subscribeToResult(this, value));\n }\n };\n SwitchFirstSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n };\n SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) {\n this.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return SwitchFirstSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaust.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) { return source.pipe(exhaustMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) {\n return source.lift(new ExhaustMapOperator(project));\n };\n}\nvar ExhaustMapOperator = /*@__PURE__*/ (function () {\n function ExhaustMapOperator(project) {\n this.project = project;\n }\n ExhaustMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n };\n return ExhaustMapOperator;\n}());\nvar ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ExhaustMapSubscriber, _super);\n function ExhaustMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.hasSubscription = false;\n _this.hasCompleted = false;\n _this.index = 0;\n return _this;\n }\n ExhaustMapSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n };\n ExhaustMapSubscriber.prototype.tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result, value, index);\n };\n ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, result, value, index, innerSubscriber);\n };\n ExhaustMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n ExhaustMapSubscriber.prototype.notifyError = function (err) {\n this.destination.error(err);\n };\n ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return ExhaustMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaustMap.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function expand(project, concurrent, scheduler) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (scheduler === void 0) {\n scheduler = undefined;\n }\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };\n}\nvar ExpandOperator = /*@__PURE__*/ (function () {\n function ExpandOperator(project, concurrent, scheduler) {\n this.project = project;\n this.concurrent = concurrent;\n this.scheduler = scheduler;\n }\n ExpandOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n };\n return ExpandOperator;\n}());\nexport { ExpandOperator };\nvar ExpandSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ExpandSubscriber, _super);\n function ExpandSubscriber(destination, project, concurrent, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.scheduler = scheduler;\n _this.index = 0;\n _this.active = 0;\n _this.hasCompleted = false;\n if (concurrent < Number.POSITIVE_INFINITY) {\n _this.buffer = [];\n }\n return _this;\n }\n ExpandSubscriber.dispatch = function (arg) {\n var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;\n subscriber.subscribeToProjection(result, value, index);\n };\n ExpandSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (destination.closed) {\n this._complete();\n return;\n }\n var index = this.index++;\n if (this.active < this.concurrent) {\n destination.next(value);\n try {\n var project = this.project;\n var result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n }\n else {\n var state = { subscriber: this, result: result, value: value, index: index };\n var destination_1 = this.destination;\n destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));\n }\n }\n catch (e) {\n destination.error(e);\n }\n }\n else {\n this.buffer.push(value);\n }\n };\n ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {\n this.active++;\n var destination = this.destination;\n destination.add(subscribeToResult(this, result, value, index));\n };\n ExpandSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this._next(innerValue);\n };\n ExpandSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n };\n return ExpandSubscriber;\n}(OuterSubscriber));\nexport { ExpandSubscriber };\n//# sourceMappingURL=expand.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function find(predicate, thisArg) {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };\n}\nvar FindValueOperator = /*@__PURE__*/ (function () {\n function FindValueOperator(predicate, source, yieldIndex, thisArg) {\n this.predicate = predicate;\n this.source = source;\n this.yieldIndex = yieldIndex;\n this.thisArg = thisArg;\n }\n FindValueOperator.prototype.call = function (observer, source) {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n };\n return FindValueOperator;\n}());\nexport { FindValueOperator };\nvar FindValueSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FindValueSubscriber, _super);\n function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.yieldIndex = yieldIndex;\n _this.thisArg = thisArg;\n _this.index = 0;\n return _this;\n }\n FindValueSubscriber.prototype.notifyComplete = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n };\n FindValueSubscriber.prototype._next = function (value) {\n var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;\n var index = this.index++;\n try {\n var result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n FindValueSubscriber.prototype._complete = function () {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n };\n return FindValueSubscriber;\n}(Subscriber));\nexport { FindValueSubscriber };\n//# sourceMappingURL=find.js.map\n","/** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */\nimport { FindValueOperator } from '../operators/find';\nexport function findIndex(predicate, thisArg) {\n return function (source) { return source.lift(new FindValueOperator(predicate, source, true, thisArg)); };\n}\n//# sourceMappingURL=findIndex.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=first.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n return function (source) {\n return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n };\n}\nvar GroupByOperator = /*@__PURE__*/ (function () {\n function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n this.keySelector = keySelector;\n this.elementSelector = elementSelector;\n this.durationSelector = durationSelector;\n this.subjectSelector = subjectSelector;\n }\n GroupByOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n };\n return GroupByOperator;\n}());\nvar GroupBySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupBySubscriber, _super);\n function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.elementSelector = elementSelector;\n _this.durationSelector = durationSelector;\n _this.subjectSelector = subjectSelector;\n _this.groups = null;\n _this.attemptedToUnsubscribe = false;\n _this.count = 0;\n return _this;\n }\n GroupBySubscriber.prototype._next = function (value) {\n var key;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n this.error(err);\n return;\n }\n this._group(value, key);\n };\n GroupBySubscriber.prototype._group = function (value, key) {\n var groups = this.groups;\n if (!groups) {\n groups = this.groups = new Map();\n }\n var group = groups.get(key);\n var element;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n }\n catch (err) {\n this.error(err);\n }\n }\n else {\n element = value;\n }\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject());\n groups.set(key, group);\n var groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n var duration = void 0;\n try {\n duration = this.durationSelector(new GroupedObservable(key, group));\n }\n catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n if (!group.closed) {\n group.next(element);\n }\n };\n GroupBySubscriber.prototype._error = function (err) {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.error(err);\n });\n groups.clear();\n }\n this.destination.error(err);\n };\n GroupBySubscriber.prototype._complete = function () {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.complete();\n });\n groups.clear();\n }\n this.destination.complete();\n };\n GroupBySubscriber.prototype.removeGroup = function (key) {\n this.groups.delete(key);\n };\n GroupBySubscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n _super.prototype.unsubscribe.call(this);\n }\n }\n };\n return GroupBySubscriber;\n}(Subscriber));\nvar GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupDurationSubscriber, _super);\n function GroupDurationSubscriber(key, group, parent) {\n var _this = _super.call(this, group) || this;\n _this.key = key;\n _this.group = group;\n _this.parent = parent;\n return _this;\n }\n GroupDurationSubscriber.prototype._next = function (value) {\n this.complete();\n };\n GroupDurationSubscriber.prototype._unsubscribe = function () {\n var _a = this, parent = _a.parent, key = _a.key;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n };\n return GroupDurationSubscriber;\n}(Subscriber));\nvar GroupedObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupedObservable, _super);\n function GroupedObservable(key, groupSubject, refCountSubscription) {\n var _this = _super.call(this) || this;\n _this.key = key;\n _this.groupSubject = groupSubject;\n _this.refCountSubscription = refCountSubscription;\n return _this;\n }\n GroupedObservable.prototype._subscribe = function (subscriber) {\n var subscription = new Subscription();\n var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n };\n return GroupedObservable;\n}(Observable));\nexport { GroupedObservable };\nvar InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerRefCountSubscription, _super);\n function InnerRefCountSubscription(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n parent.count++;\n return _this;\n }\n InnerRefCountSubscription.prototype.unsubscribe = function () {\n var parent = this.parent;\n if (!parent.closed && !this.closed) {\n _super.prototype.unsubscribe.call(this);\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n };\n return InnerRefCountSubscription;\n}(Subscription));\n//# sourceMappingURL=groupBy.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function ignoreElements() {\n return function ignoreElementsOperatorFunction(source) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\nvar IgnoreElementsOperator = /*@__PURE__*/ (function () {\n function IgnoreElementsOperator() {\n }\n IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n };\n return IgnoreElementsOperator;\n}());\nvar IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IgnoreElementsSubscriber, _super);\n function IgnoreElementsSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IgnoreElementsSubscriber.prototype._next = function (unused) {\n };\n return IgnoreElementsSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ignoreElements.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function isEmpty() {\n return function (source) { return source.lift(new IsEmptyOperator()); };\n}\nvar IsEmptyOperator = /*@__PURE__*/ (function () {\n function IsEmptyOperator() {\n }\n IsEmptyOperator.prototype.call = function (observer, source) {\n return source.subscribe(new IsEmptySubscriber(observer));\n };\n return IsEmptyOperator;\n}());\nvar IsEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IsEmptySubscriber, _super);\n function IsEmptySubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {\n var destination = this.destination;\n destination.next(isEmpty);\n destination.complete();\n };\n IsEmptySubscriber.prototype._next = function (value) {\n this.notifyComplete(false);\n };\n IsEmptySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return IsEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=isEmpty.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=last.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = /*@__PURE__*/ (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function materialize() {\n return function materializeOperatorFunction(source) {\n return source.lift(new MaterializeOperator());\n };\n}\nvar MaterializeOperator = /*@__PURE__*/ (function () {\n function MaterializeOperator() {\n }\n MaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n };\n return MaterializeOperator;\n}());\nvar MaterializeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MaterializeSubscriber, _super);\n function MaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n MaterializeSubscriber.prototype._next = function (value) {\n this.destination.next(Notification.createNext(value));\n };\n MaterializeSubscriber.prototype._error = function (err) {\n var destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n };\n MaterializeSubscriber.prototype._complete = function () {\n var destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n };\n return MaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=materialize.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nexport function max(comparer) {\n var max = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) > 0 ? x : y; }\n : function (x, y) { return x > y ? x : y; };\n return reduce(max);\n}\n//# sourceMappingURL=max.js.map\n","/** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */\nimport { merge as mergeStatic } from '../observable/merge';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(mergeStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(function () { return innerObservable; }, concurrent);\n}\n//# sourceMappingURL=mergeMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };\n}\nvar MergeScanOperator = /*@__PURE__*/ (function () {\n function MergeScanOperator(accumulator, seed, concurrent) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.concurrent = concurrent;\n }\n MergeScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));\n };\n return MergeScanOperator;\n}());\nexport { MergeScanOperator };\nvar MergeScanSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeScanSubscriber, _super);\n function MergeScanSubscriber(destination, accumulator, acc, concurrent) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this.acc = acc;\n _this.concurrent = concurrent;\n _this.hasValue = false;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeScanSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n var index = this.index++;\n var destination = this.destination;\n var ish = void 0;\n try {\n var accumulator = this.accumulator;\n ish = accumulator(this.acc, value, index);\n }\n catch (e) {\n return destination.error(e);\n }\n this.active++;\n this._innerSub(ish, value, index);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeScanSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeScanSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var destination = this.destination;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next(innerValue);\n };\n MergeScanSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n };\n return MergeScanSubscriber;\n}(OuterSubscriber));\nexport { MergeScanSubscriber };\n//# sourceMappingURL=mergeScan.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nexport function min(comparer) {\n var min = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) < 0 ? x : y; }\n : function (x, y) { return x < y ? x : y; };\n return reduce(min);\n}\n//# sourceMappingURL=min.js.map\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { from } from '../observable/from';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function onErrorResumeNext() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };\n}\nexport function onErrorResumeNextStatic() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n var source = null;\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n source = nextSources.shift();\n return from(source, null).lift(new OnErrorResumeNextOperator(nextSources));\n}\nvar OnErrorResumeNextOperator = /*@__PURE__*/ (function () {\n function OnErrorResumeNextOperator(nextSources) {\n this.nextSources = nextSources;\n }\n OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n };\n return OnErrorResumeNextOperator;\n}());\nvar OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OnErrorResumeNextSubscriber, _super);\n function OnErrorResumeNextSubscriber(destination, nextSources) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.nextSources = nextSources;\n return _this;\n }\n OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype._error = function (err) {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype._complete = function () {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {\n var next = this.nextSources.shift();\n if (!!next) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, next, undefined, undefined, innerSubscriber);\n }\n else {\n this.destination.complete();\n }\n };\n return OnErrorResumeNextSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function pairwise() {\n return function (source) { return source.lift(new PairwiseOperator()); };\n}\nvar PairwiseOperator = /*@__PURE__*/ (function () {\n function PairwiseOperator() {\n }\n PairwiseOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n };\n return PairwiseOperator;\n}());\nvar PairwiseSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(PairwiseSubscriber, _super);\n function PairwiseSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasPrev = false;\n return _this;\n }\n PairwiseSubscriber.prototype._next = function (value) {\n var pair;\n if (this.hasPrev) {\n pair = [this.prev, value];\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n if (pair) {\n this.destination.next(pair);\n }\n };\n return PairwiseSubscriber;\n}(Subscriber));\n//# sourceMappingURL=pairwise.js.map\n","/** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return function (source) {\n return [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg))(source)\n ];\n };\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n","/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nexport function publish(selector) {\n return selector ?\n multicast(function () { return new Subject(); }, selector) :\n multicast(new Subject());\n}\n//# sourceMappingURL=publish.js.map\n","/** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nexport function publishBehavior(value) {\n return function (source) { return multicast(new BehaviorSubject(value))(source); };\n}\n//# sourceMappingURL=publishBehavior.js.map\n","/** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nexport function publishLast() {\n return function (source) { return multicast(new AsyncSubject())(source); };\n}\n//# sourceMappingURL=publishLast.js.map\n","/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n var subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n return function (source) { return multicast(function () { return subject; }, selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map\n","/** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */\nimport { isArray } from '../util/isArray';\nimport { race as raceStatic } from '../observable/race';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function raceOperatorFunction(source) {\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return source.lift.call(raceStatic.apply(void 0, [source].concat(observables)));\n };\n}\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { pipe } from '../util/pipe';\nexport function reduce(accumulator, seed) {\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source) {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source) {\n return pipe(scan(function (acc, value, index) { return accumulator(acc, value, index + 1); }), takeLast(1))(source);\n };\n}\n//# sourceMappingURL=reduce.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { empty } from '../observable/empty';\nexport function repeat(count) {\n if (count === void 0) {\n count = -1;\n }\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n }\n else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\nvar RepeatOperator = /*@__PURE__*/ (function () {\n function RepeatOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RepeatOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n };\n return RepeatOperator;\n}());\nvar RepeatSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RepeatSubscriber, _super);\n function RepeatSubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RepeatSubscriber.prototype.complete = function () {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.complete.call(this);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RepeatSubscriber;\n}(Subscriber));\n//# sourceMappingURL=repeat.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function repeatWhen(notifier) {\n return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };\n}\nvar RepeatWhenOperator = /*@__PURE__*/ (function () {\n function RepeatWhenOperator(notifier) {\n this.notifier = notifier;\n }\n RepeatWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n };\n return RepeatWhenOperator;\n}());\nvar RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RepeatWhenSubscriber, _super);\n function RepeatWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n _this.sourceIsBeingSubscribedTo = true;\n return _this;\n }\n RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n };\n RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n if (this.sourceIsBeingSubscribedTo === false) {\n return _super.prototype.complete.call(this);\n }\n };\n RepeatWhenSubscriber.prototype.complete = function () {\n this.sourceIsBeingSubscribedTo = false;\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return _super.prototype.complete.call(this);\n }\n this._unsubscribeAndRecycle();\n this.notifications.next();\n }\n };\n RepeatWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n _super.prototype._unsubscribeAndRecycle.call(this);\n this._unsubscribe = _unsubscribe;\n return this;\n };\n RepeatWhenSubscriber.prototype.subscribeToRetries = function () {\n this.notifications = new Subject();\n var retries;\n try {\n var notifier = this.notifier;\n retries = notifier(this.notifications);\n }\n catch (e) {\n return _super.prototype.complete.call(this);\n }\n this.retries = retries;\n this.retriesSubscription = subscribeToResult(this, retries);\n };\n return RepeatWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=repeatWhen.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function retry(count) {\n if (count === void 0) {\n count = -1;\n }\n return function (source) { return source.lift(new RetryOperator(count, source)); };\n}\nvar RetryOperator = /*@__PURE__*/ (function () {\n function RetryOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RetryOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n };\n return RetryOperator;\n}());\nvar RetrySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetrySubscriber, _super);\n function RetrySubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RetrySubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.error.call(this, err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RetrySubscriber;\n}(Subscriber));\n//# sourceMappingURL=retry.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function retryWhen(notifier) {\n return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };\n}\nvar RetryWhenOperator = /*@__PURE__*/ (function () {\n function RetryWhenOperator(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n RetryWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n };\n return RetryWhenOperator;\n}());\nvar RetryWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetryWhenSubscriber, _super);\n function RetryWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n return _this;\n }\n RetryWhenSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var errors = this.errors;\n var retries = this.retries;\n var retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject();\n try {\n var notifier = this.notifier;\n retries = notifier(errors);\n }\n catch (e) {\n return _super.prototype.error.call(this, e);\n }\n retriesSubscription = subscribeToResult(this, retries);\n }\n else {\n this.errors = null;\n this.retriesSubscription = null;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n };\n RetryWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;\n if (errors) {\n errors.unsubscribe();\n this.errors = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n };\n return RetryWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=retryWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function sample(notifier) {\n return function (source) { return source.lift(new SampleOperator(notifier)); };\n}\nvar SampleOperator = /*@__PURE__*/ (function () {\n function SampleOperator(notifier) {\n this.notifier = notifier;\n }\n SampleOperator.prototype.call = function (subscriber, source) {\n var sampleSubscriber = new SampleSubscriber(subscriber);\n var subscription = source.subscribe(sampleSubscriber);\n subscription.add(subscribeToResult(sampleSubscriber, this.notifier));\n return subscription;\n };\n return SampleOperator;\n}());\nvar SampleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SampleSubscriber, _super);\n function SampleSubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasValue = false;\n return _this;\n }\n SampleSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n };\n SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n SampleSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n SampleSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.value);\n }\n };\n return SampleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=sample.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function sampleTime(period, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };\n}\nvar SampleTimeOperator = /*@__PURE__*/ (function () {\n function SampleTimeOperator(period, scheduler) {\n this.period = period;\n this.scheduler = scheduler;\n }\n SampleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n };\n return SampleTimeOperator;\n}());\nvar SampleTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SampleTimeSubscriber, _super);\n function SampleTimeSubscriber(destination, period, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.period = period;\n _this.scheduler = scheduler;\n _this.hasValue = false;\n _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period }));\n return _this;\n }\n SampleTimeSubscriber.prototype._next = function (value) {\n this.lastValue = value;\n this.hasValue = true;\n };\n SampleTimeSubscriber.prototype.notifyNext = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n };\n return SampleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNotification(state) {\n var subscriber = state.subscriber, period = state.period;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n//# sourceMappingURL=sampleTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n var hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nvar ScanOperator = /*@__PURE__*/ (function () {\n function ScanOperator(accumulator, seed, hasSeed) {\n if (hasSeed === void 0) {\n hasSeed = false;\n }\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n ScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n };\n return ScanOperator;\n}());\nvar ScanSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ScanSubscriber, _super);\n function ScanSubscriber(destination, accumulator, _seed, hasSeed) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this._seed = _seed;\n _this.hasSeed = hasSeed;\n _this.index = 0;\n return _this;\n }\n Object.defineProperty(ScanSubscriber.prototype, \"seed\", {\n get: function () {\n return this._seed;\n },\n set: function (value) {\n this.hasSeed = true;\n this._seed = value;\n },\n enumerable: true,\n configurable: true\n });\n ScanSubscriber.prototype._next = function (value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n };\n ScanSubscriber.prototype._tryNext = function (value) {\n var index = this.index++;\n var result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n };\n return ScanSubscriber;\n}(Subscriber));\n//# sourceMappingURL=scan.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function sequenceEqual(compareTo, comparator) {\n return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); };\n}\nvar SequenceEqualOperator = /*@__PURE__*/ (function () {\n function SequenceEqualOperator(compareTo, comparator) {\n this.compareTo = compareTo;\n this.comparator = comparator;\n }\n SequenceEqualOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n };\n return SequenceEqualOperator;\n}());\nexport { SequenceEqualOperator };\nvar SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SequenceEqualSubscriber, _super);\n function SequenceEqualSubscriber(destination, compareTo, comparator) {\n var _this = _super.call(this, destination) || this;\n _this.compareTo = compareTo;\n _this.comparator = comparator;\n _this._a = [];\n _this._b = [];\n _this._oneComplete = false;\n _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this)));\n return _this;\n }\n SequenceEqualSubscriber.prototype._next = function (value) {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n }\n else {\n this._a.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype._complete = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n };\n SequenceEqualSubscriber.prototype.checkValues = function () {\n var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator;\n while (_a.length > 0 && _b.length > 0) {\n var a = _a.shift();\n var b = _b.shift();\n var areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n }\n catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n };\n SequenceEqualSubscriber.prototype.emit = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n };\n SequenceEqualSubscriber.prototype.nextB = function (value) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n }\n else {\n this._b.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype.completeB = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n };\n return SequenceEqualSubscriber;\n}(Subscriber));\nexport { SequenceEqualSubscriber };\nvar SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SequenceEqualCompareToSubscriber, _super);\n function SequenceEqualCompareToSubscriber(destination, parent) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n return _this;\n }\n SequenceEqualCompareToSubscriber.prototype._next = function (value) {\n this.parent.nextB(value);\n };\n SequenceEqualCompareToSubscriber.prototype._error = function (err) {\n this.parent.error(err);\n this.unsubscribe();\n };\n SequenceEqualCompareToSubscriber.prototype._complete = function () {\n this.parent.completeB();\n this.unsubscribe();\n };\n return SequenceEqualCompareToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=sequenceEqual.js.map\n","/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return function (source) { return refCount()(multicast(shareSubjectFactory)(source)); };\n}\n//# sourceMappingURL=share.js.map\n","/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime: windowTime,\n refCount: false,\n scheduler: scheduler\n };\n }\n return function (source) { return source.lift(shareReplayOperator(config)); };\n}\nfunction shareReplayOperator(_a) {\n var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;\n var subject;\n var refCount = 0;\n var subscription;\n var hasError = false;\n var isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next: function (value) { subject.next(value); },\n error: function (err) {\n hasError = true;\n subject.error(err);\n },\n complete: function () {\n isComplete = true;\n subject.complete();\n },\n });\n }\n var innerSub = subject.subscribe(this);\n this.add(function () {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nexport function single(predicate) {\n return function (source) { return source.lift(new SingleOperator(predicate, source)); };\n}\nvar SingleOperator = /*@__PURE__*/ (function () {\n function SingleOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n SingleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n };\n return SingleOperator;\n}());\nvar SingleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SingleSubscriber, _super);\n function SingleSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.seenValue = false;\n _this.index = 0;\n return _this;\n }\n SingleSubscriber.prototype.applySingleValue = function (value) {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n }\n else {\n this.seenValue = true;\n this.singleValue = value;\n }\n };\n SingleSubscriber.prototype._next = function (value) {\n var index = this.index++;\n if (this.predicate) {\n this.tryNext(value, index);\n }\n else {\n this.applySingleValue(value);\n }\n };\n SingleSubscriber.prototype.tryNext = function (value, index) {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n SingleSubscriber.prototype._complete = function () {\n var destination = this.destination;\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n }\n else {\n destination.error(new EmptyError);\n }\n };\n return SingleSubscriber;\n}(Subscriber));\n//# sourceMappingURL=single.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return function (source) { return source.lift(new SkipOperator(count)); };\n}\nvar SkipOperator = /*@__PURE__*/ (function () {\n function SkipOperator(total) {\n this.total = total;\n }\n SkipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n };\n return SkipOperator;\n}());\nvar SkipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipSubscriber, _super);\n function SkipSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n SkipSubscriber.prototype._next = function (x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n };\n return SkipSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skip.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nexport function skipLast(count) {\n return function (source) { return source.lift(new SkipLastOperator(count)); };\n}\nvar SkipLastOperator = /*@__PURE__*/ (function () {\n function SkipLastOperator(_skipCount) {\n this._skipCount = _skipCount;\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n SkipLastOperator.prototype.call = function (subscriber, source) {\n if (this._skipCount === 0) {\n return source.subscribe(new Subscriber(subscriber));\n }\n else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n };\n return SkipLastOperator;\n}());\nvar SkipLastSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipLastSubscriber, _super);\n function SkipLastSubscriber(destination, _skipCount) {\n var _this = _super.call(this, destination) || this;\n _this._skipCount = _skipCount;\n _this._count = 0;\n _this._ring = new Array(_skipCount);\n return _this;\n }\n SkipLastSubscriber.prototype._next = function (value) {\n var skipCount = this._skipCount;\n var count = this._count++;\n if (count < skipCount) {\n this._ring[count] = value;\n }\n else {\n var currentIndex = count % skipCount;\n var ring = this._ring;\n var oldValue = ring[currentIndex];\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n };\n return SkipLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipLast.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function skipUntil(notifier) {\n return function (source) { return source.lift(new SkipUntilOperator(notifier)); };\n}\nvar SkipUntilOperator = /*@__PURE__*/ (function () {\n function SkipUntilOperator(notifier) {\n this.notifier = notifier;\n }\n SkipUntilOperator.prototype.call = function (destination, source) {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n };\n return SkipUntilOperator;\n}());\nvar SkipUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipUntilSubscriber, _super);\n function SkipUntilSubscriber(destination, notifier) {\n var _this = _super.call(this, destination) || this;\n _this.hasValue = false;\n var innerSubscriber = new InnerSubscriber(_this, undefined, undefined);\n _this.add(innerSubscriber);\n _this.innerSubscription = innerSubscriber;\n subscribeToResult(_this, notifier, undefined, undefined, innerSubscriber);\n return _this;\n }\n SkipUntilSubscriber.prototype._next = function (value) {\n if (this.hasValue) {\n _super.prototype._next.call(this, value);\n }\n };\n SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n };\n SkipUntilSubscriber.prototype.notifyComplete = function () {\n };\n return SkipUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=skipUntil.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function skipWhile(predicate) {\n return function (source) { return source.lift(new SkipWhileOperator(predicate)); };\n}\nvar SkipWhileOperator = /*@__PURE__*/ (function () {\n function SkipWhileOperator(predicate) {\n this.predicate = predicate;\n }\n SkipWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n };\n return SkipWhileOperator;\n}());\nvar SkipWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipWhileSubscriber, _super);\n function SkipWhileSubscriber(destination, predicate) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.skipping = true;\n _this.index = 0;\n return _this;\n }\n SkipWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n };\n SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {\n try {\n var result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n return SkipWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipWhile.js.map\n","/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return function (source) { return concat(array, source, scheduler); };\n }\n else {\n return function (source) { return concat(array, source); };\n }\n}\n//# sourceMappingURL=startWith.js.map\n","/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function subscribeOnOperatorFunction(source) {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\nvar SubscribeOnOperator = /*@__PURE__*/ (function () {\n function SubscribeOnOperator(scheduler, delay) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n SubscribeOnOperator.prototype.call = function (subscriber, source) {\n return new SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);\n };\n return SubscribeOnOperator;\n}());\n//# sourceMappingURL=subscribeOn.js.map\n","/** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nvar SwitchMapOperator = /*@__PURE__*/ (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = subscribeToResult(this, result, value, index, innerSubscriber);\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map\n","/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nvar TakeOperator = /*@__PURE__*/ (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nvar TakeLastOperator = /*@__PURE__*/ (function () {\n function TakeLastOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeLastOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n };\n return TakeLastOperator;\n}());\nvar TakeLastSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeLastSubscriber, _super);\n function TakeLastSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.ring = new Array();\n _this.count = 0;\n return _this;\n }\n TakeLastSubscriber.prototype._next = function (value) {\n var ring = this.ring;\n var total = this.total;\n var count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n var index = count % total;\n ring[index] = value;\n }\n };\n TakeLastSubscriber.prototype._complete = function () {\n var destination = this.destination;\n var count = this.count;\n if (count > 0) {\n var total = this.count >= this.total ? this.total : this.count;\n var ring = this.ring;\n for (var i = 0; i < total; i++) {\n var idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n };\n return TakeLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeLast.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function takeUntil(notifier) {\n return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nvar TakeUntilOperator = /*@__PURE__*/ (function () {\n function TakeUntilOperator(notifier) {\n this.notifier = notifier;\n }\n TakeUntilOperator.prototype.call = function (subscriber, source) {\n var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n var notifierSubscription = subscribeToResult(takeUntilSubscriber, this.notifier);\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n };\n return TakeUntilOperator;\n}());\nvar TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeUntilSubscriber, _super);\n function TakeUntilSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.seenValue = false;\n return _this;\n }\n TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.seenValue = true;\n this.complete();\n };\n TakeUntilSubscriber.prototype.notifyComplete = function () {\n };\n return TakeUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nvar TakeWhileOperator = /*@__PURE__*/ (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config) {\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nvar ThrottleOperator = /*@__PURE__*/ (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\nvar ThrottleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.durationSelector = durationSelector;\n _this._leading = _leading;\n _this._trailing = _trailing;\n _this._hasValue = false;\n return _this;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n };\n ThrottleSubscriber.prototype.send = function () {\n var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = null;\n };\n ThrottleSubscriber.prototype.throttle = function (value) {\n var duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = subscribeToResult(this, duration));\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype.throttlingDone = function () {\n var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = null;\n if (_trailing) {\n this.send();\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.throttlingDone();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this.throttlingDone();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=throttle.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nvar ThrottleTimeOperator = /*@__PURE__*/ (function () {\n function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n };\n return ThrottleTimeOperator;\n}());\nvar ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrottleTimeSubscriber, _super);\n function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n var _this = _super.call(this, destination) || this;\n _this.duration = duration;\n _this.scheduler = scheduler;\n _this.leading = leading;\n _this.trailing = trailing;\n _this._hasTrailingValue = false;\n _this._trailingValue = null;\n return _this;\n }\n ThrottleTimeSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n };\n ThrottleTimeSubscriber.prototype._complete = function () {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n };\n ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n var throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n };\n return ThrottleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(arg) {\n var subscriber = arg.subscriber;\n subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map\n","/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n return function (source) {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nvar ThrowIfEmptyOperator = /*@__PURE__*/ (function () {\n function ThrowIfEmptyOperator(errorFactory) {\n this.errorFactory = errorFactory;\n }\n ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n };\n return ThrowIfEmptyOperator;\n}());\nvar ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrowIfEmptySubscriber, _super);\n function ThrowIfEmptySubscriber(destination, errorFactory) {\n var _this = _super.call(this, destination) || this;\n _this.errorFactory = errorFactory;\n _this.hasValue = false;\n return _this;\n }\n ThrowIfEmptySubscriber.prototype._next = function (value) {\n this.hasValue = true;\n this.destination.next(value);\n };\n ThrowIfEmptySubscriber.prototype._complete = function () {\n if (!this.hasValue) {\n var err = void 0;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n };\n return ThrowIfEmptySubscriber;\n}(Subscriber));\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, { current: scheduler.now(), value: undefined, last: undefined }), map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\nvar TimeInterval = /*@__PURE__*/ (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n//# sourceMappingURL=timeout.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n var absoluteTimeout = isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nvar TimeoutWithOperator = /*@__PURE__*/ (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.action = null;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(subscribeToResult(subscriber, withObservable));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = null;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { map } from './map';\nexport function timestamp(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return map(function (value) { return new Timestamp(value, scheduler.now()); });\n}\nvar Timestamp = /*@__PURE__*/ (function () {\n function Timestamp(value, timestamp) {\n this.value = value;\n this.timestamp = timestamp;\n }\n return Timestamp;\n}());\nexport { Timestamp };\n//# sourceMappingURL=timestamp.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nfunction toArrayReducer(arr, item, index) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\nexport function toArray() {\n return reduce(toArrayReducer, []);\n}\n//# sourceMappingURL=toArray.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function window(windowBoundaries) {\n return function windowOperatorFunction(source) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\nvar WindowOperator = /*@__PURE__*/ (function () {\n function WindowOperator(windowBoundaries) {\n this.windowBoundaries = windowBoundaries;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n var windowSubscriber = new WindowSubscriber(subscriber);\n var sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(subscribeToResult(windowSubscriber, this.windowBoundaries));\n }\n return sourceSubscription;\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowSubscriber, _super);\n function WindowSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.window = new Subject();\n destination.next(_this.window);\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow();\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this._complete();\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n };\n WindowSubscriber.prototype._unsubscribe = function () {\n this.window = null;\n };\n WindowSubscriber.prototype.openWindow = function () {\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var destination = this.destination;\n var newWindow = this.window = new Subject();\n destination.next(newWindow);\n };\n return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=window.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\nexport function windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) {\n startWindowEvery = 0;\n }\n return function windowCountOperatorFunction(source) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\nvar WindowCountOperator = /*@__PURE__*/ (function () {\n function WindowCountOperator(windowSize, startWindowEvery) {\n this.windowSize = windowSize;\n this.startWindowEvery = startWindowEvery;\n }\n WindowCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n };\n return WindowCountOperator;\n}());\nvar WindowCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowCountSubscriber, _super);\n function WindowCountSubscriber(destination, windowSize, startWindowEvery) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowSize = windowSize;\n _this.startWindowEvery = startWindowEvery;\n _this.windows = [new Subject()];\n _this.count = 0;\n destination.next(_this.windows[0]);\n return _this;\n }\n WindowCountSubscriber.prototype._next = function (value) {\n var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n var destination = this.destination;\n var windowSize = this.windowSize;\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n var c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n var window_1 = new Subject();\n windows.push(window_1);\n destination.next(window_1);\n }\n };\n WindowCountSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n };\n WindowCountSubscriber.prototype._complete = function () {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n };\n WindowCountSubscriber.prototype._unsubscribe = function () {\n this.count = 0;\n this.windows = null;\n };\n return WindowCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=windowCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function windowTime(windowTimeSpan) {\n var scheduler = async;\n var windowCreationInterval = null;\n var maxWindowSize = Number.POSITIVE_INFINITY;\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n }\n else if (isNumeric(arguments[2])) {\n maxWindowSize = arguments[2];\n }\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n }\n else if (isNumeric(arguments[1])) {\n windowCreationInterval = arguments[1];\n }\n return function windowTimeOperatorFunction(source) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\nvar WindowTimeOperator = /*@__PURE__*/ (function () {\n function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n this.windowTimeSpan = windowTimeSpan;\n this.windowCreationInterval = windowCreationInterval;\n this.maxWindowSize = maxWindowSize;\n this.scheduler = scheduler;\n }\n WindowTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));\n };\n return WindowTimeOperator;\n}());\nvar CountedSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CountedSubject, _super);\n function CountedSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._numberOfNextedValues = 0;\n return _this;\n }\n CountedSubject.prototype.next = function (value) {\n this._numberOfNextedValues++;\n _super.prototype.next.call(this, value);\n };\n Object.defineProperty(CountedSubject.prototype, \"numberOfNextedValues\", {\n get: function () {\n return this._numberOfNextedValues;\n },\n enumerable: true,\n configurable: true\n });\n return CountedSubject;\n}(Subject));\nvar WindowTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowTimeSubscriber, _super);\n function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowTimeSpan = windowTimeSpan;\n _this.windowCreationInterval = windowCreationInterval;\n _this.maxWindowSize = maxWindowSize;\n _this.scheduler = scheduler;\n _this.windows = [];\n var window = _this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n var closeState = { subscriber: _this, window: window, context: null };\n var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));\n }\n else {\n var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan };\n _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n return _this;\n }\n WindowTimeSubscriber.prototype._next = function (value) {\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len; i++) {\n var window_1 = windows[i];\n if (!window_1.closed) {\n window_1.next(value);\n if (window_1.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window_1);\n }\n }\n }\n };\n WindowTimeSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n };\n WindowTimeSubscriber.prototype._complete = function () {\n var windows = this.windows;\n while (windows.length > 0) {\n var window_2 = windows.shift();\n if (!window_2.closed) {\n window_2.complete();\n }\n }\n this.destination.complete();\n };\n WindowTimeSubscriber.prototype.openWindow = function () {\n var window = new CountedSubject();\n this.windows.push(window);\n var destination = this.destination;\n destination.next(window);\n return window;\n };\n WindowTimeSubscriber.prototype.closeWindow = function (window) {\n window.complete();\n var windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n };\n return WindowTimeSubscriber;\n}(Subscriber));\nfunction dispatchWindowTimeSpanOnly(state) {\n var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\nfunction dispatchWindowCreation(state) {\n var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;\n var window = subscriber.openWindow();\n var action = this;\n var context = { action: action, subscription: null };\n var timeSpanState = { subscriber: subscriber, window: window, context: context };\n context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\nfunction dispatchWindowClose(state) {\n var subscriber = state.subscriber, window = state.window, context = state.context;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n//# sourceMappingURL=windowTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function windowToggle(openings, closingSelector) {\n return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };\n}\nvar WindowToggleOperator = /*@__PURE__*/ (function () {\n function WindowToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n WindowToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return WindowToggleOperator;\n}());\nvar WindowToggleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowToggleSubscriber, _super);\n function WindowToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(_this.openSubscription = subscribeToResult(_this, openings, openings));\n return _this;\n }\n WindowToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n if (contexts) {\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n };\n WindowToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_1 = contexts[index];\n context_1.window.error(err);\n context_1.subscription.unsubscribe();\n }\n }\n _super.prototype._error.call(this, err);\n };\n WindowToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_2 = contexts[index];\n context_2.window.complete();\n context_2.subscription.unsubscribe();\n }\n }\n _super.prototype._complete.call(this);\n };\n WindowToggleSubscriber.prototype._unsubscribe = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_3 = contexts[index];\n context_3.window.unsubscribe();\n context_3.subscription.unsubscribe();\n }\n }\n };\n WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (outerValue === this.openings) {\n var closingNotifier = void 0;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector(innerValue);\n }\n catch (e) {\n return this.error(e);\n }\n var window_1 = new Subject();\n var subscription = new Subscription();\n var context_4 = { window: window_1, subscription: subscription };\n this.contexts.push(context_4);\n var innerSubscription = subscribeToResult(this, closingNotifier, context_4);\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n }\n else {\n innerSubscription.context = context_4;\n subscription.add(innerSubscription);\n }\n this.destination.next(window_1);\n }\n else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n };\n WindowToggleSubscriber.prototype.notifyError = function (err) {\n this.error(err);\n };\n WindowToggleSubscriber.prototype.notifyComplete = function (inner) {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(inner.context));\n }\n };\n WindowToggleSubscriber.prototype.closeWindow = function (index) {\n if (index === -1) {\n return;\n }\n var contexts = this.contexts;\n var context = contexts[index];\n var window = context.window, subscription = context.subscription;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n };\n return WindowToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowToggle.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function windowWhen(closingSelector) {\n return function windowWhenOperatorFunction(source) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\nvar WindowOperator = /*@__PURE__*/ (function () {\n function WindowOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowSubscriber, _super);\n function WindowSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.closingSelector = closingSelector;\n _this.openWindow();\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype.unsubscribeClosingNotification = function () {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n };\n WindowSubscriber.prototype.openWindow = function (innerSub) {\n if (innerSub === void 0) {\n innerSub = null;\n }\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var window = this.window = new Subject();\n this.destination.next(window);\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n };\n return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (source) {\n var project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n var observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nvar WithLatestFromOperator = /*@__PURE__*/ (function () {\n function WithLatestFromOperator(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n WithLatestFromOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n };\n return WithLatestFromOperator;\n}());\nvar WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WithLatestFromSubscriber, _super);\n function WithLatestFromSubscriber(destination, observables, project) {\n var _this = _super.call(this, destination) || this;\n _this.observables = observables;\n _this.project = project;\n _this.toRespond = [];\n var len = observables.length;\n _this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n _this.toRespond.push(i);\n }\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n _this.add(subscribeToResult(_this, observable, observable, i));\n }\n return _this;\n }\n WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n var toRespond = this.toRespond;\n if (toRespond.length > 0) {\n var found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n };\n WithLatestFromSubscriber.prototype.notifyComplete = function () {\n };\n WithLatestFromSubscriber.prototype._next = function (value) {\n if (this.toRespond.length === 0) {\n var args = [value].concat(this.values);\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n };\n WithLatestFromSubscriber.prototype._tryProject = function (args) {\n var result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return WithLatestFromSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map\n","/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */\nimport { zip as zipStatic } from '../observable/zip';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function zipOperatorFunction(source) {\n return source.lift.call(zipStatic.apply(void 0, [source].concat(observables)));\n };\n}\n//# sourceMappingURL=zip.js.map\n","/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */\nimport { ZipOperator } from '../observable/zip';\nexport function zipAll(project) {\n return function (source) { return source.lift(new ZipOperator(project)); };\n}\n//# sourceMappingURL=zipAll.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n if (SchedulerAction === void 0) {\n SchedulerAction = VirtualAction;\n }\n if (maxFrames === void 0) {\n maxFrames = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error, action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map\n","/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\nimport { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrame = /*@__PURE__*/ new AnimationFrameScheduler(AnimationFrameAction);\n//# sourceMappingURL=animationFrame.js.map\n","/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\nimport { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asap = /*@__PURE__*/ new AsapScheduler(AsapAction);\n//# sourceMappingURL=asap.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var async = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queue = /*@__PURE__*/ new QueueScheduler(QueueAction);\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar tasksByHandle = {};\nfunction runIfPresent(handle) {\n var cb = tasksByHandle[handle];\n if (cb) {\n cb();\n }\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n tasksByHandle[handle] = cb;\n Promise.resolve().then(function () { return runIfPresent(handle); });\n return handle;\n },\n clearImmediate: function (handle) {\n delete tasksByHandle[handle];\n },\n};\n//# sourceMappingURL=Immediate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n//# sourceMappingURL=isObservable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n//# sourceMappingURL=not.js.map\n","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\n/*@__PURE__*/ (function () {\n if (!_root) {\n throw /*@__PURE__*/ new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\nexport { _root as root };\n//# sourceMappingURL=root.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) {\n destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { audit } from '../internal/operators/audit';\nexport { auditTime } from '../internal/operators/auditTime';\nexport { buffer } from '../internal/operators/buffer';\nexport { bufferCount } from '../internal/operators/bufferCount';\nexport { bufferTime } from '../internal/operators/bufferTime';\nexport { bufferToggle } from '../internal/operators/bufferToggle';\nexport { bufferWhen } from '../internal/operators/bufferWhen';\nexport { catchError } from '../internal/operators/catchError';\nexport { combineAll } from '../internal/operators/combineAll';\nexport { combineLatest } from '../internal/operators/combineLatest';\nexport { concat } from '../internal/operators/concat';\nexport { concatAll } from '../internal/operators/concatAll';\nexport { concatMap } from '../internal/operators/concatMap';\nexport { concatMapTo } from '../internal/operators/concatMapTo';\nexport { count } from '../internal/operators/count';\nexport { debounce } from '../internal/operators/debounce';\nexport { debounceTime } from '../internal/operators/debounceTime';\nexport { defaultIfEmpty } from '../internal/operators/defaultIfEmpty';\nexport { delay } from '../internal/operators/delay';\nexport { delayWhen } from '../internal/operators/delayWhen';\nexport { dematerialize } from '../internal/operators/dematerialize';\nexport { distinct } from '../internal/operators/distinct';\nexport { distinctUntilChanged } from '../internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from '../internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from '../internal/operators/elementAt';\nexport { endWith } from '../internal/operators/endWith';\nexport { every } from '../internal/operators/every';\nexport { exhaust } from '../internal/operators/exhaust';\nexport { exhaustMap } from '../internal/operators/exhaustMap';\nexport { expand } from '../internal/operators/expand';\nexport { filter } from '../internal/operators/filter';\nexport { finalize } from '../internal/operators/finalize';\nexport { find } from '../internal/operators/find';\nexport { findIndex } from '../internal/operators/findIndex';\nexport { first } from '../internal/operators/first';\nexport { groupBy } from '../internal/operators/groupBy';\nexport { ignoreElements } from '../internal/operators/ignoreElements';\nexport { isEmpty } from '../internal/operators/isEmpty';\nexport { last } from '../internal/operators/last';\nexport { map } from '../internal/operators/map';\nexport { mapTo } from '../internal/operators/mapTo';\nexport { materialize } from '../internal/operators/materialize';\nexport { max } from '../internal/operators/max';\nexport { merge } from '../internal/operators/merge';\nexport { mergeAll } from '../internal/operators/mergeAll';\nexport { mergeMap } from '../internal/operators/mergeMap';\nexport { mergeMap as flatMap } from '../internal/operators/mergeMap';\nexport { mergeMapTo } from '../internal/operators/mergeMapTo';\nexport { mergeScan } from '../internal/operators/mergeScan';\nexport { min } from '../internal/operators/min';\nexport { multicast } from '../internal/operators/multicast';\nexport { observeOn } from '../internal/operators/observeOn';\nexport { onErrorResumeNext } from '../internal/operators/onErrorResumeNext';\nexport { pairwise } from '../internal/operators/pairwise';\nexport { partition } from '../internal/operators/partition';\nexport { pluck } from '../internal/operators/pluck';\nexport { publish } from '../internal/operators/publish';\nexport { publishBehavior } from '../internal/operators/publishBehavior';\nexport { publishLast } from '../internal/operators/publishLast';\nexport { publishReplay } from '../internal/operators/publishReplay';\nexport { race } from '../internal/operators/race';\nexport { reduce } from '../internal/operators/reduce';\nexport { repeat } from '../internal/operators/repeat';\nexport { repeatWhen } from '../internal/operators/repeatWhen';\nexport { retry } from '../internal/operators/retry';\nexport { retryWhen } from '../internal/operators/retryWhen';\nexport { refCount } from '../internal/operators/refCount';\nexport { sample } from '../internal/operators/sample';\nexport { sampleTime } from '../internal/operators/sampleTime';\nexport { scan } from '../internal/operators/scan';\nexport { sequenceEqual } from '../internal/operators/sequenceEqual';\nexport { share } from '../internal/operators/share';\nexport { shareReplay } from '../internal/operators/shareReplay';\nexport { single } from '../internal/operators/single';\nexport { skip } from '../internal/operators/skip';\nexport { skipLast } from '../internal/operators/skipLast';\nexport { skipUntil } from '../internal/operators/skipUntil';\nexport { skipWhile } from '../internal/operators/skipWhile';\nexport { startWith } from '../internal/operators/startWith';\nexport { subscribeOn } from '../internal/operators/subscribeOn';\nexport { switchAll } from '../internal/operators/switchAll';\nexport { switchMap } from '../internal/operators/switchMap';\nexport { switchMapTo } from '../internal/operators/switchMapTo';\nexport { take } from '../internal/operators/take';\nexport { takeLast } from '../internal/operators/takeLast';\nexport { takeUntil } from '../internal/operators/takeUntil';\nexport { takeWhile } from '../internal/operators/takeWhile';\nexport { tap } from '../internal/operators/tap';\nexport { throttle } from '../internal/operators/throttle';\nexport { throttleTime } from '../internal/operators/throttleTime';\nexport { throwIfEmpty } from '../internal/operators/throwIfEmpty';\nexport { timeInterval } from '../internal/operators/timeInterval';\nexport { timeout } from '../internal/operators/timeout';\nexport { timeoutWith } from '../internal/operators/timeoutWith';\nexport { timestamp } from '../internal/operators/timestamp';\nexport { toArray } from '../internal/operators/toArray';\nexport { window } from '../internal/operators/window';\nexport { windowCount } from '../internal/operators/windowCount';\nexport { windowTime } from '../internal/operators/windowTime';\nexport { windowToggle } from '../internal/operators/windowToggle';\nexport { windowWhen } from '../internal/operators/windowWhen';\nexport { withLatestFrom } from '../internal/operators/withLatestFrom';\nexport { zip } from '../internal/operators/zip';\nexport { zipAll } from '../internal/operators/zipAll';\n//# sourceMappingURL=index.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set anchor blur\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is blurred\n */\nexport function setAnchorBlur(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"blur\" : \"\")\n}\n\n/**\n * Reset anchor blur\n *\n * @param el - Anchor element\n */\nexport function resetAnchorBlur(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set anchor active\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is active\n */\nexport function setAnchorActive(\n el: HTMLElement, value: boolean\n): void {\n el.classList.toggle(\"md-nav__link--active\", value)\n}\n\n/**\n * Reset anchor active\n *\n * @param el - Anchor element\n */\nexport function resetAnchorActive(\n el: HTMLElement\n): void {\n el.classList.remove(\"md-nav__link--active\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./shadow\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header shadow\n *\n * @param el - Header element\n * @param value - Whether the shadow is shown\n */\nexport function setHeaderShadow(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"shadow\" : \"\")\n}\n\n/**\n * Reset header shadow\n *\n * @param el - Header element\n */\nexport function resetHeaderShadow(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header title\n *\n * @param el - Header title element\n * @param value - Whether the title is shown\n */\nexport function setHeaderTitle(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"active\" : \"\")\n}\n\n/**\n * Reset header title\n *\n * @param el - Header element\n */\nexport function resetHeaderTitle(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./anchor\"\nexport * from \"./header\"\nexport * from \"./main\"\nexport * from \"./search\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set hidden\n *\n * @param el - Hideable element\n * @param value - Whether the element is hidden\n */\nexport function setHidden(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"hidden\" : \"\")\n}\n\n/**\n * Reset hidden\n *\n * @param el - Hideable element\n */\nexport function resetHidden(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./hideable\"\nexport * from \"./sidebar\"\nexport * from \"./scrollable\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Global augmentations\n */\ndeclare global {\n interface CSSStyleDeclaration {\n webkitOverflowScrolling: \"touch\" | \"\"\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function setOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"touch\"\n}\n\n/**\n * Reset overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function resetOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set scroll lock\n *\n * @param el - Scrollable element\n * @param value - Vertical offset\n */\nexport function setScrollLock(\n el: HTMLElement, value: number\n): void {\n el.setAttribute(\"data-md-state\", \"lock\")\n el.style.top = `-${value}px`\n}\n\n/**\n * Reset scroll lock\n *\n * @param el - Scrollable element\n */\nexport function resetScrollLock(\n el: HTMLElement\n): void {\n const value = -1 * parseInt(el.style.top, 10)\n el.removeAttribute(\"data-md-state\")\n el.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar offset\n *\n * @param el - Sidebar element\n * @param value - Sidebar offset\n */\nexport function setSidebarOffset(\n el: HTMLElement, value: number\n): void {\n el.style.top = `${value}px`\n}\n\n/**\n * Reset sidebar offset\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarOffset(\n el: HTMLElement\n): void {\n el.style.top = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar height\n *\n * @param el - Sidebar element\n * @param value - Sidebar height\n */\nexport function setSidebarHeight(\n el: HTMLElement, value: number\n): void {\n el.style.height = `${value}px`\n}\n\n/**\n * Reset sidebar height\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarHeight(\n el: HTMLElement\n): void {\n el.style.height = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar lock\n *\n * @param el - Sidebar element\n * @param value - Whether the sidebar is locked\n */\nexport function setSidebarLock(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"lock\" : \"\")\n}\n\n/**\n * Reset sidebar lock\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarLock(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set number of search results\n *\n * @param el - Search result metadata element\n * @param value - Number of results\n */\nexport function setSearchResultMeta(\n el: HTMLElement, value: number\n): void {\n switch (value) {\n\n /* No results */\n case 0:\n el.textContent = translate(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n el.textContent = translate(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n el.textContent = translate(\"search.result.other\", value.toString())\n }\n}\n\n/**\n * Reset number of search results\n *\n * @param el - Search result metadata element\n */\nexport function resetSearchResultMeta(\n el: HTMLElement\n): void {\n el.textContent = translate(\"search.result.placeholder\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Add an element to the search result list\n *\n * @param el - Search result list element\n * @param child - Search result element\n */\nexport function addToSearchResultList(\n el: HTMLElement, child: HTMLElement\n): void {\n el.appendChild(child)\n}\n\n/**\n * Reset search result list\n *\n * @param el - Search result list element\n */\nexport function resetSearchResultList(\n el: HTMLElement\n): void {\n el.innerHTML = \"\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n scan,\n shareReplay,\n switchMap\n} from \"rxjs/operators\"\n\nimport { getElement } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component\n */\nexport type Component =\n | \"container\" /* Container */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"hero\" /* Hero */\n | \"main\" /* Main area */\n | \"navigation\" /* Navigation */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-reset\" /* Search reset */\n | \"search-result\" /* Search results */\n | \"tabs\" /* Tabs */\n | \"toc\" /* Table of contents */\n\n/**\n * Component map\n */\nexport type ComponentMap = {\n [P in Component]?: HTMLElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Component map observable\n */\nlet components$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to components with given names\n *\n * This function will maintain bindings to the elements identified by the given\n * names in-between document switches and update the elements in-place.\n *\n * @param names - Component names\n * @param options - Options\n */\nexport function setupComponents(\n names: Component[], { document$ }: WatchOptions\n): void {\n components$ = document$\n .pipe(\n\n /* Build component map */\n map(document => names.reduce((components, name) => {\n const el = getElement(`[data-md-component=${name}]`, document)\n return {\n ...components,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Re-compute component map on document switch */\n scan((prev, next) => {\n for (const name of names) {\n switch (name) {\n\n /* Top-level components: update */\n case \"header-title\":\n case \"container\":\n if (name in prev && typeof prev[name] !== \"undefined\") {\n prev[name]!.replaceWith(next[name]!)\n prev[name] = next[name]\n }\n break\n\n /* All other components: rebind */\n default:\n if (typeof next[name] !== \"undefined\")\n prev[name] = getElement(`[data-md-component=${name}]`)\n else\n delete prev[name]\n }\n }\n return prev\n }),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a component\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @template T - Element type\n *\n * @param name - Component name\n *\n * @return Element observable\n */\nexport function useComponent(\n name: \"search-query\"\n): Observable\nexport function useComponent(\n name: Component\n): Observable\nexport function useComponent(\n name: Component\n): Observable {\n return components$\n .pipe(\n switchMap(components => (\n typeof components[name] !== \"undefined\"\n ? of(components[name] as T)\n : EMPTY\n )),\n distinctUntilChanged()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { switchMap } from \"rxjs/operators\"\n\nimport { Header, Viewport, watchHeader } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeader(\n { viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchHeader(el, { viewport$ }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { filter, map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n getElement,\n paintHeaderTitle,\n watchViewportAt\n} from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header title from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeaderTitle(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => useComponent(\"main\")\n .pipe(\n map(main => getElement(\"h1, h2, h3, h4, h5, h6\", main)!),\n filter(hx => typeof hx !== \"undefined\"),\n switchMap(hx => watchViewportAt(hx, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => y >= hx.offsetHeight),\n paintHeaderTitle(el)\n )\n )\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Hero\n */\nexport interface Hero {\n hidden: boolean /* Whether the hero is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount hero from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHero(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 20),\n map(hidden => ({ hidden }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./header\"\nexport * from \"./hero\"\nexport * from \"./main\"\nexport * from \"./navigation\"\nexport * from \"./search\"\nexport * from \"./tabs\"\nexport * from \"./toc\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, Subject, pipe } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap, tap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n Viewport,\n paintHeaderShadow,\n watchMain\n} from \"observables\"\n\nimport { useComponent } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount main area from source observable\n *\n * The header must be connected to the main area observable outside of the\n * operator function, as the header will persist in-between document switches\n * while the main area is replaced. However, the header observable must be\n * passed to this function, so we connect both via a long-living subject.\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountMain(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n const main$ = new Subject
    ()\n\n /* Connect to main area observable via long-living subject */\n useComponent(\"header\")\n .pipe(\n switchMap(header => main$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n paintHeaderShadow(header)\n )\n )\n )\n .subscribe()\n\n /* Return operator */\n return pipe(\n switchMap(el => watchMain(el, { header$, viewport$ })),\n tap(main => main$.next(main))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n NavigationLayer,\n Sidebar,\n Viewport,\n getElements,\n paintNavigationLayer,\n paintSidebar,\n watchNavigationLayer,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation for [screen -]\n */\nexport interface NavigationBelowScreen {\n layer: NavigationLayer /* Active layer */\n}\n\n/**\n * Navigation for [screen +]\n */\nexport interface NavigationAboveScreen {\n sidebar: Sidebar /* Sidebar */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Navigation\n */\nexport type Navigation =\n | NavigationBelowScreen\n | NavigationAboveScreen\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Screen media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount navigation from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountNavigation(\n { header$, main$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* [screen +]: Mount navigation in sidebar */\n if (screen) {\n return watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ }),\n map(sidebar => ({ sidebar }))\n )\n\n /* [screen -]: Mount navigation in drawer */\n } else {\n const els = getElements(\"nav\", el)\n return watchNavigationLayer(els)\n .pipe(\n paintNavigationLayer(els),\n map(layer => ({ layer }))\n )\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, combineLatest, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport { SearchQuery } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport interface Search {\n query: SearchQuery /* Search query */\n result: SearchResult[] /* Search result list */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n reset$: Observable /* Search reset observable */\n result$: Observable /* Search result observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearch(\n { query$, reset$, result$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(() => combineLatest([query$, result$, reset$])\n .pipe(\n map(([query, result]) => ({ query, result }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./query\"\nexport * from \"./reset\"\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n SearchQuery,\n WorkerHandler,\n setToggle,\n useToggle,\n watchSearchQuery\n} from \"observables\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchQueryMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search query from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchQuery(\n { tx$ }: WorkerHandler, options: MountOptions = {}\n): OperatorFunction {\n const toggle$ = useToggle(\"search\")\n return pipe(\n switchMap(el => {\n const query$ = watchSearchQuery(el, options)\n\n /* Subscribe worker to search query */\n query$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }) => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Toggle search on focus */\n query$\n .pipe(\n distinctUntilKeyChanged(\"focus\"),\n withLatestFrom(toggle$)\n )\n .subscribe(([{ focus }, toggle]) => {\n if (focus)\n setToggle(toggle, focus)\n })\n\n /* Return search query */\n return query$\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n mapTo,\n startWith,\n switchMap,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport { setElementFocus, watchSearchReset } from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search reset from source observable\n *\n * @return Operator function\n */\nexport function mountSearchReset(): OperatorFunction {\n return pipe(\n switchMap(el => watchSearchReset(el)\n .pipe(\n switchMapTo(useComponent(\"search-query\")),\n tap(setElementFocus),\n mapTo(undefined)\n )\n ),\n startWith(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n filter,\n map,\n pluck,\n switchMap\n} from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport {\n SearchQuery,\n WorkerHandler,\n paintSearchResult,\n watchElementOffset\n} from \"observables\"\nimport {\n SearchMessage,\n isSearchResultMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchResult(\n { rx$ }: WorkerHandler, { query$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => {\n const container = el.parentElement!\n\n /* Compute whether there are more search results to fetch */\n const fetch$ = watchElementOffset(container)\n .pipe(\n map(({ y }) => {\n return y >= container.scrollHeight - container.offsetHeight - 16\n }),\n distinctUntilChanged(),\n filter(identity)\n )\n\n /* Paint search results */\n return rx$\n .pipe(\n filter(isSearchResultMessage),\n pluck(\"data\"),\n paintSearchResult(el, { query$, fetch$ })\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, of, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabs\n */\nexport interface Tabs {\n hidden: boolean /* Whether the tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Media screen observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount tabs from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTabs(\n { header$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* Mount tabs above screen breakpoint */\n if (screen) {\n return watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 10),\n map(hidden => ({ hidden }))\n )\n\n /* Mount tabs below screen breakpoint */\n } else {\n return of({ hidden: true })\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n OperatorFunction,\n combineLatest,\n of,\n pipe\n} from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n AnchorList,\n Header,\n Main,\n Sidebar,\n Viewport,\n getElements,\n paintAnchorList,\n paintSidebar,\n watchAnchorList,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents for [tablet -]\n */\nexport interface TableOfContentsBelowTablet {} // tslint:disable-line\n\n/**\n * Table of contents for [tablet +]\n */\nexport interface TableOfContentsAboveTablet {\n sidebar: Sidebar /* Sidebar */\n anchors: AnchorList /* Anchor list */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport type TableOfContents =\n | TableOfContentsBelowTablet\n | TableOfContentsAboveTablet\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Tablet media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTableOfContents(\n { header$, main$, viewport$, tablet$}: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => tablet$\n .pipe(\n switchMap(tablet => {\n\n /* [tablet +]: Mount table of contents in sidebar */\n if (tablet) {\n const els = getElements(\".md-nav__link\", el)\n\n /* Watch and paint sidebar */\n const sidebar$ = watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ })\n )\n\n /* Watch and paint anchor list (scroll spy) */\n const anchors$ = watchAnchorList(els, { header$, viewport$ })\n .pipe(\n paintAnchorList(els)\n )\n\n /* Combine into a single hot observable */\n return combineLatest([sidebar$, anchors$])\n .pipe(\n map(([sidebar, anchors]) => ({ sidebar, anchors }))\n )\n\n /* [tablet -]: Unmount table of contents */\n } else {\n return of({})\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// TODO: remove this after we finished refactoring\n// tslint:disable\n\nimport \"../stylesheets/main.scss\"\nimport \"../stylesheets/palette.scss\"\n\nimport { values } from \"ramda\"\nimport {\n merge,\n combineLatest,\n animationFrameScheduler,\n fromEvent,\n of,\n NEVER\n} from \"rxjs\"\nimport {\n delay,\n switchMap,\n tap,\n filter,\n withLatestFrom,\n observeOn,\n take,\n mapTo,\n shareReplay,\n sample,\n share,\n map,\n pluck,\n debounceTime,\n distinctUntilKeyChanged,\n distinctUntilChanged,\n bufferCount\n} from \"rxjs/operators\"\n\nimport {\n watchToggle,\n setToggle,\n getElements,\n watchMedia,\n watchDocument,\n watchLocation,\n watchLocationHash,\n watchViewport,\n setupToggles,\n useToggle,\n getElement,\n setViewportOffset,\n ViewportOffset,\n getLocation\n} from \"./observables\"\nimport { setupSearchWorker } from \"./workers\"\n\nimport { setScrollLock, resetScrollLock } from \"actions\"\nimport {\n mountHeader,\n mountHero,\n mountMain,\n mountNavigation,\n mountSearch,\n mountTableOfContents,\n mountTabs,\n useComponent,\n setupComponents,\n mountHeaderTitle,\n mountSearchQuery,\n mountSearchReset,\n mountSearchResult\n} from \"components\"\nimport { setupClipboard } from \"./integrations/clipboard\"\nimport { setupKeyboard } from \"./integrations/keyboard\"\nimport {\n patchTables,\n patchDetails,\n patchScrollfix,\n patchSource,\n patchScripts\n} from \"patches\"\nimport { isConfig } from \"utilities\"\nimport { setupDialog } from \"integrations/dialog\"\n\n/* ------------------------------------------------------------------------- */\n\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Test for iOS */\nif (navigator.userAgent.match(/(iPad|iPhone|iPod)/g))\n document.documentElement.classList.add(\"ios\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Initialize Material for MkDocs\n *\n * @param config - Configuration\n */\nexport function initialize(config: unknown) {\n if (!isConfig(config))\n throw new SyntaxError(`Invalid configuration: ${JSON.stringify(config)}`)\n\n /* Setup user interface observables */\n const location$ = watchLocation()\n const hash$ = watchLocationHash()\n const viewport$ = watchViewport()\n const tablet$ = watchMedia(\"(min-width: 960px)\")\n const screen$ = watchMedia(\"(min-width: 1220px)\")\n\n /* Setup document observable */\n const document$ = config.feature.instant\n ? watchDocument({ location$ })\n : watchDocument()\n\n /* Setup toggle bindings */\n setupToggles([\n \"drawer\", /* Toggle for drawer */\n \"search\" /* Toggle for search */\n ], { document$ })\n\n /* Setup component bindings */\n setupComponents([\n \"container\", /* Container */\n \"header\", /* Header */\n \"header-title\", /* Header title */\n \"hero\", /* Hero */\n \"main\", /* Main area */\n \"navigation\", /* Navigation */\n \"search\", /* Search */\n \"search-query\", /* Search input */\n \"search-reset\", /* Search reset */\n \"search-result\", /* Search results */\n \"tabs\", /* Tabs */\n \"toc\" /* Table of contents */\n ], { document$ })\n\n /* ----------------------------------------------------------------------- */\n\n const worker = setupSearchWorker(config.worker.search, {\n base: config.base, location$\n })\n\n /* ----------------------------------------------------------------------- */\n\n /* Create header observable */\n const header$ = useComponent(\"header\")\n .pipe(\n mountHeader({ viewport$ }),\n shareReplay(1)\n )\n\n const main$ = useComponent(\"main\")\n .pipe(\n mountMain({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n /* Mount search query */\n const query$ = useComponent(\"search-query\")\n .pipe(\n mountSearchQuery(worker),\n shareReplay(1) // TODO: this must be put onto EVERY component!\n )\n\n /* Mount search reset */\n const reset$ = useComponent(\"search-reset\")\n .pipe(\n mountSearchReset(),\n shareReplay(1)\n )\n\n /* Mount search result */\n const result$ = useComponent(\"search-result\")\n .pipe(\n mountSearchResult(worker, { query$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const search$ = useComponent(\"search\")\n .pipe(\n mountSearch({ query$, reset$, result$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const navigation$ = useComponent(\"navigation\")\n .pipe(\n mountNavigation({ header$, main$, viewport$, screen$ }),\n shareReplay(1) // shareReplay because there might be late subscribers\n )\n\n const toc$ = useComponent(\"toc\")\n .pipe(\n mountTableOfContents({ header$, main$, viewport$, tablet$ }),\n shareReplay(1)\n )\n\n const tabs$ = useComponent(\"tabs\")\n .pipe(\n mountTabs({ header$, viewport$, screen$ }),\n shareReplay(1)\n )\n\n const hero$ = useComponent(\"hero\")\n .pipe(\n mountHero({ header$, viewport$ }),\n shareReplay(1)\n )\n\n const title$ = useComponent(\"header-title\")\n .pipe(\n mountHeaderTitle({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const keyboard$ = setupKeyboard()\n\n patchDetails({ document$, hash$ })\n patchScripts({ document$ })\n patchSource({ document$ })\n patchTables({ document$ })\n\n /* Force 1px scroll offset to trigger overflow scrolling */\n patchScrollfix({ document$ })\n\n /* Setup clipboard and dialog */\n const dialog$ = setupDialog()\n const clipboard$ = setupClipboard({ document$, dialog$ })\n\n /* ----------------------------------------------------------------------- */\n\n // Close drawer and search on hash change\n // put into navigation...\n // TODO: replace with popstate?\n hash$.subscribe(() => {\n useToggle(\"drawer\").subscribe(el => {\n setToggle(el, false)\n })\n })\n\n // put into search...\n hash$\n .pipe(\n switchMap(hash => useToggle(\"search\")\n .pipe(\n filter(x => x.checked), // only active\n tap(toggle => setToggle(toggle, false)),\n delay(125), // ensure that it runs after the body scroll reset...\n mapTo(hash)\n )\n )\n )\n .subscribe(hash => {\n getElement(`[id=\"${hash}\"]`)!.scrollIntoView()\n })\n\n // Scroll lock // document -> document$ => { body } !?\n // put into search...\n const toggle$ = useToggle(\"search\")\n combineLatest([\n toggle$.pipe(switchMap(watchToggle)),\n tablet$,\n ])\n .pipe(\n withLatestFrom(viewport$),\n switchMap(([[toggle, tablet], { offset: { y }}]) => {\n const active = toggle && !tablet\n return document$\n .pipe(\n delay(active ? 400 : 100), // TOOD: directly combine this with the hash!\n observeOn(animationFrameScheduler),\n tap(({ body }) => active\n ? setScrollLock(body, y)\n : resetScrollLock(body)\n )\n )\n })\n )\n .subscribe()\n\n /* ----------------------------------------------------------------------- */\n\n /**\n * Location change\n */\n interface State {\n url: URL\n data?: ViewportOffset\n }\n\n function isInternalLink(el: HTMLAnchorElement | URL) {\n return el.host === location.host && (\n // TODO: Improve regex\n !el.pathname || el.pathname === \"/\" || /\\/[\\w-]+(?:\\/?|\\.html)$/i.test(el.pathname) // TODO: provide some test cases\n )\n }\n\n // on same page!\n function isAnchorLink(el: HTMLAnchorElement | URL) {\n return el.pathname === location.pathname && el.hash.length > 0\n }\n\n function compareState(\n { url: a }: State, { url: b }: State\n ) {\n return a.href === b.href\n }\n\n // instant loading\n if (config.feature.instant) {\n\n /* Disable automatic scroll restoration, as it doesn't work nicely */\n if (\"scrollRestoration\" in history)\n history.scrollRestoration = \"manual\"\n\n /* Resolve relative links for stability */\n for (const selector of [\n `link[rel=\"shortcut icon\"]`,\n `link[rel=\"stylesheet\"]`\n ])\n for (const el of getElements(selector))\n el.href = el.href\n\n /* Intercept internal link clicks */\n const internal$ = fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n switchMap(ev => {\n if (ev.target instanceof HTMLElement) {\n const el = ev.target.closest(\"a\")\n if (el && isInternalLink(el)) {\n if (!isAnchorLink(el))\n ev.preventDefault()\n return of(el.href)\n }\n }\n return NEVER\n }),\n distinctUntilChanged(),\n map(href => ({ url: new URL(href) })),\n share()\n )\n\n /* Intercept internal links to dispatch */\n const dispatch$ = internal$\n .pipe(\n filter(({ url }) => !isAnchorLink(url)),\n share()\n )\n\n /* Intercept popstate events (history back and forward) */\n const popstate$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n data: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(dispatch$, popstate$)\n .pipe(\n pluck(\"url\")\n )\n .subscribe(location$)\n\n /* Add dispatched link to history */\n internal$\n .pipe(\n // TODO: must start with the current location and ignore the first emission\n distinctUntilChanged(compareState),\n filter(({ url }) => !isAnchorLink(url))\n )\n .subscribe(({ url }) => {\n // console.log(`History.Push ${url}`)\n history.pushState({}, \"\", url.toString())\n })\n\n // special case\n merge(internal$, popstate$)\n .pipe(\n bufferCount(2, 1),\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // })\n )\n .subscribe(([prev, next]) => {\n console.log(`<- ${prev.url}`)\n console.log(`-> ${next.url}`)\n\n if (\n prev.url.href.match(next.url.href) !== null &&\n isAnchorLink(prev.url)\n ) {\n // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging.\n setViewportOffset(next.data || { y: 0 })\n }\n // console.log(\"Potential Candidate\")\n })\n // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString()))\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // }),\n // map(([, next]) => next)\n // // distinctUntilChanged(compareLocationChange),\n // // filter(({ url }) => !isAnchorLink(url))\n // )\n // .subscribe(({ url }) => {\n // console.log(`Restore ${url}`)\n // })\n\n /* Persist viewport offset in history before hash change */\n viewport$\n .pipe(\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\"),\n )\n .subscribe(({ offset }) => {\n // console.log(\"Update\", offset)\n history.replaceState(offset, \"\")\n })\n\n /* */\n merge(dispatch$, popstate$)\n .pipe(\n sample(document$),\n withLatestFrom(document$),\n )\n .subscribe(([{ url, data }, { title, head }]) => {\n console.log(\"Done\", url.href, data)\n\n // trigger custom event\n document.dispatchEvent(new CustomEvent(\"DOMContentSwitch\"))\n\n // setDocumentTitle\n document.title = title\n\n // replace meta tags\n for (const selector of [\n `link[rel=\"canonical\"]`,\n `meta[name=\"author\"]`,\n `meta[name=\"description\"]`\n ]) {\n const next = getElement(selector, head)\n const prev = getElement(selector, document.head)\n if (\n typeof next !== \"undefined\" &&\n typeof prev !== \"undefined\"\n ) {\n prev.replaceWith(next)\n }\n }\n\n // search drawer close\n useToggle(\"search\").subscribe(el => {\n setToggle(el, false)\n })\n\n // // TODO: this doesnt work as expected\n if (url.hash) {\n console.log(\"hash data?\", data)\n const a = document.createElement(\"a\")\n a.href = url.hash\n a.click()\n } else {\n setViewportOffset(data || { y: 0 }) // push state!\n }\n })\n\n // internal$.subscribe(({ url }) => {\n // console.log(`Internal ${url}`)\n // })\n\n // dispatch$.subscribe(({ url }) => {\n // console.log(`Dispatch ${url}`)\n // })\n\n popstate$.subscribe(({ url }) => {\n console.log(`Popstate ${url.href}`, url)\n })\n }\n\n /* ----------------------------------------------------------------------- */\n\n // if we use a single tab outside of search, unhide all permalinks.\n // TODO: experimental. necessary!?\n keyboard$\n .pipe(\n filter(key => key.mode === \"global\" && [\"Tab\"].includes(key.type)),\n take(1)\n )\n .subscribe(() => {\n for (const link of getElements(\".headerlink\"))\n link.style.visibility = \"visible\"\n })\n\n /* ----------------------------------------------------------------------- */\n\n const state = {\n search$,\n clipboard$,\n location$,\n hash$,\n keyboard$,\n dialog$,\n main$,\n navigation$,\n toc$,\n tabs$,\n hero$,\n title$ // TODO: header title\n }\n\n const { ...rest } = state\n merge(...values(rest))\n .subscribe() // potential memleak <-- use takeUntil\n\n return {\n // agent,\n state\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as ClipboardJS from \"clipboard\"\nimport { NEVER, Observable, Subject, fromEventPattern } from \"rxjs\"\nimport { mapTo, share, tap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderClipboard } from \"templates\"\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Observable /* Document observable */\n dialog$: Subject /* Dialog subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup clipboard\n *\n * This function implements the Clipboard.js integration and injects a button\n * into all code blocks when the document changes.\n *\n * @param options - Options\n *\n * @return Clipboard observable\n */\nexport function setupClipboard(\n { document$, dialog$ }: SetupOptions\n): Observable {\n if (!ClipboardJS.isSupported())\n return NEVER\n\n /* Inject 'copy-to-clipboard' buttons */\n document$.subscribe(() => {\n const blocks = getElements(\"pre > code\")\n for (const [index, block] of blocks.entries()) {\n const parent = block.parentElement!\n parent.id = `__code_${index}`\n parent.insertBefore(renderClipboard(parent.id), block)\n }\n })\n\n /* Initialize and setup clipboard */\n const clipboard$ = fromEventPattern(next => {\n new ClipboardJS(\".md-clipboard\").on(\"success\", next)\n })\n .pipe(\n share()\n )\n\n /* Display notification for clipboard event */\n clipboard$\n .pipe(\n tap(ev => ev.clearSelection()),\n mapTo(translate(\"clipboard.copied\"))\n )\n .subscribe(dialog$)\n\n /* Return clipboard */\n return clipboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject, animationFrameScheduler, of } from \"rxjs\"\nimport {\n delay,\n map,\n observeOn,\n switchMap,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n duration?: number /* Display duration (default: 2s) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup dialog\n *\n * @param options - Options\n *\n * @return Dialog observable\n */\nexport function setupDialog(\n { duration }: SetupOptions = {}\n): Subject {\n const dialog$ = new Subject()\n\n /* Create dialog */\n const dialog = document.createElement(\"div\") // TODO: improve scoping\n dialog.classList.add(\"md-dialog\", \"md-typeset\")\n\n /* Display dialog */\n dialog$\n .pipe(\n switchMap(text => of(document.body) // useComponent(\"container\")\n .pipe(\n map(container => container.appendChild(dialog)),\n observeOn(animationFrameScheduler),\n delay(1), // Strangley it doesnt work when we push things to the new animation frame...\n tap(el => {\n el.innerHTML = text\n el.setAttribute(\"data-md-state\", \"open\")\n }),\n delay(duration || 2000),\n tap(el => el.removeAttribute(\"data-md-state\")),\n delay(400),\n tap(el => {\n el.innerHTML = \"\"\n el.remove()\n })\n )\n )\n )\n .subscribe()\n\n /* Return dialog subject */\n return dialog$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport {\n filter,\n map,\n share,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport {\n Key,\n getActiveElement,\n getElement,\n getElements,\n isSusceptibleToKeyboard,\n setElementFocus,\n setElementSelection,\n setToggle,\n useToggle,\n watchKeyboard,\n watchToggle\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard extends Key {\n mode: KeyboardMode /* Keyboard mode */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup keyboard\n *\n * This function will setup the keyboard handlers and ensure that keys are\n * correctly propagated. Currently there are two modes:\n *\n * - `global`: This mode is active when the search is closed. It is intended\n * to assign hotkeys to specific functions of the site. Currently the search,\n * previous and next page can be triggered.\n *\n * - `search`: This mode is active when the search is open. It maps certain\n * navigational keys to offer search results that can be entirely navigated\n * through keyboard input.\n *\n * The keyboard observable is returned and can be used to monitor the keyboard\n * in order toassign further hotkeys to custom functions.\n *\n * @return Keyboard observable\n */\nexport function setupKeyboard(): Observable {\n const toggle$ = useToggle(\"search\")\n const search$ = toggle$\n .pipe(\n switchMap(watchToggle)\n )\n\n /* Setup keyboard and determine mode */\n const keyboard$ = watchKeyboard()\n .pipe(\n withLatestFrom(search$),\n map(([key, toggle]): Keyboard => ({\n mode: toggle ? \"search\" : \"global\",\n ...key\n })),\n share()\n )\n\n /* Setup search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\"),\n withLatestFrom(\n toggle$,\n useComponent(\"search-query\"),\n useComponent(\"search-result\")\n )\n )\n .subscribe(([key, toggle, query, result]) => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: prevent form submission */\n case \"Enter\":\n if (active === query)\n key.claim()\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(toggle, false)\n setElementFocus(query, false)\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n setElementFocus(query)\n } else {\n const els = [query, ...getElements(\"[href]\", result)]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n setElementFocus(els[i])\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n setElementFocus(query)\n }\n })\n\n /* Setup global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active)\n }\n return false\n }),\n withLatestFrom(useComponent(\"search-query\"))\n )\n .subscribe(([key, query]) => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n setElementFocus(query)\n setElementSelection(query)\n key.claim()\n break\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n /* Return keyboard */\n return keyboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay } from \"rxjs/operators\"\n\nimport { watchDocumentSwitch } from \"../switch\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$?: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * If the location observable is passed, instant loading will be enabled which\n * means that new values will be emitted every time the location changes.\n *\n * @return Document observable\n */\nexport function watchDocument(\n { location$ }: WatchOptions = {}\n): Observable {\n return merge(\n fromEvent(document, \"DOMContentLoaded\")\n .pipe(\n mapTo(document)\n ),\n typeof location$ !== \"undefined\"\n ? watchDocumentSwitch({ location$ })\n : NEVER\n )\n .pipe(\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./switch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n catchError,\n distinctUntilKeyChanged,\n pluck,\n share,\n skip,\n switchMap\n} from \"rxjs/operators\"\n\nimport { setLocation } from \"../../location\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document switch\n *\n * This function returns an observables that fetches a document if the provided\n * location observable emits a new value (i.e. URL). If the emitted URL points\n * to the same page, the request is effectively ignored (i.e. when only the\n * fragment identifier changes).\n *\n * In case the request fails, the location change is dispatched regularly.\n *\n * @param options - Options\n *\n * @return Document switch observable\n */\nexport function watchDocumentSwitch(\n { location$ }: WatchOptions\n): Observable {\n return location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n skip(1),\n\n /* Fetch document */\n switchMap(url => ajax({\n url: url.href,\n responseType: \"document\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\"),\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element or nothing\n */\nexport function getElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element\n */\nexport function getElementOrThrow(\n selector: string, node: ParentNode = document\n): T {\n const el = getElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n return el\n}\n\n/**\n * Retrieve the currently active element\n *\n * @return Element\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : undefined\n}\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Elements\n */\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay, startWith } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element focus\n *\n * @param el - Element\n * @param value - Whether the element should be focused\n *\n * @return Element offset\n */\nexport function setElementFocus(\n el: HTMLElement, value: boolean = true\n): void {\n if (value)\n el.focus()\n else\n el.blur()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * @param el - Element\n *\n * @return Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n const focus$ = fromEvent(el, \"focus\")\n const blur$ = fromEvent(el, \"blur\")\n\n /* Map events to boolean state */\n return merge(\n focus$.pipe(mapTo(true)),\n blur$.pipe(mapTo(false))\n )\n .pipe(\n startWith(el === getActiveElement()),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./focus\"\nexport * from \"./offset\"\nexport * from \"./select\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @return Element offset\n */\nexport function getElementOffset(el: HTMLElement): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @return Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el)),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element text selection\n *\n * @param el - Element\n */\nexport function setElementSelection(\n el: HTMLElement\n): void {\n if (el instanceof HTMLInputElement)\n el.select()\n else\n throw new Error(\"Not implemented\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./document\"\nexport * from \"./element\"\nexport * from \"./keyboard\"\nexport * from \"./location\"\nexport * from \"./media\"\nexport * from \"./viewport\"\nexport * from \"./worker\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Key\n */\nexport interface Key {\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n *\n * @return Test result\n */\nexport function isSusceptibleToKeyboard(el: HTMLElement) {\n switch (el.tagName) {\n\n /* Form elements */\n case \"INPUT\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @return Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n })),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { BehaviorSubject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function will return a `URL` object (and not `Location`) in order to\n * normalize typings across the application. Furthermore, locations need to be\n * tracked without setting them and `Location` is a singleton which represents\n * the current location.\n *\n * @return URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @return Location subject\n */\nexport function watchLocation(): BehaviorSubject {\n return new BehaviorSubject(getLocation())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @return Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @return Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./hash\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEventPattern } from \"rxjs\"\nimport { shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * @param query - Media query\n *\n * @return Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next =>\n media.addListener(() => next(media.matches))\n )\n .pipe(\n startWith(media.matches),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n shareReplay\n} from \"rxjs/operators\"\n\nimport { Header } from \"../../../header\"\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch relative options\n */\ninterface WatchRelativeOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @return Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @return Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { header$, viewport$ }: WatchRelativeOptions\n): Observable {\n const offset$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => ({\n x: el.offsetLeft,\n y: el.offsetTop\n }))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n })),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./offset\"\nexport * from \"./size\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @return Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, pageXOffset),\n y: Math.max(0, pageYOffset)\n }\n}\n\n/**\n * Set viewport offset\n *\n * @param offset - Viewport offset\n */\nexport function setViewportOffset(\n { x, y }: Partial\n): void {\n window.scrollTo(x || 0, y || 0)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @return Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @return Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @return Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\")\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, fromEventPattern } from \"rxjs\"\nimport {\n pluck,\n share,\n switchMapTo,\n tap,\n throttle\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that will send all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @return Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEventPattern(next =>\n worker.addEventListener(\"message\", next)\n )\n .pipe(\n pluck(\"data\")\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMapTo(rx$),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { reverse } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n bufferCount,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n scan,\n startWith,\n switchMap,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetAnchorActive,\n resetAnchorBlur,\n setAnchorActive,\n setAnchorBlur\n} from \"actions\"\n\nimport { Viewport, getElement } from \"../agent\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Anchor list\n */\nexport interface AnchorList {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch anchor list\n *\n * This is effectively a scroll-spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the anchor list needs\n * to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param els - Anchor elements\n * @param options - Options\n *\n * @return Anchor list observable\n */\nexport function watchAnchorList(\n els: HTMLAnchorElement[], { header$, viewport$ }: WatchOptions\n): Observable {\n const table = new Map()\n for (const el of els) {\n const id = decodeURIComponent(el.hash.substring(1))\n const target = getElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(el, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(header => 18 + header.height)\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n\n /* Build index to map anchor paths to vertical offsets */\n map(() => {\n let path: HTMLAnchorElement[] = []\n return [...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n reverse(path = [...path, anchor]),\n offset\n )\n }, new Map())\n }),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(index => combineLatest([adjust$, viewport$])\n .pipe(\n scan(([prev, next], [adjust, { offset: { y } }]) => {\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => {\n return a[0] === b[0]\n && a[1] === b[1]\n })\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint anchor list\n *\n * @param els - Anchor elements\n *\n * @return Operator function\n */\nexport function paintAnchorList(\n els: HTMLAnchorElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev, next }) => {\n\n /* Look forward */\n for (const [el] of next) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n\n /* Look backward */\n for (const [index, [el]] of prev.entries()) {\n setAnchorActive(el, index === prev.length - 1)\n setAnchorBlur(el, true)\n }\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n sticky: boolean /* Header stickyness */\n height: number /* Header visible height */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * The header is wrapped in an observable to pave the way for auto-hiding or\n * other dynamic behaviors that may be implemented later on.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @return Header observable\n */\nexport function watchHeader(\n el: HTMLElement, { viewport$ }: WatchOptions\n): Observable
    {\n return viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n switchMap(() => {\n const styles = getComputedStyle(el)\n const sticky = [\n \"sticky\", /* Modern browsers */\n \"-webkit-sticky\" /* Old Safari */\n ].includes(styles.position)\n return of({\n sticky,\n height: sticky ? el.offsetHeight : 0\n })\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./shadow\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderShadow, setHeaderShadow } from \"actions\"\n\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header shadow\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderShadow(\n el: HTMLElement\n): MonoTypeOperatorFunction
    {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ active }) => {\n setHeaderShadow(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderShadow(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderTitle, setHeaderTitle } from \"actions\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header title\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderTitle(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(active => {\n setHeaderTitle(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderTitle(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./agent\"\nexport * from \"./anchor\"\nexport * from \"./header\"\nexport * from \"./main\"\nexport * from \"./navigation\"\nexport * from \"./search\"\nexport * from \"./toggle\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport { distinctUntilChanged, map, pluck } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Scrolled past top offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
    /* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @return Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { header$, viewport$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n pluck(\"height\")\n )\n\n /* Compute the main area's visible height */\n const height$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y }, size: { height } }]) => {\n const top = el.offsetTop\n const bottom = el.offsetHeight + top\n return height\n - Math.max(0, top - y, adjust)\n - Math.max(0, height + y - bottom)\n }),\n map(height => Math.max(0, height)),\n distinctUntilChanged()\n )\n\n /* Compute whether the viewport offset is past the main area's top */\n const active$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y } }]) => y >= el.offsetTop - adjust),\n distinctUntilChanged()\n )\n\n /* Combine into a single observable */\n return combineLatest([adjust$, height$, active$])\n .pipe(\n map(([adjust, height, active]) => ({\n offset: el.offsetTop - adjust,\n height,\n active\n }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, animationFrameScheduler, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n tap\n} from \"rxjs/operators\"\n\nimport { resetHidden, setHidden } from \"actions\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint hideable\n *\n * @param el - Hideable element\n * @param offset - Additional offset\n *\n * @return Operator function\n */\nexport function paintHideable(\n el: HTMLElement, offset: number = 0\n): OperatorFunction {\n return pipe(\n map(({ offset: { y } }) => y >= offset),\n distinctUntilChanged(),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(value => {\n setHidden(el, value)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHidden(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./hideable\"\nexport * from \"./sidebar\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n resetSidebarHeight,\n resetSidebarLock,\n resetSidebarOffset,\n setSidebarHeight,\n setSidebarLock,\n setSidebarOffset\n} from \"actions\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\nimport { Main } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n lock: boolean /* Sidebar lock */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n main$: Observable
    /* Main area observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { main$, viewport$ }: WatchOptions\n): Observable {\n\n /* Adjust for internal main area offset */\n const adjust$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => parseFloat(\n getComputedStyle(el.parentElement!)\n .getPropertyValue(\"padding-top\")\n )),\n distinctUntilChanged()\n )\n\n /* Compute the sidebar's available height */\n const height$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset, height }]) => (\n height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n )),\n distinctUntilChanged()\n )\n\n /* Compute whether the sidebar should be locked */\n const lock$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset }]) => (\n y >= offset + adjust\n )),\n distinctUntilChanged()\n )\n\n /* Combine into single observable */\n return combineLatest([height$, lock$])\n .pipe(\n map(([height, lock]) => ({ height, lock }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint sidebar\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSidebar(\n el: HTMLElement, { header$ }: PaintOptions\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n withLatestFrom(header$),\n tap(([{ height, lock }, { height: offset }]) => {\n setSidebarHeight(el, height)\n setSidebarLock(el, lock)\n\n /* Set offset in locked state depending on header height */\n if (lock)\n setSidebarOffset(el, offset)\n else\n resetSidebarOffset(el)\n }),\n\n /* Re-map to sidebar */\n map(([sidebar]) => sidebar),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSidebarOffset(el)\n resetSidebarHeight(el)\n resetSidebarLock(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./layer\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { findLast } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n fromEvent,\n merge,\n pipe\n} from \"rxjs\"\nimport {\n delay,\n finalize,\n map,\n observeOn,\n scan,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetOverflowScrolling,\n setOverflowScrolling\n} from \"actions\"\n\nimport {\n getElement,\n getElementOrThrow\n} from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation layer\n */\nexport interface NavigationLayer {\n prev?: HTMLElement /* Layer (previous) */\n next: HTMLElement /* Layer (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation layer\n *\n * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus\n * contained in the drawer, but as the navigational layers are nested, we can\n * only add it to the topmost layer or extremely weird cropping will occur.\n * This implementation keeps track of the previous and current layer.\n *\n * @param els - Navigation elements\n *\n * @return Navigation layer observable\n */\nexport function watchNavigationLayer(\n els: HTMLElement[]\n): Observable {\n const table = new Map()\n for (const el of els) {\n const label = getElement(\"label\", el)\n if (typeof label !== \"undefined\") {\n const input = getElementOrThrow(`#${label.htmlFor}`)\n table.set(input, el)\n }\n }\n\n /* Determine topmost layer */\n const layer$ = merge(...[...table.keys()].map(input => (\n fromEvent(input, \"change\")\n )))\n .pipe(\n map(() => getElementOrThrow(\".md-nav__list\", table.get(\n findLast(({ checked }) => checked, [...table.keys()])!\n )))\n )\n\n /* Return previous and next layer */\n return layer$\n .pipe(\n map(next => ({ next })),\n scan(({ next: prev }, { next }) => ({ prev, next }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint navigation layer\n *\n * @param els - Navigation elements\n *\n * @return Operator function\n */\nexport function paintNavigationLayer(\n els: HTMLElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev }) => {\n if (prev)\n resetOverflowScrolling(prev)\n }),\n\n /* Wait until transition has finished */\n delay(250),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ next }) => {\n setOverflowScrolling(next)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els)\n resetOverflowScrolling(\n getElementOrThrow(\".md-nav__list\", el)\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./query\"\nexport * from \"./reset\"\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest, fromEvent, merge } from \"rxjs\"\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith\n} from \"rxjs/operators\"\n\nimport { watchElementFocus } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * Rogue control characters are filtered before handing the query to the\n * search index, as `lunr` will throw otherwise.\n *\n * @param value - Query value\n *\n * @return Transformed query value\n */\nfunction defaultTransform(value: string): string {\n return value\n .replace(/(?:^|\\s+)[*+-:^~]+(?=\\s+|$)/g, \"\")\n .trim()\n .replace(/\\s+|\\b$/g, \"* \")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @return Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { transform }: WatchOptions = {}\n): Observable {\n const fn = transform || defaultTransform\n\n /* Intercept keyboard events */\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1))\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(fn(el.value)),\n distinctUntilChanged()\n )\n\n /* Intercept focus events */\n const focus$ = watchElementFocus(el)\n\n /* Combine into a single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { mapTo } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search reset\n *\n * @param el - Search reset element\n *\n * @return Search reset observable\n */\nexport function watchSearchReset(\n el: HTMLElement\n): Observable {\n return fromEvent(el, \"click\")\n .pipe(\n mapTo(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n finalize,\n map,\n mapTo,\n observeOn,\n scan,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n addToSearchResultList,\n resetSearchResultList,\n resetSearchResultMeta,\n setSearchResultMeta\n} from \"actions\"\nimport { SearchResult } from \"integrations/search\"\nimport { renderSearchResult } from \"templates\"\n\nimport { getElementOrThrow } from \"../../agent\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n query$: Observable /* Search query observable */\n fetch$: Observable /* Result fetch observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint search results\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container. When the scroll offset\n * reaches the bottom of the element, more results are fetched and rendered.\n *\n * @param el - Search result element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSearchResult(\n el: HTMLElement, { query$, fetch$ }: PaintOptions\n): MonoTypeOperatorFunction {\n const list = getElementOrThrow(\".md-search-result__list\", el)\n const meta = getElementOrThrow(\".md-search-result__meta\", el)\n return pipe(\n\n /* Paint search result metadata */\n withLatestFrom(query$),\n map(([result, query]) => {\n if (query.value) {\n setSearchResultMeta(meta, result.length)\n } else {\n resetSearchResultMeta(meta)\n }\n return result\n }),\n\n /* Paint search result list */\n switchMap(result => fetch$\n .pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n scan(index => {\n const container = el.parentElement!\n while (index < result.length) {\n addToSearchResultList(list, renderSearchResult(result[index++]))\n if (container.scrollHeight - container.offsetHeight > 16)\n break\n }\n return index\n }, 0),\n\n /* Re-map to search result */\n mapTo(result),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSearchResultList(list)\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take\n} from \"rxjs/operators\"\n\nimport { getElement } from \"../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/**\n * Toggle map\n */\nexport type ToggleMap = {\n [P in Toggle]?: HTMLInputElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map observable\n */\nlet toggles$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to toggles with given names\n *\n * @param names - Toggle names\n * @param options - Options\n */\nexport function setupToggles(\n names: Toggle[], { document$ }: WatchOptions\n): void {\n toggles$ = document$\n .pipe(\n\n /* Ignore document switches */\n take(1),\n\n /* Build toggle map */\n map(document => names.reduce((toggles, name) => {\n const el = getElement(`[data-md-toggle=${name}]`, document)\n return {\n ...toggles,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a toggle\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @param name - Toggle name\n *\n * @return Element observable\n */\nexport function useToggle(\n name: Toggle\n): Observable {\n return toggles$\n .pipe(\n switchMap(toggles => (\n typeof toggles[name] !== \"undefined\"\n ? of(toggles[name]!)\n : NEVER\n )),\n distinctUntilChanged()\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param el - Toggle element\n * @param value - Toggle value\n */\nexport function setToggle(\n el: HTMLInputElement, value: boolean\n): void {\n if (el.checked !== value)\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param el - Toggle element\n *\n * @return Toggle observable\n */\nexport function watchToggle(\n el: HTMLInputElement\n): Observable {\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n filter,\n map,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport {\n getElement,\n getElements,\n watchMedia\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n hash$: Observable /* Location hash observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `details` elements\n *\n * This function will ensure that all `details` tags are opened prior to\n * printing, so the whole content of the page is included, and on anchor jumps.\n *\n * @param options - Options\n */\nexport function patchDetails(\n { document$, hash$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"details\"))\n )\n\n /* Open all details before printing */\n merge(\n watchMedia(\"print\").pipe(filter(identity)), /* Webkit */\n fromEvent(window, \"beforeprint\") /* IE, FF */\n )\n .pipe(\n switchMapTo(els$)\n )\n .subscribe(els => {\n for (const el of els)\n el.setAttribute(\"open\", \"\")\n })\n\n /* Open parent details and fix anchor jump */\n hash$\n .pipe(\n map(id => getElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\"),\n tap(el => {\n const details = el.closest(\"details\")\n if (details && !details.open)\n details.setAttribute(\"open\", \"\")\n })\n )\n .subscribe(el => el.scrollIntoView())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./details\"\nexport * from \"./script\"\nexport * from \"./scrollfix\"\nexport * from \"./source\"\nexport * from \"./table\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map, skip, withLatestFrom } from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `script` elements\n *\n * This function must be run after a document switch, which means the first\n * emission must be ignored.\n *\n * @param options - Options\n */\nexport function patchScripts(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n skip(1),\n withLatestFrom(useComponent(\"container\")),\n map(([, el]) => getElements(\"script\", el))\n )\n\n /* Evaluate all scripts via replacement */\n els$.subscribe(els => {\n for (const el of els) {\n if (el.src || /(^|\\/javascript)$/i.test(el.type)) {\n const script = document.createElement(\"script\")\n const key = el.src ? \"src\" : \"innerText\"\n script[key] = el[key]\n el.replaceWith(script)\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, iif, merge } from \"rxjs\"\nimport { map, mapTo, shareReplay, switchMap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @return Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"[data-md-scrollfix]\")),\n shareReplay(1)\n )\n\n /* Remove marker attribute, so we'll only add the fix once */\n els$.subscribe(els => {\n for (const el of els)\n el.removeAttribute(\"data-md-scrollfix\")\n })\n\n /* Patch overflow scrolling on touch start */\n iif(isAppleDevice, els$, NEVER)\n .pipe(\n switchMap(els => merge(...els.map(el => (\n fromEvent(el, \"touchstart\")\n .pipe(\n mapTo(el)\n )\n ))))\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport { Observable, of } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, pluck, switchMap } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub source facts\n *\n * @param user - GitHub user\n * @param repo - GitHub repository\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n return ajax({\n url: typeof repo !== \"undefined\"\n ? `https://api.github.com/repos/${user}/${repo}`\n : `https://api.github.com/users/${user}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n switchMap(data => {\n\n /* GitHub repository */\n if (typeof repo !== \"undefined\") {\n const { stargazers_count, forks_count }: Repo = data\n return of([\n `${round(stargazers_count || 0)} Stars`,\n `${round(forks_count || 0)} Forks`\n ])\n\n /* GitHub user/organization */\n } else {\n const { public_repos }: User = data\n return of([\n `${round(public_repos || 0)} Repositories`\n ])\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport { Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, map, pluck } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab source facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n return ajax({\n url: `https://${base}/api/v4/projects/${encodeURIComponent(project)}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n map(({ star_count, forks_count }: ProjectSchema) => ([\n `${round(star_count)} Stars`,\n `${round(forks_count)} Forks`\n ]))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { catchError, map, switchMap } from \"rxjs/operators\"\n\nimport { getElementOrThrow, getElements } from \"observables\"\nimport { renderSource } from \"templates\"\nimport { cache, hash } from \"utilities\"\n\nimport { fetchSourceFactsFromGitHub } from \"./github\"\nimport { fetchSourceFactsFromGitLab } from \"./gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Source facts\n */\nexport type SourceFacts = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch source facts\n *\n * @param url - Source repository URL\n *\n * @return Source facts observable\n */\nfunction fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^\\/]+)\\/?([^\\/]+)/i)\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, project] = url.match(/^.+?([^\\/]*gitlab[^\\/]+)\\/(.+)/i)\n return fetchSourceFactsFromGitLab(base, project)\n\n /* Everything else */\n default:\n return NEVER\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch elements containing repository information\n *\n * This function will retrieve the URL from the repository link and try to\n * query data from integrated source code platforms like GitHub or GitLab.\n *\n * @param options - Options\n */\nexport function patchSource(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n map(() => getElementOrThrow(\".md-source[href]\")),\n switchMap(({ href }) => (\n cache(`${hash(href)}`, () => fetchSourceFacts(href))\n )),\n catchError(() => NEVER)\n )\n .subscribe(facts => {\n for (const el of getElements(\".md-source__repository\")) {\n if (!el.hasAttribute(\"data-md-state\")) {\n el.setAttribute(\"data-md-state\", \"done\")\n el.appendChild(renderSource(facts))\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderTable } from \"templates\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `table` elements\n *\n * This function will re-render all tables by wrapping them to improve overflow\n * scrolling on smaller screen sizes.\n *\n * @param options - Options\n */\nexport function patchTables(\n { document$ }: MountOptions\n): void {\n const sentinel = document.createElement(\"table\")\n document$\n .pipe(\n map(() => getElements(\"table:not([class])\"))\n )\n .subscribe(els => {\n for (const el of els) {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h, translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n container: \"md-clipboard md-icon\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @return Element\n */\nexport function renderClipboard(\n id: string\n) {\n const path = require(\"material-design-icons-svg/paths/content-copy.json\")\n return (\n \n \n \n \n \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./clipboard\"\nexport * from \"./search\"\nexport * from \"./source\"\nexport * from \"./table\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchResult } from \"integrations/search\"\nimport { h, truncate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n item: \"md-search-result__item\",\n link: \"md-search-result__link\",\n article: \"md-search-result__article md-search-result__article--document\",\n section: \"md-search-result__article\",\n title: \"md-search-result__title\",\n teaser: \"md-search-result__teaser\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @return Element\n */\nexport function renderSearchResult(\n { article, sections }: SearchResult\n) {\n\n // create page with icon\n const path = require(\"material-design-icons-svg/paths/file-search-outline.json\")\n\n const children = [article, ...sections].map(document => {\n const { location, title, text } = document\n return (\n \n
    \n {!(\"parent\" in document)\n ?
    \n \n \n \n
    \n : null\n }\n

    {title}

    \n {text.length\n ?

    {truncate(text, 320)}

    \n : undefined\n }\n
    \n
    \n )\n })\n return (\n
  • \n {children}\n
  • \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"patches/source\"\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n facts: \"md-source__facts\",\n fact: \"md-source__fact\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render source facts\n *\n * @param facts - Source facts\n *\n * @return Element\n */\nexport function renderSource(\n facts: SourceFacts\n) {\n const children = facts.map(fact => (\n
  • {fact}
  • \n ))\n return (\n
      \n {children}\n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n wrapper: \"md-typeset__scrollwrap\",\n table: \"md-typeset__table\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @return Element\n */\nexport function renderTable(\n table: HTMLTableElement\n) {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n worker: {\n search: string /* Search worker URL */\n }\n feature: {\n instant: true /* Instant loading */\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Ensure that the given value is a valid configuration\n *\n * We could use `jsonschema` or any other schema validation framework, but that\n * would just add more bloat to the bundle, so we'll keep it plain and simple.\n *\n * @param config - Configuration\n *\n * @return Test result\n */\nexport function isConfig(config: any): config is Config {\n return typeof config === \"object\"\n && typeof config.base === \"string\"\n && typeof config.worker === \"object\"\n && typeof config.worker.search === \"string\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./config\"\nexport * from \"./jsx\"\nexport * from \"./rxjs\"\nexport * from \"./string\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// tslint:disable no-null-keyword\n\nimport { JSX as JSXInternal } from \"preact\"\nimport { keys } from \"ramda\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML and SVG attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | SVGElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create an element\n *\n * @param tag - HTML or SVG tag\n *\n * @return Element\n */\nfunction createElement(tag: string): HTMLElement | SVGElement {\n switch (tag) {\n\n /* SVG elements */\n case \"svg\":\n case \"path\":\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n\n /* HTML elements */\n default:\n return document.createElement(tag)\n }\n}\n\n/**\n * Set an attribute\n *\n * @param el - Element\n * @param name - Attribute name\n * @param value - Attribute value\n */\nfunction setAttribute(\n el: HTMLElement | SVGElement, name: string, value: string) {\n switch (name) {\n\n /* Attributes to be ignored */\n case \"xmlns\":\n break\n\n /* Attributes of SVG elements */\n case \"viewBox\":\n case \"d\":\n if (typeof value !== \"boolean\")\n el.setAttributeNS(null, name, value)\n else if (value)\n el.setAttributeNS(null, name, \"\")\n break\n\n /* Attributes of HTML elements */\n default:\n if (typeof value !== \"boolean\")\n el.setAttribute(name, value)\n else if (value)\n el.setAttribute(name, \"\")\n }\n}\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(\n el: HTMLElement | SVGElement, child: Child | Child[]\n): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @param tag - HTML or SVG tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @return Element\n */\nexport function h(\n tag: string, attributes: Attributes | null, ...children: Child[]\n): HTMLElement | SVGElement {\n const el = createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of keys(attributes))\n setAttribute(el, attr, attributes[attr])\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement | SVGElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, defer, of } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Cache the last value emitted by an observable in session storage\n *\n * If the key is not found in session storage, the factory is executed and the\n * latest value emitted will automatically be persisted to sessions storage.\n * Note that the values emitted by the returned observable must be serializable\n * as `JSON`, or data will be lost.\n *\n * @template T - Value type\n *\n * @param key - Cache key\n * @param factory - Observable factory\n *\n * @return Value observable\n */\nexport function cache(\n key: string, factory: () => Observable\n): Observable {\n return defer(() => {\n const data = sessionStorage.getItem(key)\n if (data) {\n return of(JSON.parse(data) as T)\n\n /* Retrieve value from observable factory and write to storage */\n } else {\n const value$ = factory()\n value$.subscribe(value => {\n try {\n sessionStorage.setItem(key, JSON.stringify(value))\n } catch (err) {\n /* Uncritical, just swallow */\n }\n })\n\n /* Return value */\n return value$\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Translations\n */\nlet lang: Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Translate the given key\n *\n * @param key - Key to be translated\n * @param value - Value to be replaced\n *\n * @return Translation\n */\nexport function translate(key: string, value?: string): string {\n if (typeof lang === \"undefined\") {\n const el = getElementOrThrow(\"#__lang\")\n lang = JSON.parse(el.innerText)\n }\n if (typeof lang[key] === \"undefined\") {\n throw new ReferenceError(`Invalid translation: ${key}`)\n }\n return typeof value !== \"undefined\"\n ? lang[key].replace(\"#\", value)\n : lang[key]\n}\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @return Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0); // tslint:disable-line\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with source facts\n *\n * This is a reverse engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @return Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 1) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n\n/**\n * Simple hash function\n *\n * @see https://bit.ly/2wsVjJ4 - Original source\n *\n * @param value - Value to be hashed\n *\n * @return Hash as 32bit integer\n */\nexport function hash(value: string): number {\n let h = 0\n for (let i = 0, len = value.length; i < len; i++) {\n h = ((h << 5) - h) + value.charCodeAt(i)\n h |= 0 // Convert to 32bit integer\n }\n return h\n }\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./search\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, from } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n map,\n pluck,\n shareReplay,\n switchMap,\n take,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { SearchIndexOptions } from \"integrations/search\"\nimport {\n WorkerHandler,\n watchWorker\n} from \"observables\"\n\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n base: string /* Base url */\n index?: Promise /* Promise resolving with index */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup search web worker\n *\n * This function will create a web worker to setup and query the search index\n * which is done using `lunr`. The index can be passed explicitly in order to\n * enable hacks like _localsearch_ via search index embedding as JSON. If no\n * index is given, this function will load it from the default location.\n *\n * @param url - Worker url\n * @param options - Options\n *\n * @return Worker handler\n */\nexport function setupSearchWorker(\n url: string, { base, index, location$ }: SetupOptions\n): WorkerHandler {\n const worker = new Worker(url)\n\n /* Ensure stable base URL */\n const origin$ = location$\n .pipe(\n take(1),\n map(({ href }) => new URL(base, href)\n .toString()\n .replace(/\\/$/, \"\")\n )\n )\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n withLatestFrom(origin$),\n map(([message, origin]) => {\n if (isSearchResultMessage(message)) {\n for (const { article, sections } of message.data) {\n article.location = `${origin}/${article.location}`\n for (const section of sections)\n section.location = `${origin}/${section.location}`\n }\n }\n return message\n }),\n shareReplay(1)\n )\n\n /* Fetch index if it wasn't passed explicitly */\n const index$ = typeof index !== \"undefined\"\n ? from(index)\n : origin$\n .pipe(\n switchMap(origin => ajax({\n url: `${origin}/search/search_index.json`,\n responseType: \"json\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\")\n ))\n )\n\n /* Send index to worker */\n index$\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return worker handler */\n return { tx$, rx$ }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./message\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n","export default \"/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/main.css\";","export default \"/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/palette.css\";"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/javascripts/vendor.000c9aa0.min.js b/material/assets/javascripts/vendor.000c9aa0.min.js new file mode 100644 index 000000000..c6f2bea51 --- /dev/null +++ b/material/assets/javascripts/vendor.000c9aa0.min.js @@ -0,0 +1,24 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return o})),n.d(e,"d",(function(){return u})),n.d(e,"f",(function(){return s})),n.d(e,"c",(function(){return c})),n.d(e,"e",(function(){return a})); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function i(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var o=function(){return(o=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function c(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)u.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return u}function a(){for(var t=[],e=0;e0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},e}(o.a);function l(t){return t}function h(t){return void 0===t&&(t=Number.POSITIVE_INFINITY),function t(e,n,r){return void 0===r&&(r=Number.POSITIVE_INFINITY),"function"==typeof n?function(i){return i.pipe(t((function(t,r){return Object(c.a)(e(t,r)).pipe(Object(s.a)((function(e,i){return n(t,e,r,i)})))}),r))}:("number"==typeof n&&(r=n),function(t){return t.lift(new a(e,r))})}(l,t)}n.d(e,"a",(function(){return h}))},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n(0),i=n(4),o=n(15),u=n(16);function s(t,e,n){return function(r){return r.lift(new c(t,e,n))}}var c=function(){function t(t,e,n){this.nextOrObserver=t,this.error=e,this.complete=n}return t.prototype.call=function(t,e){return e.subscribe(new a(t,this.nextOrObserver,this.error,this.complete))},t}(),a=function(t){function e(e,n,r,i){var s=t.call(this,e)||this;return s._tapNext=o.a,s._tapError=o.a,s._tapComplete=o.a,s._tapError=r||o.a,s._tapComplete=i||o.a,Object(u.a)(n)?(s._context=s,s._tapNext=n):n&&(s._context=n,s._tapNext=n.next||o.a,s._tapError=n.error||o.a,s._tapComplete=n.complete||o.a),s}return r.b(e,t),e.prototype._next=function(t){try{this._tapNext.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.next(t)},e.prototype._error=function(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)},e.prototype._complete=function(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()},e}(i.a)},function(t,e,n){"use strict";var r=n(0),i=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.scheduler=e,r.work=n,r}return r.b(e,t),e.prototype.requestAsyncId=function(e,n,r){return void 0===r&&(r=0),null!==r&&r>0?t.prototype.requestAsyncId.call(this,e,n,r):(e.actions.push(this),e.scheduled||(e.scheduled=requestAnimationFrame((function(){return e.flush(null)}))))},e.prototype.recycleAsyncId=function(e,n,r){if(void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0)return t.prototype.recycleAsyncId.call(this,e,n,r);0===e.actions.length&&(cancelAnimationFrame(n),e.scheduled=void 0)},e}(n(43).a),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.b(e,t),e.prototype.flush=function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,r=-1,i=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++r0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,s.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return f("action",t)}},{key:"defaultTarget",value:function(t){var e=f("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return f("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(u.default);function f(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=a},function(t,e,n){"use strict";var r,i="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},o=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,s.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,s.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=c},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(t),r.removeAllRanges(),r.addRange(i),e=r.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function i(){r.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;r0){var u=o.indexOf(n);-1!==u&&o.splice(u,1)}},e.prototype.notifyComplete=function(){},e.prototype._next=function(t){if(0===this.toRespond.length){var e=[t].concat(this.values);this.project?this._tryProject(e):this.destination.next(e)}},e.prototype._tryProject=function(t){var e;try{e=this.project.apply(this,t)}catch(t){return void this.destination.error(t)}this.destination.next(e)},e}(i.a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(0),i=n(4);function o(t,e){var n=!1;return arguments.length>=2&&(n=!0),function(r){return r.lift(new u(t,e,n))}}var u=function(){function t(t,e,n){void 0===n&&(n=!1),this.accumulator=t,this.seed=e,this.hasSeed=n}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.accumulator,this.seed,this.hasSeed))},t}(),s=function(t){function e(e,n,r,i){var o=t.call(this,e)||this;return o.accumulator=n,o._seed=r,o.hasSeed=i,o.index=0,o}return r.b(e,t),Object.defineProperty(e.prototype,"seed",{get:function(){return this._seed},set:function(t){this.hasSeed=!0,this._seed=t},enumerable:!0,configurable:!0}),e.prototype._next=function(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)},e.prototype._tryNext=function(t){var e,n=this.index++;try{e=this.accumulator(this.seed,t,n)}catch(t){this.destination.error(t)}this.seed=e,this.destination.next(e)},e}(i.a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var r=n(0),i=n(4),o=n(9);function u(t){return function(e){return e.lift(new s(t))}}var s=function(){function t(t){this.callback=t}return t.prototype.call=function(t,e){return e.subscribe(new c(t,this.callback))},t}(),c=function(t){function e(e,n){var r=t.call(this,e)||this;return r.add(new o.a(n)),r}return r.b(e,t),e}(i.a)},,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var r=n(6),i=n(40),o=n(18);function u(t){return new r.a((function(e){var n;try{n=t()}catch(t){return void e.error(t)}return(n?Object(i.a)(n):Object(o.b)()).subscribe(e)}))}},function(t,e,n){"use strict";var r=n(14);function i(t,e){return Object.prototype.hasOwnProperty.call(e,t)}var o=Object.prototype.toString,u=function(){return"[object Arguments]"===o.call(arguments)?function(t){return"[object Arguments]"===o.call(t)}:function(t){return i("callee",t)}}(),s=!{toString:null}.propertyIsEnumerable("toString"),c=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],a=function(){return arguments.propertyIsEnumerable("length")}(),f=function(t,e){for(var n=0;n=0;)i(e=c[n],t)&&!f(r,e)&&(r[r.length]=e),n-=1;return r})):Object(r.a)((function(t){return Object(t)!==t?[]:Object.keys(t)}));e.a=l},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n(36);function i(t,e){return Object(r.a)((function(n,r){return e?e(n[t],r[t]):n[t]===r[t]}))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t){t.exports=JSON.parse('"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"')},function(t){t.exports=JSON.parse('"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z"')},,function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n(6),i=n(26),o=n(16),u=n(8);function s(t,e,n,c){return Object(o.a)(n)&&(c=n,n=void 0),c?s(t,e,n).pipe(Object(u.a)((function(t){return Object(i.a)(t)?c.apply(void 0,t):c(t)}))):new r.a((function(r){!function t(e,n,r,i,o){var u;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){var s=e;e.addEventListener(n,r,o),u=function(){return s.removeEventListener(n,r,o)}}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){var c=e;e.on(n,r),u=function(){return c.off(n,r)}}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){var a=e;e.addListener(n,r),u=function(){return a.removeListener(n,r)}}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(var f=0,l=e.length;f1?r.next(Array.prototype.slice.call(arguments)):r.next(t)}),r,n)}))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n(6),i=n(27),o=n(57),u=n(38);function s(){for(var t=[],e=0;e1&&"number"==typeof t[t.length-1]&&(n=t.pop())):"number"==typeof c&&(n=t.pop()),null===s&&1===t.length&&t[0]instanceof r.a?t[0]:Object(o.a)(n)(Object(u.a)(t,s))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(0),i=n(4);function o(t,e){return void 0===e&&(e=null),function(n){return n.lift(new u(t,e))}}var u=function(){function t(t,e){this.bufferSize=t,this.startBufferEvery=e,this.subscriberClass=e&&t!==e?c:s}return t.prototype.call=function(t,e){return e.subscribe(new this.subscriberClass(t,this.bufferSize,this.startBufferEvery))},t}(),s=function(t){function e(e,n){var r=t.call(this,e)||this;return r.bufferSize=n,r.buffer=[],r}return r.b(e,t),e.prototype._next=function(t){var e=this.buffer;e.push(t),e.length==this.bufferSize&&(this.destination.next(e),this.buffer=[])},e.prototype._complete=function(){var e=this.buffer;e.length>0&&this.destination.next(e),t.prototype._complete.call(this)},e}(i.a),c=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.bufferSize=n,i.startBufferEvery=r,i.buffers=[],i.count=0,i}return r.b(e,t),e.prototype._next=function(t){var e=this.bufferSize,n=this.startBufferEvery,r=this.buffers,i=this.count;this.count++,i%n==0&&r.push([]);for(var o=r.length;o--;){var u=r[o];u.push(t),u.length===e&&(r.splice(o,1),this.destination.next(u))}},e.prototype._complete=function(){for(var e=this.buffers,n=this.destination;e.length>0;){var r=e.shift();r.length>0&&n.next(r)}t.prototype._complete.call(this)},e}(i.a)},function(t,e,n){"use strict";var r=n(14),i=n(32);function o(t){return function e(n,o){switch(arguments.length){case 0:return e;case 1:return Object(i.a)(n)?e:Object(r.a)((function(e){return t(n,e)}));default:return Object(i.a)(n)&&Object(i.a)(o)?e:Object(i.a)(n)?Object(r.a)((function(e){return t(e,o)})):Object(i.a)(o)?Object(r.a)((function(e){return t(n,e)})):t(n,o)}}}var u=Array.isArray||function(t){return null!=t&&t.length>=0&&"[object Array]"===Object.prototype.toString.call(t)};function s(t){return null!=t&&"function"==typeof t["@@transducer/step"]}function c(t,e,n){return function(){if(0===arguments.length)return n();var r=Array.prototype.slice.call(arguments,0),i=r.pop();if(!u(i)){for(var o=0;o=0;){if(t(e[n]))return e[n];n-=1}})));e.a=l},function(t,e,n){"use strict";var r=n(0),i=n(25),o=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.scheduler=e,r.work=n,r}return r.b(e,t),e.prototype.schedule=function(e,n){return void 0===n&&(n=0),n>0?t.prototype.schedule.call(this,e,n):(this.delay=n,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,n){return n>0||this.closed?t.prototype.execute.call(this,e,n):this._execute(e,n)},e.prototype.requestAsyncId=function(e,n,r){return void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0?t.prototype.requestAsyncId.call(this,e,n,r):e.flush(this)},e}(n(43).a),u=new(function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.b(e,t),e}(n(42).a))(o),s=n(9),c=n(46),a=n(19),f=n(51),l=function(t){function e(e,n,r){void 0===e&&(e=Number.POSITIVE_INFINITY),void 0===n&&(n=Number.POSITIVE_INFINITY);var i=t.call(this)||this;return i.scheduler=r,i._events=[],i._infiniteTimeWindow=!1,i._bufferSize=e<1?1:e,i._windowTime=n<1?1:n,n===Number.POSITIVE_INFINITY?(i._infiniteTimeWindow=!0,i.next=i.nextInfiniteTimeWindow):i.next=i.nextTimeWindow,i}return r.b(e,t),e.prototype.nextInfiniteTimeWindow=function(e){var n=this._events;n.push(e),n.length>this._bufferSize&&n.shift(),t.prototype.next.call(this,e)},e.prototype.nextTimeWindow=function(e){this._events.push(new h(this._getNow(),e)),this._trimBufferThenGetEvents(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){var e,n=this._infiniteTimeWindow,r=n?this._events:this._trimBufferThenGetEvents(),i=this.scheduler,o=r.length;if(this.closed)throw new a.a;if(this.isStopped||this.hasError?e=s.a.EMPTY:(this.observers.push(t),e=new f.a(this,t)),i&&t.add(t=new c.a(t,i)),n)for(var u=0;ue&&(o=Math.max(o,i-e)),o>0&&r.splice(0,o),r},e}(i.a),h=function(){return function(t,e){this.time=t,this.value=e}}();function p(t,e,n){var r;return r=t&&"object"==typeof t?t:{bufferSize:t,windowTime:e,refCount:!1,scheduler:n},function(t){return t.lift(function(t){var e,n,r=t.bufferSize,i=void 0===r?Number.POSITIVE_INFINITY:r,o=t.windowTime,u=void 0===o?Number.POSITIVE_INFINITY:o,s=t.refCount,c=t.scheduler,a=0,f=!1,h=!1;return function(t){a++,e&&!f||(f=!1,e=new l(i,u,c),n=t.subscribe({next:function(t){e.next(t)},error:function(t){f=!0,e.error(t)},complete:function(){h=!0,e.complete()}}));var r=e.subscribe(this);this.add((function(){a--,r.unsubscribe(),n&&!h&&s&&0===a&&(n.unsubscribe(),n=void 0,e=void 0)}))}}(r))}}n.d(e,"a",(function(){return p}))},function(t,e,n){"use strict";var r=n(45),i=n(57);function o(){for(var t=[],e=0;e0&&n[0].time-r.now()<=0;)n.shift().notification.observe(i);if(n.length>0){var o=Math.max(0,n[0].time-r.now());this.schedule(t,o)}else this.unsubscribe(),e.active=!1},e.prototype._schedule=function(t){this.active=!0,this.destination.add(t.schedule(e.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))},e.prototype.scheduleNotification=function(t){if(!0!==this.errored){var e=this.scheduler,n=new f(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}},e.prototype._next=function(t){this.scheduleNotification(u.a.createNext(t))},e.prototype._error=function(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()},e.prototype._complete=function(){this.scheduleNotification(u.a.createComplete()),this.unsubscribe()},e}(o.a),f=function(){return function(t,e){this.time=t,this.notification=e}}()},function(t,e,n){"use strict";var r=n(14);var i=Object(r.a)((function(t){return e=t,"[object String]"===Object.prototype.toString.call(e)?t.split("").reverse().join(""):Array.prototype.slice.call(t,0).reverse();var e}));e.a=i},function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var r=n(0),i=n(25),o=n(19),u=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return r.b(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return n&&!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new o.a;return this._value},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(i.a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(0),i=n(4);function o(t,e){return function(n){return n.lift(new u(t,e))}}var u=function(){function t(t,e){this.predicate=t,this.thisArg=e}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.predicate,this.thisArg))},t}(),s=function(t){function e(e,n,r){var i=t.call(this,e)||this;return i.predicate=n,i.thisArg=r,i.count=0,i}return r.b(e,t),e.prototype._next=function(t){var e;try{e=this.predicate.call(this.thisArg,t,this.count++)}catch(t){return void this.destination.error(t)}e&&this.destination.next(t)},e}(i.a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(0),i=n(4);function o(t){return function(e){return e.lift(new u(t))}}var u=function(){function t(t){this.total=t}return t.prototype.call=function(t,e){return e.subscribe(new s(t,this.total))},t}(),s=function(t){function e(e,n){var r=t.call(this,e)||this;return r.total=n,r.count=0,r}return r.b(e,t),e.prototype._next=function(t){++this.count>this.total&&this.destination.next(t)},e}(i.a)},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n(8);function i(){for(var t=[],e=0;e1)this.connection=null;else{var n=this.connection,r=t._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}else this.connection=null},e}(u.a),l=function(t){function e(e,n){var r=t.call(this)||this;return r.source=e,r.subjectFactory=n,r._refCount=0,r._isComplete=!1,r}return r.b(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype.connect=function(){var t=this._connection;return t||(this._isComplete=!1,(t=this._connection=new s.a).add(this.source.subscribe(new p(this.getSubject(),this))),t.closed&&(this._connection=null,t=s.a.EMPTY)),t},e.prototype.refCount=function(){return c()(this)},e}(o.a),h=function(){var t=l.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}}(),p=function(t){function e(e,n){var r=t.call(this,e)||this;return r.connectable=n,r}return r.b(e,t),e.prototype._error=function(e){this._unsubscribe(),t.prototype._error.call(this,e)},e.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),t.prototype._complete.call(this)},e.prototype._unsubscribe=function(){var t=this.connectable;if(t){this.connectable=null;var e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}},e}(i.b);u.a;var d=function(){function t(t,e){this.subjectFactory=t,this.selector=e}return t.prototype.call=function(t,e){var n=this.selector,r=this.subjectFactory(),i=n(r).subscribe(t);return i.add(e.subscribe(r)),i},t}();function b(){return new i.a}function y(){return function(t){return c()((e=b,function(t){var r;if(r="function"==typeof e?e:function(){return e},"function"==typeof n)return t.lift(new d(r,n));var i=Object.create(t,h);return i.source=t,i.subjectFactory=r,i})(t));var e,n}}n.d(e,"a",(function(){return y}))},function(t,e,n){"use strict";var r=n(0),i=n(4),o=function(){function t(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return t.prototype=Object.create(Error.prototype),t}(),u=n(18);function s(t){return function(e){return 0===t?Object(u.b)():e.lift(new c(t))}}n.d(e,"a",(function(){return s}));var c=function(){function t(t){if(this.total=t,this.total<0)throw new o}return t.prototype.call=function(t,e){return e.subscribe(new a(t,this.total))},t}(),a=function(t){function e(e,n){var r=t.call(this,e)||this;return r.total=n,r.count=0,r}return r.b(e,t),e.prototype._next=function(t){var e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))},e}(i.a)},function(t,e,n){"use strict";var r=n(14);function i(t){return t}var o=Object(r.a)(i);e.a=o},function(t,e,n){"use strict";var r=n(0),i=n(13),o=n(6),u=n(4),s=n(8);function c(t,e){return void 0===e&&(e=null),new b({method:"GET",url:t,headers:e})}function a(t,e,n){return new b({method:"POST",url:t,body:e,headers:n})}function f(t,e){return new b({method:"DELETE",url:t,headers:e})}function l(t,e,n){return new b({method:"PUT",url:t,body:e,headers:n})}function h(t,e,n){return new b({method:"PATCH",url:t,body:e,headers:n})}var p=Object(s.a)((function(t,e){return t.response}));function d(t,e){return p(new b({method:"GET",url:t,responseType:"json",headers:e}))}var b=function(t){function e(e){var n=t.call(this)||this,r={async:!0,createXHR:function(){return this.crossDomain?function(){if(i.a.XMLHttpRequest)return new i.a.XMLHttpRequest;if(i.a.XDomainRequest)return new i.a.XDomainRequest;throw new Error("CORS is not supported by your browser")}():function(){if(i.a.XMLHttpRequest)return new i.a.XMLHttpRequest;var t=void 0;try{for(var e=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],n=0;n<3;n++)try{if(t=e[n],new i.a.ActiveXObject(t))break}catch(t){}return new i.a.ActiveXObject(t)}catch(t){throw new Error("XMLHttpRequest is not supported by your browser")}}()},crossDomain:!0,withCredentials:!1,headers:{},method:"GET",responseType:"json",timeout:0};if("string"==typeof e)r.url=e;else for(var o in e)e.hasOwnProperty(o)&&(r[o]=e[o]);return n.request=r,n}var n;return r.b(e,t),e.prototype._subscribe=function(t){return new y(t,this.request)},e.create=((n=function(t){return new e(t)}).get=c,n.post=a,n.delete=f,n.put=l,n.patch=h,n.getJSON=d,n),e}(o.a),y=function(t){function e(e,n){var r=t.call(this,e)||this;r.request=n,r.done=!1;var o=n.headers=n.headers||{};return n.crossDomain||r.getHeader(o,"X-Requested-With")||(o["X-Requested-With"]="XMLHttpRequest"),r.getHeader(o,"Content-Type")||i.a.FormData&&n.body instanceof i.a.FormData||void 0===n.body||(o["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"),n.body=r.serializeBody(n.body,r.getHeader(n.headers,"Content-Type")),r.send(),r}return r.b(e,t),e.prototype.next=function(t){this.done=!0;var e,n=this.xhr,r=this.request,i=this.destination;try{e=new v(t,n,r)}catch(t){return i.error(t)}i.next(e)},e.prototype.send=function(){var t=this.request,e=this.request,n=e.user,r=e.method,i=e.url,o=e.async,u=e.password,s=e.headers,c=e.body;try{var a=this.xhr=t.createXHR();this.setupEvents(a,t),n?a.open(r,i,o,n,u):a.open(r,i,o),o&&(a.timeout=t.timeout,a.responseType=t.responseType),"withCredentials"in a&&(a.withCredentials=!!t.withCredentials),this.setHeaders(a,s),c?a.send(c):a.send()}catch(t){this.error(t)}},e.prototype.serializeBody=function(t,e){if(!t||"string"==typeof t)return t;if(i.a.FormData&&t instanceof i.a.FormData)return t;if(e){var n=e.indexOf(";");-1!==n&&(e=e.substring(0,n))}switch(e){case"application/x-www-form-urlencoded":return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&");case"application/json":return JSON.stringify(t);default:return t}},e.prototype.setHeaders=function(t,e){for(var n in e)e.hasOwnProperty(n)&&t.setRequestHeader(n,e[n])},e.prototype.getHeader=function(t,e){for(var n in t)if(n.toLowerCase()===e.toLowerCase())return t[n]},e.prototype.setupEvents=function(t,e){var n=e.progressSubscriber;function r(t){var e,n=r,i=n.subscriber,o=n.progressSubscriber,u=n.request;o&&o.error(t);try{e=new g(this,u)}catch(t){e=t}i.error(e)}if(t.ontimeout=r,r.request=e,r.subscriber=this,r.progressSubscriber=n,t.upload&&"withCredentials"in t){var o,u;if(n)o=function(t){o.progressSubscriber.next(t)},i.a.XDomainRequest?t.onprogress=o:t.upload.onprogress=o,o.progressSubscriber=n;u=function(t){var e,n=u,r=n.progressSubscriber,i=n.subscriber,o=n.request;r&&r.error(t);try{e=new m("ajax error",this,o)}catch(t){e=t}i.error(e)},t.onerror=u,u.request=e,u.subscriber=this,u.progressSubscriber=n}function s(t){}function c(t){var e=c,n=e.subscriber,r=e.progressSubscriber,i=e.request;if(4===this.readyState){var o=1223===this.status?204:this.status,u="text"===this.responseType?this.response||this.responseText:this.response;if(0===o&&(o=u?200:0),o<400)r&&r.complete(),n.next(t),n.complete();else{r&&r.error(t);var s=void 0;try{s=new m("ajax error "+o,this,i)}catch(t){s=t}n.error(s)}}}t.onreadystatechange=s,s.subscriber=this,s.progressSubscriber=n,s.request=e,t.onload=c,c.subscriber=this,c.progressSubscriber=n,c.request=e},e.prototype.unsubscribe=function(){var e=this.done,n=this.xhr;!e&&n&&4!==n.readyState&&"function"==typeof n.abort&&n.abort(),t.prototype.unsubscribe.call(this)},e}(u.a),v=function(){return function(t,e,n){this.originalEvent=t,this.xhr=e,this.request=n,this.status=e.status,this.responseType=e.responseType||n.responseType,this.response=w(this.responseType,e)}}(),m=function(){function t(t,e,n){return Error.call(this),this.message=t,this.name="AjaxError",this.xhr=e,this.request=n,this.status=e.status,this.responseType=e.responseType||n.responseType,this.response=w(this.responseType,e),this}return t.prototype=Object.create(Error.prototype),t}();function w(t,e){switch(t){case"json":return function(t){return"response"in t?t.responseType?t.response:JSON.parse(t.response||t.responseText||"null"):JSON.parse(t.responseText||"null")}(e);case"xml":return e.responseXML;case"text":default:return"response"in e?e.response:e.responseText}}var g=function(t,e){return m.call(this,"ajax timeout",t,e),this.name="AjaxTimeoutError",this};n.d(e,"a",(function(){return _}));var _=function(){return b.create}()}]]); +//# sourceMappingURL=vendor.000c9aa0.min.js.map \ No newline at end of file diff --git a/material/assets/javascripts/vendor.000c9aa0.min.js.map b/material/assets/javascripts/vendor.000c9aa0.min.js.map new file mode 100644 index 000000000..029bbb8bb --- /dev/null +++ b/material/assets/javascripts/vendor.000c9aa0.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///vendors.ce18ab60.min.js"],"names":["window","push","module","__webpack_exports__","__webpack_require__","d","__extends","__assign","__rest","__values","__read","__spread","extendStatics","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","assign","t","s","i","n","arguments","length","call","apply","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","o","m","Symbol","iterator","next","value","done","r","ar","error","concat","Subscriber","tslib__WEBPACK_IMPORTED_MODULE_0__","_util_isFunction__WEBPACK_IMPORTED_MODULE_1__","_Observer__WEBPACK_IMPORTED_MODULE_2__","_Subscription__WEBPACK_IMPORTED_MODULE_3__","_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__","_config__WEBPACK_IMPORTED_MODULE_5__","_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__","_super","destinationOrNext","complete","_this","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","destination","add","SafeSubscriber","subscriber","_next","err","_error","_complete","unsubscribe","closed","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","observerOrNext","context","bind","_context","useDeprecatedSynchronousErrorHandling","__tryOrSetError","__tryOrUnsub","wrappedComplete","fn","parent","Error","_unsubscribe","rxSubscriber","Observer","observable","pipe","config","Observable_Observable","Observable","subscribe","_isScalar","_subscribe","lift","operator","source","sink","nextOrObserver","toSubscriber","_trySubscribe","observer","_a","closed_1","canReportError","console","warn","forEach","promiseCtor","getPromiseCtor","resolve","reject","subscription","operations","_i","toPromise","x","Promise","map","_Subscriber__WEBPACK_IMPORTED_MODULE_1__","project","thisArg","TypeError","MapOperator","MapSubscriber","count","result","isArray","isObject","isFunction","UnsubscriptionError","UnsubscriptionErrorImpl","errors","message","toString","join","name","Subscription_Subscription","Subscription","_subscriptions","empty","remove","index","flattenUnsubscriptionErrors","len","sub","teardown","EMPTY","tmp","subscriptions","subscriptionIndex","splice","reduce","errs","subscribeToResult","_InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__","_subscribeTo__WEBPACK_IMPORTED_MODULE_1__","_Observable__WEBPACK_IMPORTED_MODULE_2__","outerSubscriber","outerValue","outerIndex","OuterSubscriber","notifyNext","innerValue","innerIndex","innerSub","notifyError","notifyComplete","_enable_super_gross_mode_that_will_cause_bad_things","undefined","stack","global","_root","__window","__self","self","WorkerGlobalScope","_curry1","_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_0__","f1","a","noop","_Observable__WEBPACK_IMPORTED_MODULE_0__","scheduler","schedule","emptyScheduled","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","hostReportError","setTimeout","switchMap","_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__","_InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__","_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__","_map__WEBPACK_IMPORTED_MODULE_4__","_observable_from__WEBPACK_IMPORTED_MODULE_5__","resultSelector","ii","SwitchMapOperator","SwitchMapSubscriber","_innerSub","innerSubscription","innerSubscriber","SubjectSubscriber","Subject","_Observable__WEBPACK_IMPORTED_MODULE_1__","_Subscriber__WEBPACK_IMPORTED_MODULE_2__","_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__","_SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__","_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__","observers","hasError","thrownError","subject","AnonymousSubject","copy","slice","asObservable","isScheduler","getSymbolIterator","InnerSubscriber","_isPlaceholder","Math","random","NotificationKind","of","dispatch","Notification_Notification","Notification","kind","hasValue","observe","do","accept","toObservable","createNext","undefinedValueNotification","createError","createComplete","completeNotification","pipeFromArray","_noop__WEBPACK_IMPORTED_MODULE_0__","fns","input","prev","distinctUntilChanged","compare","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","y","key","scheduleArray","_Subscription__WEBPACK_IMPORTED_MODULE_1__","fromArray","_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__","_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__","subscribeTo","symbol_observable","symbol_iterator","isPromise","isArrayLike","scheduled","isInteropObservable","scheduleObservable","then","schedulePromise","isIterable","return","scheduleIterable","from","tslib_es6","Scheduler","SchedulerAction","now","work","delay","state","Date","AsyncScheduler_AsyncScheduler","AsyncScheduler","delegate","actions","active","flush","action","execute","shift","Action_Action","Action","AsyncAction_AsyncAction","AsyncAction","pending","id","recycleAsyncId","requestAsyncId","setInterval","clearInterval","_execute","errored","errorValue","_config__WEBPACK_IMPORTED_MODULE_0__","_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__","_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__","_fromArray__WEBPACK_IMPORTED_MODULE_1__","args","pop","observeOn","ObserveOnSubscriber","_Notification__WEBPACK_IMPORTED_MODULE_2__","ObserveOnOperator","arg","notification","scheduleMessage","ObserveOnMessage","SubjectSubscription","subscriberIndex","subscribeToArray","array","async","_AsyncAction__WEBPACK_IMPORTED_MODULE_0__","obj","obs","promise","iterable","item","MergeMapOperator","concurrent","Number","POSITIVE_INFINITY","mergeMap_MergeMapSubscriber","MergeMapSubscriber","hasCompleted","buffer","_tryNext","ish","identity","mergeAll","mergeMap","tap","_util_noop__WEBPACK_IMPORTED_MODULE_2__","_util_isFunction__WEBPACK_IMPORTED_MODULE_3__","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","AnimationFrameAction_AnimationFrameAction","AnimationFrameAction","requestAnimationFrame","cancelAnimationFrame","AnimationFrameScheduler_AnimationFrameScheduler","AnimationFrameScheduler","animationFrame","exports","factory","modules","installedModules","moduleId","l","c","getter","defineProperty","enumerable","get","toStringTag","mode","__esModule","ns","object","property","_typeof","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_clipboardAction2","_interopRequireDefault","_tinyEmitter2","_goodListener2","default","Clipboard","_Emitter","trigger","options","instance","_classCallCheck","ReferenceError","_possibleConstructorReturn","getPrototypeOf","resolveOptions","listenClick","subClass","superClass","_inherits","defaultAction","defaultTarget","text","defaultText","container","document","body","_this2","listener","onClick","delegateTarget","currentTarget","clipboardAction","emitter","getAttributeValue","selector","querySelector","destroy","support","queryCommandSupported","suffix","element","attribute","hasAttribute","getAttribute","_select","_select2","ClipboardAction","initSelection","selectedText","selectFake","selectTarget","isRTL","documentElement","removeFake","fakeHandlerCallback","fakeHandler","addEventListener","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","pageYOffset","scrollTop","top","setAttribute","appendChild","copyText","removeEventListener","removeChild","succeeded","execCommand","handleResult","emit","clearSelection","focus","getSelection","removeAllRanges","set","_action","nodeType","_target","nodeName","isReadOnly","select","setSelectionRange","removeAttribute","selection","range","createRange","selectNodeContents","addRange","E","on","callback","ctx","once","off","_","data","evtArr","evts","liveEvents","is","type","string","node","listenNode","nodeList","listenNodeList","listenSelector","HTMLElement","String","closest","_delegate","useCapture","listenerFn","elements","querySelectorAll","DOCUMENT_NODE_TYPE","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","parentNode","combineLatest","_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__","_util_isArray__WEBPACK_IMPORTED_MODULE_2__","_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__","_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__","_fromArray__WEBPACK_IMPORTED_MODULE_5__","NONE","observables","CombineLatestOperator","CombineLatestSubscriber","values","toRespond","unused","oldVal","_tryResultSelector","withLatestFrom","_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__","WithLatestFromOperator","WithLatestFromSubscriber","found","_tryProject","scan","accumulator","seed","hasSeed","ScanOperator","ScanSubscriber","_seed","finalize","_Subscription__WEBPACK_IMPORTED_MODULE_2__","FinallyOperator","FinallySubscriber","defer","_from__WEBPACK_IMPORTED_MODULE_1__","_empty__WEBPACK_IMPORTED_MODULE_2__","observableFactory","_has","prop","_isArguments_toString","internal_isArguments","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","contains","list","idx","keys_keys","keys","nIdx","ks","checkArgsLength","distinctUntilKeyChanged","_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__","g","Function","JSON","parse","fromEvent","_util_isArray__WEBPACK_IMPORTED_MODULE_1__","_util_isFunction__WEBPACK_IMPORTED_MODULE_2__","_operators_map__WEBPACK_IMPORTED_MODULE_3__","eventName","setupSubscription","sourceObj","handler","isEventTarget","source_1","isJQueryStyleEventEmitter","source_2","addListener","removeListener","isNodeStyleEventEmitter","source_3","merge","_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__","_fromArray__WEBPACK_IMPORTED_MODULE_3__","last","bufferCount","bufferSize","startBufferEvery","BufferCountOperator","subscriberClass","BufferSkipCountSubscriber","BufferCountSubscriber","buffers","_curry2","f2","_b","_isArray","val","_isTransformer","_dispatchable","methodNames","xf","transducer","_xfBase","_xfindLast_XFindLast","XFindLast","f","findLast","QueueAction_QueueAction","QueueAction","queue","QueueScheduler","ReplaySubject_ReplaySubject","ReplaySubject","windowTime","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","eventsCount","spliceCount","time","max","shareReplay","configOrBufferSize","refCount","_c","useRefCount","isComplete","shareReplayOperator","concatAll","startWith","scheduler_async","delay_delay","delayFor","isNaN","abs","DelayOperator","delay_DelaySubscriber","DelaySubscriber","delay_1","_schedule","scheduleNotification","DelayMessage","reverse_reverse","split","reverse","BehaviorSubject","_Subject__WEBPACK_IMPORTED_MODULE_1__","_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__","_value","getValue","filter","predicate","FilterOperator","FilterSubscriber","skip","SkipOperator","total","SkipSubscriber","pluck","_map__WEBPACK_IMPORTED_MODULE_0__","properties","currentProp","plucker","catchError","CatchOperator","caught","CatchSubscriber","err2","NEVER","_util_noop__WEBPACK_IMPORTED_MODULE_1__","mapTo","MapToOperator","MapToSubscriber","fromEventPattern","addHandler","removeHandler","retValue","throttle","defaultThrottleConfig","leading","trailing","durationSelector","ThrottleOperator","ThrottleSubscriber","_leading","_trailing","_hasValue","_sendValue","_throttled","send","duration","tryDurationSelector","throttlingDone","switchMapTo","_switchMap__WEBPACK_IMPORTED_MODULE_0__","innerObservable","iif","_defer__WEBPACK_IMPORTED_MODULE_0__","_empty__WEBPACK_IMPORTED_MODULE_1__","condition","trueResult","falseResult","debounceTime","_scheduler_async__WEBPACK_IMPORTED_MODULE_2__","dueTime","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","sample","notifier","SampleOperator","sampleSubscriber","SampleSubscriber","emitValue","_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__","_keys_js__WEBPACK_IMPORTED_MODULE_1__","vals","RefCountOperator","connectable","_refCount","refCounter","refCount_RefCountSubscriber","connection","connect","RefCountSubscriber","sharedConnection","_connection","ConnectableObservable_ConnectableObservable","ConnectableObservable","subjectFactory","_isComplete","getSubject","_subject","ConnectableObservable_ConnectableSubscriber","connectableObservableDescriptor","connectableProto","ConnectableSubscriber","MulticastOperator","shareSubjectFactory","share","subjectOrSubjectFactory","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","take","take_TakeOperator","TakeOperator","take_TakeSubscriber","TakeSubscriber","_identity","root","ajaxGet","url","headers","AjaxObservable_AjaxObservable","method","ajaxPost","ajaxDelete","ajaxPut","ajaxPatch","mapResponse","response","ajaxGetJSON","responseType","AjaxObservable","urlOrRequest","request","createXHR","crossDomain","XMLHttpRequest","XDomainRequest","getCORSRequest","progId","progIds","ActiveXObject","getXMLHttpRequest","withCredentials","timeout","AjaxObservable_AjaxSubscriber","post","delete","put","patch","getJSON","AjaxSubscriber","getHeader","FormData","serializeBody","xhr","AjaxResponse","user","password","setupEvents","open","setHeaders","contentType","splitIndex","substring","encodeURIComponent","stringify","setRequestHeader","headerName","toLowerCase","progressSubscriber","xhrTimeout","AjaxTimeoutError","ontimeout","upload","xhrProgress_1","xhrError_1","onprogress","AjaxError","onerror","xhrReadyStateChange","xhrLoad","readyState","status_1","status","responseText","onreadystatechange","onload","abort","originalEvent","parseXhrResponse","AjaxErrorImpl","parseJson","responseXML","ajax"],"mappings":"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","file":"assets/javascripts/vendor.000c9aa0.min.js","sourceRoot":""} \ No newline at end of file diff --git a/material/assets/javascripts/worker/search.js b/material/assets/javascripts/worker/search.js deleted file mode 100644 index 6e278485f..000000000 --- a/material/assets/javascripts/worker/search.js +++ /dev/null @@ -1,4569 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/assets/javascripts/workers/search/main/index.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/escape-html/index.js": -/*!*******************************************!*\ - !*** ./node_modules/escape-html/index.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */ - - - -/** - * Module variables. - * @private - */ - -var matchHtmlRegExp = /["'&<>]/; - -/** - * Module exports. - * @public - */ - -module.exports = escapeHtml; - -/** - * Escape special characters in the given string of html. - * - * @param {string} string The string to escape for inserting into HTML - * @return {string} - * @public - */ - -function escapeHtml(string) { - var str = '' + string; - var match = matchHtmlRegExp.exec(str); - - if (!match) { - return str; - } - - var escape; - var html = ''; - var index = 0; - var lastIndex = 0; - - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: // " - escape = '"'; - break; - case 38: // & - escape = '&'; - break; - case 39: // ' - escape = '''; - break; - case 60: // < - escape = '<'; - break; - case 62: // > - escape = '>'; - break; - default: - continue; - } - - if (lastIndex !== index) { - html += str.substring(lastIndex, index); - } - - lastIndex = index + 1; - html += escape; - } - - return lastIndex !== index - ? html + str.substring(lastIndex, index) - : html; -} - - -/***/ }), - -/***/ "./node_modules/escape-string-regexp/index.js": -/*!****************************************************!*\ - !*** ./node_modules/escape-string-regexp/index.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g; - -module.exports = string => { - if (typeof string !== 'string') { - throw new TypeError('Expected a string'); - } - - return string.replace(matchOperatorsRegex, '\\$&'); -}; - - -/***/ }), - -/***/ "./node_modules/expose-loader/index.js?lunr!./node_modules/lunr/lunr.js-exposed": -/*!*****************************************************************************!*\ - !*** ./node_modules/expose-loader?lunr!./node_modules/lunr/lunr.js-exposed ***! - \*****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["lunr"] = __webpack_require__(/*! -!./lunr.js */ "./node_modules/lunr/lunr.js"); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./node_modules/lunr/lunr.js": -/*!***********************************!*\ - !*** ./node_modules/lunr/lunr.js ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8 - * Copyright (C) 2019 Oliver Nightingale - * @license MIT - */ - -;(function(){ - -/** - * A convenience function for configuring and constructing - * a new lunr Index. - * - * A lunr.Builder instance is created and the pipeline setup - * with a trimmer, stop word filter and stemmer. - * - * This builder object is yielded to the configuration function - * that is passed as a parameter, allowing the list of fields - * and other builder parameters to be customised. - * - * All documents _must_ be added within the passed config function. - * - * @example - * var idx = lunr(function () { - * this.field('title') - * this.field('body') - * this.ref('id') - * - * documents.forEach(function (doc) { - * this.add(doc) - * }, this) - * }) - * - * @see {@link lunr.Builder} - * @see {@link lunr.Pipeline} - * @see {@link lunr.trimmer} - * @see {@link lunr.stopWordFilter} - * @see {@link lunr.stemmer} - * @namespace {function} lunr - */ -var lunr = function (config) { - var builder = new lunr.Builder - - builder.pipeline.add( - lunr.trimmer, - lunr.stopWordFilter, - lunr.stemmer - ) - - builder.searchPipeline.add( - lunr.stemmer - ) - - config.call(builder, builder) - return builder.build() -} - -lunr.version = "2.3.8" -/*! - * lunr.utils - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A namespace containing utils for the rest of the lunr library - * @namespace lunr.utils - */ -lunr.utils = {} - -/** - * Print a warning message to the console. - * - * @param {String} message The message to be printed. - * @memberOf lunr.utils - * @function - */ -lunr.utils.warn = (function (global) { - /* eslint-disable no-console */ - return function (message) { - if (global.console && console.warn) { - console.warn(message) - } - } - /* eslint-enable no-console */ -})(this) - -/** - * Convert an object to a string. - * - * In the case of `null` and `undefined` the function returns - * the empty string, in all other cases the result of calling - * `toString` on the passed object is returned. - * - * @param {Any} obj The object to convert to a string. - * @return {String} string representation of the passed object. - * @memberOf lunr.utils - */ -lunr.utils.asString = function (obj) { - if (obj === void 0 || obj === null) { - return "" - } else { - return obj.toString() - } -} - -/** - * Clones an object. - * - * Will create a copy of an existing object such that any mutations - * on the copy cannot affect the original. - * - * Only shallow objects are supported, passing a nested object to this - * function will cause a TypeError. - * - * Objects with primitives, and arrays of primitives are supported. - * - * @param {Object} obj The object to clone. - * @return {Object} a clone of the passed object. - * @throws {TypeError} when a nested object is passed. - * @memberOf Utils - */ -lunr.utils.clone = function (obj) { - if (obj === null || obj === undefined) { - return obj - } - - var clone = Object.create(null), - keys = Object.keys(obj) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i], - val = obj[key] - - if (Array.isArray(val)) { - clone[key] = val.slice() - continue - } - - if (typeof val === 'string' || - typeof val === 'number' || - typeof val === 'boolean') { - clone[key] = val - continue - } - - throw new TypeError("clone is not deep and does not support nested objects") - } - - return clone -} -lunr.FieldRef = function (docRef, fieldName, stringValue) { - this.docRef = docRef - this.fieldName = fieldName - this._stringValue = stringValue -} - -lunr.FieldRef.joiner = "/" - -lunr.FieldRef.fromString = function (s) { - var n = s.indexOf(lunr.FieldRef.joiner) - - if (n === -1) { - throw "malformed field ref string" - } - - var fieldRef = s.slice(0, n), - docRef = s.slice(n + 1) - - return new lunr.FieldRef (docRef, fieldRef, s) -} - -lunr.FieldRef.prototype.toString = function () { - if (this._stringValue == undefined) { - this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef - } - - return this._stringValue -} -/*! - * lunr.Set - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A lunr set. - * - * @constructor - */ -lunr.Set = function (elements) { - this.elements = Object.create(null) - - if (elements) { - this.length = elements.length - - for (var i = 0; i < this.length; i++) { - this.elements[elements[i]] = true - } - } else { - this.length = 0 - } -} - -/** - * A complete set that contains all elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.complete = { - intersect: function (other) { - return other - }, - - union: function (other) { - return other - }, - - contains: function () { - return true - } -} - -/** - * An empty set that contains no elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.empty = { - intersect: function () { - return this - }, - - union: function (other) { - return other - }, - - contains: function () { - return false - } -} - -/** - * Returns true if this set contains the specified object. - * - * @param {object} object - Object whose presence in this set is to be tested. - * @returns {boolean} - True if this set contains the specified object. - */ -lunr.Set.prototype.contains = function (object) { - return !!this.elements[object] -} - -/** - * Returns a new set containing only the elements that are present in both - * this set and the specified set. - * - * @param {lunr.Set} other - set to intersect with this set. - * @returns {lunr.Set} a new set that is the intersection of this and the specified set. - */ - -lunr.Set.prototype.intersect = function (other) { - var a, b, elements, intersection = [] - - if (other === lunr.Set.complete) { - return this - } - - if (other === lunr.Set.empty) { - return other - } - - if (this.length < other.length) { - a = this - b = other - } else { - a = other - b = this - } - - elements = Object.keys(a.elements) - - for (var i = 0; i < elements.length; i++) { - var element = elements[i] - if (element in b.elements) { - intersection.push(element) - } - } - - return new lunr.Set (intersection) -} - -/** - * Returns a new set combining the elements of this and the specified set. - * - * @param {lunr.Set} other - set to union with this set. - * @return {lunr.Set} a new set that is the union of this and the specified set. - */ - -lunr.Set.prototype.union = function (other) { - if (other === lunr.Set.complete) { - return lunr.Set.complete - } - - if (other === lunr.Set.empty) { - return this - } - - return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) -} -/** - * A function to calculate the inverse document frequency for - * a posting. This is shared between the builder and the index - * - * @private - * @param {object} posting - The posting for a given term - * @param {number} documentCount - The total number of documents. - */ -lunr.idf = function (posting, documentCount) { - var documentsWithTerm = 0 - - for (var fieldName in posting) { - if (fieldName == '_index') continue // Ignore the term index, its not a field - documentsWithTerm += Object.keys(posting[fieldName]).length - } - - var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) - - return Math.log(1 + Math.abs(x)) -} - -/** - * A token wraps a string representation of a token - * as it is passed through the text processing pipeline. - * - * @constructor - * @param {string} [str=''] - The string token being wrapped. - * @param {object} [metadata={}] - Metadata associated with this token. - */ -lunr.Token = function (str, metadata) { - this.str = str || "" - this.metadata = metadata || {} -} - -/** - * Returns the token string that is being wrapped by this object. - * - * @returns {string} - */ -lunr.Token.prototype.toString = function () { - return this.str -} - -/** - * A token update function is used when updating or optionally - * when cloning a token. - * - * @callback lunr.Token~updateFunction - * @param {string} str - The string representation of the token. - * @param {Object} metadata - All metadata associated with this token. - */ - -/** - * Applies the given function to the wrapped string token. - * - * @example - * token.update(function (str, metadata) { - * return str.toUpperCase() - * }) - * - * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. - * @returns {lunr.Token} - */ -lunr.Token.prototype.update = function (fn) { - this.str = fn(this.str, this.metadata) - return this -} - -/** - * Creates a clone of this token. Optionally a function can be - * applied to the cloned token. - * - * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. - * @returns {lunr.Token} - */ -lunr.Token.prototype.clone = function (fn) { - fn = fn || function (s) { return s } - return new lunr.Token (fn(this.str, this.metadata), this.metadata) -} -/*! - * lunr.tokenizer - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A function for splitting a string into tokens ready to be inserted into - * the search index. Uses `lunr.tokenizer.separator` to split strings, change - * the value of this property to change how strings are split into tokens. - * - * This tokenizer will convert its parameter to a string by calling `toString` and - * then will split this string on the character in `lunr.tokenizer.separator`. - * Arrays will have their elements converted to strings and wrapped in a lunr.Token. - * - * Optional metadata can be passed to the tokenizer, this metadata will be cloned and - * added as metadata to every token that is created from the object to be tokenized. - * - * @static - * @param {?(string|object|object[])} obj - The object to convert into tokens - * @param {?object} metadata - Optional metadata to associate with every token - * @returns {lunr.Token[]} - * @see {@link lunr.Pipeline} - */ -lunr.tokenizer = function (obj, metadata) { - if (obj == null || obj == undefined) { - return [] - } - - if (Array.isArray(obj)) { - return obj.map(function (t) { - return new lunr.Token( - lunr.utils.asString(t).toLowerCase(), - lunr.utils.clone(metadata) - ) - }) - } - - var str = obj.toString().toLowerCase(), - len = str.length, - tokens = [] - - for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - var char = str.charAt(sliceEnd), - sliceLength = sliceEnd - sliceStart - - if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { - - if (sliceLength > 0) { - var tokenMetadata = lunr.utils.clone(metadata) || {} - tokenMetadata["position"] = [sliceStart, sliceLength] - tokenMetadata["index"] = tokens.length - - tokens.push( - new lunr.Token ( - str.slice(sliceStart, sliceEnd), - tokenMetadata - ) - ) - } - - sliceStart = sliceEnd + 1 - } - - } - - return tokens -} - -/** - * The separator used to split a string into tokens. Override this property to change the behaviour of - * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. - * - * @static - * @see lunr.tokenizer - */ -lunr.tokenizer.separator = /[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.Pipelines maintain an ordered list of functions to be applied to all - * tokens in documents entering the search index and queries being ran against - * the index. - * - * An instance of lunr.Index created with the lunr shortcut will contain a - * pipeline with a stop word filter and an English language stemmer. Extra - * functions can be added before or after either of these functions or these - * default functions can be removed. - * - * When run the pipeline will call each function in turn, passing a token, the - * index of that token in the original list of all tokens and finally a list of - * all the original tokens. - * - * The output of functions in the pipeline will be passed to the next function - * in the pipeline. To exclude a token from entering the index the function - * should return undefined, the rest of the pipeline will not be called with - * this token. - * - * For serialisation of pipelines to work, all functions used in an instance of - * a pipeline should be registered with lunr.Pipeline. Registered functions can - * then be loaded. If trying to load a serialised pipeline that uses functions - * that are not registered an error will be thrown. - * - * If not planning on serialising the pipeline then registering pipeline functions - * is not necessary. - * - * @constructor - */ -lunr.Pipeline = function () { - this._stack = [] -} - -lunr.Pipeline.registeredFunctions = Object.create(null) - -/** - * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token - * string as well as all known metadata. A pipeline function can mutate the token string - * or mutate (or add) metadata for a given token. - * - * A pipeline function can indicate that the passed token should be discarded by returning - * null, undefined or an empty string. This token will not be passed to any downstream pipeline - * functions and will not be added to the index. - * - * Multiple tokens can be returned by returning an array of tokens. Each token will be passed - * to any downstream pipeline functions and all will returned tokens will be added to the index. - * - * Any number of pipeline functions may be chained together using a lunr.Pipeline. - * - * @interface lunr.PipelineFunction - * @param {lunr.Token} token - A token from the document being processed. - * @param {number} i - The index of this token in the complete list of tokens for this document/field. - * @param {lunr.Token[]} tokens - All tokens for this document/field. - * @returns {(?lunr.Token|lunr.Token[])} - */ - -/** - * Register a function with the pipeline. - * - * Functions that are used in the pipeline should be registered if the pipeline - * needs to be serialised, or a serialised pipeline needs to be loaded. - * - * Registering a function does not add it to a pipeline, functions must still be - * added to instances of the pipeline for them to be used when running a pipeline. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @param {String} label - The label to register this function with - */ -lunr.Pipeline.registerFunction = function (fn, label) { - if (label in this.registeredFunctions) { - lunr.utils.warn('Overwriting existing registered function: ' + label) - } - - fn.label = label - lunr.Pipeline.registeredFunctions[fn.label] = fn -} - -/** - * Warns if the function is not registered as a Pipeline function. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @private - */ -lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { - var isRegistered = fn.label && (fn.label in this.registeredFunctions) - - if (!isRegistered) { - lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) - } -} - -/** - * Loads a previously serialised pipeline. - * - * All functions to be loaded must already be registered with lunr.Pipeline. - * If any function from the serialised data has not been registered then an - * error will be thrown. - * - * @param {Object} serialised - The serialised pipeline to load. - * @returns {lunr.Pipeline} - */ -lunr.Pipeline.load = function (serialised) { - var pipeline = new lunr.Pipeline - - serialised.forEach(function (fnName) { - var fn = lunr.Pipeline.registeredFunctions[fnName] - - if (fn) { - pipeline.add(fn) - } else { - throw new Error('Cannot load unregistered function: ' + fnName) - } - }) - - return pipeline -} - -/** - * Adds new functions to the end of the pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. - */ -lunr.Pipeline.prototype.add = function () { - var fns = Array.prototype.slice.call(arguments) - - fns.forEach(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - this._stack.push(fn) - }, this) -} - -/** - * Adds a single function after a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.after = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - pos = pos + 1 - this._stack.splice(pos, 0, newFn) -} - -/** - * Adds a single function before a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.before = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - this._stack.splice(pos, 0, newFn) -} - -/** - * Removes a function from the pipeline. - * - * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. - */ -lunr.Pipeline.prototype.remove = function (fn) { - var pos = this._stack.indexOf(fn) - if (pos == -1) { - return - } - - this._stack.splice(pos, 1) -} - -/** - * Runs the current list of functions that make up the pipeline against the - * passed tokens. - * - * @param {Array} tokens The tokens to run through the pipeline. - * @returns {Array} - */ -lunr.Pipeline.prototype.run = function (tokens) { - var stackLength = this._stack.length - - for (var i = 0; i < stackLength; i++) { - var fn = this._stack[i] - var memo = [] - - for (var j = 0; j < tokens.length; j++) { - var result = fn(tokens[j], j, tokens) - - if (result === null || result === void 0 || result === '') continue - - if (Array.isArray(result)) { - for (var k = 0; k < result.length; k++) { - memo.push(result[k]) - } - } else { - memo.push(result) - } - } - - tokens = memo - } - - return tokens -} - -/** - * Convenience method for passing a string through a pipeline and getting - * strings out. This method takes care of wrapping the passed string in a - * token and mapping the resulting tokens back to strings. - * - * @param {string} str - The string to pass through the pipeline. - * @param {?object} metadata - Optional metadata to associate with the token - * passed to the pipeline. - * @returns {string[]} - */ -lunr.Pipeline.prototype.runString = function (str, metadata) { - var token = new lunr.Token (str, metadata) - - return this.run([token]).map(function (t) { - return t.toString() - }) -} - -/** - * Resets the pipeline by removing any existing processors. - * - */ -lunr.Pipeline.prototype.reset = function () { - this._stack = [] -} - -/** - * Returns a representation of the pipeline ready for serialisation. - * - * Logs a warning if the function has not been registered. - * - * @returns {Array} - */ -lunr.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - - return fn.label - }) -} -/*! - * lunr.Vector - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A vector is used to construct the vector space of documents and queries. These - * vectors support operations to determine the similarity between two documents or - * a document and a query. - * - * Normally no parameters are required for initializing a vector, but in the case of - * loading a previously dumped vector the raw elements can be provided to the constructor. - * - * For performance reasons vectors are implemented with a flat array, where an elements - * index is immediately followed by its value. E.g. [index, value, index, value]. This - * allows the underlying array to be as sparse as possible and still offer decent - * performance when being used for vector calculations. - * - * @constructor - * @param {Number[]} [elements] - The flat list of element index and element value pairs. - */ -lunr.Vector = function (elements) { - this._magnitude = 0 - this.elements = elements || [] -} - - -/** - * Calculates the position within the vector to insert a given index. - * - * This is used internally by insert and upsert. If there are duplicate indexes then - * the position is returned as if the value for that index were to be updated, but it - * is the callers responsibility to check whether there is a duplicate at that index - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @returns {Number} - */ -lunr.Vector.prototype.positionForIndex = function (index) { - // For an empty vector the tuple can be inserted at the beginning - if (this.elements.length == 0) { - return 0 - } - - var start = 0, - end = this.elements.length / 2, - sliceLength = end - start, - pivotPoint = Math.floor(sliceLength / 2), - pivotIndex = this.elements[pivotPoint * 2] - - while (sliceLength > 1) { - if (pivotIndex < index) { - start = pivotPoint - } - - if (pivotIndex > index) { - end = pivotPoint - } - - if (pivotIndex == index) { - break - } - - sliceLength = end - start - pivotPoint = start + Math.floor(sliceLength / 2) - pivotIndex = this.elements[pivotPoint * 2] - } - - if (pivotIndex == index) { - return pivotPoint * 2 - } - - if (pivotIndex > index) { - return pivotPoint * 2 - } - - if (pivotIndex < index) { - return (pivotPoint + 1) * 2 - } -} - -/** - * Inserts an element at an index within the vector. - * - * Does not allow duplicates, will throw an error if there is already an entry - * for this index. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - */ -lunr.Vector.prototype.insert = function (insertIdx, val) { - this.upsert(insertIdx, val, function () { - throw "duplicate index" - }) -} - -/** - * Inserts or updates an existing index within the vector. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - * @param {function} fn - A function that is called for updates, the existing value and the - * requested value are passed as arguments - */ -lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { - this._magnitude = 0 - var position = this.positionForIndex(insertIdx) - - if (this.elements[position] == insertIdx) { - this.elements[position + 1] = fn(this.elements[position + 1], val) - } else { - this.elements.splice(position, 0, insertIdx, val) - } -} - -/** - * Calculates the magnitude of this vector. - * - * @returns {Number} - */ -lunr.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude - - var sumOfSquares = 0, - elementsLength = this.elements.length - - for (var i = 1; i < elementsLength; i += 2) { - var val = this.elements[i] - sumOfSquares += val * val - } - - return this._magnitude = Math.sqrt(sumOfSquares) -} - -/** - * Calculates the dot product of this vector and another vector. - * - * @param {lunr.Vector} otherVector - The vector to compute the dot product with. - * @returns {Number} - */ -lunr.Vector.prototype.dot = function (otherVector) { - var dotProduct = 0, - a = this.elements, b = otherVector.elements, - aLen = a.length, bLen = b.length, - aVal = 0, bVal = 0, - i = 0, j = 0 - - while (i < aLen && j < bLen) { - aVal = a[i], bVal = b[j] - if (aVal < bVal) { - i += 2 - } else if (aVal > bVal) { - j += 2 - } else if (aVal == bVal) { - dotProduct += a[i + 1] * b[j + 1] - i += 2 - j += 2 - } - } - - return dotProduct -} - -/** - * Calculates the similarity between this vector and another vector. - * - * @param {lunr.Vector} otherVector - The other vector to calculate the - * similarity with. - * @returns {Number} - */ -lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / this.magnitude() || 0 -} - -/** - * Converts the vector to an array of the elements within the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toArray = function () { - var output = new Array (this.elements.length / 2) - - for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { - output[j] = this.elements[i] - } - - return output -} - -/** - * A JSON serializable representation of the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toJSON = function () { - return this.elements -} -/* eslint-disable */ -/*! - * lunr.stemmer - * Copyright (C) 2019 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/** - * lunr.stemmer is an english language stemmer, this is a JavaScript - * implementation of the PorterStemmer taken from http://tartarus.org/~martin - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token - The string to stem - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - * @function - */ -lunr.stemmer = (function(){ - var step2list = { - "ational" : "ate", - "tional" : "tion", - "enci" : "ence", - "anci" : "ance", - "izer" : "ize", - "bli" : "ble", - "alli" : "al", - "entli" : "ent", - "eli" : "e", - "ousli" : "ous", - "ization" : "ize", - "ation" : "ate", - "ator" : "ate", - "alism" : "al", - "iveness" : "ive", - "fulness" : "ful", - "ousness" : "ous", - "aliti" : "al", - "iviti" : "ive", - "biliti" : "ble", - "logi" : "log" - }, - - step3list = { - "icate" : "ic", - "ative" : "", - "alize" : "al", - "iciti" : "ic", - "ical" : "ic", - "ful" : "", - "ness" : "" - }, - - c = "[^aeiou]", // consonant - v = "[aeiouy]", // vowel - C = c + "[^aeiouy]*", // consonant sequence - V = v + "[aeiou]*", // vowel sequence - - mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 - meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 - mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 - s_v = "^(" + C + ")?" + v; // vowel in stem - - var re_mgr0 = new RegExp(mgr0); - var re_mgr1 = new RegExp(mgr1); - var re_meq1 = new RegExp(meq1); - var re_s_v = new RegExp(s_v); - - var re_1a = /^(.+?)(ss|i)es$/; - var re2_1a = /^(.+?)([^s])s$/; - var re_1b = /^(.+?)eed$/; - var re2_1b = /^(.+?)(ed|ing)$/; - var re_1b_2 = /.$/; - var re2_1b_2 = /(at|bl|iz)$/; - var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); - var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var re_1c = /^(.+?[^aeiou])y$/; - var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - - var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - - var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - var re2_4 = /^(.+?)(s|t)(ion)$/; - - var re_5 = /^(.+?)e$/; - var re_5_1 = /ll$/; - var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var porterStemmer = function porterStemmer(w) { - var stem, - suffix, - firstch, - re, - re2, - re3, - re4; - - if (w.length < 3) { return w; } - - firstch = w.substr(0,1); - if (firstch == "y") { - w = firstch.toUpperCase() + w.substr(1); - } - - // Step 1a - re = re_1a - re2 = re2_1a; - - if (re.test(w)) { w = w.replace(re,"$1$2"); } - else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } - - // Step 1b - re = re_1b; - re2 = re2_1b; - if (re.test(w)) { - var fp = re.exec(w); - re = re_mgr0; - if (re.test(fp[1])) { - re = re_1b_2; - w = w.replace(re,""); - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = re_s_v; - if (re2.test(stem)) { - w = stem; - re2 = re2_1b_2; - re3 = re3_1b_2; - re4 = re4_1b_2; - if (re2.test(w)) { w = w + "e"; } - else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } - else if (re4.test(w)) { w = w + "e"; } - } - } - - // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) - re = re_1c; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - w = stem + "i"; - } - - // Step 2 - re = re_2; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step2list[suffix]; - } - } - - // Step 3 - re = re_3; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step3list[suffix]; - } - } - - // Step 4 - re = re_4; - re2 = re2_4; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - if (re.test(stem)) { - w = stem; - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = re_mgr1; - if (re2.test(stem)) { - w = stem; - } - } - - // Step 5 - re = re_5; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - re2 = re_meq1; - re3 = re3_5; - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { - w = stem; - } - } - - re = re_5_1; - re2 = re_mgr1; - if (re.test(w) && re2.test(w)) { - re = re_1b_2; - w = w.replace(re,""); - } - - // and turn initial Y back to y - - if (firstch == "y") { - w = firstch.toLowerCase() + w.substr(1); - } - - return w; - }; - - return function (token) { - return token.update(porterStemmer); - } -})(); - -lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') -/*! - * lunr.stopWordFilter - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.generateStopWordFilter builds a stopWordFilter function from the provided - * list of stop words. - * - * The built in lunr.stopWordFilter is built using this generator and can be used - * to generate custom stopWordFilters for applications or non English languages. - * - * @function - * @param {Array} token The token to pass through the filter - * @returns {lunr.PipelineFunction} - * @see lunr.Pipeline - * @see lunr.stopWordFilter - */ -lunr.generateStopWordFilter = function (stopWords) { - var words = stopWords.reduce(function (memo, stopWord) { - memo[stopWord] = stopWord - return memo - }, {}) - - return function (token) { - if (token && words[token.toString()] !== token.toString()) return token - } -} - -/** - * lunr.stopWordFilter is an English language stop word list filter, any words - * contained in the list will not be passed through the filter. - * - * This is intended to be used in the Pipeline. If the token does not pass the - * filter then undefined will be returned. - * - * @function - * @implements {lunr.PipelineFunction} - * @params {lunr.Token} token - A token to check for being a stop word. - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - */ -lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'all', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'any', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'do', - 'does', - 'either', - 'else', - 'ever', - 'every', - 'for', - 'from', - 'get', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'in', - 'into', - 'is', - 'it', - 'its', - 'just', - 'least', - 'let', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'where', - 'which', - 'while', - 'who', - 'whom', - 'why', - 'will', - 'with', - 'would', - 'yet', - 'you', - 'your' -]) - -lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') -/*! - * lunr.trimmer - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.trimmer is a pipeline function for trimming non word - * characters from the beginning and end of tokens before they - * enter the index. - * - * This implementation may not work correctly for non latin - * characters and should either be removed or adapted for use - * with languages with non-latin characters. - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token The token to pass through the filter - * @returns {lunr.Token} - * @see lunr.Pipeline - */ -lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^\W+/, '').replace(/\W+$/, '') - }) -} - -lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') -/*! - * lunr.TokenSet - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A token set is used to store the unique list of all tokens - * within an index. Token sets are also used to represent an - * incoming query to the index, this query token set and index - * token set are then intersected to find which tokens to look - * up in the inverted index. - * - * A token set can hold multiple tokens, as in the case of the - * index token set, or it can hold a single token as in the - * case of a simple query token set. - * - * Additionally token sets are used to perform wildcard matching. - * Leading, contained and trailing wildcards are supported, and - * from this edit distance matching can also be provided. - * - * Token sets are implemented as a minimal finite state automata, - * where both common prefixes and suffixes are shared between tokens. - * This helps to reduce the space used for storing the token set. - * - * @constructor - */ -lunr.TokenSet = function () { - this.final = false - this.edges = {} - this.id = lunr.TokenSet._nextId - lunr.TokenSet._nextId += 1 -} - -/** - * Keeps track of the next, auto increment, identifier to assign - * to a new tokenSet. - * - * TokenSets require a unique identifier to be correctly minimised. - * - * @private - */ -lunr.TokenSet._nextId = 1 - -/** - * Creates a TokenSet instance from the given sorted array of words. - * - * @param {String[]} arr - A sorted array of strings to create the set from. - * @returns {lunr.TokenSet} - * @throws Will throw an error if the input array is not sorted. - */ -lunr.TokenSet.fromArray = function (arr) { - var builder = new lunr.TokenSet.Builder - - for (var i = 0, len = arr.length; i < len; i++) { - builder.insert(arr[i]) - } - - builder.finish() - return builder.root -} - -/** - * Creates a token set from a query clause. - * - * @private - * @param {Object} clause - A single clause from lunr.Query. - * @param {string} clause.term - The query clause term. - * @param {number} [clause.editDistance] - The optional edit distance for the term. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromClause = function (clause) { - if ('editDistance' in clause) { - return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) - } else { - return lunr.TokenSet.fromString(clause.term) - } -} - -/** - * Creates a token set representing a single string with a specified - * edit distance. - * - * Insertions, deletions, substitutions and transpositions are each - * treated as an edit distance of 1. - * - * Increasing the allowed edit distance will have a dramatic impact - * on the performance of both creating and intersecting these TokenSets. - * It is advised to keep the edit distance less than 3. - * - * @param {string} str - The string to create the token set from. - * @param {number} editDistance - The allowed edit distance to match. - * @returns {lunr.Vector} - */ -lunr.TokenSet.fromFuzzyString = function (str, editDistance) { - var root = new lunr.TokenSet - - var stack = [{ - node: root, - editsRemaining: editDistance, - str: str - }] - - while (stack.length) { - var frame = stack.pop() - - // no edit - if (frame.str.length > 0) { - var char = frame.str.charAt(0), - noEditNode - - if (char in frame.node.edges) { - noEditNode = frame.node.edges[char] - } else { - noEditNode = new lunr.TokenSet - frame.node.edges[char] = noEditNode - } - - if (frame.str.length == 1) { - noEditNode.final = true - } - - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) - } - - if (frame.editsRemaining == 0) { - continue - } - - // insertion - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode - } - - if (frame.str.length == 0) { - insertionNode.final = true - } - - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - - // deletion - // can only do a deletion if we have enough edits remaining - // and if there are characters left to delete in the string - if (frame.str.length > 1) { - stack.push({ - node: frame.node, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // deletion - // just removing the last character from the str - if (frame.str.length == 1) { - frame.node.final = true - } - - // substitution - // can only do a substitution if we have enough edits remaining - // and if there are characters left to substitute - if (frame.str.length >= 1) { - if ("*" in frame.node.edges) { - var substitutionNode = frame.node.edges["*"] - } else { - var substitutionNode = new lunr.TokenSet - frame.node.edges["*"] = substitutionNode - } - - if (frame.str.length == 1) { - substitutionNode.final = true - } - - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // transposition - // can only do a transposition if there are edits remaining - // and there are enough characters to transpose - if (frame.str.length > 1) { - var charA = frame.str.charAt(0), - charB = frame.str.charAt(1), - transposeNode - - if (charB in frame.node.edges) { - transposeNode = frame.node.edges[charB] - } else { - transposeNode = new lunr.TokenSet - frame.node.edges[charB] = transposeNode - } - - if (frame.str.length == 1) { - transposeNode.final = true - } - - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) - } - } - - return root -} - -/** - * Creates a TokenSet from a string. - * - * The string may contain one or more wildcard characters (*) - * that will allow wildcard matching when intersecting with - * another TokenSet. - * - * @param {string} str - The string to create a TokenSet from. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromString = function (str) { - var node = new lunr.TokenSet, - root = node - - /* - * Iterates through all characters within the passed string - * appending a node for each character. - * - * When a wildcard character is found then a self - * referencing edge is introduced to continually match - * any number of any characters. - */ - for (var i = 0, len = str.length; i < len; i++) { - var char = str[i], - final = (i == len - 1) - - if (char == "*") { - node.edges[char] = node - node.final = final - - } else { - var next = new lunr.TokenSet - next.final = final - - node.edges[char] = next - node = next - } - } - - return root -} - -/** - * Converts this TokenSet into an array of strings - * contained within the TokenSet. - * - * This is not intended to be used on a TokenSet that - * contains wildcards, in these cases the results are - * undefined and are likely to cause an infinite loop. - * - * @returns {string[]} - */ -lunr.TokenSet.prototype.toArray = function () { - var words = [] - - var stack = [{ - prefix: "", - node: this - }] - - while (stack.length) { - var frame = stack.pop(), - edges = Object.keys(frame.node.edges), - len = edges.length - - if (frame.node.final) { - /* In Safari, at this point the prefix is sometimes corrupted, see: - * https://github.com/olivernn/lunr.js/issues/279 Calling any - * String.prototype method forces Safari to "cast" this string to what - * it's supposed to be, fixing the bug. */ - frame.prefix.charAt(0) - words.push(frame.prefix) - } - - for (var i = 0; i < len; i++) { - var edge = edges[i] - - stack.push({ - prefix: frame.prefix.concat(edge), - node: frame.node.edges[edge] - }) - } - } - - return words -} - -/** - * Generates a string representation of a TokenSet. - * - * This is intended to allow TokenSets to be used as keys - * in objects, largely to aid the construction and minimisation - * of a TokenSet. As such it is not designed to be a human - * friendly representation of the TokenSet. - * - * @returns {string} - */ -lunr.TokenSet.prototype.toString = function () { - // NOTE: Using Object.keys here as this.edges is very likely - // to enter 'hash-mode' with many keys being added - // - // avoiding a for-in loop here as it leads to the function - // being de-optimised (at least in V8). From some simple - // benchmarks the performance is comparable, but allowing - // V8 to optimize may mean easy performance wins in the future. - - if (this._str) { - return this._str - } - - var str = this.final ? '1' : '0', - labels = Object.keys(this.edges).sort(), - len = labels.length - - for (var i = 0; i < len; i++) { - var label = labels[i], - node = this.edges[label] - - str = str + label + node.id - } - - return str -} - -/** - * Returns a new TokenSet that is the intersection of - * this TokenSet and the passed TokenSet. - * - * This intersection will take into account any wildcards - * contained within the TokenSet. - * - * @param {lunr.TokenSet} b - An other TokenSet to intersect with. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.prototype.intersect = function (b) { - var output = new lunr.TokenSet, - frame = undefined - - var stack = [{ - qNode: b, - output: output, - node: this - }] - - while (stack.length) { - frame = stack.pop() - - // NOTE: As with the #toString method, we are using - // Object.keys and a for loop instead of a for-in loop - // as both of these objects enter 'hash' mode, causing - // the function to be de-optimised in V8 - var qEdges = Object.keys(frame.qNode.edges), - qLen = qEdges.length, - nEdges = Object.keys(frame.node.edges), - nLen = nEdges.length - - for (var q = 0; q < qLen; q++) { - var qEdge = qEdges[q] - - for (var n = 0; n < nLen; n++) { - var nEdge = nEdges[n] - - if (nEdge == qEdge || qEdge == '*') { - var node = frame.node.edges[nEdge], - qNode = frame.qNode.edges[qEdge], - final = node.final && qNode.final, - next = undefined - - if (nEdge in frame.output.edges) { - // an edge already exists for this character - // no need to create a new node, just set the finality - // bit unless this node is already final - next = frame.output.edges[nEdge] - next.final = next.final || final - - } else { - // no edge exists yet, must create one - // set the finality bit and insert it - // into the output - next = new lunr.TokenSet - next.final = final - frame.output.edges[nEdge] = next - } - - stack.push({ - qNode: qNode, - output: next, - node: node - }) - } - } - } - } - - return output -} -lunr.TokenSet.Builder = function () { - this.previousWord = "" - this.root = new lunr.TokenSet - this.uncheckedNodes = [] - this.minimizedNodes = {} -} - -lunr.TokenSet.Builder.prototype.insert = function (word) { - var node, - commonPrefix = 0 - - if (word < this.previousWord) { - throw new Error ("Out of order word insertion") - } - - for (var i = 0; i < word.length && i < this.previousWord.length; i++) { - if (word[i] != this.previousWord[i]) break - commonPrefix++ - } - - this.minimize(commonPrefix) - - if (this.uncheckedNodes.length == 0) { - node = this.root - } else { - node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child - } - - for (var i = commonPrefix; i < word.length; i++) { - var nextNode = new lunr.TokenSet, - char = word[i] - - node.edges[char] = nextNode - - this.uncheckedNodes.push({ - parent: node, - char: char, - child: nextNode - }) - - node = nextNode - } - - node.final = true - this.previousWord = word -} - -lunr.TokenSet.Builder.prototype.finish = function () { - this.minimize(0) -} - -lunr.TokenSet.Builder.prototype.minimize = function (downTo) { - for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { - var node = this.uncheckedNodes[i], - childKey = node.child.toString() - - if (childKey in this.minimizedNodes) { - node.parent.edges[node.char] = this.minimizedNodes[childKey] - } else { - // Cache the key for this node since - // we know it can't change anymore - node.child._str = childKey - - this.minimizedNodes[childKey] = node.child - } - - this.uncheckedNodes.pop() - } -} -/*! - * lunr.Index - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * An index contains the built index of all documents and provides a query interface - * to the index. - * - * Usually instances of lunr.Index will not be created using this constructor, instead - * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be - * used to load previously built and serialized indexes. - * - * @constructor - * @param {Object} attrs - The attributes of the built search index. - * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.fieldVectors - Field vectors - * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. - * @param {string[]} attrs.fields - The names of indexed document fields. - * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. - */ -lunr.Index = function (attrs) { - this.invertedIndex = attrs.invertedIndex - this.fieldVectors = attrs.fieldVectors - this.tokenSet = attrs.tokenSet - this.fields = attrs.fields - this.pipeline = attrs.pipeline -} - -/** - * A result contains details of a document matching a search query. - * @typedef {Object} lunr.Index~Result - * @property {string} ref - The reference of the document this result represents. - * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. - * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. - */ - -/** - * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple - * query language which itself is parsed into an instance of lunr.Query. - * - * For programmatically building queries it is advised to directly use lunr.Query, the query language - * is best used for human entered text rather than program generated text. - * - * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported - * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' - * or 'world', though those that contain both will rank higher in the results. - * - * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can - * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding - * wildcards will increase the number of documents that will be found but can also have a negative - * impact on query performance, especially with wildcards at the beginning of a term. - * - * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term - * hello in the title field will match this query. Using a field not present in the index will lead - * to an error being thrown. - * - * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term - * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported - * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. - * Avoid large values for edit distance to improve query performance. - * - * Each term also supports a presence modifier. By default a term's presence in document is optional, however - * this can be changed to either required or prohibited. For a term's presence to be required in a document the - * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and - * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not - * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. - * - * To escape special characters the backslash character '\' can be used, this allows searches to include - * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead - * of attempting to apply a boost of 2 to the search term "foo". - * - * @typedef {string} lunr.Index~QueryString - * @example Simple single term query - * hello - * @example Multiple term query - * hello world - * @example term scoped to a field - * title:hello - * @example term with a boost of 10 - * hello^10 - * @example term with an edit distance of 2 - * hello~2 - * @example terms with presence modifiers - * -foo +bar baz - */ - -/** - * Performs a search against the index using lunr query syntax. - * - * Results will be returned sorted by their score, the most relevant results - * will be returned first. For details on how the score is calculated, please see - * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. - * - * For more programmatic querying use lunr.Index#query. - * - * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. - * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.search = function (queryString) { - return this.query(function (query) { - var parser = new lunr.QueryParser(queryString, query) - parser.parse() - }) -} - -/** - * A query builder callback provides a query object to be used to express - * the query to perform on the index. - * - * @callback lunr.Index~queryBuilder - * @param {lunr.Query} query - The query object to build up. - * @this lunr.Query - */ - -/** - * Performs a query against the index using the yielded lunr.Query object. - * - * If performing programmatic queries against the index, this method is preferred - * over lunr.Index#search so as to avoid the additional query parsing overhead. - * - * A query object is yielded to the supplied function which should be used to - * express the query to be run against the index. - * - * Note that although this function takes a callback parameter it is _not_ an - * asynchronous operation, the callback is just yielded a query object to be - * customized. - * - * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.query = function (fn) { - // for each query clause - // * process terms - // * expand terms from token set - // * find matching documents and metadata - // * get document vectors - // * score documents - - var query = new lunr.Query(this.fields), - matchingFields = Object.create(null), - queryVectors = Object.create(null), - termFieldCache = Object.create(null), - requiredMatches = Object.create(null), - prohibitedMatches = Object.create(null) - - /* - * To support field level boosts a query vector is created per - * field. An empty vector is eagerly created to support negated - * queries. - */ - for (var i = 0; i < this.fields.length; i++) { - queryVectors[this.fields[i]] = new lunr.Vector - } - - fn.call(query, query) - - for (var i = 0; i < query.clauses.length; i++) { - /* - * Unless the pipeline has been disabled for this term, which is - * the case for terms with wildcards, we need to pass the clause - * term through the search pipeline. A pipeline returns an array - * of processed terms. Pipeline functions may expand the passed - * term, which means we may end up performing multiple index lookups - * for a single query term. - */ - var clause = query.clauses[i], - terms = null, - clauseMatches = lunr.Set.complete - - if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term, { - fields: clause.fields - }) - } else { - terms = [clause.term] - } - - for (var m = 0; m < terms.length; m++) { - var term = terms[m] - - /* - * Each term returned from the pipeline needs to use the same query - * clause object, e.g. the same boost and or edit distance. The - * simplest way to do this is to re-use the clause object but mutate - * its term property. - */ - clause.term = term - - /* - * From the term in the clause we create a token set which will then - * be used to intersect the indexes token set to get a list of terms - * to lookup in the inverted index - */ - var termTokenSet = lunr.TokenSet.fromClause(clause), - expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() - - /* - * If a term marked as required does not exist in the tokenSet it is - * impossible for the search to return any matches. We set all the field - * scoped required matches set to empty and stop examining any further - * clauses. - */ - if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = lunr.Set.empty - } - - break - } - - for (var j = 0; j < expandedTerms.length; j++) { - /* - * For each term get the posting and termIndex, this is required for - * building the query vector. - */ - var expandedTerm = expandedTerms[j], - posting = this.invertedIndex[expandedTerm], - termIndex = posting._index - - for (var k = 0; k < clause.fields.length; k++) { - /* - * For each field that this query term is scoped by (by default - * all fields are in scope) we need to get all the document refs - * that have this term in that field. - * - * The posting is the entry in the invertedIndex for the matching - * term from above. - */ - var field = clause.fields[k], - fieldPosting = posting[field], - matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field, - matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) - - /* - * if the presence of this term is required ensure that the matching - * documents are added to the set of required matches for this clause. - * - */ - if (clause.presence == lunr.Query.presence.REQUIRED) { - clauseMatches = clauseMatches.union(matchingDocumentsSet) - - if (requiredMatches[field] === undefined) { - requiredMatches[field] = lunr.Set.complete - } - } - - /* - * if the presence of this term is prohibited ensure that the matching - * documents are added to the set of prohibited matches for this field, - * creating that set if it does not yet exist. - */ - if (clause.presence == lunr.Query.presence.PROHIBITED) { - if (prohibitedMatches[field] === undefined) { - prohibitedMatches[field] = lunr.Set.empty - } - - prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) - - /* - * Prohibited matches should not be part of the query vector used for - * similarity scoring and no metadata should be extracted so we continue - * to the next field - */ - continue - } - - /* - * The query field vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. - * Using upsert because there could already be an entry in the vector - * for the term we are working with. In that case we just add the scores - * together. - */ - queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) - - /** - * If we've already seen this term, field combo then we've already collected - * the matching documents and metadata, no need to go through all that again - */ - if (termFieldCache[termField]) { - continue - } - - for (var l = 0; l < matchingDocumentRefs.length; l++) { - /* - * All metadata for this term/field/document triple - * are then extracted and collected into an instance - * of lunr.MatchData ready to be returned in the query - * results - */ - var matchingDocumentRef = matchingDocumentRefs[l], - matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), - metadata = fieldPosting[matchingDocumentRef], - fieldMatch - - if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { - matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) - } else { - fieldMatch.add(expandedTerm, field, metadata) - } - - } - - termFieldCache[termField] = true - } - } - } - - /** - * If the presence was required we need to update the requiredMatches field sets. - * We do this after all fields for the term have collected their matches because - * the clause terms presence is required in _any_ of the fields not _all_ of the - * fields. - */ - if (clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) - } - } - } - - /** - * Need to combine the field scoped required and prohibited - * matching documents into a global set of required and prohibited - * matches - */ - var allRequiredMatches = lunr.Set.complete, - allProhibitedMatches = lunr.Set.empty - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i] - - if (requiredMatches[field]) { - allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) - } - - if (prohibitedMatches[field]) { - allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) - } - } - - var matchingFieldRefs = Object.keys(matchingFields), - results = [], - matches = Object.create(null) - - /* - * If the query is negated (contains only prohibited terms) - * we need to get _all_ fieldRefs currently existing in the - * index. This is only done when we know that the query is - * entirely prohibited terms to avoid any cost of getting all - * fieldRefs unnecessarily. - * - * Additionally, blank MatchData must be created to correctly - * populate the results. - */ - if (query.isNegated()) { - matchingFieldRefs = Object.keys(this.fieldVectors) - - for (var i = 0; i < matchingFieldRefs.length; i++) { - var matchingFieldRef = matchingFieldRefs[i] - var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) - matchingFields[matchingFieldRef] = new lunr.MatchData - } - } - - for (var i = 0; i < matchingFieldRefs.length; i++) { - /* - * Currently we have document fields that match the query, but we - * need to return documents. The matchData and scores are combined - * from multiple fields belonging to the same document. - * - * Scores are calculated by field, using the query vectors created - * above, and combined into a final document score using addition. - */ - var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef - - if (!allRequiredMatches.contains(docRef)) { - continue - } - - if (allProhibitedMatches.contains(docRef)) { - continue - } - - var fieldVector = this.fieldVectors[fieldRef], - score = queryVectors[fieldRef.fieldName].similarity(fieldVector), - docMatch - - if ((docMatch = matches[docRef]) !== undefined) { - docMatch.score += score - docMatch.matchData.combine(matchingFields[fieldRef]) - } else { - var match = { - ref: docRef, - score: score, - matchData: matchingFields[fieldRef] - } - matches[docRef] = match - results.push(match) - } - } - - /* - * Sort the results objects by score, highest first. - */ - return results.sort(function (a, b) { - return b.score - a.score - }) -} - -/** - * Prepares the index for JSON serialization. - * - * The schema for this JSON blob will be described in a - * separate JSON schema file. - * - * @returns {Object} - */ -lunr.Index.prototype.toJSON = function () { - var invertedIndex = Object.keys(this.invertedIndex) - .sort() - .map(function (term) { - return [term, this.invertedIndex[term]] - }, this) - - var fieldVectors = Object.keys(this.fieldVectors) - .map(function (ref) { - return [ref, this.fieldVectors[ref].toJSON()] - }, this) - - return { - version: lunr.version, - fields: this.fields, - fieldVectors: fieldVectors, - invertedIndex: invertedIndex, - pipeline: this.pipeline.toJSON() - } -} - -/** - * Loads a previously serialized lunr.Index - * - * @param {Object} serializedIndex - A previously serialized lunr.Index - * @returns {lunr.Index} - */ -lunr.Index.load = function (serializedIndex) { - var attrs = {}, - fieldVectors = {}, - serializedVectors = serializedIndex.fieldVectors, - invertedIndex = Object.create(null), - serializedInvertedIndex = serializedIndex.invertedIndex, - tokenSetBuilder = new lunr.TokenSet.Builder, - pipeline = lunr.Pipeline.load(serializedIndex.pipeline) - - if (serializedIndex.version != lunr.version) { - lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") - } - - for (var i = 0; i < serializedVectors.length; i++) { - var tuple = serializedVectors[i], - ref = tuple[0], - elements = tuple[1] - - fieldVectors[ref] = new lunr.Vector(elements) - } - - for (var i = 0; i < serializedInvertedIndex.length; i++) { - var tuple = serializedInvertedIndex[i], - term = tuple[0], - posting = tuple[1] - - tokenSetBuilder.insert(term) - invertedIndex[term] = posting - } - - tokenSetBuilder.finish() - - attrs.fields = serializedIndex.fields - - attrs.fieldVectors = fieldVectors - attrs.invertedIndex = invertedIndex - attrs.tokenSet = tokenSetBuilder.root - attrs.pipeline = pipeline - - return new lunr.Index(attrs) -} -/*! - * lunr.Builder - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.Builder performs indexing on a set of documents and - * returns instances of lunr.Index ready for querying. - * - * All configuration of the index is done via the builder, the - * fields to index, the document reference, the text processing - * pipeline and document scoring parameters are all set on the - * builder before indexing. - * - * @constructor - * @property {string} _ref - Internal reference to the document reference field. - * @property {string[]} _fields - Internal reference to the document fields to index. - * @property {object} invertedIndex - The inverted index maps terms to document fields. - * @property {object} documentTermFrequencies - Keeps track of document term frequencies. - * @property {object} documentLengths - Keeps track of the length of documents added to the index. - * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. - * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. - * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. - * @property {number} documentCount - Keeps track of the total number of documents indexed. - * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. - * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. - * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. - * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. - */ -lunr.Builder = function () { - this._ref = "id" - this._fields = Object.create(null) - this._documents = Object.create(null) - this.invertedIndex = Object.create(null) - this.fieldTermFrequencies = {} - this.fieldLengths = {} - this.tokenizer = lunr.tokenizer - this.pipeline = new lunr.Pipeline - this.searchPipeline = new lunr.Pipeline - this.documentCount = 0 - this._b = 0.75 - this._k1 = 1.2 - this.termIndex = 0 - this.metadataWhitelist = [] -} - -/** - * Sets the document field used as the document reference. Every document must have this field. - * The type of this field in the document should be a string, if it is not a string it will be - * coerced into a string by calling toString. - * - * The default ref is 'id'. - * - * The ref should _not_ be changed during indexing, it should be set before any documents are - * added to the index. Changing it during indexing can lead to inconsistent results. - * - * @param {string} ref - The name of the reference field in the document. - */ -lunr.Builder.prototype.ref = function (ref) { - this._ref = ref -} - -/** - * A function that is used to extract a field from a document. - * - * Lunr expects a field to be at the top level of a document, if however the field - * is deeply nested within a document an extractor function can be used to extract - * the right field for indexing. - * - * @callback fieldExtractor - * @param {object} doc - The document being added to the index. - * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. - * @example Extracting a nested field - * function (doc) { return doc.nested.field } - */ - -/** - * Adds a field to the list of document fields that will be indexed. Every document being - * indexed should have this field. Null values for this field in indexed documents will - * not cause errors but will limit the chance of that document being retrieved by searches. - * - * All fields should be added before adding documents to the index. Adding fields after - * a document has been indexed will have no effect on already indexed documents. - * - * Fields can be boosted at build time. This allows terms within that field to have more - * importance when ranking search results. Use a field boost to specify that matches within - * one field are more important than other fields. - * - * @param {string} fieldName - The name of a field to index in all documents. - * @param {object} attributes - Optional attributes associated with this field. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. - * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. - * @throws {RangeError} fieldName cannot contain unsupported characters '/' - */ -lunr.Builder.prototype.field = function (fieldName, attributes) { - if (/\//.test(fieldName)) { - throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") - } - - this._fields[fieldName] = attributes || {} -} - -/** - * A parameter to tune the amount of field length normalisation that is applied when - * calculating relevance scores. A value of 0 will completely disable any normalisation - * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b - * will be clamped to the range 0 - 1. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.b = function (number) { - if (number < 0) { - this._b = 0 - } else if (number > 1) { - this._b = 1 - } else { - this._b = number - } -} - -/** - * A parameter that controls the speed at which a rise in term frequency results in term - * frequency saturation. The default value is 1.2. Setting this to a higher value will give - * slower saturation levels, a lower value will result in quicker saturation. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.k1 = function (number) { - this._k1 = number -} - -/** - * Adds a document to the index. - * - * Before adding fields to the index the index should have been fully setup, with the document - * ref and all fields to index already having been specified. - * - * The document must have a field name as specified by the ref (by default this is 'id') and - * it should have all fields defined for indexing, though null or undefined values will not - * cause errors. - * - * Entire documents can be boosted at build time. Applying a boost to a document indicates that - * this document should rank higher in search results than other documents. - * - * @param {object} doc - The document to add to the index. - * @param {object} attributes - Optional attributes associated with this document. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. - */ -lunr.Builder.prototype.add = function (doc, attributes) { - var docRef = doc[this._ref], - fields = Object.keys(this._fields) - - this._documents[docRef] = attributes || {} - this.documentCount += 1 - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i], - extractor = this._fields[fieldName].extractor, - field = extractor ? extractor(doc) : doc[fieldName], - tokens = this.tokenizer(field, { - fields: [fieldName] - }), - terms = this.pipeline.run(tokens), - fieldRef = new lunr.FieldRef (docRef, fieldName), - fieldTerms = Object.create(null) - - this.fieldTermFrequencies[fieldRef] = fieldTerms - this.fieldLengths[fieldRef] = 0 - - // store the length of this field for this document - this.fieldLengths[fieldRef] += terms.length - - // calculate term frequencies for this field - for (var j = 0; j < terms.length; j++) { - var term = terms[j] - - if (fieldTerms[term] == undefined) { - fieldTerms[term] = 0 - } - - fieldTerms[term] += 1 - - // add to inverted index - // create an initial posting if one doesn't exist - if (this.invertedIndex[term] == undefined) { - var posting = Object.create(null) - posting["_index"] = this.termIndex - this.termIndex += 1 - - for (var k = 0; k < fields.length; k++) { - posting[fields[k]] = Object.create(null) - } - - this.invertedIndex[term] = posting - } - - // add an entry for this term/fieldName/docRef to the invertedIndex - if (this.invertedIndex[term][fieldName][docRef] == undefined) { - this.invertedIndex[term][fieldName][docRef] = Object.create(null) - } - - // store all whitelisted metadata about this token in the - // inverted index - for (var l = 0; l < this.metadataWhitelist.length; l++) { - var metadataKey = this.metadataWhitelist[l], - metadata = term.metadata[metadataKey] - - if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { - this.invertedIndex[term][fieldName][docRef][metadataKey] = [] - } - - this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) - } - } - - } -} - -/** - * Calculates the average document length for this index - * - * @private - */ -lunr.Builder.prototype.calculateAverageFieldLengths = function () { - - var fieldRefs = Object.keys(this.fieldLengths), - numberOfFields = fieldRefs.length, - accumulator = {}, - documentsWithField = {} - - for (var i = 0; i < numberOfFields; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName - - documentsWithField[field] || (documentsWithField[field] = 0) - documentsWithField[field] += 1 - - accumulator[field] || (accumulator[field] = 0) - accumulator[field] += this.fieldLengths[fieldRef] - } - - var fields = Object.keys(this._fields) - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i] - accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] - } - - this.averageFieldLength = accumulator -} - -/** - * Builds a vector space model of every document using lunr.Vector - * - * @private - */ -lunr.Builder.prototype.createFieldVectors = function () { - var fieldVectors = {}, - fieldRefs = Object.keys(this.fieldTermFrequencies), - fieldRefsLength = fieldRefs.length, - termIdfCache = Object.create(null) - - for (var i = 0; i < fieldRefsLength; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - fieldName = fieldRef.fieldName, - fieldLength = this.fieldLengths[fieldRef], - fieldVector = new lunr.Vector, - termFrequencies = this.fieldTermFrequencies[fieldRef], - terms = Object.keys(termFrequencies), - termsLength = terms.length - - - var fieldBoost = this._fields[fieldName].boost || 1, - docBoost = this._documents[fieldRef.docRef].boost || 1 - - for (var j = 0; j < termsLength; j++) { - var term = terms[j], - tf = termFrequencies[term], - termIndex = this.invertedIndex[term]._index, - idf, score, scoreWithPrecision - - if (termIdfCache[term] === undefined) { - idf = lunr.idf(this.invertedIndex[term], this.documentCount) - termIdfCache[term] = idf - } else { - idf = termIdfCache[term] - } - - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) - score *= fieldBoost - score *= docBoost - scoreWithPrecision = Math.round(score * 1000) / 1000 - // Converts 1.23456789 to 1.234. - // Reducing the precision so that the vectors take up less - // space when serialised. Doing it now so that they behave - // the same before and after serialisation. Also, this is - // the fastest approach to reducing a number's precision in - // JavaScript. - - fieldVector.insert(termIndex, scoreWithPrecision) - } - - fieldVectors[fieldRef] = fieldVector - } - - this.fieldVectors = fieldVectors -} - -/** - * Creates a token set of all tokens in the index using lunr.TokenSet - * - * @private - */ -lunr.Builder.prototype.createTokenSet = function () { - this.tokenSet = lunr.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort() - ) -} - -/** - * Builds the index, creating an instance of lunr.Index. - * - * This completes the indexing process and should only be called - * once all documents have been added to the index. - * - * @returns {lunr.Index} - */ -lunr.Builder.prototype.build = function () { - this.calculateAverageFieldLengths() - this.createFieldVectors() - this.createTokenSet() - - return new lunr.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline - }) -} - -/** - * Applies a plugin to the index builder. - * - * A plugin is a function that is called with the index builder as its context. - * Plugins can be used to customise or extend the behaviour of the index - * in some way. A plugin is just a function, that encapsulated the custom - * behaviour that should be applied when building the index. - * - * The plugin function will be called with the index builder as its argument, additional - * arguments can also be passed when calling use. The function will be called - * with the index builder as its context. - * - * @param {Function} plugin The plugin to apply. - */ -lunr.Builder.prototype.use = function (fn) { - var args = Array.prototype.slice.call(arguments, 1) - args.unshift(this) - fn.apply(this, args) -} -/** - * Contains and collects metadata about a matching document. - * A single instance of lunr.MatchData is returned as part of every - * lunr.Index~Result. - * - * @constructor - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - * @property {object} metadata - A cloned collection of metadata associated with this document. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData = function (term, field, metadata) { - var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata || {}) - - // Cloning the metadata to prevent the original - // being mutated during match data combination. - // Metadata is kept in an array within the inverted - // index so cloning the data can be done with - // Array#slice - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - clonedMetadata[key] = metadata[key].slice() - } - - this.metadata = Object.create(null) - - if (term !== undefined) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata - } -} - -/** - * An instance of lunr.MatchData will be created for every term that matches a - * document. However only one instance is required in a lunr.Index~Result. This - * method combines metadata from another instance of lunr.MatchData with this - * objects metadata. - * - * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData.prototype.combine = function (otherMatchData) { - var terms = Object.keys(otherMatchData.metadata) - - for (var i = 0; i < terms.length; i++) { - var term = terms[i], - fields = Object.keys(otherMatchData.metadata[term]) - - if (this.metadata[term] == undefined) { - this.metadata[term] = Object.create(null) - } - - for (var j = 0; j < fields.length; j++) { - var field = fields[j], - keys = Object.keys(otherMatchData.metadata[term][field]) - - if (this.metadata[term][field] == undefined) { - this.metadata[term][field] = Object.create(null) - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k] - - if (this.metadata[term][field][key] == undefined) { - this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] - } else { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) - } - - } - } - } -} - -/** - * Add metadata for a term/field pair to this instance of match data. - * - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - */ -lunr.MatchData.prototype.add = function (term, field, metadata) { - if (!(term in this.metadata)) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = metadata - return - } - - if (!(field in this.metadata[term])) { - this.metadata[term][field] = metadata - return - } - - var metadataKeys = Object.keys(metadata) - - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - - if (key in this.metadata[term][field]) { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) - } else { - this.metadata[term][field][key] = metadata[key] - } - } -} -/** - * A lunr.Query provides a programmatic way of defining queries to be performed - * against a {@link lunr.Index}. - * - * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method - * so the query object is pre-initialized with the right index fields. - * - * @constructor - * @property {lunr.Query~Clause[]} clauses - An array of query clauses. - * @property {string[]} allFields - An array of all available fields in a lunr.Index. - */ -lunr.Query = function (allFields) { - this.clauses = [] - this.allFields = allFields -} - -/** - * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. - * - * This allows wildcards to be added to the beginning and end of a term without having to manually do any string - * concatenation. - * - * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. - * - * @constant - * @default - * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour - * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists - * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with trailing wildcard - * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) - * @example query term with leading and trailing wildcard - * query.term('foo', { - * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING - * }) - */ - -lunr.Query.wildcard = new String ("*") -lunr.Query.wildcard.NONE = 0 -lunr.Query.wildcard.LEADING = 1 -lunr.Query.wildcard.TRAILING = 2 - -/** - * Constants for indicating what kind of presence a term must have in matching documents. - * - * @constant - * @enum {number} - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with required presence - * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) - */ -lunr.Query.presence = { - /** - * Term's presence in a document is optional, this is the default value. - */ - OPTIONAL: 1, - - /** - * Term's presence in a document is required, documents that do not contain - * this term will not be returned. - */ - REQUIRED: 2, - - /** - * Term's presence in a document is prohibited, documents that do contain - * this term will not be returned. - */ - PROHIBITED: 3 -} - -/** - * A single clause in a {@link lunr.Query} contains a term and details on how to - * match that term against a {@link lunr.Index}. - * - * @typedef {Object} lunr.Query~Clause - * @property {string[]} fields - The fields in an index this clause should be matched against. - * @property {number} [boost=1] - Any boost that should be applied when matching this clause. - * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. - * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. - * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. - */ - -/** - * Adds a {@link lunr.Query~Clause} to this query. - * - * Unless the clause contains the fields to be matched all fields will be matched. In addition - * a default boost of 1 is applied to the clause. - * - * @param {lunr.Query~Clause} clause - The clause to add to this query. - * @see lunr.Query~Clause - * @returns {lunr.Query} - */ -lunr.Query.prototype.clause = function (clause) { - if (!('fields' in clause)) { - clause.fields = this.allFields - } - - if (!('boost' in clause)) { - clause.boost = 1 - } - - if (!('usePipeline' in clause)) { - clause.usePipeline = true - } - - if (!('wildcard' in clause)) { - clause.wildcard = lunr.Query.wildcard.NONE - } - - if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { - clause.term = "*" + clause.term - } - - if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { - clause.term = "" + clause.term + "*" - } - - if (!('presence' in clause)) { - clause.presence = lunr.Query.presence.OPTIONAL - } - - this.clauses.push(clause) - - return this -} - -/** - * A negated query is one in which every clause has a presence of - * prohibited. These queries require some special processing to return - * the expected results. - * - * @returns boolean - */ -lunr.Query.prototype.isNegated = function () { - for (var i = 0; i < this.clauses.length; i++) { - if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { - return false - } - } - - return true -} - -/** - * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} - * to the list of clauses that make up this query. - * - * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion - * to a token or token-like string should be done before calling this method. - * - * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an - * array, each term in the array will share the same options. - * - * @param {object|object[]} term - The term(s) to add to the query. - * @param {object} [options] - Any additional properties to add to the query clause. - * @returns {lunr.Query} - * @see lunr.Query#clause - * @see lunr.Query~Clause - * @example adding a single term to a query - * query.term("foo") - * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard - * query.term("foo", { - * fields: ["title"], - * boost: 10, - * wildcard: lunr.Query.wildcard.TRAILING - * }) - * @example using lunr.tokenizer to convert a string to tokens before using them as terms - * query.term(lunr.tokenizer("foo bar")) - */ -lunr.Query.prototype.term = function (term, options) { - if (Array.isArray(term)) { - term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) - return this - } - - var clause = options || {} - clause.term = term.toString() - - this.clause(clause) - - return this -} -lunr.QueryParseError = function (message, start, end) { - this.name = "QueryParseError" - this.message = message - this.start = start - this.end = end -} - -lunr.QueryParseError.prototype = new Error -lunr.QueryLexer = function (str) { - this.lexemes = [] - this.str = str - this.length = str.length - this.pos = 0 - this.start = 0 - this.escapeCharPositions = [] -} - -lunr.QueryLexer.prototype.run = function () { - var state = lunr.QueryLexer.lexText - - while (state) { - state = state(this) - } -} - -lunr.QueryLexer.prototype.sliceString = function () { - var subSlices = [], - sliceStart = this.start, - sliceEnd = this.pos - - for (var i = 0; i < this.escapeCharPositions.length; i++) { - sliceEnd = this.escapeCharPositions[i] - subSlices.push(this.str.slice(sliceStart, sliceEnd)) - sliceStart = sliceEnd + 1 - } - - subSlices.push(this.str.slice(sliceStart, this.pos)) - this.escapeCharPositions.length = 0 - - return subSlices.join('') -} - -lunr.QueryLexer.prototype.emit = function (type) { - this.lexemes.push({ - type: type, - str: this.sliceString(), - start: this.start, - end: this.pos - }) - - this.start = this.pos -} - -lunr.QueryLexer.prototype.escapeCharacter = function () { - this.escapeCharPositions.push(this.pos - 1) - this.pos += 1 -} - -lunr.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) { - return lunr.QueryLexer.EOS - } - - var char = this.str.charAt(this.pos) - this.pos += 1 - return char -} - -lunr.QueryLexer.prototype.width = function () { - return this.pos - this.start -} - -lunr.QueryLexer.prototype.ignore = function () { - if (this.start == this.pos) { - this.pos += 1 - } - - this.start = this.pos -} - -lunr.QueryLexer.prototype.backup = function () { - this.pos -= 1 -} - -lunr.QueryLexer.prototype.acceptDigitRun = function () { - var char, charCode - - do { - char = this.next() - charCode = char.charCodeAt(0) - } while (charCode > 47 && charCode < 58) - - if (char != lunr.QueryLexer.EOS) { - this.backup() - } -} - -lunr.QueryLexer.prototype.more = function () { - return this.pos < this.length -} - -lunr.QueryLexer.EOS = 'EOS' -lunr.QueryLexer.FIELD = 'FIELD' -lunr.QueryLexer.TERM = 'TERM' -lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' -lunr.QueryLexer.BOOST = 'BOOST' -lunr.QueryLexer.PRESENCE = 'PRESENCE' - -lunr.QueryLexer.lexField = function (lexer) { - lexer.backup() - lexer.emit(lunr.QueryLexer.FIELD) - lexer.ignore() - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexTerm = function (lexer) { - if (lexer.width() > 1) { - lexer.backup() - lexer.emit(lunr.QueryLexer.TERM) - } - - lexer.ignore() - - if (lexer.more()) { - return lunr.QueryLexer.lexText - } -} - -lunr.QueryLexer.lexEditDistance = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexBoost = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.BOOST) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexEOS = function (lexer) { - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } -} - -// This matches the separator used when tokenising fields -// within a document. These should match otherwise it is -// not possible to search for some tokens within a document. -// -// It is possible for the user to change the separator on the -// tokenizer so it _might_ clash with any other of the special -// characters already used within the search string, e.g. :. -// -// This means that it is possible to change the separator in -// such a way that makes some words unsearchable using a search -// string. -lunr.QueryLexer.termSeparator = lunr.tokenizer.separator - -lunr.QueryLexer.lexText = function (lexer) { - while (true) { - var char = lexer.next() - - if (char == lunr.QueryLexer.EOS) { - return lunr.QueryLexer.lexEOS - } - - // Escape character is '\' - if (char.charCodeAt(0) == 92) { - lexer.escapeCharacter() - continue - } - - if (char == ":") { - return lunr.QueryLexer.lexField - } - - if (char == "~") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexEditDistance - } - - if (char == "^") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexBoost - } - - // "+" indicates term presence is required - // checking for length to ensure that only - // leading "+" are considered - if (char == "+" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - // "-" indicates term presence is prohibited - // checking for length to ensure that only - // leading "-" are considered - if (char == "-" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - if (char.match(lunr.QueryLexer.termSeparator)) { - return lunr.QueryLexer.lexTerm - } - } -} - -lunr.QueryParser = function (str, query) { - this.lexer = new lunr.QueryLexer (str) - this.query = query - this.currentClause = {} - this.lexemeIdx = 0 -} - -lunr.QueryParser.prototype.parse = function () { - this.lexer.run() - this.lexemes = this.lexer.lexemes - - var state = lunr.QueryParser.parseClause - - while (state) { - state = state(this) - } - - return this.query -} - -lunr.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx] -} - -lunr.QueryParser.prototype.consumeLexeme = function () { - var lexeme = this.peekLexeme() - this.lexemeIdx += 1 - return lexeme -} - -lunr.QueryParser.prototype.nextClause = function () { - var completedClause = this.currentClause - this.query.clause(completedClause) - this.currentClause = {} -} - -lunr.QueryParser.parseClause = function (parser) { - var lexeme = parser.peekLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.type) { - case lunr.QueryLexer.PRESENCE: - return lunr.QueryParser.parsePresence - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expected either a field or a term, found " + lexeme.type - - if (lexeme.str.length >= 1) { - errorMessage += " with value '" + lexeme.str + "'" - } - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } -} - -lunr.QueryParser.parsePresence = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.str) { - case "-": - parser.currentClause.presence = lunr.Query.presence.PROHIBITED - break - case "+": - parser.currentClause.presence = lunr.Query.presence.REQUIRED - break - default: - var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term or field, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseField = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - if (parser.query.allFields.indexOf(lexeme.str) == -1) { - var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), - errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.fields = [lexeme.str] - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseTerm = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - parser.currentClause.term = lexeme.str.toLowerCase() - - if (lexeme.str.indexOf("*") != -1) { - parser.currentClause.usePipeline = false - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseEditDistance = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var editDistance = parseInt(lexeme.str, 10) - - if (isNaN(editDistance)) { - var errorMessage = "edit distance must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.editDistance = editDistance - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseBoost = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var boost = parseInt(lexeme.str, 10) - - if (isNaN(boost)) { - var errorMessage = "boost must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.boost = boost - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - - /** - * export the module via AMD, CommonJS or as a browser global - * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js - */ - ;(function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : - __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) - } else {} - }(this, function () { - /** - * Just return a value to define the module export. - * This example returns an object, but the module - * can return a function as the exported value. - */ - return lunr - })) -})(); - - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -}; - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/search/_/index.ts": -/*!***************************************************************!*\ - !*** ./src/assets/javascripts/integrations/search/_/index.ts ***! - \***************************************************************/ -/*! exports provided: SearchIndex */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchIndex", function() { return SearchIndex; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../document */ "./src/assets/javascripts/integrations/search/document/index.ts"); -/* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../highlight */ "./src/assets/javascripts/integrations/search/highlight/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - -/* ---------------------------------------------------------------------------- - * Class - * ------------------------------------------------------------------------- */ -/** - * Search index - * - * Note that `lunr` is injected via Webpack, as it will otherwise also be - * bundled in the application bundle. - */ -var SearchIndex = /** @class */ (function () { - /** - * Create a search index - * - * @param options - Options - */ - function SearchIndex(_a) { - var config = _a.config, docs = _a.docs, pipeline = _a.pipeline, index = _a.index; - this.documents = Object(_document__WEBPACK_IMPORTED_MODULE_1__["setupSearchDocumentMap"])(docs); - this.highlight = Object(_highlight__WEBPACK_IMPORTED_MODULE_2__["setupSearchHighlighter"])(config); - /* If no index was given, create it */ - if (typeof index === "undefined") { - this.index = lunr(function () { - var _a, e_1, _b; - pipeline = pipeline || { - trimmer: true, - stopwords: true - }; - /* Remove stemmer, as it cripples search experience */ - this.pipeline.reset(); - if (pipeline.trimmer) - this.pipeline.add(lunr.trimmer); - if (pipeline.stopwords) - this.pipeline.add(lunr.stopWordFilter); - /* Set up alternate search languages */ - if (config.lang.length === 1 && config.lang[0] !== "en") { - this.use(lunr[config.lang[0]]); - } - else if (config.lang.length > 1) { - this.use((_a = lunr).multiLanguage.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(config.lang))); - } - /* Setup fields and reference */ - this.field("title", { boost: 10 }); - this.field("text"); - this.ref("location"); - try { - /* Index documents */ - for (var docs_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(docs), docs_1_1 = docs_1.next(); !docs_1_1.done; docs_1_1 = docs_1.next()) { - var doc = docs_1_1.value; - this.add(doc); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (docs_1_1 && !docs_1_1.done && (_b = docs_1.return)) _b.call(docs_1); - } - finally { if (e_1) throw e_1.error; } - } - }); - /* Prebuilt or serialized index */ - } - else { - this.index = lunr.Index.load(typeof index === "string" - ? JSON.parse(index) - : index); - } - } - /** - * Search for matching documents - * - * The search index which MkDocs provides is divided up into articles, which - * contain the whole content of the individual pages, and sections, which only - * contain the contents of the subsections obtained by breaking the individual - * pages up at `h1` ... `h6`. As there may be many sections on different pages - * with indentical titles (for example within this very project, e.g. "Usage" - * or "Installation"), they need to be put into the context of the containing - * page. For this reason, section results are grouped within their respective - * articles which are the top-level results that are returned. - * - * @param query - Query string - * - * @return Search results - */ - SearchIndex.prototype.search = function (query) { - var _this = this; - if (query) { - try { - /* Group sections by containing article */ - var groups = this.index.search(query) - .reduce(function (results, result) { - var document = _this.documents.get(result.ref); - if (typeof document !== "undefined") { - if ("parent" in document) { - var ref = document.parent.location; - results.set(ref, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(results.get(ref) || [], [result])); - } - else { - var ref = document.location; - results.set(ref, results.get(ref) || []); - } - } - return results; - }, new Map()); - /* Create highlighter for query */ - var fn_1 = this.highlight(query); - /* Map groups to search documents */ - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(groups).map(function (_a) { - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), ref = _b[0], sections = _b[1]; - return ({ - article: fn_1(_this.documents.get(ref)), - sections: sections.map(function (section) { - return fn_1(_this.documents.get(section.ref)); - }) - }); - }); - /* Log errors to console (for now) */ - } - catch (err) { - // tslint:disable-next-line no-console - console.warn("Invalid query: " + query + " \u2013 see https://bit.ly/2s3ChXG"); - } - } - /* Return nothing in case of error or empty query */ - return []; - }; - /** - * Serialize search index - * - * @return String representation - */ - SearchIndex.prototype.toString = function () { - return JSON.stringify(this.index); - }; - return SearchIndex; -}()); - - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/search/document/index.ts": -/*!**********************************************************************!*\ - !*** ./src/assets/javascripts/integrations/search/document/index.ts ***! - \**********************************************************************/ -/*! exports provided: setupSearchDocumentMap */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchDocumentMap", function() { return setupSearchDocumentMap; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! escape-html */ "./node_modules/escape-html/index.js"); -/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_1__); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Create a search document mapping - * - * @param docs - Search index documents - * - * @return Search document map - */ -function setupSearchDocumentMap(docs) { - var e_1, _a; - var documents = new Map(); - try { - for (var docs_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(docs), docs_1_1 = docs_1.next(); !docs_1_1.done; docs_1_1 = docs_1.next()) { - var doc = docs_1_1.value; - var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(doc.location.split("#"), 2), path = _b[0], hash = _b[1]; - /* Extract location and title */ - var location = doc.location; - var title = doc.title; - /* Escape and cleanup text */ - var text = escape_html__WEBPACK_IMPORTED_MODULE_1__(doc.text) - .replace(/\s+(?=[,.:;!?])/g, "") - .replace(/\s+/g, " "); - /* Handle section */ - if (hash) { - var parent = documents.get(path); - /* Ignore first section, override article */ - if (!parent.linked) { - parent.title = doc.title; - parent.text = text; - parent.linked = true; - /* Add subsequent section */ - } - else { - documents.set(location, { - location: location, - title: title, - text: text, - parent: parent - }); - } - /* Add article */ - } - else { - documents.set(location, { - location: location, - title: title, - text: text, - linked: false - }); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (docs_1_1 && !docs_1_1.done && (_a = docs_1.return)) _a.call(docs_1); - } - finally { if (e_1) throw e_1.error; } - } - return documents; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/search/highlight/index.ts": -/*!***********************************************************************!*\ - !*** ./src/assets/javascripts/integrations/search/highlight/index.ts ***! - \***********************************************************************/ -/*! exports provided: setupSearchHighlighter */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchHighlighter", function() { return setupSearchHighlighter; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! escape-string-regexp */ "./node_modules/escape-string-regexp/index.js"); -/* harmony import */ var escape_string_regexp__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Create a search highlighter - * - * @param config - Search index configuration - * - * @return Search highlight factory function - */ -function setupSearchHighlighter(config) { - var separator = new RegExp(config.separator, "img"); - var highlight = function (_, data, term) { - return data + "" + term + ""; - }; - /* Return factory function */ - return function (query) { - query = query - .replace(/[\s*+-:~^]+/g, " ") - .trim(); - /* Create search term match expression */ - var match = new RegExp("(^|" + config.separator + ")(" + escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__(query).replace(separator, "|") + ")", "img"); - /* Highlight document */ - return function (document) { return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, document), { title: document.title.replace(match, highlight), text: document.text.replace(match, highlight) })); }; - }; -} - - -/***/ }), - -/***/ "./src/assets/javascripts/integrations/search/index.ts": -/*!*************************************************************!*\ - !*** ./src/assets/javascripts/integrations/search/index.ts ***! - \*************************************************************/ -/*! exports provided: ArticleDocument, SearchDocument, SectionDocument, SearchIndex */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/integrations/search/_/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchIndex", function() { return ___WEBPACK_IMPORTED_MODULE_0__["SearchIndex"]; }); - -/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./document */ "./src/assets/javascripts/integrations/search/document/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArticleDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["ArticleDocument"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["SearchDocument"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SectionDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["SectionDocument"]; }); - -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/search/main/index.ts": -/*!*************************************************************!*\ - !*** ./src/assets/javascripts/workers/search/main/index.ts ***! - \*************************************************************/ -/*! exports provided: handler */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handler", function() { return handler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! expose-loader?lunr!lunr */ "./node_modules/expose-loader/index.js?lunr!./node_modules/lunr/lunr.js-exposed"); -/* harmony import */ var expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var integrations_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! integrations/search */ "./src/assets/javascripts/integrations/search/index.ts"); -/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../message */ "./src/assets/javascripts/workers/search/message/index.ts"); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - - - - -/* ---------------------------------------------------------------------------- - * Data - * ------------------------------------------------------------------------- */ -/** - * Search index - */ -var index; -/* ---------------------------------------------------------------------------- - * Helper functions - * ------------------------------------------------------------------------- */ -/** - * Setup multi-language support through `lunr-languages` - * - * This function will automatically import the stemmers necessary to process - * the languages which were given through the search index configuration. - * - * @param config - Search index configuration - */ -function setupLunrLanguages(config) { - var e_1, _a; - var base = "../lunr"; - /* Add scripts for languages */ - var scripts = []; - try { - for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(config.lang), _c = _b.next(); !_c.done; _c = _b.next()) { - var lang = _c.value; - if (lang === "ja") - scripts.push(base + "/tinyseg.min.js"); - if (lang !== "en") - scripts.push(base + "/min/lunr." + lang + ".min.js"); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - /* Add multi-language support */ - if (config.lang.length > 1) - scripts.push(base + "/min/lunr.multi.min.js"); - /* Load scripts synchronously */ - if (scripts.length) - self.importScripts.apply(self, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([base + "/min/lunr.stemmer.support.min.js"], scripts)); -} -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Message handler - * - * @param message - Source message - * - * @return Target message - */ -function handler(message) { - switch (message.type) { - /* Setup search index */ - case _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].SETUP: - setupLunrLanguages(message.data.config); - index = new integrations_search__WEBPACK_IMPORTED_MODULE_2__["SearchIndex"](message.data); - return { - type: _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].DUMP, - data: index.toString() - }; - /* Query search index */ - case _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].QUERY: - return { - type: _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].RESULT, - data: index ? index.search(message.data) : [] - }; - /* All other messages */ - default: - throw new TypeError("Invalid message type"); - } -} -/* ---------------------------------------------------------------------------- - * Worker - * ------------------------------------------------------------------------- */ -self.addEventListener("message", function (ev) { - self.postMessage(handler(ev.data)); -}); - - -/***/ }), - -/***/ "./src/assets/javascripts/workers/search/message/index.ts": -/*!****************************************************************!*\ - !*** ./src/assets/javascripts/workers/search/message/index.ts ***! - \****************************************************************/ -/*! exports provided: SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return SearchMessageType; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return isSearchSetupMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return isSearchDumpMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return isSearchQueryMessage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return isSearchResultMessage; }); -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ -/** - * Search message type - */ -var SearchMessageType; -(function (SearchMessageType) { - SearchMessageType[SearchMessageType["SETUP"] = 0] = "SETUP"; - SearchMessageType[SearchMessageType["DUMP"] = 1] = "DUMP"; - SearchMessageType[SearchMessageType["QUERY"] = 2] = "QUERY"; - SearchMessageType[SearchMessageType["RESULT"] = 3] = "RESULT"; /* Search results */ -})(SearchMessageType || (SearchMessageType = {})); -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ -/** - * Type guard for search setup messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchSetupMessage(message) { - return message.type === SearchMessageType.SETUP; -} -/** - * Type guard for search dump messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchDumpMessage(message) { - return message.type === SearchMessageType.DUMP; -} -/** - * Type guard for search query messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchQueryMessage(message) { - return message.type === SearchMessageType.QUERY; -} -/** - * Type guard for search result messages - * - * @param message - Search worker message - * - * @return Test result - */ -function isSearchResultMessage(message) { - return message.type === SearchMessageType.RESULT; -} - - -/***/ }) - -/******/ }); -//# sourceMappingURL=search.js.map \ No newline at end of file diff --git a/material/assets/javascripts/worker/search.js.map b/material/assets/javascripts/worker/search.js.map deleted file mode 100644 index 8087ee5bd..000000000 --- a/material/assets/javascripts/worker/search.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/escape-html/index.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/lunr/lunr.js-exposed","webpack:///./node_modules/lunr/lunr.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/assets/javascripts/integrations/search/_/index.ts","webpack:///./src/assets/javascripts/integrations/search/document/index.ts","webpack:///./src/assets/javascripts/integrations/search/highlight/index.ts","webpack:///./src/assets/javascripts/integrations/search/index.ts","webpack:///./src/assets/javascripts/workers/search/main/index.ts","webpack:///./src/assets/javascripts/workers/search/message/index.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,oBAAoB;AAC/C;AACA;AACA,wBAAwB;AACxB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;AC7Ea;;AAEb,mCAAmC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACVA,gFAAkC,mBAAO,CAAC,gDAAa,E;;;;;;;;;;;;ACAvD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,IAAI;AACJ;AACA,SAAS;AACT,SAAS;AACT,SAAS;AACT,SAAS;AACT,SAAS;AACT,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,aAAa;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,WAAW,0BAA0B;AACrC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC,aAAa;AACb;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC,WAAW,QAAQ;AACnB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,wCAAwC,iBAAiB;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;;AAEA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,wBAAwB,0BAA0B;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,WAAW,WAAW;AACtB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,UAAU;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C,2BAA2B,2BAA2B;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC,+BAA+B,cAAc,sBAAsB;AACnE,+BAA+B,aAAa;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY,WAAW;AACvB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,WAAW,WAAW;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,UAAU;AAC7B;;AAEA,qBAAqB,UAAU;AAC/B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iDAAiD;AAClE;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,4BAA4B,iBAAiB;AAC7C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,aAAa;AAC3D;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,4BAA4B;AACvC,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAA6D;AACrE;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,YAAY,qBAAqB;AACjC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,eAAe;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA,gBAAgB;AAChB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oCAAoC;AACrD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,cAAc;AAC5B,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,0BAA0B;AACvC;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAmB;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,mCAAmC;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,cAAc,OAAO;AACrB,SAAS;AACT;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,SAAS;AACT;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB,yBAAyB;AAC1C;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,+CAA+C,uBAAuB;AACtE;AACA;AACA;AACA,cAAc,oBAAoB;AAClC,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,sBAAsB,yCAAyC;AAC/D;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,sBAAsB,yCAAyC;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,iBAAiB;AAC1C,8BAA8B,iBAAiB;AAC/C;AACA,aAAa,OAAO;AACpB,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kEAAkE,uBAAuB;AACzF;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,QAAQ,IAA0C;AAClD;AACA,MAAM,oCAAO,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAC;AACrB,KAAK,MAAM,EAUN;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACl5GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEO;AACP;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAA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","file":"assets/javascripts/worker/search.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/assets/javascripts/workers/search/main/index.ts\");\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","'use strict';\n\nconst matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g;\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn string.replace(matchOperatorsRegex, '\\\\$&');\n};\n","module.exports = global[\"lunr\"] = require(\"-!./lunr.js\");","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8\n * Copyright (C) 2019 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.8\"\n/*!\n * lunr.utils\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2019 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.complete\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ArticleDocument,\n SearchDocumentMap,\n SectionDocument,\n setupSearchDocumentMap\n} from \"../document\"\nimport {\n SearchHighlightFactoryFn,\n setupSearchHighlighter\n} from \"../highlight\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index configuration\n */\nexport interface SearchIndexConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n}\n\n/**\n * Search index document\n */\nexport interface SearchIndexDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n}\n\n/**\n * Search index pipeline\n */\nexport interface SearchIndexPipeline {\n trimmer: boolean /* Add trimmer to pipeline */\n stopwords: boolean /* Add stopword filter to pipeline */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index options\n *\n * This interfaces describes the format of the `search_index.json` file which\n * is automatically built by the MkDocs search plugin.\n */\nexport interface SearchIndexOptions {\n config: SearchIndexConfig /* Search index configuration */\n docs: SearchIndexDocument[] /* Search index documents */\n pipeline?: SearchIndexPipeline /* Search index pipeline */\n index?: object | string /* Prebuilt or serialized index */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n article: ArticleDocument /* Article document */\n sections: SectionDocument[] /* Section documents */\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n *\n * Note that `lunr` is injected via Webpack, as it will otherwise also be\n * bundled in the application bundle.\n */\nexport class SearchIndex {\n\n /**\n * Search document mapping\n *\n * A mapping of URLs (including hash fragments) to the actual articles and\n * sections of the documentation. The search document mapping must be created\n * regardless of whether the index was prebuilt or not, as `lunr` itself will\n * only store the actual index.\n */\n protected documents: SearchDocumentMap\n\n /**\n * Search highlight factory function\n */\n protected highlight: SearchHighlightFactoryFn\n\n /**\n * The `lunr` search index\n */\n protected index: lunr.Index\n\n /**\n * Create a search index\n *\n * @param options - Options\n */\n public constructor({ config, docs, pipeline, index }: SearchIndexOptions) {\n this.documents = setupSearchDocumentMap(docs)\n this.highlight = setupSearchHighlighter(config)\n\n /* If no index was given, create it */\n if (typeof index === \"undefined\") {\n this.index = lunr(function() {\n pipeline = pipeline || {\n trimmer: true,\n stopwords: true\n }\n\n /* Remove stemmer, as it cripples search experience */\n this.pipeline.reset()\n if (pipeline.trimmer)\n this.pipeline.add(lunr.trimmer)\n if (pipeline.stopwords)\n this.pipeline.add(lunr.stopWordFilter)\n\n /* Set up alternate search languages */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n this.use((lunr as any)[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use((lunr as any).multiLanguage(...config.lang))\n }\n\n /* Setup fields and reference */\n this.field(\"title\", { boost: 10 })\n this.field(\"text\")\n this.ref(\"location\")\n\n /* Index documents */\n for (const doc of docs)\n this.add(doc)\n })\n\n /* Prebuilt or serialized index */\n } else {\n this.index = lunr.Index.load(\n typeof index === \"string\"\n ? JSON.parse(index)\n : index\n )\n }\n }\n\n /**\n * Search for matching documents\n *\n * The search index which MkDocs provides is divided up into articles, which\n * contain the whole content of the individual pages, and sections, which only\n * contain the contents of the subsections obtained by breaking the individual\n * pages up at `h1` ... `h6`. As there may be many sections on different pages\n * with indentical titles (for example within this very project, e.g. \"Usage\"\n * or \"Installation\"), they need to be put into the context of the containing\n * page. For this reason, section results are grouped within their respective\n * articles which are the top-level results that are returned.\n *\n * @param query - Query string\n *\n * @return Search results\n */\n public search(query: string): SearchResult[] {\n if (query) {\n try {\n\n /* Group sections by containing article */\n const groups = this.index.search(query)\n .reduce((results, result) => {\n const document = this.documents.get(result.ref)\n if (typeof document !== \"undefined\") {\n if (\"parent\" in document) {\n const ref = document.parent.location\n results.set(ref, [...results.get(ref) || [], result])\n } else {\n const ref = document.location\n results.set(ref, results.get(ref) || [])\n }\n }\n return results\n }, new Map())\n\n /* Create highlighter for query */\n const fn = this.highlight(query)\n\n /* Map groups to search documents */\n return [...groups].map(([ref, sections]) => ({\n article: fn(this.documents.get(ref) as ArticleDocument),\n sections: sections.map(section => {\n return fn(this.documents.get(section.ref) as SectionDocument)\n })\n }))\n\n /* Log errors to console (for now) */\n } catch (err) {\n // tslint:disable-next-line no-console\n console.warn(`Invalid query: ${query} – see https://bit.ly/2s3ChXG`)\n }\n }\n\n /* Return nothing in case of error or empty query */\n return []\n }\n\n /**\n * Serialize search index\n *\n * @return String representation\n */\n public toString(): string {\n return JSON.stringify(this.index)\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * A top-level article\n */\nexport interface ArticleDocument extends SearchIndexDocument {\n linked: boolean /* Whether the section was linked */\n}\n\n/**\n * A section of an article\n */\nexport interface SectionDocument extends SearchIndexDocument {\n parent: ArticleDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport type SearchDocument =\n | ArticleDocument\n | SectionDocument\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @return Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location and title */\n const location = doc.location\n const title = doc.title\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path) as ArticleDocument\n\n /* Ignore first section, override article */\n if (!parent.linked) {\n parent.title = doc.title\n parent.text = text\n parent.linked = true\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n linked: false\n })\n }\n }\n return documents\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as escapeRegExp from \"escape-string-regexp\"\n\nimport { SearchIndexConfig } from \"../_\"\nimport { SearchDocument } from \"../document\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @template T - Search document type\n *\n * @param document - Search document\n *\n * @return Highlighted document\n */\nexport type SearchHighlightFn =\n (document: Readonly) => T\n\n/**\n * Search highlight factory function\n *\n * @param query - Query string\n *\n * @return Search highlight function\n */\nexport type SearchHighlightFactoryFn =\n (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n *\n * @return Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n escapeRegExp(query).replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight document */\n return document => ({\n ...document,\n title: document.title.replace(match, highlight),\n text: document.text.replace(match, highlight)\n })\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport {\n ArticleDocument,\n SearchDocument,\n SectionDocument\n} from \"./document\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"expose-loader?lunr!lunr\"\n\nimport { SearchIndex, SearchIndexConfig } from \"integrations/search\"\n\nimport { SearchMessage, SearchMessageType } from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: SearchIndex\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup multi-language support through `lunr-languages`\n *\n * This function will automatically import the stemmers necessary to process\n * the languages which were given through the search index configuration.\n *\n * @param config - Search index configuration\n */\nfunction setupLunrLanguages(config: SearchIndexConfig): void {\n const base = \"../lunr\"\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n if (lang === \"ja\") scripts.push(`${base}/tinyseg.min.js`)\n if (lang !== \"en\") scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n self.importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @return Target message\n */\nexport function handler(message: SearchMessage): SearchMessage {\n switch (message.type) {\n\n /* Setup search index */\n case SearchMessageType.SETUP:\n setupLunrLanguages(message.data.config)\n index = new SearchIndex(message.data)\n return {\n type: SearchMessageType.DUMP,\n data: index.toString()\n }\n\n /* Query search index */\n case SearchMessageType.QUERY:\n return {\n type: SearchMessageType.RESULT,\n data: index ? index.search(message.data) : []\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\nself.addEventListener(\"message\", ev => {\n self.postMessage(handler(ev.data))\n})\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/manifest.json b/material/assets/manifest.json index 1b183bdf1..0e311feb4 100644 --- a/material/assets/manifest.json +++ b/material/assets/manifest.json @@ -1,8 +1,10 @@ { - "assets/javascripts/bundle.js": "assets/javascripts/bundle.js", - "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.js.map", - "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.js", - "assets/javascripts/worker/search.js.map": "assets/javascripts/worker/search.js.map", - "assets/stylesheets/main.css": "assets/stylesheets/main.css", - "assets/stylesheets/palette.css": "assets/stylesheets/palette.css" + "assets/javascripts/bundle.js": "assets/javascripts/bundle.8ceb0d66.min.js", + "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.8ceb0d66.min.js.map", + "assets/javascripts/vendor.js": "assets/javascripts/vendor.000c9aa0.min.js", + "assets/javascripts/vendor.js.map": "assets/javascripts/vendor.000c9aa0.min.js.map", + "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.926ffd9e.min.js", + "assets/javascripts/worker/search.js.map": "assets/javascripts/worker/search.926ffd9e.min.js.map", + "assets/stylesheets/main.css": "assets/stylesheets/main.c05f2dae.min.css", + "assets/stylesheets/palette.css": "assets/stylesheets/palette.f5f04e6f.min.css" } \ No newline at end of file diff --git a/material/assets/stylesheets/main.1e07d700.min.css b/material/assets/stylesheets/main.1e07d700.min.css deleted file mode 100644 index f0882193f..000000000 --- a/material/assets/stylesheets/main.1e07d700.min.css +++ /dev/null @@ -1 +0,0 @@ -html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}body{margin:0}hr{overflow:visible;box-sizing:content-box}a{-webkit-text-decoration-skip:objects}a,button,label,input{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}small{font-size:80%}sub,sup{position:relative;font-size:80%;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}table{border-collapse:separate;border-spacing:0}td,th{font-weight:normal;vertical-align:top}button{margin:0;padding:0;border:0;background:transparent;font-size:inherit}input{border:0;outline:0}:root{--md-default-fg-color: hsla(0, 0%, 0%, 0.87);--md-default-fg-color--light: hsla(0, 0%, 0%, 0.54);--md-default-fg-color--lighter: hsla(0, 0%, 0%, 0.26);--md-default-fg-color--lightest: hsla(0, 0%, 0%, 0.07);--md-default-bg-color: hsla(0, 0%, 100%, 1);--md-default-bg-color--light: hsla(0, 0%, 100%, 0.7);--md-default-bg-color--lighter: hsla(0, 0%, 100%, 0.3);--md-default-bg-color--lightest: hsla(0, 0%, 100%, 0.12);--md-primary-fg-color: hsla(231deg, 48%, 48%, 1);--md-primary-fg-color--light: hsla(230deg, 44%, 64%, 1);--md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light);--md-accent-fg-color: hsla(231deg, 99%, 66%, 1);--md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light);--md-code-bg-color: hsla(0, 0%, 92.5%, 0.5);--md-code-fg-color: hsla(200, 18%, 26%, 1)}.md-icon svg{display:block;width:1.2rem;height:1.2rem;margin:0 auto;fill:currentColor}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,input{color:var(--md-default-fg-color);-webkit-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}code,pre,kbd{color:var(--md-default-fg-color);-webkit-font-feature-settings:"kern";font-feature-settings:"kern";font-family:"Courier New",Courier,monospace}.md-typeset{font-size:.8rem;line-height:1.6;-webkit-print-color-adjust:exact}.md-typeset p,.md-typeset ul,.md-typeset ol,.md-typeset blockquote{margin:1em 0}.md-typeset h1{margin:0 0 2rem;color:var(--md-default-fg-color--light);font-size:1.5625rem;font-weight:300;letter-spacing:-0.01em;line-height:1.3}.md-typeset h2{margin:2rem 0 .8rem;font-size:1.25rem;font-weight:300;letter-spacing:-0.01em;line-height:1.4}.md-typeset h3{margin:1.6rem 0 .8rem;font-size:1rem;font-weight:400;letter-spacing:-0.01em;line-height:1.5}.md-typeset h2+h3{margin-top:.8rem}.md-typeset h4{margin:.8rem 0;font-size:.8rem;font-weight:700;letter-spacing:-0.01em}.md-typeset h5,.md-typeset h6{margin:.8rem 0;color:var(--md-default-fg-color--light);font-size:.64rem;font-weight:700;letter-spacing:-0.01em}.md-typeset h5{text-transform:uppercase}.md-typeset hr{margin:1.5em 0;border-bottom:.05rem dotted var(--md-default-fg-color--lighter)}.md-typeset a{color:var(--md-primary-fg-color);word-break:break-word}.md-typeset a,.md-typeset a::before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset code,.md-typeset pre,.md-typeset kbd{background-color:var(--md-code-bg-color);color:var(--md-code-fg-color);font-size:85%;direction:ltr}.md-typeset code{margin:0 .2941176471em;padding:.0735294118em 0;border-radius:.1rem;box-shadow:.2941176471em 0 0 var(--md-code-bg-color),-0.2941176471em 0 0 var(--md-code-bg-color);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset h1 code,.md-typeset h2 code,.md-typeset h3 code,.md-typeset h4 code,.md-typeset h5 code,.md-typeset h6 code{margin:0;background-color:transparent;box-shadow:none}.md-typeset a>code{margin:inherit;padding:inherit;border-radius:initial;background-color:inherit;color:inherit;box-shadow:none}.md-typeset pre{position:relative;margin:1em 0;border-radius:.1rem;line-height:1.4;-webkit-overflow-scrolling:touch}.md-typeset pre>code{display:block;margin:0;padding:.525rem .6rem;background-color:transparent;font-size:inherit;box-shadow:none;-webkit-box-decoration-break:slice;box-decoration-break:slice;overflow:auto;word-break:normal}.md-typeset pre>code::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{display:inline-block;padding:0 .5882352941em;border-radius:.1rem;font-size:.75em;line-height:1.5;box-shadow:0 .1rem 0 .05rem var(--md-default-fg-color--lighter),0 .1rem 0 var(--md-default-fg-color--lighter),inset 0 -0.1rem .2rem var(--md-default-bg-color);word-break:break-word;vertical-align:text-top}.md-typeset mark{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;background-color:rgba(255,235,59,.5);box-shadow:.25em 0 0 rgba(255,235,59,.5),-0.25em 0 0 rgba(255,235,59,.5);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);text-decoration:none;cursor:help}.md-typeset small{opacity:.75}.md-typeset sup,.md-typeset sub{margin-left:.078125em}[dir=rtl] .md-typeset sup,[dir=rtl] .md-typeset sub{margin-right:.078125em;margin-left:initial}.md-typeset blockquote{padding-left:.6rem;border-left:.2rem solid var(--md-default-fg-color--lighter);color:var(--md-default-fg-color--light)}[dir=rtl] .md-typeset blockquote{padding-right:.6rem;padding-left:initial;border-right:.2rem solid var(--md-default-fg-color--lighter);border-left:initial}.md-typeset ul{list-style-type:disc}.md-typeset ul,.md-typeset ol{margin-left:.625em;padding:0}[dir=rtl] .md-typeset ul,[dir=rtl] .md-typeset ol{margin-right:.625em;margin-left:initial}.md-typeset ul ol,.md-typeset ol ol{list-style-type:lower-alpha}.md-typeset ul ol ol,.md-typeset ol ol ol{list-style-type:lower-roman}.md-typeset ul li,.md-typeset ol li{margin-bottom:.5em;margin-left:1.25em}[dir=rtl] .md-typeset ul li,[dir=rtl] .md-typeset ol li{margin-right:1.25em;margin-left:initial}.md-typeset ul li p,.md-typeset ul li blockquote,.md-typeset ol li p,.md-typeset ol li blockquote{margin:.5em 0}.md-typeset ul li:last-child,.md-typeset ol li:last-child{margin-bottom:0}.md-typeset ul li ul,.md-typeset ul li ol,.md-typeset ol li ul,.md-typeset ol li ol{margin:.5em 0 .5em .625em}[dir=rtl] .md-typeset ul li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ol li ol{margin-right:.625em;margin-left:initial}.md-typeset dd{margin:1em 0 1em 1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em;margin-left:initial}.md-typeset iframe,.md-typeset img,.md-typeset svg{max-width:100%}.md-typeset table:not([class]){display:inline-block;max-width:100%;border-radius:.1rem;background:var(--md-default-bg-color);font-size:.64rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) th:not([align]),.md-typeset table:not([class]) td:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) th:not([align]),[dir=rtl] .md-typeset table:not([class]) td:not([align]){text-align:right}.md-typeset table:not([class]) th{min-width:5rem;padding:.6rem .8rem;background-color:var(--md-default-fg-color--light);color:var(--md-default-bg-color);vertical-align:top}.md-typeset table:not([class]) td{padding:.6rem .8rem;border-top:.05rem solid var(--md-default-fg-color--lightest);vertical-align:top}.md-typeset table:not([class]) tr{transition:background-color 125ms}.md-typeset table:not([class]) tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) tr:first-child td{border-top:0}.md-typeset table:not([class]) a{word-break:normal}.md-typeset__scrollwrap{margin:1em -0.8rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.md-typeset .md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}.md-typeset .md-typeset__table table{display:table;width:100%;margin:0;overflow:hidden}html{height:100%;background-color:var(--md-default-bg-color);font-size:125%;overflow-x:hidden}body{display:flex;position:relative;flex-direction:column;width:100%;min-height:100%;font-size:.5rem}hr{display:block;height:.05rem;padding:0;border:0}.md-grid{max-width:61rem;margin-right:auto;margin-left:auto}.md-container{display:flex;flex-direction:column;flex-grow:1}.md-main{flex-grow:1}.md-main__inner{height:100%;padding-top:1.5rem;padding-bottom:.05rem}.md-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;transition:width 0ms 250ms,height 0ms 250ms,opacity 250ms;background-color:var(--md-default-fg-color--light);opacity:0;z-index:3}.md-skip{position:fixed;margin:.5rem;padding:.3rem .5rem;transform:translateY(0.4rem);border-radius:.1rem;background-color:var(--md-default-fg-color);color:var(--md-default-bg-color);font-size:.64rem;opacity:0}.md-skip:focus{transform:translateY(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),opacity 175ms 75ms;opacity:1;z-index:10}@page{margin:25mm}.md-announce{background-color:var(--md-default-fg-color)}.md-announce__inner{min-height:2.4rem;padding:0 .8rem;color:var(--md-default-bg-color);font-size:.7rem;line-height:2.4rem}.md-clipboard{position:absolute;top:.4rem;right:.4rem;width:1.2rem;height:1.2rem;transition:color 250ms;border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-clipboard svg{width:.9rem;height:.9rem}pre:hover .md-clipboard{color:var(--md-default-fg-color--light)}pre .md-clipboard:focus,pre .md-clipboard:hover{color:var(--md-accent-fg-color)}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}.md-content__inner::before{display:block;height:.4rem;content:""}.md-content__inner>:last-child{margin-bottom:0}.md-content__button{margin:.4rem 0;margin-left:.4rem;padding:0;float:right}[dir=rtl] .md-content__button{margin-right:.4rem;margin-left:initial;float:left}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}.md-dialog{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);display:block;position:fixed;right:.8rem;bottom:.8rem;left:initial;min-width:11.1rem;padding:.4rem .6rem;transform:translateY(100%);transition:transform 0ms 400ms,opacity 400ms;border:none;border-radius:.1rem;background:var(--md-default-fg-color);color:var(--md-default-bg-color);font-size:.7rem;opacity:0;z-index:2}[dir=rtl] .md-dialog{right:initial;left:.8rem}.md-dialog[data-md-state=open]{transform:translateY(0);transition:transform 400ms cubic-bezier(0.075, 0.85, 0.175, 1),opacity 400ms;opacity:1}.md-header{position:-webkit-sticky;position:sticky;top:0;right:0;left:0;height:2.4rem;transition:background-color 250ms,color 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);box-shadow:none;z-index:2;-webkit-backface-visibility:hidden;backface-visibility:hidden}.no-js .md-header{transition:none;box-shadow:none}.md-header[data-md-state=shadow]{transition:background-color 250ms,color 250ms,box-shadow 250ms;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.md-header-nav{display:flex;padding:0 .2rem}.md-header-nav__button{position:relative;margin:.2rem;padding:.4rem;transition:opacity 250ms;cursor:pointer;z-index:1}[dir=rtl] .md-header-nav__button svg{transform:scaleX(-1)}.md-header-nav__button:focus,.md-header-nav__button:hover{opacity:.7}.md-header-nav__button.md-logo{margin:.2rem;padding:.4rem}.md-header-nav__button.md-logo img,.md-header-nav__button.md-logo svg{display:block;width:1.2rem;height:1.2rem;fill:currentColor}.no-js .md-header-nav__button[for=__search]{display:none}.md-header-nav__topic{display:block;position:absolute;width:100%;padding:0 1rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-header-nav__topic+.md-header-nav__topic{transform:translateX(1.25rem);transition:transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1),opacity 150ms;opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__topic+.md-header-nav__topic{transform:translateX(-1.25rem)}.no-js .md-header-nav__topic{position:initial}.no-js .md-header-nav__topic+.md-header-nav__topic{display:none}.md-header-nav__title{flex-grow:1;font-size:.9rem;line-height:2.4rem}.md-header-nav__title[data-md-state=active] .md-header-nav__topic{transform:translateX(-1.25rem);transition:transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1),opacity 150ms;opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic{transform:translateX(1.25rem)}.md-header-nav__title[data-md-state=active] .md-header-nav__topic+.md-header-nav__topic{transform:translateX(0);transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;opacity:1;z-index:0;pointer-events:initial}.md-header-nav__title>.md-header-nav__ellipsis{position:relative;width:100%;height:100%}.md-header-nav__source{display:none}.md-hero{transition:background 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-size:1rem;overflow:hidden}.md-hero__inner{margin-top:1rem;padding:.8rem .8rem .4rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;transition-delay:100ms}[data-md-state=hidden] .md-hero__inner{pointer-events:none;transform:translateY(0.625rem);transition:transform 0ms 400ms,opacity 100ms 0ms;opacity:0}.md-hero--expand .md-hero__inner{margin-bottom:1.2rem}.md-footer{background-color:var(--md-default-fg-color);color:var(--md-default-bg-color)}.md-footer-nav__inner{padding:.2rem;overflow:auto}.md-footer-nav__link{display:flex;padding-top:1.4rem;padding-bottom:.4rem;transition:opacity 250ms}.md-footer-nav__link:focus,.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}[dir=rtl] .md-footer-nav__link--prev{float:right}[dir=rtl] .md-footer-nav__link--prev svg{transform:scaleX(-1)}.md-footer-nav__link--next{width:75%;float:right;text-align:right}[dir=rtl] .md-footer-nav__link--next{float:left;text-align:left}[dir=rtl] .md-footer-nav__link--next svg{transform:scaleX(-1)}.md-footer-nav__title{position:relative;flex-grow:1;max-width:calc(100% - 2.4rem);padding:0 1rem;font-size:.9rem;line-height:2.4rem}.md-footer-nav__button{margin:.2rem;padding:.4rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-1rem;padding:0 1rem;color:var(--md-default-bg-color--light);font-size:.75rem}.md-footer-meta{background-color:var(--md-default-fg-color--lighter)}.md-footer-meta__inner{padding:.2rem;overflow:auto}html .md-footer-meta.md-typeset a{color:var(--md-default-bg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-default-bg-color)}.md-footer-copyright{margin:0 .6rem;padding:.4rem 0;color:var(--md-default-bg-color--lighter);font-size:.64rem}.md-footer-copyright__highlight{color:var(--md-default-bg-color--light)}.md-footer-social{margin:0 .4rem;padding:.2rem 0 .6rem}.md-footer-social__link{display:inline-block;width:1.6rem;height:1.6rem;transition:color 250ms;text-align:center}.md-footer-social__link::before{line-height:1.9}.md-footer-social__link svg{width:.8rem;vertical-align:-25%;fill:currentColor}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;padding:0 .6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{width:100%;height:auto}.md-nav__title .md-nav__button.md-logo svg img,.md-nav__title .md-nav__button.md-logo svg svg{display:block;width:1.2rem;height:1.2rem;fill:currentColor}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:0 .6rem}.md-nav__item:last-child{padding-bottom:.6rem}.md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-right:.6rem;padding-left:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__link{display:block;margin-top:.625em;transition:color 125ms;text-overflow:ellipsis;cursor:pointer;overflow:hidden;scroll-snap-align:start}html .md-nav__link[for=__toc]{display:none}html .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link[data-md-state=blur]{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-primary-fg-color)}.md-nav__item--nested>.md-nav__link{color:inherit}.md-nav__link:focus,.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav__source{display:none}.md-search{position:relative}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}.md-search__form{position:relative}.md-search__input{position:relative;padding:0 2.2rem 0 3.6rem;text-overflow:ellipsis;z-index:2}[dir=rtl] .md-search__input{padding:0 3.6rem 0 2.2rem}.md-search__input::-webkit-input-placeholder{-webkit-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-moz-placeholder{-moz-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-ms-input-placeholder{-ms-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::placeholder{transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-webkit-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input~.md-search__icon,.md-search__input::placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}.md-search__icon{position:absolute;width:1.2rem;height:1.2rem;transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;cursor:pointer;z-index:2}.md-search__icon:hover{opacity:.7}.md-search__icon[for=__search]{top:.3rem;left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem;left:initial}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}.md-search__icon[type=reset]{top:.3rem;right:.5rem;transform:scale(0.75);transition:transform 150ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;opacity:0;pointer-events:none}[dir=rtl] .md-search__icon[type=reset]{right:initial;left:.5rem}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]{transform:scale(1);opacity:1;pointer-events:initial}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]:hover{opacity:.7}.md-search__output{position:absolute;width:100%;border-radius:0 0 .1rem .1rem;overflow:hidden;z-index:1}.md-search__scrollwrap{height:100%;background-color:var(--md-default-bg-color);box-shadow:inset 0 .05rem 0 var(--md-default-fg-color--lightest);overflow-y:auto;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{padding:0 .8rem;background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;scroll-snap-align:start}.md-search-result__list{margin:0;padding:0;border-top:.05rem solid var(--md-default-fg-color--lightest);list-style:none}.md-search-result__item{box-shadow:0 -0.05rem 0 var(--md-default-fg-color--lightest)}.md-search-result__link{display:block;transition:background 250ms;outline:0;overflow:hidden;scroll-snap-align:start}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:focus .md-search-result__article::before,.md-search-result__link:hover .md-search-result__article::before{opacity:.7}.md-search-result__link:last-child .md-search-result__teaser{margin-bottom:.6rem}.md-search-result__article{position:relative;padding:0 .8rem;overflow:auto}.md-search-result__article--document .md-search-result__title{margin:.55rem 0;font-size:.8rem;font-weight:400;line-height:1.4}.md-search-result__icon{position:absolute;left:0;margin:.1rem;padding:.4rem;color:var(--md-default-fg-color--light)}[dir=rtl] .md-search-result__icon{right:0;left:initial}[dir=rtl] .md-search-result__icon svg{transform:scaleX(-1)}.md-search-result__title{margin:.5em 0;font-size:.64rem;font-weight:700;line-height:1.4}.md-search-result__teaser{display:-webkit-box;max-height:1.65rem;margin:.5em 0;color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.4;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.md-search-result em{font-style:normal;font-weight:700;text-decoration:underline}.md-sidebar{position:absolute;width:12.1rem;padding:1.2rem 0;overflow:hidden}.md-sidebar[data-md-state=lock]{position:fixed;top:2.4rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{max-height:100%;margin:0 .2rem;overflow-y:auto;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@-webkit-keyframes md-source__facts--done{0%{height:0}100%{height:.65rem}}@keyframes md-source__facts--done{0%{height:0}100%{height:.65rem}}@-webkit-keyframes md-source__fact--done{0%{transform:translateY(100%);opacity:0}50%{opacity:0}100%{transform:translateY(0%);opacity:1}}@keyframes md-source__fact--done{0%{transform:translateY(100%);opacity:0}50%{opacity:0}100%{transform:translateY(0%);opacity:1}}.md-source{display:block;padding-right:.6rem;transition:opacity 250ms;font-size:.65rem;line-height:1.2;white-space:nowrap}[dir=rtl] .md-source{padding-right:initial;padding-left:.6rem}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;width:2.4rem;height:2.4rem;vertical-align:middle}.md-source__icon svg{margin-top:.6rem;margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem;margin-left:initial}.md-source__icon+.md-source__repository{margin-left:-2rem;padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem;margin-left:initial;padding-right:2rem;padding-left:initial}.md-source__repository{display:inline-block;max-width:100%;margin-left:.6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.md-source__facts{margin:0;padding:0;font-size:.55rem;font-weight:700;list-style-type:none;opacity:.75;overflow:hidden}[data-md-state=done] .md-source__facts{-webkit-animation:md-source__facts--done 250ms ease-in;animation:md-source__facts--done 250ms ease-in}.md-source__fact{float:left}[dir=rtl] .md-source__fact{float:right}[data-md-state=done] .md-source__fact{-webkit-animation:md-source__fact--done 400ms ease-out;animation:md-source__fact--done 400ms ease-out}.md-source__fact::before{margin:0 .1rem;content:"·"}.md-source__fact:first-child::before{display:none}.md-tabs{width:100%;transition:background 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);overflow:auto}.no-js .md-tabs{transition:none}.md-tabs__list{margin:0;margin-left:.2rem;padding:0;list-style:none;white-space:nowrap}[dir=rtl] .md-tabs__list{margin-right:.2rem;margin-left:initial}.md-tabs__item{display:inline-block;height:2.4rem;padding-right:.6rem;padding-left:.6rem}.md-tabs__link{display:block;margin-top:.8rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;font-size:.7rem;opacity:.7}.no-js .md-tabs__link{transition:none}.md-tabs__link--active,.md-tabs__link:hover{color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:100ms}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:120ms}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:140ms}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:160ms}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:180ms}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:200ms}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:220ms}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:240ms}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:260ms}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:280ms}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:300ms}.md-tabs[data-md-state=hidden]{pointer-events:none}.md-tabs[data-md-state=hidden] .md-tabs__link{transform:translateY(50%);transition:color 250ms,transform 0ms 400ms,opacity 100ms;opacity:0}.md-typeset .admonition,.md-typeset details{margin:1.5625em 0;padding:0 .6rem;border-left:.2rem solid #448aff;border-radius:.1rem;font-size:.64rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);overflow:auto}[dir=rtl] .md-typeset .admonition,[dir=rtl] .md-typeset details{border-right:.2rem solid #448aff;border-left:none}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}.md-typeset .admonition .admonition,.md-typeset details .admonition,.md-typeset .admonition details,.md-typeset details details{margin:1em 0}.md-typeset .admonition.tldr,.md-typeset details.tldr,.md-typeset .admonition.summary,.md-typeset details.summary,.md-typeset .admonition.abstract,.md-typeset details.abstract{border-left-color:#00b0ff}.md-typeset .admonition.tldr>:first-child,.md-typeset details.tldr>:first-child,.md-typeset .admonition.summary>:first-child,.md-typeset details.summary>:first-child,.md-typeset .admonition.abstract>:first-child,.md-typeset details.abstract>:first-child{background-color:rgba(0,176,255,.1)}.md-typeset .admonition.tldr>:first-child::before,.md-typeset details.tldr>:first-child::before,.md-typeset .admonition.summary>:first-child::before,.md-typeset details.summary>:first-child::before,.md-typeset .admonition.abstract>:first-child::before,.md-typeset details.abstract>:first-child::before{background-color:#00b0ff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.todo,.md-typeset details.todo,.md-typeset .admonition.info,.md-typeset details.info{border-left-color:#00b8d4}.md-typeset .admonition.todo>:first-child,.md-typeset details.todo>:first-child,.md-typeset .admonition.info>:first-child,.md-typeset details.info>:first-child{background-color:rgba(0,184,212,.1)}.md-typeset .admonition.todo>:first-child::before,.md-typeset details.todo>:first-child::before,.md-typeset .admonition.info>:first-child::before,.md-typeset details.info>:first-child::before{background-color:#00b8d4;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.important,.md-typeset details.important,.md-typeset .admonition.hint,.md-typeset details.hint,.md-typeset .admonition.tip,.md-typeset details.tip{border-left-color:#00bfa5}.md-typeset .admonition.important>:first-child,.md-typeset details.important>:first-child,.md-typeset .admonition.hint>:first-child,.md-typeset details.hint>:first-child,.md-typeset .admonition.tip>:first-child,.md-typeset details.tip>:first-child{background-color:rgba(0,191,165,.1)}.md-typeset .admonition.important>:first-child::before,.md-typeset details.important>:first-child::before,.md-typeset .admonition.hint>:first-child::before,.md-typeset details.hint>:first-child::before,.md-typeset .admonition.tip>:first-child::before,.md-typeset details.tip>:first-child::before{background-color:#00bfa5;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.done,.md-typeset details.done,.md-typeset .admonition.check,.md-typeset details.check,.md-typeset .admonition.success,.md-typeset details.success{border-left-color:#00c853}.md-typeset .admonition.done>:first-child,.md-typeset details.done>:first-child,.md-typeset .admonition.check>:first-child,.md-typeset details.check>:first-child,.md-typeset .admonition.success>:first-child,.md-typeset details.success>:first-child{background-color:rgba(0,200,83,.1)}.md-typeset .admonition.done>:first-child::before,.md-typeset details.done>:first-child::before,.md-typeset .admonition.check>:first-child::before,.md-typeset details.check>:first-child::before,.md-typeset .admonition.success>:first-child::before,.md-typeset details.success>:first-child::before{background-color:#00c853;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.faq,.md-typeset details.faq,.md-typeset .admonition.help,.md-typeset details.help,.md-typeset .admonition.question,.md-typeset details.question{border-left-color:#64dd17}.md-typeset .admonition.faq>:first-child,.md-typeset details.faq>:first-child,.md-typeset .admonition.help>:first-child,.md-typeset details.help>:first-child,.md-typeset .admonition.question>:first-child,.md-typeset details.question>:first-child{background-color:rgba(100,221,23,.1)}.md-typeset .admonition.faq>:first-child::before,.md-typeset details.faq>:first-child::before,.md-typeset .admonition.help>:first-child::before,.md-typeset details.help>:first-child::before,.md-typeset .admonition.question>:first-child::before,.md-typeset details.question>:first-child::before{background-color:#64dd17;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.attention,.md-typeset details.attention,.md-typeset .admonition.caution,.md-typeset details.caution,.md-typeset .admonition.warning,.md-typeset details.warning{border-left-color:#ff9100}.md-typeset .admonition.attention>:first-child,.md-typeset details.attention>:first-child,.md-typeset .admonition.caution>:first-child,.md-typeset details.caution>:first-child,.md-typeset .admonition.warning>:first-child,.md-typeset details.warning>:first-child{background-color:rgba(255,145,0,.1)}.md-typeset .admonition.attention>:first-child::before,.md-typeset details.attention>:first-child::before,.md-typeset .admonition.caution>:first-child::before,.md-typeset details.caution>:first-child::before,.md-typeset .admonition.warning>:first-child::before,.md-typeset details.warning>:first-child::before{background-color:#ff9100;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.missing,.md-typeset details.missing,.md-typeset .admonition.fail,.md-typeset details.fail,.md-typeset .admonition.failure,.md-typeset details.failure{border-left-color:#ff5252}.md-typeset .admonition.missing>:first-child,.md-typeset details.missing>:first-child,.md-typeset .admonition.fail>:first-child,.md-typeset details.fail>:first-child,.md-typeset .admonition.failure>:first-child,.md-typeset details.failure>:first-child{background-color:rgba(255,82,82,.1)}.md-typeset .admonition.missing>:first-child::before,.md-typeset details.missing>:first-child::before,.md-typeset .admonition.fail>:first-child::before,.md-typeset details.fail>:first-child::before,.md-typeset .admonition.failure>:first-child::before,.md-typeset details.failure>:first-child::before{background-color:#ff5252;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.error,.md-typeset details.error,.md-typeset .admonition.danger,.md-typeset details.danger{border-left-color:#ff1744}.md-typeset .admonition.error>:first-child,.md-typeset details.error>:first-child,.md-typeset .admonition.danger>:first-child,.md-typeset details.danger>:first-child{background-color:rgba(255,23,68,.1)}.md-typeset .admonition.error>:first-child::before,.md-typeset details.error>:first-child::before,.md-typeset .admonition.danger>:first-child::before,.md-typeset details.danger>:first-child::before{background-color:#ff1744;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.bug,.md-typeset details.bug{border-left-color:#f50057}.md-typeset .admonition.bug>:first-child,.md-typeset details.bug>:first-child{background-color:rgba(245,0,87,.1)}.md-typeset .admonition.bug>:first-child::before,.md-typeset details.bug>:first-child::before{background-color:#f50057;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.example,.md-typeset details.example{border-left-color:#651fff}.md-typeset .admonition.example>:first-child,.md-typeset details.example>:first-child{background-color:rgba(101,31,255,.1)}.md-typeset .admonition.example>:first-child::before,.md-typeset details.example>:first-child::before{background-color:#651fff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.cite,.md-typeset details.cite,.md-typeset .admonition.quote,.md-typeset details.quote{border-left-color:#9e9e9e}.md-typeset .admonition.cite>:first-child,.md-typeset details.cite>:first-child,.md-typeset .admonition.quote>:first-child,.md-typeset details.quote>:first-child{background-color:rgba(158,158,158,.1)}.md-typeset .admonition.cite>:first-child::before,.md-typeset details.cite>:first-child::before,.md-typeset .admonition.quote>:first-child::before,.md-typeset details.quote>:first-child::before{background-color:#9e9e9e;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition-title,.md-typeset summary{margin:0 -0.6rem;padding:.4rem .6rem .4rem 2rem;background-color:rgba(68,138,255,.1);font-weight:700}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding:.4rem 2rem .4rem .6rem}.md-typeset .admonition-title:last-child,.md-typeset summary:last-child{margin-bottom:0}.md-typeset .admonition-title::before,.md-typeset summary::before{position:absolute;width:1rem;height:1rem;margin-left:-1.4rem;background-color:#448aff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .admonition-title::before,[dir=rtl] .md-typeset summary::before{margin-right:-1.4rem;margin-left:initial}.codehilite .o,.highlight .o{color:inherit}.codehilite .ow,.highlight .ow{color:inherit}.codehilite .ge,.highlight .ge{color:#000}.codehilite .gr,.highlight .gr{color:#a00}.codehilite .gh,.highlight .gh{color:#999}.codehilite .go,.highlight .go{color:#888}.codehilite .gp,.highlight .gp{color:#555}.codehilite .gs,.highlight .gs{color:inherit}.codehilite .gu,.highlight .gu{color:#aaa}.codehilite .gt,.highlight .gt{color:#a00}.codehilite .gd,.highlight .gd{background-color:#fdd}.codehilite .gi,.highlight .gi{background-color:#dfd}.codehilite .k,.highlight .k{color:#3b78e7}.codehilite .kc,.highlight .kc{color:#a71d5d}.codehilite .kd,.highlight .kd{color:#3b78e7}.codehilite .kn,.highlight .kn{color:#3b78e7}.codehilite .kp,.highlight .kp{color:#a71d5d}.codehilite .kr,.highlight .kr{color:#3e61a2}.codehilite .kt,.highlight .kt{color:#3e61a2}.codehilite .c,.highlight .c{color:#999}.codehilite .cm,.highlight .cm{color:#999}.codehilite .cp,.highlight .cp{color:#666}.codehilite .c1,.highlight .c1{color:#999}.codehilite .ch,.highlight .ch{color:#999}.codehilite .cs,.highlight .cs{color:#999}.codehilite .na,.highlight .na{color:#c2185b}.codehilite .nb,.highlight .nb{color:#c2185b}.codehilite .bp,.highlight .bp{color:#3e61a2}.codehilite .nc,.highlight .nc{color:#c2185b}.codehilite .no,.highlight .no{color:#3e61a2}.codehilite .nd,.highlight .nd{color:#666}.codehilite .ni,.highlight .ni{color:#666}.codehilite .ne,.highlight .ne{color:#c2185b}.codehilite .nf,.highlight .nf{color:#c2185b}.codehilite .nl,.highlight .nl{color:#3b5179}.codehilite .nn,.highlight .nn{color:#ec407a}.codehilite .nt,.highlight .nt{color:#3b78e7}.codehilite .nv,.highlight .nv{color:#3e61a2}.codehilite .vc,.highlight .vc{color:#3e61a2}.codehilite .vg,.highlight .vg{color:#3e61a2}.codehilite .vi,.highlight .vi{color:#3e61a2}.codehilite .nx,.highlight .nx{color:#ec407a}.codehilite .m,.highlight .m{color:#e74c3c}.codehilite .mf,.highlight .mf{color:#e74c3c}.codehilite .mh,.highlight .mh{color:#e74c3c}.codehilite .mi,.highlight .mi{color:#e74c3c}.codehilite .il,.highlight .il{color:#e74c3c}.codehilite .mo,.highlight .mo{color:#e74c3c}.codehilite .s,.highlight .s{color:#0d904f}.codehilite .sb,.highlight .sb{color:#0d904f}.codehilite .sc,.highlight .sc{color:#0d904f}.codehilite .sd,.highlight .sd{color:#999}.codehilite .s2,.highlight .s2{color:#0d904f}.codehilite .se,.highlight .se{color:#183691}.codehilite .sh,.highlight .sh{color:#183691}.codehilite .si,.highlight .si{color:#183691}.codehilite .sx,.highlight .sx{color:#183691}.codehilite .sr,.highlight .sr{color:#009926}.codehilite .s1,.highlight .s1{color:#0d904f}.codehilite .ss,.highlight .ss{color:#0d904f}.codehilite .err,.highlight .err{color:#a61717}.codehilite .w,.highlight .w{color:transparent}.codehilite .hll,.highlight .hll{display:block;margin:0 -0.6rem;padding:0 .6rem;background-color:rgba(255,235,59,.5)}.codehilitetable,.highlighttable{display:block;overflow:hidden}.codehilitetable tbody,.highlighttable tbody,.codehilitetable td,.highlighttable td{display:block;padding:0}.codehilitetable tr,.highlighttable tr{display:flex}.codehilitetable pre,.highlighttable pre,.codehilitetable .linenodiv,.highlighttable .linenodiv{margin:0;border-radius:0}.codehilitetable .linenodiv,.highlighttable .linenodiv{padding:.525rem .6rem}.codehilitetable .linenos,.highlighttable .linenos{color:var(--md-default-fg-color--lighter);box-shadow:inset 0 0 0 .05rem var(--md-code-bg-color);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.codehilitetable .linenos pre,.highlighttable .linenos pre{background-color:transparent;color:inherit;text-align:right}.codehilitetable .code,.highlighttable .code{flex:1;overflow:hidden}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{margin:1em 0;border-radius:.2em}.md-typeset [id^="fnref:"]{display:inline-block}.md-typeset [id^="fnref:"]:target{margin-top:-3.8rem;padding-top:3.8rem;pointer-events:none}.md-typeset [id^="fn:"]::before{display:none;height:0;content:""}.md-typeset [id^="fn:"]:target::before{display:block;margin-top:-3.5rem;padding-top:3.5rem;pointer-events:none}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}.md-typeset .footnote ol{margin-left:0}.md-typeset .footnote li{transition:color 250ms}.md-typeset .footnote li:target{color:var(--md-default-fg-color)}.md-typeset .footnote li :first-child{margin-top:0}.md-typeset .footnote li:hover .footnote-backref,.md-typeset .footnote li:target .footnote-backref{transform:translateX(0);opacity:1}.md-typeset .footnote li:hover .footnote-backref:hover,.md-typeset .footnote li:target .footnote-backref{color:var(--md-accent-fg-color)}.md-typeset .footnote-ref{display:inline-block;pointer-events:initial}.md-typeset .footnote-ref::before{display:inline;margin:0 .2em;border-left:.05rem solid var(--md-default-fg-color--lighter);font-size:1.25em;content:"";vertical-align:-0.25rem}.md-typeset .footnote-backref{display:inline-block;transform:translateX(0.25rem);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms;color:var(--md-default-fg-color--lighter);font-size:0;opacity:0;vertical-align:text-bottom}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-0.25rem)}.md-typeset .footnote-backref::before{display:inline-block;width:.8rem;height:.8rem;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .footnote-backref::before svg{transform:scaleX(-1)}.md-typeset .headerlink{display:inline-block;margin-left:.5rem;transform:translate(0, 0.25rem);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms,visibility 0ms 500ms;opacity:0;visibility:hidden}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem;margin-left:initial}html body .md-typeset .headerlink{color:var(--md-default-fg-color--lighter)}.md-typeset :hover .headerlink,.md-typeset :target .headerlink,.md-typeset .headerlink:focus{transform:translate(0, 0);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms,visibility 0ms;opacity:1;visibility:visible}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target .headerlink{color:var(--md-accent-fg-color)}.md-typeset h3[id]::before,.md-typeset h2[id]::before,.md-typeset h1[id]::before{display:block;margin-top:-0.4rem;padding-top:.4rem;content:""}.md-typeset h3[id]:target::before,.md-typeset h2[id]:target::before,.md-typeset h1[id]:target::before{margin-top:-3.4rem;padding-top:3.4rem}.md-typeset h4[id]::before{display:block;margin-top:-0.45rem;padding-top:.45rem;content:""}.md-typeset h4[id]:target::before{margin-top:-3.45rem;padding-top:3.45rem}.md-typeset h6[id]::before,.md-typeset h5[id]::before{display:block;margin-top:-0.6rem;padding-top:.6rem;content:""}.md-typeset h6[id]:target::before,.md-typeset h5[id]:target::before{margin-top:-3.6rem;padding-top:3.6rem}.md-typeset .MJXc-display{margin:.75em 0;padding:.75em 0;overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset .MathJax_CHTML{outline:0}.md-typeset del.critic,.md-typeset ins.critic,.md-typeset .critic.comment{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:#fdd;box-shadow:.25em 0 0 #fdd,-0.25em 0 0 #fdd}.md-typeset ins.critic{background-color:#dfd;box-shadow:.25em 0 0 #dfd,-0.25em 0 0 #dfd}.md-typeset .critic.comment{color:#999}.md-typeset .critic.comment::before{content:"/* "}.md-typeset .critic.comment::after{content:" */"}.md-typeset .critic.block{display:block;margin:1em 0;padding-right:.8rem;padding-left:.8rem;box-shadow:none}.md-typeset .critic.block :first-child{margin-top:.5em}.md-typeset .critic.block :last-child{margin-bottom:.5em}.md-typeset details{display:block;padding-top:0}.md-typeset details[open]>summary::after{transform:rotate(180deg)}.md-typeset details:not([open]){padding-bottom:0}.md-typeset details:not([open])>summary{border-bottom:none}.md-typeset details summary{position:relative;padding-right:2rem}[dir=rtl] .md-typeset details summary{padding-left:2rem}.md-typeset summary{display:block;outline:none;cursor:pointer}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset summary::after{position:absolute;right:.6rem;width:1rem;height:1rem;background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset summary::after{right:initial;left:.6rem}.md-typeset .emojione,.md-typeset .twemoji,.md-typeset .gemoji{width:1rem;vertical-align:text-top}.highlight [data-linenos]::before{display:inline-block;position:-webkit-sticky;position:sticky;left:-0.6rem;margin-right:.6rem;margin-left:-0.6rem;padding-left:.6rem;border-right:.05rem solid var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);content:attr(data-linenos);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-typeset code.codehilite,.md-typeset code.highlight{margin:0 .2941176471em;padding:.0735294118em 0}.md-typeset .tabbed-content{display:none;order:99;width:100%;background-color:var(--md-code-bg-color)}.md-typeset .tabbed-content pre{margin:0;border-radius:0}.md-typeset .tabbed-set{display:flex;position:relative;flex-wrap:wrap;margin:1em 0;border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem}.md-typeset .tabbed-set>input{display:none}.md-typeset .tabbed-set>input:checked+label{border-color:var(--md-accent-fg-color);color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:checked+label+.tabbed-content{display:block;padding:0 .6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>:last-child{margin-bottom:.6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>pre:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlight:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlighttable:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilite:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilitetable:only-child{margin:0 -0.6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>pre:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlight:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlighttable:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilite:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilitetable:only-child pre{background:transparent}.md-typeset .tabbed-set>label{width:auto;padding:.6rem;padding-bottom:.5rem;transition:color 125ms,border 250ms;border-bottom:.1rem solid transparent;color:var(--md-default-fg-color--light);font-size:.64rem;font-weight:700;cursor:pointer}html .md-typeset .tabbed-set>label:hover{color:var(--md-accent-fg-color)}.md-typeset .task-list-item{position:relative;list-style-type:none}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em;left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em;left:initial}.md-typeset .task-list-control .task-list-indicator::before{position:absolute;top:.15em;left:-1.5em;width:1.25em;height:1.25em;background-color:var(--md-default-fg-color--lightest);-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .task-list-control .task-list-indicator::before{right:-1.5em;left:initial}.md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator::before{background-color:#00e676;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}@media print{.md-typeset a::after{color:var(--md-default-fg-color--light);content:" [" attr(href) "]"}.md-typeset code,.md-typeset pre,.md-typeset kbd{white-space:pre-wrap}.md-clipboard{display:none}.md-content__button{display:none}.md-dialog{display:none}.md-header{display:none}.md-footer{display:none}.md-sidebar{display:none}.md-tabs{display:none}.md-typeset .headerlink{display:none}}@media screen and (max-width: 44.9375em){.md-typeset>pre{margin:1em -0.8rem;border-radius:0}.md-typeset>pre>code{padding:.525rem .8rem}.md-footer-nav__link--prev .md-footer-nav__title{display:none}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}.codehilite .hll,.highlight .hll{margin:0 -0.8rem;padding:0 .8rem}.md-typeset>.codehilite,.md-typeset>.highlight{margin:1em -0.8rem}.md-typeset>.codehilite code,.md-typeset>.highlight code{padding:.525rem .8rem}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{margin:1em -0.8rem;border-radius:0}.md-typeset>.codehilitetable .linenodiv,.md-typeset>.highlighttable .linenodiv{padding:.5rem .8rem}.md-typeset>p>.MJXc-display{margin:.75em -0.8rem;padding:.25em .8rem}.highlight [data-linenos]::before{left:-1.6rem;margin-left:-1.6rem;padding-left:1.6rem}.md-typeset>.tabbed-set{margin:1em -0.8rem;border:0;border-top:.05rem solid var(--md-default-fg-color--lightest);border-radius:0}.md-typeset>.tabbed-set code{padding:.525rem .8rem}.md-typeset>.tabbed-set input:first-child+label{margin-left:.2rem}}@media screen and (min-width: 100em){html{font-size:137.5%}}@media screen and (min-width: 125em){html{font-size:150%}}@media screen and (max-width: 59.9375em){body[data-md-state=lock]{position:fixed}html .md-nav__link[for=__toc]{display:block;padding-right:2.4rem}html .md-nav__link[for=__toc]+.md-nav__link{display:none}html .md-nav__link[for=__toc]~.md-nav{display:flex}html [dir=rtl] .md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav__source{display:block;padding:0 .2rem;background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color)}.md-search__overlay{position:absolute;top:.2rem;left:-2.2rem;width:2rem;height:2rem;transform-origin:center;transition:transform 300ms 100ms,opacity 200ms 200ms;border-radius:1rem;background-color:var(--md-default-bg-color);overflow:hidden;pointer-events:none}[dir=rtl] .md-search__overlay{right:-2.2rem;left:initial}[data-md-toggle=search]:checked~.md-header .md-search__overlay{transition:transform 400ms,opacity 100ms;opacity:1}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:100%;transform:translateX(5%);transition:right 0ms 300ms,left 0ms 300ms,transform 150ms 150ms cubic-bezier(0.4, 0, 0.2, 1),opacity 150ms 150ms;opacity:0;z-index:2}[data-md-toggle=search]:checked~.md-header .md-search__inner{left:0;transform:translateX(0);transition:right 0ms 0ms,left 0ms 0ms,transform 150ms 150ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms 150ms;opacity:1}[dir=rtl] [data-md-toggle=search]:checked~.md-header .md-search__inner{right:0;left:initial}html [dir=rtl] .md-search__inner{right:100%;left:initial;transform:translateX(-5%)}.md-search__input{width:100%;height:2.4rem;font-size:.9rem}.md-search__icon[for=__search]{top:.6rem;left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem;left:initial}.md-search__icon[for=__search] svg:first-child{display:none}.md-search__icon[type=reset]{top:.6rem;right:.8rem}[dir=rtl] .md-search__icon[type=reset]{right:initial;left:.8rem}.md-search__output{top:2.4rem;bottom:0}.md-search-result__icon{display:none}}@media screen and (max-width: 76.1875em){[data-md-toggle=drawer]:checked~.md-overlay{width:100%;height:100%;transition:width 0ms,height 0ms,opacity 250ms;opacity:1}.md-header-nav__button.md-logo{display:none}.md-hero__inner{margin-top:2.4rem;margin-bottom:1.2rem}.md-nav{background-color:var(--md-default-bg-color)}.md-nav--primary,.md-nav--primary .md-nav{display:flex;position:absolute;top:0;right:0;left:0;flex-direction:column;height:100%;z-index:1}.md-nav--primary .md-nav__title,.md-nav--primary .md-nav__item{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{position:relative;height:5.6rem;padding:3rem .8rem .2rem;background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-weight:400;line-height:2.4rem;white-space:nowrap;cursor:pointer}.md-nav--primary .md-nav__title .md-nav__icon{display:block;position:absolute;top:.4rem;left:.4rem;width:1.2rem;height:1.2rem;margin:.2rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem;left:initial}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:inset 0 .05rem 0 var(--md-default-fg-color--lightest);overflow-y:auto;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{position:relative;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-nav--primary .md-nav__title[for=__drawer] .md-nav__button{display:block;position:absolute;top:.2rem;left:.2rem;width:3.2rem;height:3.2rem;margin:.2rem;padding:.4rem;font-size:2.4rem}html [dir=rtl] .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button{right:.2rem;left:initial}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{padding:0;border-top:.05rem solid var(--md-default-fg-color--lightest)}[dir=rtl] .md-nav--primary .md-nav__item{padding:0}.md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:2.4rem}[dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-primary-fg-color)}.md-nav--primary .md-nav__link{position:relative;margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link .md-nav__icon{position:absolute;top:50%;right:.6rem;margin-top:-0.6rem;color:inherit;font-size:1.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{right:initial;left:.6rem}[dir=rtl] .md-nav--primary .md-nav__icon svg{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav__link{position:static}.md-nav--primary .md-nav--secondary .md-nav{position:static;background-color:transparent}.md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem;padding-left:initial}.md-nav__toggle~.md-nav{display:flex;transform:translateX(100%);transition:transform 250ms cubic-bezier(0.8, 0, 0.6, 1),opacity 125ms 50ms;opacity:0}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{transform:translateX(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),opacity 125ms 125ms;opacity:1}.md-sidebar--primary{position:fixed;top:0;left:-12.1rem;width:12.1rem;height:100%;transform:translateX(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 250ms;background-color:var(--md-default-bg-color);z-index:3}[dir=rtl] .md-sidebar--primary{right:-12.1rem;left:initial}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden}.md-sidebar--primary .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;-webkit-scroll-snap-type:none;-ms-scroll-snap-type:none;scroll-snap-type:none}.md-tabs{display:none}}@media screen and (min-width: 60em){.md-content{margin-right:12.1rem}[dir=rtl] .md-content{margin-right:initial;margin-left:12.1rem}.md-header-nav__button[for=__search]{display:none}.md-header-nav__source{display:block;width:11.7rem;max-width:11.7rem;margin-left:1rem}[dir=rtl] .md-header-nav__source{margin-right:1rem;margin-left:initial}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}.md-search{padding:.2rem 0}.md-search__overlay{position:fixed;top:0;left:0;width:0;height:0;transition:width 0ms 250ms,height 0ms 250ms,opacity 250ms;background-color:var(--md-default-fg-color--light);cursor:pointer}[dir=rtl] .md-search__overlay{right:0;left:initial}[data-md-toggle=search]:checked~.md-header .md-search__overlay{width:100%;height:100%;transition:width 0ms,height 0ms,opacity 250ms;opacity:1}.md-search__inner{position:relative;width:11.7rem;padding:.1rem 0;float:right;transition:width 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}[dir=rtl] .md-search__inner{float:left}.md-search__form{border-radius:.1rem}.md-search__input{width:100%;height:1.8rem;padding-left:2.2rem;transition:background-color 250ms cubic-bezier(0.1, 0.7, 0.1, 1),color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);border-radius:.1rem;background-color:var(--md-default-fg-color--lighter);color:inherit;font-size:.8rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}.md-search__input::-webkit-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::-moz-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input:hover{background-color:var(--md-default-bg-color--lightest)}[data-md-toggle=search]:checked~.md-header .md-search__input{border-radius:.1rem .1rem 0 0;background-color:var(--md-default-bg-color);color:var(--md-default-fg-color);text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-webkit-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}.md-search__icon[for=__search] svg:last-child{display:none}.md-search__output{top:1.9rem;transition:opacity 400ms;opacity:0}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4);opacity:1}.md-search__scrollwrap{max-height:0}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem;padding-left:initial}.md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem;padding-left:.8rem}.md-sidebar--secondary{display:block;margin-left:calc(100% - 12.1rem)}[dir=rtl] .md-sidebar--secondary{margin-right:calc(100% - 12.1rem);margin-left:initial}.md-sidebar--secondary .md-sidebar__scrollwrap{-webkit-overflow-scrolling:touch}}@media screen and (min-width: 76.25em){.md-content{margin-left:12.1rem}[dir=rtl] .md-content{margin-right:12.1rem}.md-content__inner{margin-right:1.2rem;margin-left:1.2rem}.md-header-nav__button[for=__drawer]{display:none}.md-header-nav__source{margin-left:1.4rem}[dir=rtl] .md-header-nav__source{margin-right:1.4rem}.md-nav{transition:max-height 250ms cubic-bezier(0.86, 0, 0.07, 1)}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:checked~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__icon{height:.9rem;float:right;transition:transform 250ms}.md-nav__icon svg{display:inline-block;width:.9rem;height:.9rem;vertical-align:-0.1rem}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon{transform:rotateZ(90deg)}[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}.md-search__scrollwrap{width:34.4rem}.md-sidebar--secondary{margin-left:48.9rem}[dir=rtl] .md-sidebar--secondary{margin-right:48.9rem;margin-left:initial}.md-tabs~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{max-height:0;font-size:0;visibility:hidden}.md-tabs--active~.md-main .md-nav--primary .md-nav__title{display:block;padding:0;pointer-events:none}.md-tabs--active~.md-main .md-nav--primary .md-nav__title[for=__drawer]{display:none}.no-js .md-tabs--active~.md-main .md-nav--primary>.md-nav{display:block}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item{font-size:0;visibility:hidden}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{display:none;max-height:none;font-size:.7rem;overflow:auto;visibility:visible}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested>.md-nav__link{display:none}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--active{display:block}.md-tabs--active~.md-main .md-nav[data-md-level="1"]{max-height:initial;overflow:visible}.md-tabs--active~.md-main .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding:0}.md-tabs--active~.md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title{display:none}}@media screen and (min-width: 45em){.md-footer-nav__link{width:50%}.md-footer-copyright{max-width:75%;float:left}[dir=rtl] .md-footer-copyright{float:right}.md-footer-social{padding:.6rem 0;float:right}[dir=rtl] .md-footer-social{float:left}}@media screen and (max-width: 29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width: 30em)and (max-width: 44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width: 45em)and (max-width: 59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}@media screen and (min-width: 60em)and (max-width: 76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}.md-search__scrollwrap{width:23.4rem}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}}@media(-webkit-max-device-pixel-ratio: 1), (max-resolution: 1dppx){.md-search__scrollwrap{transform:translateZ(0)}} \ No newline at end of file diff --git a/material/assets/stylesheets/main.c05f2dae.min.css b/material/assets/stylesheets/main.c05f2dae.min.css new file mode 100644 index 000000000..79c14ee2f --- /dev/null +++ b/material/assets/stylesheets/main.c05f2dae.min.css @@ -0,0 +1 @@ +html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}body{margin:0}hr{overflow:visible;box-sizing:content-box}a{-webkit-text-decoration-skip:objects}a,button,label,input{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}small{font-size:80%}sub,sup{position:relative;font-size:80%;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}table{border-collapse:separate;border-spacing:0}td,th{font-weight:normal;vertical-align:top}button{margin:0;padding:0;border:0;background:transparent;font-size:inherit}input{border:0;outline:0}:root{--md-default-fg-color: hsla(0, 0%, 0%, 0.87);--md-default-fg-color--light: hsla(0, 0%, 0%, 0.54);--md-default-fg-color--lighter: hsla(0, 0%, 0%, 0.26);--md-default-fg-color--lightest: hsla(0, 0%, 0%, 0.07);--md-default-bg-color: hsla(0, 0%, 100%, 1);--md-default-bg-color--light: hsla(0, 0%, 100%, 0.7);--md-default-bg-color--lighter: hsla(0, 0%, 100%, 0.3);--md-default-bg-color--lightest: hsla(0, 0%, 100%, 0.12);--md-primary-fg-color: hsla(231deg, 48%, 48%, 1);--md-primary-fg-color--light: hsla(230deg, 44%, 64%, 1);--md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light);--md-accent-fg-color: hsla(231deg, 99%, 66%, 1);--md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light);--md-code-bg-color: hsla(0, 0%, 92.5%, 0.5);--md-code-fg-color: hsla(200, 18%, 26%, 1)}.md-icon svg{display:block;width:1.2rem;height:1.2rem;margin:0 auto;fill:currentColor}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,input{color:var(--md-default-fg-color);-webkit-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}code,pre,kbd{color:var(--md-default-fg-color);-webkit-font-feature-settings:"kern";font-feature-settings:"kern";font-family:"Courier New",Courier,monospace}.md-typeset{font-size:.8rem;line-height:1.6;-webkit-print-color-adjust:exact}.md-typeset p,.md-typeset ul,.md-typeset ol,.md-typeset blockquote{margin:1em 0}.md-typeset h1{margin:0 0 2rem;color:var(--md-default-fg-color--light);font-size:1.5625rem;font-weight:300;letter-spacing:-0.01em;line-height:1.3}.md-typeset h2{margin:2rem 0 .8rem;font-size:1.25rem;font-weight:300;letter-spacing:-0.01em;line-height:1.4}.md-typeset h3{margin:1.6rem 0 .8rem;font-size:1rem;font-weight:400;letter-spacing:-0.01em;line-height:1.5}.md-typeset h2+h3{margin-top:.8rem}.md-typeset h4{margin:.8rem 0;font-size:.8rem;font-weight:700;letter-spacing:-0.01em}.md-typeset h5,.md-typeset h6{margin:.8rem 0;color:var(--md-default-fg-color--light);font-size:.64rem;font-weight:700;letter-spacing:-0.01em}.md-typeset h5{text-transform:uppercase}.md-typeset hr{margin:1.5em 0;border-bottom:.05rem dotted var(--md-default-fg-color--lighter)}.md-typeset a{color:var(--md-primary-fg-color);word-break:break-word}.md-typeset a,.md-typeset a::before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset code,.md-typeset pre,.md-typeset kbd{background-color:var(--md-code-bg-color);color:var(--md-code-fg-color);font-size:85%;direction:ltr}.md-typeset code{margin:0 .2941176471em;padding:.0735294118em 0;border-radius:.1rem;box-shadow:.2941176471em 0 0 var(--md-code-bg-color),-0.2941176471em 0 0 var(--md-code-bg-color);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset h1 code,.md-typeset h2 code,.md-typeset h3 code,.md-typeset h4 code,.md-typeset h5 code,.md-typeset h6 code{margin:0;background-color:transparent;box-shadow:none}.md-typeset a>code{margin:inherit;padding:inherit;border-radius:initial;background-color:inherit;color:inherit;box-shadow:none}.md-typeset pre{position:relative;margin:1em 0;border-radius:.1rem;line-height:1.4;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch}.md-typeset pre>code{display:block;margin:0;padding:.525rem .6rem;background-color:transparent;font-size:inherit;box-shadow:none;-webkit-box-decoration-break:slice;box-decoration-break:slice;overflow:auto;word-break:normal}.md-typeset pre>code::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{display:inline-block;padding:0 .5882352941em;border-radius:.1rem;font-size:.75em;line-height:1.5;box-shadow:0 .1rem 0 .05rem var(--md-default-fg-color--lighter),0 .1rem 0 var(--md-default-fg-color--lighter),inset 0 -0.1rem .2rem var(--md-default-bg-color);word-break:break-word;vertical-align:text-top}.md-typeset mark{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;background-color:rgba(255,235,59,.5);box-shadow:.25em 0 0 rgba(255,235,59,.5),-0.25em 0 0 rgba(255,235,59,.5);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);text-decoration:none;cursor:help}.md-typeset small{opacity:.75}.md-typeset sup,.md-typeset sub{margin-left:.078125em}[dir=rtl] .md-typeset sup,[dir=rtl] .md-typeset sub{margin-right:.078125em;margin-left:initial}.md-typeset blockquote{padding-left:.6rem;border-left:.2rem solid var(--md-default-fg-color--lighter);color:var(--md-default-fg-color--light)}[dir=rtl] .md-typeset blockquote{padding-right:.6rem;padding-left:initial;border-right:.2rem solid var(--md-default-fg-color--lighter);border-left:initial}.md-typeset ul{list-style-type:disc}.md-typeset ul,.md-typeset ol{margin-left:.625em;padding:0}[dir=rtl] .md-typeset ul,[dir=rtl] .md-typeset ol{margin-right:.625em;margin-left:initial}.md-typeset ul ol,.md-typeset ol ol{list-style-type:lower-alpha}.md-typeset ul ol ol,.md-typeset ol ol ol{list-style-type:lower-roman}.md-typeset ul li,.md-typeset ol li{margin-bottom:.5em;margin-left:1.25em}[dir=rtl] .md-typeset ul li,[dir=rtl] .md-typeset ol li{margin-right:1.25em;margin-left:initial}.md-typeset ul li p,.md-typeset ul li blockquote,.md-typeset ol li p,.md-typeset ol li blockquote{margin:.5em 0}.md-typeset ul li:last-child,.md-typeset ol li:last-child{margin-bottom:0}.md-typeset ul li ul,.md-typeset ul li ol,.md-typeset ol li ul,.md-typeset ol li ol{margin:.5em 0 .5em .625em}[dir=rtl] .md-typeset ul li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ol li ol{margin-right:.625em;margin-left:initial}.md-typeset dd{margin:1em 0 1em 1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em;margin-left:initial}.md-typeset iframe,.md-typeset img,.md-typeset svg{max-width:100%}.md-typeset table:not([class]){display:inline-block;max-width:100%;border-radius:.1rem;background:var(--md-default-bg-color);font-size:.64rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) th:not([align]),.md-typeset table:not([class]) td:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) th:not([align]),[dir=rtl] .md-typeset table:not([class]) td:not([align]){text-align:right}.md-typeset table:not([class]) th{min-width:5rem;padding:.6rem .8rem;background-color:var(--md-default-fg-color--light);color:var(--md-default-bg-color);vertical-align:top}.md-typeset table:not([class]) td{padding:.6rem .8rem;border-top:.05rem solid var(--md-default-fg-color--lightest);vertical-align:top}.md-typeset table:not([class]) tr{transition:background-color 125ms}.md-typeset table:not([class]) tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) tr:first-child td{border-top:0}.md-typeset table:not([class]) a{word-break:normal}.md-typeset__scrollwrap{margin:1em -0.8rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.md-typeset .md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}.md-typeset .md-typeset__table table{display:table;width:100%;margin:0;overflow:hidden}html{height:100%;background-color:var(--md-default-bg-color);font-size:125%;overflow-x:hidden}body{display:flex;position:relative;flex-direction:column;width:100%;min-height:100%;font-size:.5rem}hr{display:block;height:.05rem;padding:0;border:0}.md-grid{max-width:61rem;margin-right:auto;margin-left:auto}.md-container{display:flex;flex-direction:column;flex-grow:1}.md-main{flex-grow:1}.md-main__inner{height:100%;padding-top:1.5rem;padding-bottom:.05rem}.md-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;transition:width 0ms 250ms,height 0ms 250ms,opacity 250ms;background-color:var(--md-default-fg-color--light);opacity:0;z-index:3}.md-skip{position:fixed;margin:.5rem;padding:.3rem .5rem;transform:translateY(0.4rem);border-radius:.1rem;background-color:var(--md-default-fg-color);color:var(--md-default-bg-color);font-size:.64rem;opacity:0}.md-skip:focus{transform:translateY(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),opacity 175ms 75ms;opacity:1;z-index:10}@page{margin:25mm}.md-announce{background-color:var(--md-default-fg-color)}.md-announce__inner{min-height:2.4rem;padding:0 .8rem;color:var(--md-default-bg-color);font-size:.7rem;line-height:2.4rem}.md-clipboard{position:absolute;top:.4rem;right:.4rem;width:1.2rem;height:1.2rem;transition:color 250ms;border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-clipboard svg{width:.9rem;height:.9rem}pre:hover .md-clipboard{color:var(--md-default-fg-color--light)}pre .md-clipboard:focus,pre .md-clipboard:hover{color:var(--md-accent-fg-color)}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}.md-content__inner::before{display:block;height:.4rem;content:""}.md-content__inner>:last-child{margin-bottom:0}.md-content__button{margin:.4rem 0;margin-left:.4rem;padding:0;float:right}[dir=rtl] .md-content__button{margin-right:.4rem;margin-left:initial;float:left}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}.md-dialog{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);display:block;position:fixed;right:.8rem;bottom:.8rem;left:initial;min-width:11.1rem;padding:.4rem .6rem;transform:translateY(100%);transition:transform 0ms 400ms,opacity 400ms;border:none;border-radius:.1rem;background:var(--md-default-fg-color);color:var(--md-default-bg-color);font-size:.7rem;opacity:0;z-index:2}[dir=rtl] .md-dialog{right:initial;left:.8rem}.md-dialog[data-md-state=open]{transform:translateY(0);transition:transform 400ms cubic-bezier(0.075, 0.85, 0.175, 1),opacity 400ms;opacity:1}.md-header{position:-webkit-sticky;position:sticky;top:0;right:0;left:0;height:2.4rem;transition:background-color 250ms,color 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);box-shadow:0 0 .2rem rgba(0,0,0,0),0 .2rem .4rem rgba(0,0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:2}.no-js .md-header{transition:none;box-shadow:none}.md-header[data-md-state=shadow]{transition:background-color 250ms,color 250ms,box-shadow 250ms;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.md-header-nav{display:flex;padding:0 .2rem}.md-header-nav__button{position:relative;margin:.2rem;padding:.4rem;transition:opacity 250ms;cursor:pointer;z-index:1}[dir=rtl] .md-header-nav__button svg{transform:scaleX(-1)}.md-header-nav__button:focus,.md-header-nav__button:hover{opacity:.7}.md-header-nav__button.md-logo{margin:.2rem;padding:.4rem}.md-header-nav__button.md-logo img,.md-header-nav__button.md-logo svg{display:block;width:1.2rem;height:1.2rem;fill:currentColor}.no-js .md-header-nav__button[for=__search]{display:none}.md-header-nav__topic{display:block;position:absolute;width:100%;padding:0 1rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-header-nav__topic+.md-header-nav__topic{transform:translateX(1.25rem);transition:transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1),opacity 150ms;opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__topic+.md-header-nav__topic{transform:translateX(-1.25rem)}.no-js .md-header-nav__topic{position:initial}.no-js .md-header-nav__topic+.md-header-nav__topic{display:none}.md-header-nav__title{flex-grow:1;font-size:.9rem;line-height:2.4rem}.md-header-nav__title[data-md-state=active] .md-header-nav__topic{transform:translateX(-1.25rem);transition:transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1),opacity 150ms;opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic{transform:translateX(1.25rem)}.md-header-nav__title[data-md-state=active] .md-header-nav__topic+.md-header-nav__topic{transform:translateX(0);transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;opacity:1;z-index:0;pointer-events:initial}.md-header-nav__title>.md-header-nav__ellipsis{position:relative;width:100%;height:100%}.md-header-nav__source{display:none}.md-hero{transition:background 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-size:1rem;overflow:hidden}.md-hero__inner{margin-top:1rem;padding:.8rem .8rem .4rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;transition-delay:100ms}[data-md-state=hidden] .md-hero__inner{pointer-events:none;transform:translateY(0.625rem);transition:transform 0ms 400ms,opacity 100ms 0ms;opacity:0}.md-hero--expand .md-hero__inner{margin-bottom:1.2rem}.md-footer{background-color:var(--md-default-fg-color);color:var(--md-default-bg-color)}.md-footer-nav__inner{padding:.2rem;overflow:auto}.md-footer-nav__link{display:flex;padding-top:1.4rem;padding-bottom:.4rem;transition:opacity 250ms}.md-footer-nav__link:focus,.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}[dir=rtl] .md-footer-nav__link--prev{float:right}[dir=rtl] .md-footer-nav__link--prev svg{transform:scaleX(-1)}.md-footer-nav__link--next{width:75%;float:right;text-align:right}[dir=rtl] .md-footer-nav__link--next{float:left;text-align:left}[dir=rtl] .md-footer-nav__link--next svg{transform:scaleX(-1)}.md-footer-nav__title{position:relative;flex-grow:1;max-width:calc(100% - 2.4rem);padding:0 1rem;font-size:.9rem;line-height:2.4rem}.md-footer-nav__button{margin:.2rem;padding:.4rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-1rem;padding:0 1rem;color:var(--md-default-bg-color--light);font-size:.75rem}.md-footer-meta{background-color:var(--md-default-fg-color--lighter)}.md-footer-meta__inner{padding:.2rem;overflow:auto}html .md-footer-meta.md-typeset a{color:var(--md-default-bg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-default-bg-color)}.md-footer-copyright{margin:0 .6rem;padding:.4rem 0;color:var(--md-default-bg-color--lighter);font-size:.64rem}.md-footer-copyright__highlight{color:var(--md-default-bg-color--light)}.md-footer-social{margin:0 .4rem;padding:.2rem 0 .6rem}.md-footer-social__link{display:inline-block;width:1.6rem;height:1.6rem;transition:color 250ms;text-align:center}.md-footer-social__link::before{line-height:1.9}.md-footer-social__link svg{width:.8rem;vertical-align:-25%;fill:currentColor}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;padding:0 .6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{width:100%;height:auto}.md-nav__title .md-nav__button.md-logo svg img,.md-nav__title .md-nav__button.md-logo svg svg{display:block;width:1.2rem;height:1.2rem;fill:currentColor}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:0 .6rem}.md-nav__item:last-child{padding-bottom:.6rem}.md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-right:.6rem;padding-left:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__link{display:block;margin-top:.625em;transition:color 125ms;text-overflow:ellipsis;cursor:pointer;overflow:hidden;scroll-snap-align:start}html .md-nav__link[for=__toc]{display:none}html .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link[data-md-state=blur]{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-primary-fg-color)}.md-nav__item--nested>.md-nav__link{color:inherit}.md-nav__link:focus,.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav__source{display:none}.md-search{position:relative}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-search__form{position:relative}.md-search__input{position:relative;padding:0 2.2rem 0 3.6rem;text-overflow:ellipsis;z-index:2}[dir=rtl] .md-search__input{padding:0 3.6rem 0 2.2rem}.md-search__input::-webkit-input-placeholder{-webkit-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-moz-placeholder{-moz-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-ms-input-placeholder{-ms-transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::placeholder{transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}.md-search__input::-webkit-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input~.md-search__icon,.md-search__input::placeholder{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}.md-search__icon{position:absolute;width:1.2rem;height:1.2rem;transition:color 250ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;cursor:pointer;z-index:2}.md-search__icon:hover{opacity:.7}.md-search__icon[for=__search]{top:.3rem;left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem;left:initial}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}.md-search__icon[type=reset]{top:.3rem;right:.5rem;transform:scale(0.75);transition:transform 150ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms;opacity:0;pointer-events:none}[dir=rtl] .md-search__icon[type=reset]{right:initial;left:.5rem}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]{transform:scale(1);opacity:1;pointer-events:initial}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]:hover{opacity:.7}.md-search__output{position:absolute;width:100%;border-radius:0 0 .1rem .1rem;overflow:hidden;z-index:1}.md-search__scrollwrap{height:100%;background-color:var(--md-default-bg-color);box-shadow:inset 0 .05rem 0 var(--md-default-fg-color--lightest);overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{padding:0 .8rem;background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;scroll-snap-align:start}.md-search-result__list{margin:0;padding:0;border-top:.05rem solid var(--md-default-fg-color--lightest);list-style:none}.md-search-result__item{box-shadow:0 -0.05rem 0 var(--md-default-fg-color--lightest)}.md-search-result__link{display:block;transition:background 250ms;outline:0;overflow:hidden;scroll-snap-align:start}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:focus .md-search-result__article::before,.md-search-result__link:hover .md-search-result__article::before{opacity:.7}.md-search-result__link:last-child .md-search-result__teaser{margin-bottom:.6rem}.md-search-result__article{position:relative;padding:0 .8rem;overflow:auto}.md-search-result__article--document .md-search-result__title{margin:.55rem 0;font-size:.8rem;font-weight:400;line-height:1.4}.md-search-result__icon{position:absolute;left:0;margin:.1rem;padding:.4rem;color:var(--md-default-fg-color--light)}[dir=rtl] .md-search-result__icon{right:0;left:initial}[dir=rtl] .md-search-result__icon svg{transform:scaleX(-1)}.md-search-result__title{margin:.5em 0;font-size:.64rem;font-weight:700;line-height:1.4}.md-search-result__teaser{display:-webkit-box;max-height:1.65rem;margin:.5em 0;color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.4;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.md-search-result em{font-style:normal;font-weight:700;text-decoration:underline}.md-sidebar{position:absolute;width:12.1rem;padding:1.2rem 0;overflow:hidden}.md-sidebar[data-md-state=lock]{position:fixed;top:2.4rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{max-height:100%;margin:0 .2rem;overflow-y:auto;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@-webkit-keyframes md-source__facts--done{0%{height:0}100%{height:.65rem}}@keyframes md-source__facts--done{0%{height:0}100%{height:.65rem}}@-webkit-keyframes md-source__fact--done{0%{transform:translateY(100%);opacity:0}50%{opacity:0}100%{transform:translateY(0%);opacity:1}}@keyframes md-source__fact--done{0%{transform:translateY(100%);opacity:0}50%{opacity:0}100%{transform:translateY(0%);opacity:1}}.md-source{display:block;padding-right:.6rem;transition:opacity 250ms;font-size:.65rem;line-height:1.2;white-space:nowrap;-webkit-backface-visibility:hidden;backface-visibility:hidden}[dir=rtl] .md-source{padding-right:initial;padding-left:.6rem}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;width:2.4rem;height:2.4rem;vertical-align:middle}.md-source__icon svg{margin-top:.6rem;margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem;margin-left:initial}.md-source__icon+.md-source__repository{margin-left:-2rem;padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem;margin-left:initial;padding-right:2rem;padding-left:initial}.md-source__repository{display:inline-block;max-width:100%;margin-left:.6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.md-source__facts{margin:0;padding:0;font-size:.55rem;font-weight:700;list-style-type:none;opacity:.75;overflow:hidden}[data-md-state=done] .md-source__facts{-webkit-animation:md-source__facts--done 250ms ease-in;animation:md-source__facts--done 250ms ease-in}.md-source__fact{float:left}[dir=rtl] .md-source__fact{float:right}[data-md-state=done] .md-source__fact{-webkit-animation:md-source__fact--done 400ms ease-out;animation:md-source__fact--done 400ms ease-out}.md-source__fact::before{margin:0 .1rem;content:"·"}.md-source__fact:first-child::before{display:none}.md-tabs{width:100%;transition:background 250ms;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);overflow:auto}.no-js .md-tabs{transition:none}.md-tabs__list{margin:0;margin-left:.2rem;padding:0;list-style:none;white-space:nowrap}[dir=rtl] .md-tabs__list{margin-right:.2rem;margin-left:initial}.md-tabs__item{display:inline-block;height:2.4rem;padding-right:.6rem;padding-left:.6rem}.md-tabs__link{display:block;margin-top:.8rem;transition:transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 250ms;font-size:.7rem;opacity:.7}.no-js .md-tabs__link{transition:none}.md-tabs__link--active,.md-tabs__link:hover{color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:100ms}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:120ms}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:140ms}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:160ms}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:180ms}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:200ms}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:220ms}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:240ms}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:260ms}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:280ms}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:300ms}.md-tabs[data-md-state=hidden]{pointer-events:none}.md-tabs[data-md-state=hidden] .md-tabs__link{transform:translateY(50%);transition:color 250ms,transform 0ms 400ms,opacity 100ms;opacity:0}.md-typeset .admonition,.md-typeset details{margin:1.5625em 0;padding:0 .6rem;border-left:.2rem solid #448aff;border-radius:.1rem;font-size:.64rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .05rem rgba(0,0,0,.1);overflow:auto}[dir=rtl] .md-typeset .admonition,[dir=rtl] .md-typeset details{border-right:.2rem solid #448aff;border-left:none}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}.md-typeset .admonition .admonition,.md-typeset details .admonition,.md-typeset .admonition details,.md-typeset details details{margin:1em 0}.md-typeset .admonition.tldr,.md-typeset details.tldr,.md-typeset .admonition.summary,.md-typeset details.summary,.md-typeset .admonition.abstract,.md-typeset details.abstract{border-left-color:#00b0ff}.md-typeset .admonition.tldr>:first-child,.md-typeset details.tldr>:first-child,.md-typeset .admonition.summary>:first-child,.md-typeset details.summary>:first-child,.md-typeset .admonition.abstract>:first-child,.md-typeset details.abstract>:first-child{background-color:rgba(0,176,255,.1)}.md-typeset .admonition.tldr>:first-child::before,.md-typeset details.tldr>:first-child::before,.md-typeset .admonition.summary>:first-child::before,.md-typeset details.summary>:first-child::before,.md-typeset .admonition.abstract>:first-child::before,.md-typeset details.abstract>:first-child::before{background-color:#00b0ff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.todo,.md-typeset details.todo,.md-typeset .admonition.info,.md-typeset details.info{border-left-color:#00b8d4}.md-typeset .admonition.todo>:first-child,.md-typeset details.todo>:first-child,.md-typeset .admonition.info>:first-child,.md-typeset details.info>:first-child{background-color:rgba(0,184,212,.1)}.md-typeset .admonition.todo>:first-child::before,.md-typeset details.todo>:first-child::before,.md-typeset .admonition.info>:first-child::before,.md-typeset details.info>:first-child::before{background-color:#00b8d4;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.important,.md-typeset details.important,.md-typeset .admonition.hint,.md-typeset details.hint,.md-typeset .admonition.tip,.md-typeset details.tip{border-left-color:#00bfa5}.md-typeset .admonition.important>:first-child,.md-typeset details.important>:first-child,.md-typeset .admonition.hint>:first-child,.md-typeset details.hint>:first-child,.md-typeset .admonition.tip>:first-child,.md-typeset details.tip>:first-child{background-color:rgba(0,191,165,.1)}.md-typeset .admonition.important>:first-child::before,.md-typeset details.important>:first-child::before,.md-typeset .admonition.hint>:first-child::before,.md-typeset details.hint>:first-child::before,.md-typeset .admonition.tip>:first-child::before,.md-typeset details.tip>:first-child::before{background-color:#00bfa5;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.done,.md-typeset details.done,.md-typeset .admonition.check,.md-typeset details.check,.md-typeset .admonition.success,.md-typeset details.success{border-left-color:#00c853}.md-typeset .admonition.done>:first-child,.md-typeset details.done>:first-child,.md-typeset .admonition.check>:first-child,.md-typeset details.check>:first-child,.md-typeset .admonition.success>:first-child,.md-typeset details.success>:first-child{background-color:rgba(0,200,83,.1)}.md-typeset .admonition.done>:first-child::before,.md-typeset details.done>:first-child::before,.md-typeset .admonition.check>:first-child::before,.md-typeset details.check>:first-child::before,.md-typeset .admonition.success>:first-child::before,.md-typeset details.success>:first-child::before{background-color:#00c853;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.faq,.md-typeset details.faq,.md-typeset .admonition.help,.md-typeset details.help,.md-typeset .admonition.question,.md-typeset details.question{border-left-color:#64dd17}.md-typeset .admonition.faq>:first-child,.md-typeset details.faq>:first-child,.md-typeset .admonition.help>:first-child,.md-typeset details.help>:first-child,.md-typeset .admonition.question>:first-child,.md-typeset details.question>:first-child{background-color:rgba(100,221,23,.1)}.md-typeset .admonition.faq>:first-child::before,.md-typeset details.faq>:first-child::before,.md-typeset .admonition.help>:first-child::before,.md-typeset details.help>:first-child::before,.md-typeset .admonition.question>:first-child::before,.md-typeset details.question>:first-child::before{background-color:#64dd17;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.attention,.md-typeset details.attention,.md-typeset .admonition.caution,.md-typeset details.caution,.md-typeset .admonition.warning,.md-typeset details.warning{border-left-color:#ff9100}.md-typeset .admonition.attention>:first-child,.md-typeset details.attention>:first-child,.md-typeset .admonition.caution>:first-child,.md-typeset details.caution>:first-child,.md-typeset .admonition.warning>:first-child,.md-typeset details.warning>:first-child{background-color:rgba(255,145,0,.1)}.md-typeset .admonition.attention>:first-child::before,.md-typeset details.attention>:first-child::before,.md-typeset .admonition.caution>:first-child::before,.md-typeset details.caution>:first-child::before,.md-typeset .admonition.warning>:first-child::before,.md-typeset details.warning>:first-child::before{background-color:#ff9100;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.missing,.md-typeset details.missing,.md-typeset .admonition.fail,.md-typeset details.fail,.md-typeset .admonition.failure,.md-typeset details.failure{border-left-color:#ff5252}.md-typeset .admonition.missing>:first-child,.md-typeset details.missing>:first-child,.md-typeset .admonition.fail>:first-child,.md-typeset details.fail>:first-child,.md-typeset .admonition.failure>:first-child,.md-typeset details.failure>:first-child{background-color:rgba(255,82,82,.1)}.md-typeset .admonition.missing>:first-child::before,.md-typeset details.missing>:first-child::before,.md-typeset .admonition.fail>:first-child::before,.md-typeset details.fail>:first-child::before,.md-typeset .admonition.failure>:first-child::before,.md-typeset details.failure>:first-child::before{background-color:#ff5252;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.error,.md-typeset details.error,.md-typeset .admonition.danger,.md-typeset details.danger{border-left-color:#ff1744}.md-typeset .admonition.error>:first-child,.md-typeset details.error>:first-child,.md-typeset .admonition.danger>:first-child,.md-typeset details.danger>:first-child{background-color:rgba(255,23,68,.1)}.md-typeset .admonition.error>:first-child::before,.md-typeset details.error>:first-child::before,.md-typeset .admonition.danger>:first-child::before,.md-typeset details.danger>:first-child::before{background-color:#ff1744;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.bug,.md-typeset details.bug{border-left-color:#f50057}.md-typeset .admonition.bug>:first-child,.md-typeset details.bug>:first-child{background-color:rgba(245,0,87,.1)}.md-typeset .admonition.bug>:first-child::before,.md-typeset details.bug>:first-child::before{background-color:#f50057;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.example,.md-typeset details.example{border-left-color:#651fff}.md-typeset .admonition.example>:first-child,.md-typeset details.example>:first-child{background-color:rgba(101,31,255,.1)}.md-typeset .admonition.example>:first-child::before,.md-typeset details.example>:first-child::before{background-color:#651fff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition.cite,.md-typeset details.cite,.md-typeset .admonition.quote,.md-typeset details.quote{border-left-color:#9e9e9e}.md-typeset .admonition.cite>:first-child,.md-typeset details.cite>:first-child,.md-typeset .admonition.quote>:first-child,.md-typeset details.quote>:first-child{background-color:rgba(158,158,158,.1)}.md-typeset .admonition.cite>:first-child::before,.md-typeset details.cite>:first-child::before,.md-typeset .admonition.quote>:first-child::before,.md-typeset details.quote>:first-child::before{background-color:#9e9e9e;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .admonition-title,.md-typeset summary{margin:0 -0.6rem;padding:.4rem .6rem .4rem 2rem;background-color:rgba(68,138,255,.1);font-weight:700}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding:.4rem 2rem .4rem .6rem}.md-typeset .admonition-title:last-child,.md-typeset summary:last-child{margin-bottom:0}.md-typeset .admonition-title::before,.md-typeset summary::before{position:absolute;width:1rem;height:1rem;margin-left:-1.4rem;background-color:#448aff;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .admonition-title::before,[dir=rtl] .md-typeset summary::before{margin-right:-1.4rem;margin-left:initial}.codehilite .o,.highlight .o{color:inherit}.codehilite .ow,.highlight .ow{color:inherit}.codehilite .ge,.highlight .ge{color:#000}.codehilite .gr,.highlight .gr{color:#a00}.codehilite .gh,.highlight .gh{color:#999}.codehilite .go,.highlight .go{color:#888}.codehilite .gp,.highlight .gp{color:#555}.codehilite .gs,.highlight .gs{color:inherit}.codehilite .gu,.highlight .gu{color:#aaa}.codehilite .gt,.highlight .gt{color:#a00}.codehilite .gd,.highlight .gd{background-color:#fdd}.codehilite .gi,.highlight .gi{background-color:#dfd}.codehilite .k,.highlight .k{color:#3b78e7}.codehilite .kc,.highlight .kc{color:#a71d5d}.codehilite .kd,.highlight .kd{color:#3b78e7}.codehilite .kn,.highlight .kn{color:#3b78e7}.codehilite .kp,.highlight .kp{color:#a71d5d}.codehilite .kr,.highlight .kr{color:#3e61a2}.codehilite .kt,.highlight .kt{color:#3e61a2}.codehilite .c,.highlight .c{color:#999}.codehilite .cm,.highlight .cm{color:#999}.codehilite .cp,.highlight .cp{color:#666}.codehilite .c1,.highlight .c1{color:#999}.codehilite .ch,.highlight .ch{color:#999}.codehilite .cs,.highlight .cs{color:#999}.codehilite .na,.highlight .na{color:#c2185b}.codehilite .nb,.highlight .nb{color:#c2185b}.codehilite .bp,.highlight .bp{color:#3e61a2}.codehilite .nc,.highlight .nc{color:#c2185b}.codehilite .no,.highlight .no{color:#3e61a2}.codehilite .nd,.highlight .nd{color:#666}.codehilite .ni,.highlight .ni{color:#666}.codehilite .ne,.highlight .ne{color:#c2185b}.codehilite .nf,.highlight .nf{color:#c2185b}.codehilite .nl,.highlight .nl{color:#3b5179}.codehilite .nn,.highlight .nn{color:#ec407a}.codehilite .nt,.highlight .nt{color:#3b78e7}.codehilite .nv,.highlight .nv{color:#3e61a2}.codehilite .vc,.highlight .vc{color:#3e61a2}.codehilite .vg,.highlight .vg{color:#3e61a2}.codehilite .vi,.highlight .vi{color:#3e61a2}.codehilite .nx,.highlight .nx{color:#ec407a}.codehilite .m,.highlight .m{color:#e74c3c}.codehilite .mf,.highlight .mf{color:#e74c3c}.codehilite .mh,.highlight .mh{color:#e74c3c}.codehilite .mi,.highlight .mi{color:#e74c3c}.codehilite .il,.highlight .il{color:#e74c3c}.codehilite .mo,.highlight .mo{color:#e74c3c}.codehilite .s,.highlight .s{color:#0d904f}.codehilite .sb,.highlight .sb{color:#0d904f}.codehilite .sc,.highlight .sc{color:#0d904f}.codehilite .sd,.highlight .sd{color:#999}.codehilite .s2,.highlight .s2{color:#0d904f}.codehilite .se,.highlight .se{color:#183691}.codehilite .sh,.highlight .sh{color:#183691}.codehilite .si,.highlight .si{color:#183691}.codehilite .sx,.highlight .sx{color:#183691}.codehilite .sr,.highlight .sr{color:#009926}.codehilite .s1,.highlight .s1{color:#0d904f}.codehilite .ss,.highlight .ss{color:#0d904f}.codehilite .err,.highlight .err{color:#a61717}.codehilite .w,.highlight .w{color:transparent}.codehilite .hll,.highlight .hll{display:block;margin:0 -0.6rem;padding:0 .6rem;background-color:rgba(255,235,59,.5)}.codehilitetable,.highlighttable{display:block;overflow:hidden}.codehilitetable tbody,.highlighttable tbody,.codehilitetable td,.highlighttable td{display:block;padding:0}.codehilitetable tr,.highlighttable tr{display:flex}.codehilitetable pre,.highlighttable pre,.codehilitetable .linenodiv,.highlighttable .linenodiv{margin:0;border-radius:0}.codehilitetable .linenodiv,.highlighttable .linenodiv{padding:.525rem .6rem}.codehilitetable .linenos,.highlighttable .linenos{color:var(--md-default-fg-color--lighter);box-shadow:inset 0 0 0 .05rem var(--md-code-bg-color);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.codehilitetable .linenos pre,.highlighttable .linenos pre{background-color:transparent;color:inherit;text-align:right}.codehilitetable .code,.highlighttable .code{flex:1;overflow:hidden}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{margin:1em 0;border-radius:.2em}.md-typeset [id^="fnref:"]{display:inline-block}.md-typeset [id^="fnref:"]:target{margin-top:-3.8rem;padding-top:3.8rem;pointer-events:none}.md-typeset [id^="fn:"]::before{display:none;height:0;content:""}.md-typeset [id^="fn:"]:target::before{display:block;margin-top:-3.5rem;padding-top:3.5rem;pointer-events:none}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}.md-typeset .footnote ol{margin-left:0}.md-typeset .footnote li{transition:color 250ms}.md-typeset .footnote li:target{color:var(--md-default-fg-color)}.md-typeset .footnote li :first-child{margin-top:0}.md-typeset .footnote li:hover .footnote-backref,.md-typeset .footnote li:target .footnote-backref{transform:translateX(0);opacity:1}.md-typeset .footnote li:hover .footnote-backref:hover,.md-typeset .footnote li:target .footnote-backref{color:var(--md-accent-fg-color)}.md-typeset .footnote-ref{display:inline-block;pointer-events:initial}.md-typeset .footnote-ref::before{display:inline;margin:0 .2em;border-left:.05rem solid var(--md-default-fg-color--lighter);font-size:1.25em;content:"";vertical-align:-0.25rem}.md-typeset .footnote-backref{display:inline-block;transform:translateX(0.25rem);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms;color:var(--md-default-fg-color--lighter);font-size:0;opacity:0;vertical-align:text-bottom}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-0.25rem)}.md-typeset .footnote-backref::before{display:inline-block;width:.8rem;height:.8rem;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .footnote-backref::before svg{transform:scaleX(-1)}.md-typeset .headerlink{display:inline-block;margin-left:.5rem;transform:translate(0, 0.25rem);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms,visibility 0ms 500ms;opacity:0;visibility:hidden}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem;margin-left:initial}html body .md-typeset .headerlink{color:var(--md-default-fg-color--lighter)}.md-typeset :hover .headerlink,.md-typeset :target .headerlink,.md-typeset .headerlink:focus{transform:translate(0, 0);transition:transform 250ms 250ms,color 250ms,opacity 125ms 250ms,visibility 0ms;opacity:1;visibility:visible}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target .headerlink{color:var(--md-accent-fg-color)}.md-typeset h3[id]::before,.md-typeset h2[id]::before,.md-typeset h1[id]::before{display:block;margin-top:-0.4rem;padding-top:.4rem;content:""}.md-typeset h3[id]:target::before,.md-typeset h2[id]:target::before,.md-typeset h1[id]:target::before{margin-top:-3.4rem;padding-top:3.4rem}.md-typeset h4[id]::before{display:block;margin-top:-0.45rem;padding-top:.45rem;content:""}.md-typeset h4[id]:target::before{margin-top:-3.45rem;padding-top:3.45rem}.md-typeset h6[id]::before,.md-typeset h5[id]::before{display:block;margin-top:-0.6rem;padding-top:.6rem;content:""}.md-typeset h6[id]:target::before,.md-typeset h5[id]:target::before{margin-top:-3.6rem;padding-top:3.6rem}.md-typeset .MJXc-display{margin:.75em 0;padding:.75em 0;overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset .MathJax_CHTML{outline:0}.md-typeset del.critic,.md-typeset ins.critic,.md-typeset .critic.comment{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:#fdd;box-shadow:.25em 0 0 #fdd,-0.25em 0 0 #fdd}.md-typeset ins.critic{background-color:#dfd;box-shadow:.25em 0 0 #dfd,-0.25em 0 0 #dfd}.md-typeset .critic.comment{color:#999}.md-typeset .critic.comment::before{content:"/* "}.md-typeset .critic.comment::after{content:" */"}.md-typeset .critic.block{display:block;margin:1em 0;padding-right:.8rem;padding-left:.8rem;box-shadow:none}.md-typeset .critic.block :first-child{margin-top:.5em}.md-typeset .critic.block :last-child{margin-bottom:.5em}.md-typeset details{display:block;padding-top:0}.md-typeset details[open]>summary::after{transform:rotate(180deg)}.md-typeset details:not([open]){padding-bottom:0}.md-typeset details:not([open])>summary{border-bottom:none}.md-typeset details summary{position:relative;padding-right:2rem}[dir=rtl] .md-typeset details summary{padding-left:2rem}.md-typeset summary{display:block;outline:none;cursor:pointer}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset summary::after{position:absolute;right:.6rem;width:1rem;height:1rem;background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset summary::after{right:initial;left:.6rem}.md-typeset .emojione,.md-typeset .twemoji,.md-typeset .gemoji{width:1rem;vertical-align:text-top}.highlight [data-linenos]::before{display:inline-block;position:-webkit-sticky;position:sticky;left:-0.6rem;margin-right:.6rem;margin-left:-0.6rem;padding-left:.6rem;border-right:.05rem solid var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);content:attr(data-linenos);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-typeset code.codehilite,.md-typeset code.highlight{margin:0 .2941176471em;padding:.0735294118em 0}.md-typeset .tabbed-content{display:none;order:99;width:100%;background-color:var(--md-code-bg-color)}.md-typeset .tabbed-content pre{margin:0;border-radius:0}.md-typeset .tabbed-set{display:flex;position:relative;flex-wrap:wrap;margin:1em 0;border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem}.md-typeset .tabbed-set>input{display:none}.md-typeset .tabbed-set>input:checked+label{border-color:var(--md-accent-fg-color);color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:checked+label+.tabbed-content{display:block;padding:0 .6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>:last-child{margin-bottom:.6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>pre:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlight:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlighttable:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilite:only-child,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilitetable:only-child{margin:0 -0.6rem}.md-typeset .tabbed-set>input:checked+label+.tabbed-content>pre:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlight:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.highlighttable:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilite:only-child pre,.md-typeset .tabbed-set>input:checked+label+.tabbed-content>.codehilitetable:only-child pre{background:transparent}.md-typeset .tabbed-set>label{width:auto;padding:.6rem;padding-bottom:.5rem;transition:color 125ms,border 250ms;border-bottom:.1rem solid transparent;color:var(--md-default-fg-color--light);font-size:.64rem;font-weight:700;cursor:pointer}html .md-typeset .tabbed-set>label:hover{color:var(--md-accent-fg-color)}.md-typeset .task-list-item{position:relative;list-style-type:none}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em;left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em;left:initial}.md-typeset .task-list-control .task-list-indicator::before{position:absolute;top:.15em;left:-1.5em;width:1.25em;height:1.25em;background-color:var(--md-default-fg-color--lightest);-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,");content:""}[dir=rtl] .md-typeset .task-list-control .task-list-indicator::before{right:-1.5em;left:initial}.md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator::before{background-color:#00e676;-webkit-mask-image:url("data:image/svg+xml;utf8,");mask-image:url("data:image/svg+xml;utf8,")}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}@media print{.md-typeset a::after{color:var(--md-default-fg-color--light);content:" [" attr(href) "]"}.md-typeset code,.md-typeset pre,.md-typeset kbd{white-space:pre-wrap}.md-clipboard{display:none}.md-content__button{display:none}.md-dialog{display:none}.md-header{display:none}.md-footer{display:none}.md-sidebar{display:none}.md-tabs{display:none}.md-typeset .headerlink{display:none}}@media screen and (max-width: 44.9375em){.md-typeset>pre{margin:1em -0.8rem;border-radius:0}.md-typeset>pre>code{padding:.525rem .8rem}.md-footer-nav__link--prev .md-footer-nav__title{display:none}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}.codehilite .hll,.highlight .hll{margin:0 -0.8rem;padding:0 .8rem}.md-typeset>.codehilite,.md-typeset>.highlight{margin:1em -0.8rem}.md-typeset>.codehilite code,.md-typeset>.highlight code{padding:.525rem .8rem}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{margin:1em -0.8rem;border-radius:0}.md-typeset>.codehilitetable .linenodiv,.md-typeset>.highlighttable .linenodiv{padding:.5rem .8rem}.md-typeset>p>.MJXc-display{margin:.75em -0.8rem;padding:.25em .8rem}.highlight [data-linenos]::before{left:-1.6rem;margin-left:-1.6rem;padding-left:1.6rem}.md-typeset>.tabbed-set{margin:1em -0.8rem;border:0;border-top:.05rem solid var(--md-default-fg-color--lightest);border-radius:0}.md-typeset>.tabbed-set code{padding:.525rem .8rem}.md-typeset>.tabbed-set input:first-child+label{margin-left:.2rem}}@media screen and (min-width: 100em){html{font-size:137.5%}}@media screen and (min-width: 125em){html{font-size:150%}}@media screen and (max-width: 59.9375em){body[data-md-state=lock]{position:fixed}html .md-nav__link[for=__toc]{display:block;padding-right:2.4rem}html .md-nav__link[for=__toc]+.md-nav__link{display:none}html .md-nav__link[for=__toc]~.md-nav{display:flex}html [dir=rtl] .md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav__source{display:block;padding:0 .2rem;background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color)}.md-search__overlay{position:absolute;top:.2rem;left:-2.2rem;width:2rem;height:2rem;transform-origin:center;transition:transform 300ms 100ms,opacity 200ms 200ms;border-radius:1rem;background-color:var(--md-default-bg-color);overflow:hidden;pointer-events:none}[dir=rtl] .md-search__overlay{right:-2.2rem;left:initial}[data-md-toggle=search]:checked~.md-header .md-search__overlay{transition:transform 400ms,opacity 100ms;opacity:1}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:100%;transform:translateX(5%);transition:right 0ms 300ms,left 0ms 300ms,transform 150ms 150ms cubic-bezier(0.4, 0, 0.2, 1),opacity 150ms 150ms;opacity:0;z-index:2}[data-md-toggle=search]:checked~.md-header .md-search__inner{left:0;transform:translateX(0);transition:right 0ms 0ms,left 0ms 0ms,transform 150ms 150ms cubic-bezier(0.1, 0.7, 0.1, 1),opacity 150ms 150ms;opacity:1}[dir=rtl] [data-md-toggle=search]:checked~.md-header .md-search__inner{right:0;left:initial}html [dir=rtl] .md-search__inner{right:100%;left:initial;transform:translateX(-5%)}.md-search__input{width:100%;height:2.4rem;font-size:.9rem}.md-search__icon[for=__search]{top:.6rem;left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem;left:initial}.md-search__icon[for=__search] svg:first-child{display:none}.md-search__icon[type=reset]{top:.6rem;right:.8rem}[dir=rtl] .md-search__icon[type=reset]{right:initial;left:.8rem}.md-search__output{top:2.4rem;bottom:0}.md-search-result__icon{display:none}}@media screen and (max-width: 76.1875em){[data-md-toggle=drawer]:checked~.md-overlay{width:100%;height:100%;transition:width 0ms,height 0ms,opacity 250ms;opacity:1}.md-header-nav__button.md-logo{display:none}.md-hero__inner{margin-top:2.4rem;margin-bottom:1.2rem}.md-nav{background-color:var(--md-default-bg-color)}.md-nav--primary,.md-nav--primary .md-nav{display:flex;position:absolute;top:0;right:0;left:0;flex-direction:column;height:100%;z-index:1}.md-nav--primary .md-nav__title,.md-nav--primary .md-nav__item{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{position:relative;height:5.6rem;padding:3rem .8rem .2rem;background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-weight:400;line-height:2.4rem;white-space:nowrap;cursor:pointer}.md-nav--primary .md-nav__title .md-nav__icon{display:block;position:absolute;top:.4rem;left:.4rem;width:1.2rem;height:1.2rem;margin:.2rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem;left:initial}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:inset 0 .05rem 0 var(--md-default-fg-color--lightest);overflow-y:auto;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{position:relative;background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-nav--primary .md-nav__title[for=__drawer] .md-nav__button{display:block;position:absolute;top:.2rem;left:.2rem;width:3.2rem;height:3.2rem;margin:.2rem;padding:.4rem;font-size:2.4rem}html [dir=rtl] .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button{right:.2rem;left:initial}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{padding:0;border-top:.05rem solid var(--md-default-fg-color--lightest)}[dir=rtl] .md-nav--primary .md-nav__item{padding:0}.md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:2.4rem}[dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-primary-fg-color)}.md-nav--primary .md-nav__link{position:relative;margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link .md-nav__icon{position:absolute;top:50%;right:.6rem;margin-top:-0.6rem;color:inherit;font-size:1.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{right:initial;left:.6rem}[dir=rtl] .md-nav--primary .md-nav__icon svg{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav__link{position:static}.md-nav--primary .md-nav--secondary .md-nav{position:static;background-color:transparent}.md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem;padding-left:initial}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem;padding-left:initial}.md-nav__toggle~.md-nav{display:flex;transform:translateX(100%);transition:transform 250ms cubic-bezier(0.8, 0, 0.6, 1),opacity 125ms 50ms;opacity:0}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{transform:translateX(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),opacity 125ms 125ms;opacity:1}.md-sidebar--primary{position:fixed;top:0;left:-12.1rem;width:12.1rem;height:100%;transform:translateX(0);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 250ms;background-color:var(--md-default-bg-color);z-index:3}[dir=rtl] .md-sidebar--primary{right:-12.1rem;left:initial}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden}.md-sidebar--primary .md-sidebar__scrollwrap{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;-webkit-scroll-snap-type:none;-ms-scroll-snap-type:none;scroll-snap-type:none}.md-tabs{display:none}}@media screen and (min-width: 60em){.md-content{margin-right:12.1rem}[dir=rtl] .md-content{margin-right:initial;margin-left:12.1rem}.md-header-nav__button[for=__search]{display:none}.md-header-nav__source{display:block;width:11.7rem;max-width:11.7rem;margin-left:1rem}[dir=rtl] .md-header-nav__source{margin-right:1rem;margin-left:initial}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}.md-search{padding:.2rem 0}.md-search__overlay{position:fixed;top:0;left:0;width:0;height:0;transition:width 0ms 250ms,height 0ms 250ms,opacity 250ms;background-color:var(--md-default-fg-color--light);cursor:pointer}[dir=rtl] .md-search__overlay{right:0;left:initial}[data-md-toggle=search]:checked~.md-header .md-search__overlay{width:100%;height:100%;transition:width 0ms,height 0ms,opacity 250ms;opacity:1}.md-search__inner{position:relative;width:11.7rem;padding:.1rem 0;float:right;transition:width 250ms cubic-bezier(0.1, 0.7, 0.1, 1)}[dir=rtl] .md-search__inner{float:left}.md-search__form{border-radius:.1rem}.md-search__input{width:100%;height:1.8rem;padding-left:2.2rem;transition:background-color 250ms cubic-bezier(0.1, 0.7, 0.1, 1),color 250ms cubic-bezier(0.1, 0.7, 0.1, 1);border-radius:.1rem;background-color:var(--md-default-fg-color--lighter);color:inherit;font-size:.8rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}.md-search__input::-webkit-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::-moz-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input:hover{background-color:var(--md-default-bg-color--lightest)}[data-md-toggle=search]:checked~.md-header .md-search__input{border-radius:.1rem .1rem 0 0;background-color:var(--md-default-bg-color);color:var(--md-default-fg-color);text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-webkit-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}.md-search__icon[for=__search] svg:last-child{display:none}.md-search__output{top:1.9rem;transition:opacity 400ms;opacity:0}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4);opacity:1}.md-search__scrollwrap{max-height:0}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem;padding-left:initial}.md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem;padding-left:.8rem}.md-sidebar--secondary{display:block;margin-left:calc(100% - 12.1rem)}[dir=rtl] .md-sidebar--secondary{margin-right:calc(100% - 12.1rem);margin-left:initial}.md-sidebar--secondary .md-sidebar__scrollwrap{-webkit-overflow-scrolling:touch}}@media screen and (min-width: 76.25em){.md-content{margin-left:12.1rem}[dir=rtl] .md-content{margin-right:12.1rem}.md-content__inner{margin-right:1.2rem;margin-left:1.2rem}.md-header-nav__button[for=__drawer]{display:none}.md-header-nav__source{margin-left:1.4rem}[dir=rtl] .md-header-nav__source{margin-right:1.4rem}.md-nav{transition:max-height 250ms cubic-bezier(0.86, 0, 0.07, 1)}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:checked~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__icon{height:.9rem;float:right;transition:transform 250ms}.md-nav__icon svg{display:inline-block;width:.9rem;height:.9rem;vertical-align:-0.1rem}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon{transform:rotateZ(90deg)}[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}.md-search__scrollwrap{width:34.4rem}.md-sidebar--secondary{margin-left:48.9rem}[dir=rtl] .md-sidebar--secondary{margin-right:48.9rem;margin-left:initial}.md-tabs~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{display:none}.md-tabs--active~.md-main .md-nav--primary .md-nav__title{display:block;padding:0 .6rem;pointer-events:none;scroll-snap-align:start}.md-tabs--active~.md-main .md-nav--primary .md-nav__title[for=__drawer]{display:none}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item{display:none}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--active>.md-nav__link{display:none}.md-tabs--active~.md-main .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding:0 .6rem}.md-tabs--active~.md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title{display:none}}@media screen and (min-width: 45em){.md-footer-nav__link{width:50%}.md-footer-copyright{max-width:75%;float:left}[dir=rtl] .md-footer-copyright{float:right}.md-footer-social{padding:.6rem 0;float:right}[dir=rtl] .md-footer-social{float:left}}@media screen and (max-width: 29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width: 30em)and (max-width: 44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width: 45em)and (max-width: 59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}@media screen and (min-width: 60em)and (max-width: 76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}.md-search__scrollwrap{width:23.4rem}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}}@media(-webkit-max-device-pixel-ratio: 1), (max-resolution: 1dppx){.md-search__scrollwrap{transform:translateZ(0)}} \ No newline at end of file diff --git a/material/assets/stylesheets/main.css b/material/assets/stylesheets/main.css deleted file mode 100644 index 8608df40a..000000000 --- a/material/assets/stylesheets/main.css +++ /dev/null @@ -1,2942 +0,0 @@ -@charset "UTF-8"; -html { - box-sizing: border-box; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -html { - -webkit-text-size-adjust: none; - -moz-text-size-adjust: none; - -ms-text-size-adjust: none; - text-size-adjust: none; -} - -body { - margin: 0; -} - -hr { - overflow: visible; - box-sizing: content-box; -} - -a { - -webkit-text-decoration-skip: objects; -} - -a, -button, -label, -input { - -webkit-tap-highlight-color: transparent; -} - -a { - color: inherit; - text-decoration: none; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 80%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -img { - border-style: none; -} - -table { - border-collapse: separate; - border-spacing: 0; -} - -td, -th { - font-weight: normal; - vertical-align: top; -} - -button { - margin: 0; - padding: 0; - border: 0; - background: transparent; - font-size: inherit; -} - -input { - border: 0; - outline: 0; -} - -:root { - --md-default-fg-color: hsla(0, 0%, 0%, 0.87); - --md-default-fg-color--light: hsla(0, 0%, 0%, 0.54); - --md-default-fg-color--lighter: hsla(0, 0%, 0%, 0.26); - --md-default-fg-color--lightest: hsla(0, 0%, 0%, 0.07); - --md-default-bg-color: hsla(0, 0%, 100%, 1); - --md-default-bg-color--light: hsla(0, 0%, 100%, 0.7); - --md-default-bg-color--lighter: hsla(0, 0%, 100%, 0.3); - --md-default-bg-color--lightest: hsla(0, 0%, 100%, 0.12); - --md-primary-fg-color: hsla(231deg, 48%, 48%, 1); - --md-primary-fg-color--light: hsla(230deg, 44%, 64%, 1); - --md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1); - --md-primary-bg-color: var(--md-default-bg-color); - --md-primary-bg-color--light: var(--md-default-bg-color--light); - --md-accent-fg-color: hsla(231deg, 99%, 66%, 1); - --md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1); - --md-accent-bg-color: var(--md-default-bg-color); - --md-accent-bg-color--light: var(--md-default-bg-color--light); - --md-code-bg-color: hsla(0, 0%, 92.5%, 0.5); - --md-code-fg-color: hsla(200, 18%, 26%, 1); -} - -.md-icon svg { - display: block; - width: 1.2rem; - height: 1.2rem; - margin: 0 auto; - fill: currentColor; -} - -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -body, -input { - color: var(--md-default-fg-color); - -webkit-font-feature-settings: "kern", "liga"; - font-feature-settings: "kern", "liga"; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -code, -pre, -kbd { - color: var(--md-default-fg-color); - -webkit-font-feature-settings: "kern"; - font-feature-settings: "kern"; - font-family: "Courier New", Courier, monospace; -} - -.md-typeset { - font-size: 0.8rem; - line-height: 1.6; - -webkit-print-color-adjust: exact; -} -.md-typeset p, -.md-typeset ul, -.md-typeset ol, -.md-typeset blockquote { - margin: 1em 0; -} -.md-typeset h1 { - margin: 0 0 2rem; - color: var(--md-default-fg-color--light); - font-size: 1.5625rem; - font-weight: 300; - letter-spacing: -0.01em; - line-height: 1.3; -} -.md-typeset h2 { - margin: 2rem 0 0.8rem; - font-size: 1.25rem; - font-weight: 300; - letter-spacing: -0.01em; - line-height: 1.4; -} -.md-typeset h3 { - margin: 1.6rem 0 0.8rem; - font-size: 1rem; - font-weight: 400; - letter-spacing: -0.01em; - line-height: 1.5; -} -.md-typeset h2 + h3 { - margin-top: 0.8rem; -} -.md-typeset h4 { - margin: 0.8rem 0; - font-size: 0.8rem; - font-weight: 700; - letter-spacing: -0.01em; -} -.md-typeset h5, -.md-typeset h6 { - margin: 0.8rem 0; - color: var(--md-default-fg-color--light); - font-size: 0.64rem; - font-weight: 700; - letter-spacing: -0.01em; -} -.md-typeset h5 { - text-transform: uppercase; -} -.md-typeset hr { - margin: 1.5em 0; - border-bottom: 0.05rem dotted var(--md-default-fg-color--lighter); -} -.md-typeset a { - color: var(--md-primary-fg-color); - word-break: break-word; -} -.md-typeset a, .md-typeset a::before { - transition: color 125ms; -} -.md-typeset a:focus, .md-typeset a:hover { - color: var(--md-accent-fg-color); -} -.md-typeset code, -.md-typeset pre, -.md-typeset kbd { - background-color: var(--md-code-bg-color); - color: var(--md-code-fg-color); - font-size: 85%; - direction: ltr; -} -.md-typeset code { - margin: 0 0.2941176471em; - padding: 0.0735294118em 0; - border-radius: 0.1rem; - box-shadow: 0.2941176471em 0 0 var(--md-code-bg-color), -0.2941176471em 0 0 var(--md-code-bg-color); - word-break: break-word; - -webkit-box-decoration-break: clone; - box-decoration-break: clone; -} -.md-typeset h1 code, -.md-typeset h2 code, -.md-typeset h3 code, -.md-typeset h4 code, -.md-typeset h5 code, -.md-typeset h6 code { - margin: 0; - background-color: transparent; - box-shadow: none; -} -.md-typeset a > code { - margin: inherit; - padding: inherit; - border-radius: initial; - background-color: inherit; - color: inherit; - box-shadow: none; -} -.md-typeset pre { - position: relative; - margin: 1em 0; - border-radius: 0.1rem; - line-height: 1.4; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-overflow-scrolling: touch; -} -.md-typeset pre > code { - display: block; - margin: 0; - padding: 0.525rem 0.6rem; - background-color: transparent; - font-size: inherit; - box-shadow: none; - -webkit-box-decoration-break: slice; - box-decoration-break: slice; - overflow: auto; - word-break: normal; -} -.md-typeset pre > code::-webkit-scrollbar { - width: 0.2rem; - height: 0.2rem; -} -.md-typeset pre > code::-webkit-scrollbar-thumb { - background-color: var(--md-default-fg-color--lighter); -} -.md-typeset pre > code::-webkit-scrollbar-thumb:hover { - background-color: var(--md-accent-fg-color); -} -.md-typeset kbd { - display: inline-block; - padding: 0 0.5882352941em; - border-radius: 0.1rem; - font-size: 0.75em; - line-height: 1.5; - box-shadow: 0 0.1rem 0 0.05rem var(--md-default-fg-color--lighter), 0 0.1rem 0 var(--md-default-fg-color--lighter), inset 0 -0.1rem 0.2rem var(--md-default-bg-color); - word-break: break-word; - vertical-align: text-top; -} -.md-typeset mark { - margin: 0 0.25em; - padding: 0.0625em 0; - border-radius: 0.1rem; - background-color: rgba(255, 235, 59, 0.5); - box-shadow: 0.25em 0 0 rgba(255, 235, 59, 0.5), -0.25em 0 0 rgba(255, 235, 59, 0.5); - word-break: break-word; - -webkit-box-decoration-break: clone; - box-decoration-break: clone; -} -.md-typeset abbr { - border-bottom: 0.05rem dotted var(--md-default-fg-color--light); - text-decoration: none; - cursor: help; -} -.md-typeset small { - opacity: 0.75; -} -.md-typeset sup, -.md-typeset sub { - margin-left: 0.078125em; -} -[dir=rtl] .md-typeset sup, -[dir=rtl] .md-typeset sub { - margin-right: 0.078125em; - margin-left: initial; -} -.md-typeset blockquote { - padding-left: 0.6rem; - border-left: 0.2rem solid var(--md-default-fg-color--lighter); - color: var(--md-default-fg-color--light); -} -[dir=rtl] .md-typeset blockquote { - padding-right: 0.6rem; - padding-left: initial; - border-right: 0.2rem solid var(--md-default-fg-color--lighter); - border-left: initial; -} -.md-typeset ul { - list-style-type: disc; -} -.md-typeset ul, -.md-typeset ol { - margin-left: 0.625em; - padding: 0; -} -[dir=rtl] .md-typeset ul, -[dir=rtl] .md-typeset ol { - margin-right: 0.625em; - margin-left: initial; -} -.md-typeset ul ol, -.md-typeset ol ol { - list-style-type: lower-alpha; -} -.md-typeset ul ol ol, -.md-typeset ol ol ol { - list-style-type: lower-roman; -} -.md-typeset ul li, -.md-typeset ol li { - margin-bottom: 0.5em; - margin-left: 1.25em; -} -[dir=rtl] .md-typeset ul li, -[dir=rtl] .md-typeset ol li { - margin-right: 1.25em; - margin-left: initial; -} -.md-typeset ul li p, -.md-typeset ul li blockquote, -.md-typeset ol li p, -.md-typeset ol li blockquote { - margin: 0.5em 0; -} -.md-typeset ul li:last-child, -.md-typeset ol li:last-child { - margin-bottom: 0; -} -.md-typeset ul li ul, -.md-typeset ul li ol, -.md-typeset ol li ul, -.md-typeset ol li ol { - margin: 0.5em 0 0.5em 0.625em; -} -[dir=rtl] .md-typeset ul li ul, -[dir=rtl] .md-typeset ul li ol, -[dir=rtl] .md-typeset ol li ul, -[dir=rtl] .md-typeset ol li ol { - margin-right: 0.625em; - margin-left: initial; -} -.md-typeset dd { - margin: 1em 0 1em 1.875em; -} -[dir=rtl] .md-typeset dd { - margin-right: 1.875em; - margin-left: initial; -} -.md-typeset iframe, -.md-typeset img, -.md-typeset svg { - max-width: 100%; -} -.md-typeset table:not([class]) { - display: inline-block; - max-width: 100%; - border-radius: 0.1rem; - background: var(--md-default-bg-color); - font-size: 0.64rem; - box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.05rem rgba(0, 0, 0, 0.1); - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.md-typeset table:not([class]) + * { - margin-top: 1.5em; -} -.md-typeset table:not([class]) th:not([align]), -.md-typeset table:not([class]) td:not([align]) { - text-align: left; -} -[dir=rtl] .md-typeset table:not([class]) th:not([align]), -[dir=rtl] .md-typeset table:not([class]) td:not([align]) { - text-align: right; -} -.md-typeset table:not([class]) th { - min-width: 5rem; - padding: 0.6rem 0.8rem; - background-color: var(--md-default-fg-color--light); - color: var(--md-default-bg-color); - vertical-align: top; -} -.md-typeset table:not([class]) td { - padding: 0.6rem 0.8rem; - border-top: 0.05rem solid var(--md-default-fg-color--lightest); - vertical-align: top; -} -.md-typeset table:not([class]) tr { - transition: background-color 125ms; -} -.md-typeset table:not([class]) tr:hover { - background-color: rgba(0, 0, 0, 0.035); - box-shadow: 0 0.05rem 0 var(--md-default-bg-color) inset; -} -.md-typeset table:not([class]) tr:first-child td { - border-top: 0; -} -.md-typeset table:not([class]) a { - word-break: normal; -} -.md-typeset__scrollwrap { - margin: 1em -0.8rem; - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} -.md-typeset .md-typeset__table { - display: inline-block; - margin-bottom: 0.5em; - padding: 0 0.8rem; -} -.md-typeset .md-typeset__table table { - display: table; - width: 100%; - margin: 0; - overflow: hidden; -} - -html { - height: 100%; - background-color: var(--md-default-bg-color); - font-size: 125%; - overflow-x: hidden; -} - -body { - display: flex; - position: relative; - flex-direction: column; - width: 100%; - min-height: 100%; - font-size: 0.5rem; -} - -hr { - display: block; - height: 0.05rem; - padding: 0; - border: 0; -} - -.md-grid { - max-width: 61rem; - margin-right: auto; - margin-left: auto; -} - -.md-container { - display: flex; - flex-direction: column; - flex-grow: 1; -} - -.md-main { - flex-grow: 1; -} -.md-main__inner { - height: 100%; - padding-top: 1.5rem; - padding-bottom: 0.05rem; -} - -.md-ellipsis { - display: block; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -.md-toggle { - display: none; -} - -.md-overlay { - position: fixed; - top: 0; - width: 0; - height: 0; - transition: width 0ms 250ms, height 0ms 250ms, opacity 250ms; - background-color: var(--md-default-fg-color--light); - opacity: 0; - z-index: 3; -} - -.md-skip { - position: fixed; - margin: 0.5rem; - padding: 0.3rem 0.5rem; - transform: translateY(0.4rem); - border-radius: 0.1rem; - background-color: var(--md-default-fg-color); - color: var(--md-default-bg-color); - font-size: 0.64rem; - opacity: 0; -} -.md-skip:focus { - transform: translateY(0); - transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 175ms 75ms; - opacity: 1; - z-index: 10; -} - -@page { - margin: 25mm; -} -.md-announce { - background-color: var(--md-default-fg-color); -} -.md-announce__inner { - min-height: 2.4rem; - padding: 0 0.8rem; - color: var(--md-default-bg-color); - font-size: 0.7rem; - line-height: 2.4rem; -} - -.md-clipboard { - position: absolute; - top: 0.4rem; - right: 0.4rem; - width: 1.2rem; - height: 1.2rem; - transition: color 250ms; - border-radius: 0.1rem; - color: var(--md-default-fg-color--lightest); - cursor: pointer; - z-index: 1; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.md-clipboard svg { - width: 0.9rem; - height: 0.9rem; -} -pre:hover .md-clipboard { - color: var(--md-default-fg-color--light); -} -pre .md-clipboard:focus, pre .md-clipboard:hover { - color: var(--md-accent-fg-color); -} -.md-content__inner { - margin: 0 0.8rem 1.2rem; - padding-top: 0.6rem; -} -.md-content__inner::before { - display: block; - height: 0.4rem; - content: ""; -} -.md-content__inner > :last-child { - margin-bottom: 0; -} -.md-content__button { - margin: 0.4rem 0; - margin-left: 0.4rem; - padding: 0; - float: right; -} -[dir=rtl] .md-content__button { - margin-right: 0.4rem; - margin-left: initial; - float: left; -} -[dir=rtl] .md-content__button svg { - transform: scaleX(-1); -} -.md-typeset .md-content__button { - color: var(--md-default-fg-color--lighter); -} -.md-content__button svg { - display: inline; - vertical-align: top; -} - -.md-dialog { - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - display: block; - position: fixed; - right: 0.8rem; - bottom: 0.8rem; - left: initial; - min-width: 11.1rem; - padding: 0.4rem 0.6rem; - transform: translateY(100%); - transition: transform 0ms 400ms, opacity 400ms; - border: none; - border-radius: 0.1rem; - background: var(--md-default-fg-color); - color: var(--md-default-bg-color); - font-size: 0.7rem; - opacity: 0; - z-index: 2; -} -[dir=rtl] .md-dialog { - right: initial; - left: 0.8rem; -} -.md-dialog[data-md-state=open] { - transform: translateY(0); - transition: transform 400ms cubic-bezier(0.075, 0.85, 0.175, 1), opacity 400ms; - opacity: 1; -} - -.md-header { - position: -webkit-sticky; - position: sticky; - top: 0; - right: 0; - left: 0; - height: 2.4rem; - transition: background-color 250ms, color 250ms; - background-color: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); - box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0), 0 0.2rem 0.4rem rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 2; -} -.no-js .md-header { - transition: none; - box-shadow: none; -} -.md-header[data-md-state=shadow] { - transition: background-color 250ms, color 250ms, box-shadow 250ms; - box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2); -} - -.md-header-nav { - display: flex; - padding: 0 0.2rem; -} -.md-header-nav__button { - position: relative; - margin: 0.2rem; - padding: 0.4rem; - transition: opacity 250ms; - cursor: pointer; - z-index: 1; -} -[dir=rtl] .md-header-nav__button svg { - transform: scaleX(-1); -} -.md-header-nav__button:focus, .md-header-nav__button:hover { - opacity: 0.7; -} -.md-header-nav__button.md-logo { - margin: 0.2rem; - padding: 0.4rem; -} -.md-header-nav__button.md-logo img, -.md-header-nav__button.md-logo svg { - display: block; - width: 1.2rem; - height: 1.2rem; - fill: currentColor; -} -.no-js .md-header-nav__button[for=__search] { - display: none; -} -.md-header-nav__topic { - display: block; - position: absolute; - width: 100%; - padding: 0 1rem; - transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.md-header-nav__topic + .md-header-nav__topic { - transform: translateX(1.25rem); - transition: transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1), opacity 150ms; - opacity: 0; - z-index: -1; - pointer-events: none; -} -[dir=rtl] .md-header-nav__topic + .md-header-nav__topic { - transform: translateX(-1.25rem); -} -.no-js .md-header-nav__topic { - position: initial; -} -.no-js .md-header-nav__topic + .md-header-nav__topic { - display: none; -} -.md-header-nav__title { - flex-grow: 1; - font-size: 0.9rem; - line-height: 2.4rem; -} -.md-header-nav__title[data-md-state=active] .md-header-nav__topic { - transform: translateX(-1.25rem); - transition: transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1), opacity 150ms; - opacity: 0; - z-index: -1; - pointer-events: none; -} -[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic { - transform: translateX(1.25rem); -} -.md-header-nav__title[data-md-state=active] .md-header-nav__topic + .md-header-nav__topic { - transform: translateX(0); - transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; - opacity: 1; - z-index: 0; - pointer-events: initial; -} -.md-header-nav__title > .md-header-nav__ellipsis { - position: relative; - width: 100%; - height: 100%; -} -.md-header-nav__source { - display: none; -} - -.md-hero { - transition: background 250ms; - background-color: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); - font-size: 1rem; - overflow: hidden; -} -.md-hero__inner { - margin-top: 1rem; - padding: 0.8rem 0.8rem 0.4rem; - transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; - transition-delay: 100ms; -} -[data-md-state=hidden] .md-hero__inner { - pointer-events: none; - transform: translateY(0.625rem); - transition: transform 0ms 400ms, opacity 100ms 0ms; - opacity: 0; -} -.md-hero--expand .md-hero__inner { - margin-bottom: 1.2rem; -} - -.md-footer { - background-color: var(--md-default-fg-color); - color: var(--md-default-bg-color); -} - -.md-footer-nav__inner { - padding: 0.2rem; - overflow: auto; -} -.md-footer-nav__link { - display: flex; - padding-top: 1.4rem; - padding-bottom: 0.4rem; - transition: opacity 250ms; -} -.md-footer-nav__link:focus, .md-footer-nav__link:hover { - opacity: 0.7; -} -.md-footer-nav__link--prev { - width: 25%; - float: left; -} -[dir=rtl] .md-footer-nav__link--prev { - float: right; -} -[dir=rtl] .md-footer-nav__link--prev svg { - transform: scaleX(-1); -} -.md-footer-nav__link--next { - width: 75%; - float: right; - text-align: right; -} -[dir=rtl] .md-footer-nav__link--next { - float: left; - text-align: left; -} -[dir=rtl] .md-footer-nav__link--next svg { - transform: scaleX(-1); -} -.md-footer-nav__title { - position: relative; - flex-grow: 1; - max-width: calc(100% - 2.4rem); - padding: 0 1rem; - font-size: 0.9rem; - line-height: 2.4rem; -} -.md-footer-nav__button { - margin: 0.2rem; - padding: 0.4rem; -} -.md-footer-nav__direction { - position: absolute; - right: 0; - left: 0; - margin-top: -1rem; - padding: 0 1rem; - color: var(--md-default-bg-color--light); - font-size: 0.75rem; -} - -.md-footer-meta { - background-color: var(--md-default-fg-color--lighter); -} -.md-footer-meta__inner { - padding: 0.2rem; - overflow: auto; -} -html .md-footer-meta.md-typeset a { - color: var(--md-default-bg-color--light); -} -html .md-footer-meta.md-typeset a:focus, html .md-footer-meta.md-typeset a:hover { - color: var(--md-default-bg-color); -} - -.md-footer-copyright { - margin: 0 0.6rem; - padding: 0.4rem 0; - color: var(--md-default-bg-color--lighter); - font-size: 0.64rem; -} -.md-footer-copyright__highlight { - color: var(--md-default-bg-color--light); -} - -.md-footer-social { - margin: 0 0.4rem; - padding: 0.2rem 0 0.6rem; -} -.md-footer-social__link { - display: inline-block; - width: 1.6rem; - height: 1.6rem; - transition: color 250ms; - text-align: center; -} -.md-footer-social__link::before { - line-height: 1.9; -} -.md-footer-social__link svg { - width: 0.8rem; - vertical-align: -25%; - fill: currentColor; -} - -.md-nav { - font-size: 0.7rem; - line-height: 1.3; -} -.md-nav__title { - display: block; - padding: 0 0.6rem; - font-weight: 700; - text-overflow: ellipsis; - overflow: hidden; -} -.md-nav__title .md-nav__button { - display: none; -} -.md-nav__title .md-nav__button img { - width: 100%; - height: auto; -} -.md-nav__title .md-nav__button.md-logo svg img, -.md-nav__title .md-nav__button.md-logo svg svg { - display: block; - width: 1.2rem; - height: 1.2rem; - fill: currentColor; -} -.md-nav__list { - margin: 0; - padding: 0; - list-style: none; -} -.md-nav__item { - padding: 0 0.6rem; -} -.md-nav__item:last-child { - padding-bottom: 0.6rem; -} -.md-nav__item .md-nav__item { - padding-right: 0; -} -[dir=rtl] .md-nav__item .md-nav__item { - padding-right: 0.6rem; - padding-left: 0; -} -.md-nav__item .md-nav__item:last-child { - padding-bottom: 0; -} -.md-nav__link { - display: block; - margin-top: 0.625em; - transition: color 125ms; - text-overflow: ellipsis; - cursor: pointer; - overflow: hidden; - scroll-snap-align: start; -} -html .md-nav__link[for=__toc] { - display: none; -} -html .md-nav__link[for=__toc] ~ .md-nav { - display: none; -} -.md-nav__link[data-md-state=blur] { - color: var(--md-default-fg-color--light); -} -.md-nav__item .md-nav__link--active { - color: var(--md-primary-fg-color); -} -.md-nav__item--nested > .md-nav__link { - color: inherit; -} -.md-nav__link:focus, .md-nav__link:hover { - color: var(--md-accent-fg-color); -} -.md-nav__source { - display: none; -} - -.md-search { - position: relative; -} -.no-js .md-search { - display: none; -} -.md-search__overlay { - opacity: 0; - z-index: 1; -} -.md-search__inner { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.md-search__form { - position: relative; -} -.md-search__input { - position: relative; - padding: 0 2.2rem 0 3.6rem; - text-overflow: ellipsis; - z-index: 2; -} -[dir=rtl] .md-search__input { - padding: 0 3.6rem 0 2.2rem; -} -.md-search__input::-webkit-input-placeholder { - -webkit-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); - transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); -} -.md-search__input::-moz-placeholder { - -moz-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); - transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); -} -.md-search__input::-ms-input-placeholder { - -ms-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); - transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); -} -.md-search__input::placeholder { - transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); -} -.md-search__input::-webkit-input-placeholder { - color: var(--md-default-fg-color--light); -} -.md-search__input::-moz-placeholder { - color: var(--md-default-fg-color--light); -} -.md-search__input::-ms-input-placeholder { - color: var(--md-default-fg-color--light); -} -.md-search__input ~ .md-search__icon, .md-search__input::placeholder { - color: var(--md-default-fg-color--light); -} -.md-search__input::-ms-clear { - display: none; -} -.md-search__icon { - position: absolute; - width: 1.2rem; - height: 1.2rem; - transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; - cursor: pointer; - z-index: 2; -} -.md-search__icon:hover { - opacity: 0.7; -} -.md-search__icon[for=__search] { - top: 0.3rem; - left: 0.5rem; -} -[dir=rtl] .md-search__icon[for=__search] { - right: 0.5rem; - left: initial; -} -[dir=rtl] .md-search__icon[for=__search] svg { - transform: scaleX(-1); -} -.md-search__icon[type=reset] { - top: 0.3rem; - right: 0.5rem; - transform: scale(0.75); - transition: transform 150ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; - opacity: 0; - pointer-events: none; -} -[dir=rtl] .md-search__icon[type=reset] { - right: initial; - left: 0.5rem; -} -[data-md-toggle=search]:checked ~ .md-header .md-search__input:valid ~ .md-search__icon[type=reset] { - transform: scale(1); - opacity: 1; - pointer-events: initial; -} -[data-md-toggle=search]:checked ~ .md-header .md-search__input:valid ~ .md-search__icon[type=reset]:hover { - opacity: 0.7; -} -.md-search__output { - position: absolute; - width: 100%; - border-radius: 0 0 0.1rem 0.1rem; - overflow: hidden; - z-index: 1; -} -.md-search__scrollwrap { - height: 100%; - background-color: var(--md-default-bg-color); - box-shadow: inset 0 0.05rem 0 var(--md-default-fg-color--lightest); - overflow-y: auto; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-scroll-snap-type: y mandatory; - -ms-scroll-snap-type: y mandatory; - scroll-snap-type: y mandatory; - -webkit-overflow-scrolling: touch; -} - -.md-search-result { - color: var(--md-default-fg-color); - word-break: break-word; -} -.md-search-result__meta { - padding: 0 0.8rem; - background-color: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color--light); - font-size: 0.64rem; - line-height: 1.8rem; - scroll-snap-align: start; -} -.md-search-result__list { - margin: 0; - padding: 0; - border-top: 0.05rem solid var(--md-default-fg-color--lightest); - list-style: none; -} -.md-search-result__item { - box-shadow: 0 -0.05rem 0 var(--md-default-fg-color--lightest); -} -.md-search-result__link { - display: block; - transition: background 250ms; - outline: 0; - overflow: hidden; - scroll-snap-align: start; -} -.md-search-result__link:focus, .md-search-result__link:hover { - background-color: var(--md-accent-fg-color--transparent); -} -.md-search-result__link:focus .md-search-result__article::before, .md-search-result__link:hover .md-search-result__article::before { - opacity: 0.7; -} -.md-search-result__link:last-child .md-search-result__teaser { - margin-bottom: 0.6rem; -} -.md-search-result__article { - position: relative; - padding: 0 0.8rem; - overflow: auto; -} -.md-search-result__article--document .md-search-result__title { - margin: 0.55rem 0; - font-size: 0.8rem; - font-weight: 400; - line-height: 1.4; -} -.md-search-result__icon { - position: absolute; - left: 0; - margin: 0.1rem; - padding: 0.4rem; - color: var(--md-default-fg-color--light); -} -[dir=rtl] .md-search-result__icon { - right: 0; - left: initial; -} -[dir=rtl] .md-search-result__icon svg { - transform: scaleX(-1); -} -.md-search-result__title { - margin: 0.5em 0; - font-size: 0.64rem; - font-weight: 700; - line-height: 1.4; -} -.md-search-result__teaser { - display: -webkit-box; - max-height: 1.65rem; - margin: 0.5em 0; - color: var(--md-default-fg-color--light); - font-size: 0.64rem; - line-height: 1.4; - text-overflow: ellipsis; - overflow: hidden; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; -} -.md-search-result em { - font-style: normal; - font-weight: 700; - text-decoration: underline; -} - -.md-sidebar { - position: absolute; - width: 12.1rem; - padding: 1.2rem 0; - overflow: hidden; -} -.md-sidebar[data-md-state=lock] { - position: fixed; - top: 2.4rem; -} -.md-sidebar--secondary { - display: none; -} -.md-sidebar__scrollwrap { - max-height: 100%; - margin: 0 0.2rem; - overflow-y: auto; - -webkit-scroll-snap-type: y mandatory; - -ms-scroll-snap-type: y mandatory; - scroll-snap-type: y mandatory; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.md-sidebar__scrollwrap::-webkit-scrollbar { - width: 0.2rem; - height: 0.2rem; -} -.md-sidebar__scrollwrap::-webkit-scrollbar-thumb { - background-color: var(--md-default-fg-color--lighter); -} -.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { - background-color: var(--md-accent-fg-color); -} - -@-webkit-keyframes md-source__facts--done { - 0% { - height: 0; - } - 100% { - height: 0.65rem; - } -} - -@keyframes md-source__facts--done { - 0% { - height: 0; - } - 100% { - height: 0.65rem; - } -} -@-webkit-keyframes md-source__fact--done { - 0% { - transform: translateY(100%); - opacity: 0; - } - 50% { - opacity: 0; - } - 100% { - transform: translateY(0%); - opacity: 1; - } -} -@keyframes md-source__fact--done { - 0% { - transform: translateY(100%); - opacity: 0; - } - 50% { - opacity: 0; - } - 100% { - transform: translateY(0%); - opacity: 1; - } -} -.md-source { - display: block; - padding-right: 0.6rem; - transition: opacity 250ms; - font-size: 0.65rem; - line-height: 1.2; - white-space: nowrap; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -[dir=rtl] .md-source { - padding-right: initial; - padding-left: 0.6rem; -} -.md-source:hover { - opacity: 0.7; -} -.md-source__icon { - display: inline-block; - width: 2.4rem; - height: 2.4rem; - vertical-align: middle; -} -.md-source__icon svg { - margin-top: 0.6rem; - margin-left: 0.6rem; -} -[dir=rtl] .md-source__icon svg { - margin-right: 0.6rem; - margin-left: initial; -} -.md-source__icon + .md-source__repository { - margin-left: -2rem; - padding-left: 2rem; -} -[dir=rtl] .md-source__icon + .md-source__repository { - margin-right: -2rem; - margin-left: initial; - padding-right: 2rem; - padding-left: initial; -} -.md-source__repository { - display: inline-block; - max-width: 100%; - margin-left: 0.6rem; - font-weight: 700; - text-overflow: ellipsis; - overflow: hidden; - vertical-align: middle; -} -.md-source__facts { - margin: 0; - padding: 0; - font-size: 0.55rem; - font-weight: 700; - list-style-type: none; - opacity: 0.75; - overflow: hidden; -} -[data-md-state=done] .md-source__facts { - -webkit-animation: md-source__facts--done 250ms ease-in; - animation: md-source__facts--done 250ms ease-in; -} -.md-source__fact { - float: left; -} -[dir=rtl] .md-source__fact { - float: right; -} -[data-md-state=done] .md-source__fact { - -webkit-animation: md-source__fact--done 400ms ease-out; - animation: md-source__fact--done 400ms ease-out; -} -.md-source__fact::before { - margin: 0 0.1rem; - content: "·"; -} -.md-source__fact:first-child::before { - display: none; -} - -.md-tabs { - width: 100%; - transition: background 250ms; - background-color: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); - overflow: auto; -} -.no-js .md-tabs { - transition: none; -} -.md-tabs__list { - margin: 0; - margin-left: 0.2rem; - padding: 0; - list-style: none; - white-space: nowrap; -} -[dir=rtl] .md-tabs__list { - margin-right: 0.2rem; - margin-left: initial; -} -.md-tabs__item { - display: inline-block; - height: 2.4rem; - padding-right: 0.6rem; - padding-left: 0.6rem; -} -.md-tabs__link { - display: block; - margin-top: 0.8rem; - transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; - font-size: 0.7rem; - opacity: 0.7; -} -.no-js .md-tabs__link { - transition: none; -} -.md-tabs__link--active, .md-tabs__link:hover { - color: inherit; - opacity: 1; -} -.md-tabs__item:nth-child(2) .md-tabs__link { - transition-delay: 20ms; -} -.md-tabs__item:nth-child(3) .md-tabs__link { - transition-delay: 40ms; -} -.md-tabs__item:nth-child(4) .md-tabs__link { - transition-delay: 60ms; -} -.md-tabs__item:nth-child(5) .md-tabs__link { - transition-delay: 80ms; -} -.md-tabs__item:nth-child(6) .md-tabs__link { - transition-delay: 100ms; -} -.md-tabs__item:nth-child(7) .md-tabs__link { - transition-delay: 120ms; -} -.md-tabs__item:nth-child(8) .md-tabs__link { - transition-delay: 140ms; -} -.md-tabs__item:nth-child(9) .md-tabs__link { - transition-delay: 160ms; -} -.md-tabs__item:nth-child(10) .md-tabs__link { - transition-delay: 180ms; -} -.md-tabs__item:nth-child(11) .md-tabs__link { - transition-delay: 200ms; -} -.md-tabs__item:nth-child(12) .md-tabs__link { - transition-delay: 220ms; -} -.md-tabs__item:nth-child(13) .md-tabs__link { - transition-delay: 240ms; -} -.md-tabs__item:nth-child(14) .md-tabs__link { - transition-delay: 260ms; -} -.md-tabs__item:nth-child(15) .md-tabs__link { - transition-delay: 280ms; -} -.md-tabs__item:nth-child(16) .md-tabs__link { - transition-delay: 300ms; -} -.md-tabs[data-md-state=hidden] { - pointer-events: none; -} -.md-tabs[data-md-state=hidden] .md-tabs__link { - transform: translateY(50%); - transition: color 250ms, transform 0ms 400ms, opacity 100ms; - opacity: 0; -} - -.md-typeset .admonition, .md-typeset details { - margin: 1.5625em 0; - padding: 0 0.6rem; - border-left: 0.2rem solid #448aff; - border-radius: 0.1rem; - font-size: 0.64rem; - box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.05rem rgba(0, 0, 0, 0.1); - overflow: auto; -} -[dir=rtl] .md-typeset .admonition, [dir=rtl] .md-typeset details { - border-right: 0.2rem solid #448aff; - border-left: none; -} -html .md-typeset .admonition > :last-child, html .md-typeset details > :last-child { - margin-bottom: 0.6rem; -} -.md-typeset .admonition .admonition, .md-typeset details .admonition, .md-typeset .admonition details, .md-typeset details details { - margin: 1em 0; -} -.md-typeset .admonition.tldr, .md-typeset details.tldr, .md-typeset .admonition.summary, .md-typeset details.summary, .md-typeset .admonition.abstract, .md-typeset details.abstract { - border-left-color: #00b0ff; -} -.md-typeset .admonition.tldr > :first-child, .md-typeset details.tldr > :first-child, .md-typeset .admonition.summary > :first-child, .md-typeset details.summary > :first-child, .md-typeset .admonition.abstract > :first-child, .md-typeset details.abstract > :first-child { - background-color: rgba(0, 176, 255, 0.1); -} -.md-typeset .admonition.tldr > :first-child::before, .md-typeset details.tldr > :first-child::before, .md-typeset .admonition.summary > :first-child::before, .md-typeset details.summary > :first-child::before, .md-typeset .admonition.abstract > :first-child::before, .md-typeset details.abstract > :first-child::before { - background-color: #00b0ff; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.todo, .md-typeset details.todo, .md-typeset .admonition.info, .md-typeset details.info { - border-left-color: #00b8d4; -} -.md-typeset .admonition.todo > :first-child, .md-typeset details.todo > :first-child, .md-typeset .admonition.info > :first-child, .md-typeset details.info > :first-child { - background-color: rgba(0, 184, 212, 0.1); -} -.md-typeset .admonition.todo > :first-child::before, .md-typeset details.todo > :first-child::before, .md-typeset .admonition.info > :first-child::before, .md-typeset details.info > :first-child::before { - background-color: #00b8d4; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.important, .md-typeset details.important, .md-typeset .admonition.hint, .md-typeset details.hint, .md-typeset .admonition.tip, .md-typeset details.tip { - border-left-color: #00bfa5; -} -.md-typeset .admonition.important > :first-child, .md-typeset details.important > :first-child, .md-typeset .admonition.hint > :first-child, .md-typeset details.hint > :first-child, .md-typeset .admonition.tip > :first-child, .md-typeset details.tip > :first-child { - background-color: rgba(0, 191, 165, 0.1); -} -.md-typeset .admonition.important > :first-child::before, .md-typeset details.important > :first-child::before, .md-typeset .admonition.hint > :first-child::before, .md-typeset details.hint > :first-child::before, .md-typeset .admonition.tip > :first-child::before, .md-typeset details.tip > :first-child::before { - background-color: #00bfa5; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.done, .md-typeset details.done, .md-typeset .admonition.check, .md-typeset details.check, .md-typeset .admonition.success, .md-typeset details.success { - border-left-color: #00c853; -} -.md-typeset .admonition.done > :first-child, .md-typeset details.done > :first-child, .md-typeset .admonition.check > :first-child, .md-typeset details.check > :first-child, .md-typeset .admonition.success > :first-child, .md-typeset details.success > :first-child { - background-color: rgba(0, 200, 83, 0.1); -} -.md-typeset .admonition.done > :first-child::before, .md-typeset details.done > :first-child::before, .md-typeset .admonition.check > :first-child::before, .md-typeset details.check > :first-child::before, .md-typeset .admonition.success > :first-child::before, .md-typeset details.success > :first-child::before { - background-color: #00c853; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.faq, .md-typeset details.faq, .md-typeset .admonition.help, .md-typeset details.help, .md-typeset .admonition.question, .md-typeset details.question { - border-left-color: #64dd17; -} -.md-typeset .admonition.faq > :first-child, .md-typeset details.faq > :first-child, .md-typeset .admonition.help > :first-child, .md-typeset details.help > :first-child, .md-typeset .admonition.question > :first-child, .md-typeset details.question > :first-child { - background-color: rgba(100, 221, 23, 0.1); -} -.md-typeset .admonition.faq > :first-child::before, .md-typeset details.faq > :first-child::before, .md-typeset .admonition.help > :first-child::before, .md-typeset details.help > :first-child::before, .md-typeset .admonition.question > :first-child::before, .md-typeset details.question > :first-child::before { - background-color: #64dd17; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.attention, .md-typeset details.attention, .md-typeset .admonition.caution, .md-typeset details.caution, .md-typeset .admonition.warning, .md-typeset details.warning { - border-left-color: #ff9100; -} -.md-typeset .admonition.attention > :first-child, .md-typeset details.attention > :first-child, .md-typeset .admonition.caution > :first-child, .md-typeset details.caution > :first-child, .md-typeset .admonition.warning > :first-child, .md-typeset details.warning > :first-child { - background-color: rgba(255, 145, 0, 0.1); -} -.md-typeset .admonition.attention > :first-child::before, .md-typeset details.attention > :first-child::before, .md-typeset .admonition.caution > :first-child::before, .md-typeset details.caution > :first-child::before, .md-typeset .admonition.warning > :first-child::before, .md-typeset details.warning > :first-child::before { - background-color: #ff9100; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.missing, .md-typeset details.missing, .md-typeset .admonition.fail, .md-typeset details.fail, .md-typeset .admonition.failure, .md-typeset details.failure { - border-left-color: #ff5252; -} -.md-typeset .admonition.missing > :first-child, .md-typeset details.missing > :first-child, .md-typeset .admonition.fail > :first-child, .md-typeset details.fail > :first-child, .md-typeset .admonition.failure > :first-child, .md-typeset details.failure > :first-child { - background-color: rgba(255, 82, 82, 0.1); -} -.md-typeset .admonition.missing > :first-child::before, .md-typeset details.missing > :first-child::before, .md-typeset .admonition.fail > :first-child::before, .md-typeset details.fail > :first-child::before, .md-typeset .admonition.failure > :first-child::before, .md-typeset details.failure > :first-child::before { - background-color: #ff5252; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.error, .md-typeset details.error, .md-typeset .admonition.danger, .md-typeset details.danger { - border-left-color: #ff1744; -} -.md-typeset .admonition.error > :first-child, .md-typeset details.error > :first-child, .md-typeset .admonition.danger > :first-child, .md-typeset details.danger > :first-child { - background-color: rgba(255, 23, 68, 0.1); -} -.md-typeset .admonition.error > :first-child::before, .md-typeset details.error > :first-child::before, .md-typeset .admonition.danger > :first-child::before, .md-typeset details.danger > :first-child::before { - background-color: #ff1744; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.bug, .md-typeset details.bug { - border-left-color: #f50057; -} -.md-typeset .admonition.bug > :first-child, .md-typeset details.bug > :first-child { - background-color: rgba(245, 0, 87, 0.1); -} -.md-typeset .admonition.bug > :first-child::before, .md-typeset details.bug > :first-child::before { - background-color: #f50057; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.example, .md-typeset details.example { - border-left-color: #651fff; -} -.md-typeset .admonition.example > :first-child, .md-typeset details.example > :first-child { - background-color: rgba(101, 31, 255, 0.1); -} -.md-typeset .admonition.example > :first-child::before, .md-typeset details.example > :first-child::before { - background-color: #651fff; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition.cite, .md-typeset details.cite, .md-typeset .admonition.quote, .md-typeset details.quote { - border-left-color: #9e9e9e; -} -.md-typeset .admonition.cite > :first-child, .md-typeset details.cite > :first-child, .md-typeset .admonition.quote > :first-child, .md-typeset details.quote > :first-child { - background-color: rgba(158, 158, 158, 0.1); -} -.md-typeset .admonition.cite > :first-child::before, .md-typeset details.cite > :first-child::before, .md-typeset .admonition.quote > :first-child::before, .md-typeset details.quote > :first-child::before { - background-color: #9e9e9e; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .admonition-title, .md-typeset summary { - margin: 0 -0.6rem; - padding: 0.4rem 0.6rem 0.4rem 2rem; - background-color: rgba(68, 138, 255, 0.1); - font-weight: 700; -} -[dir=rtl] .md-typeset .admonition-title, [dir=rtl] .md-typeset summary { - padding: 0.4rem 2rem 0.4rem 0.6rem; -} -.md-typeset .admonition-title:last-child, .md-typeset summary:last-child { - margin-bottom: 0; -} -.md-typeset .admonition-title::before, .md-typeset summary::before { - position: absolute; - width: 1rem; - height: 1rem; - margin-left: -1.4rem; - background-color: #448aff; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); - content: ""; -} -[dir=rtl] .md-typeset .admonition-title::before, [dir=rtl] .md-typeset summary::before { - margin-right: -1.4rem; - margin-left: initial; -} - -.codehilite .o, .highlight .o { - color: inherit; -} -.codehilite .ow, .highlight .ow { - color: inherit; -} -.codehilite .ge, .highlight .ge { - color: #000000; -} -.codehilite .gr, .highlight .gr { - color: #AA0000; -} -.codehilite .gh, .highlight .gh { - color: #999999; -} -.codehilite .go, .highlight .go { - color: #888888; -} -.codehilite .gp, .highlight .gp { - color: #555555; -} -.codehilite .gs, .highlight .gs { - color: inherit; -} -.codehilite .gu, .highlight .gu { - color: #AAAAAA; -} -.codehilite .gt, .highlight .gt { - color: #AA0000; -} -.codehilite .gd, .highlight .gd { - background-color: #FFDDDD; -} -.codehilite .gi, .highlight .gi { - background-color: #DDFFDD; -} -.codehilite .k, .highlight .k { - color: #3B78E7; -} -.codehilite .kc, .highlight .kc { - color: #A71D5D; -} -.codehilite .kd, .highlight .kd { - color: #3B78E7; -} -.codehilite .kn, .highlight .kn { - color: #3B78E7; -} -.codehilite .kp, .highlight .kp { - color: #A71D5D; -} -.codehilite .kr, .highlight .kr { - color: #3E61A2; -} -.codehilite .kt, .highlight .kt { - color: #3E61A2; -} -.codehilite .c, .highlight .c { - color: #999999; -} -.codehilite .cm, .highlight .cm { - color: #999999; -} -.codehilite .cp, .highlight .cp { - color: #666666; -} -.codehilite .c1, .highlight .c1 { - color: #999999; -} -.codehilite .ch, .highlight .ch { - color: #999999; -} -.codehilite .cs, .highlight .cs { - color: #999999; -} -.codehilite .na, .highlight .na { - color: #C2185B; -} -.codehilite .nb, .highlight .nb { - color: #C2185B; -} -.codehilite .bp, .highlight .bp { - color: #3E61A2; -} -.codehilite .nc, .highlight .nc { - color: #C2185B; -} -.codehilite .no, .highlight .no { - color: #3E61A2; -} -.codehilite .nd, .highlight .nd { - color: #666666; -} -.codehilite .ni, .highlight .ni { - color: #666666; -} -.codehilite .ne, .highlight .ne { - color: #C2185B; -} -.codehilite .nf, .highlight .nf { - color: #C2185B; -} -.codehilite .nl, .highlight .nl { - color: #3B5179; -} -.codehilite .nn, .highlight .nn { - color: #EC407A; -} -.codehilite .nt, .highlight .nt { - color: #3B78E7; -} -.codehilite .nv, .highlight .nv { - color: #3E61A2; -} -.codehilite .vc, .highlight .vc { - color: #3E61A2; -} -.codehilite .vg, .highlight .vg { - color: #3E61A2; -} -.codehilite .vi, .highlight .vi { - color: #3E61A2; -} -.codehilite .nx, .highlight .nx { - color: #EC407A; -} -.codehilite .m, .highlight .m { - color: #E74C3C; -} -.codehilite .mf, .highlight .mf { - color: #E74C3C; -} -.codehilite .mh, .highlight .mh { - color: #E74C3C; -} -.codehilite .mi, .highlight .mi { - color: #E74C3C; -} -.codehilite .il, .highlight .il { - color: #E74C3C; -} -.codehilite .mo, .highlight .mo { - color: #E74C3C; -} -.codehilite .s, .highlight .s { - color: #0D904F; -} -.codehilite .sb, .highlight .sb { - color: #0D904F; -} -.codehilite .sc, .highlight .sc { - color: #0D904F; -} -.codehilite .sd, .highlight .sd { - color: #999999; -} -.codehilite .s2, .highlight .s2 { - color: #0D904F; -} -.codehilite .se, .highlight .se { - color: #183691; -} -.codehilite .sh, .highlight .sh { - color: #183691; -} -.codehilite .si, .highlight .si { - color: #183691; -} -.codehilite .sx, .highlight .sx { - color: #183691; -} -.codehilite .sr, .highlight .sr { - color: #009926; -} -.codehilite .s1, .highlight .s1 { - color: #0D904F; -} -.codehilite .ss, .highlight .ss { - color: #0D904F; -} -.codehilite .err, .highlight .err { - color: #A61717; -} -.codehilite .w, .highlight .w { - color: transparent; -} -.codehilite .hll, .highlight .hll { - display: block; - margin: 0 -0.6rem; - padding: 0 0.6rem; - background-color: rgba(255, 235, 59, 0.5); -} - -.codehilitetable, .highlighttable { - display: block; - overflow: hidden; -} -.codehilitetable tbody, .highlighttable tbody, -.codehilitetable td, -.highlighttable td { - display: block; - padding: 0; -} -.codehilitetable tr, .highlighttable tr { - display: flex; -} -.codehilitetable pre, .highlighttable pre, -.codehilitetable .linenodiv, -.highlighttable .linenodiv { - margin: 0; - border-radius: 0; -} -.codehilitetable .linenodiv, .highlighttable .linenodiv { - padding: 0.525rem 0.6rem; -} -.codehilitetable .linenos, .highlighttable .linenos { - color: var(--md-default-fg-color--lighter); - box-shadow: inset 0 0 0 0.05rem var(--md-code-bg-color); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.codehilitetable .linenos pre, .highlighttable .linenos pre { - background-color: transparent; - color: inherit; - text-align: right; -} -.codehilitetable .code, .highlighttable .code { - flex: 1; - overflow: hidden; -} - -.md-typeset > .codehilitetable, .md-typeset > .highlighttable { - margin: 1em 0; - border-radius: 0.2em; -} - -.md-typeset [id^="fnref:"] { - display: inline-block; -} -.md-typeset [id^="fnref:"]:target { - margin-top: -3.8rem; - padding-top: 3.8rem; - pointer-events: none; -} -.md-typeset [id^="fn:"]::before { - display: none; - height: 0; - content: ""; -} -.md-typeset [id^="fn:"]:target::before { - display: block; - margin-top: -3.5rem; - padding-top: 3.5rem; - pointer-events: none; -} -.md-typeset .footnote { - color: var(--md-default-fg-color--light); - font-size: 0.64rem; -} -.md-typeset .footnote ol { - margin-left: 0; -} -.md-typeset .footnote li { - transition: color 250ms; -} -.md-typeset .footnote li:target { - color: var(--md-default-fg-color); -} -.md-typeset .footnote li :first-child { - margin-top: 0; -} -.md-typeset .footnote li:hover .footnote-backref, .md-typeset .footnote li:target .footnote-backref { - transform: translateX(0); - opacity: 1; -} -.md-typeset .footnote li:hover .footnote-backref:hover, .md-typeset .footnote li:target .footnote-backref { - color: var(--md-accent-fg-color); -} -.md-typeset .footnote-ref { - display: inline-block; - pointer-events: initial; -} -.md-typeset .footnote-ref::before { - display: inline; - margin: 0 0.2em; - border-left: 0.05rem solid var(--md-default-fg-color--lighter); - font-size: 1.25em; - content: ""; - vertical-align: -0.25rem; -} -.md-typeset .footnote-backref { - display: inline-block; - transform: translateX(0.25rem); - transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms; - color: var(--md-default-fg-color--lighter); - font-size: 0; - opacity: 0; - vertical-align: text-bottom; -} -[dir=rtl] .md-typeset .footnote-backref { - transform: translateX(-0.25rem); -} -.md-typeset .footnote-backref::before { - display: inline-block; - width: 0.8rem; - height: 0.8rem; - background-color: currentColor; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); - content: ""; -} -[dir=rtl] .md-typeset .footnote-backref::before svg { - transform: scaleX(-1); -} - -.md-typeset .headerlink { - display: inline-block; - margin-left: 0.5rem; - transform: translate(0, 0.25rem); - transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms, visibility 0ms 500ms; - opacity: 0; - visibility: hidden; -} -[dir=rtl] .md-typeset .headerlink { - margin-right: 0.5rem; - margin-left: initial; -} -html body .md-typeset .headerlink { - color: var(--md-default-fg-color--lighter); -} -.md-typeset :hover .headerlink, -.md-typeset :target .headerlink, -.md-typeset .headerlink:focus { - transform: translate(0, 0); - transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms, visibility 0ms; - opacity: 1; - visibility: visible; -} -.md-typeset .headerlink:focus, -.md-typeset .headerlink:hover, -.md-typeset :target .headerlink { - color: var(--md-accent-fg-color); -} -.md-typeset h3[id]::before, .md-typeset h2[id]::before, .md-typeset h1[id]::before { - display: block; - margin-top: -0.4rem; - padding-top: 0.4rem; - content: ""; -} -.md-typeset h3[id]:target::before, .md-typeset h2[id]:target::before, .md-typeset h1[id]:target::before { - margin-top: -3.4rem; - padding-top: 3.4rem; -} -.md-typeset h4[id]::before { - display: block; - margin-top: -0.45rem; - padding-top: 0.45rem; - content: ""; -} -.md-typeset h4[id]:target::before { - margin-top: -3.45rem; - padding-top: 3.45rem; -} -.md-typeset h6[id]::before, .md-typeset h5[id]::before { - display: block; - margin-top: -0.6rem; - padding-top: 0.6rem; - content: ""; -} -.md-typeset h6[id]:target::before, .md-typeset h5[id]:target::before { - margin-top: -3.6rem; - padding-top: 3.6rem; -} -.md-typeset .MJXc-display { - margin: 0.75em 0; - padding: 0.75em 0; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.md-typeset .MathJax_CHTML { - outline: 0; -} - -.md-typeset del.critic, -.md-typeset ins.critic, -.md-typeset .critic.comment { - margin: 0 0.25em; - padding: 0.0625em 0; - border-radius: 0.1rem; - -webkit-box-decoration-break: clone; - box-decoration-break: clone; -} -.md-typeset del.critic { - background-color: #FFDDDD; - box-shadow: 0.25em 0 0 #FFDDDD, -0.25em 0 0 #FFDDDD; -} -.md-typeset ins.critic { - background-color: #DDFFDD; - box-shadow: 0.25em 0 0 #DDFFDD, -0.25em 0 0 #DDFFDD; -} -.md-typeset .critic.comment { - color: #999999; -} -.md-typeset .critic.comment::before { - content: "/* "; -} -.md-typeset .critic.comment::after { - content: " */"; -} -.md-typeset .critic.block { - display: block; - margin: 1em 0; - padding-right: 0.8rem; - padding-left: 0.8rem; - box-shadow: none; -} -.md-typeset .critic.block :first-child { - margin-top: 0.5em; -} -.md-typeset .critic.block :last-child { - margin-bottom: 0.5em; -} - -.md-typeset details { - display: block; - padding-top: 0; -} -.md-typeset details[open] > summary::after { - transform: rotate(180deg); -} -.md-typeset details:not([open]) { - padding-bottom: 0; -} -.md-typeset details:not([open]) > summary { - border-bottom: none; -} -.md-typeset details summary { - position: relative; - padding-right: 2rem; -} -[dir=rtl] .md-typeset details summary { - padding-left: 2rem; -} -.md-typeset summary { - display: block; - outline: none; - cursor: pointer; -} -.md-typeset summary::-webkit-details-marker { - display: none; -} -.md-typeset summary::after { - position: absolute; - right: 0.6rem; - width: 1rem; - height: 1rem; - background-color: var(--md-default-fg-color--lighter); - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); - content: ""; -} -[dir=rtl] .md-typeset summary::after { - right: initial; - left: 0.6rem; -} - -.md-typeset .emojione, -.md-typeset .twemoji, -.md-typeset .gemoji { - width: 1rem; - vertical-align: text-top; -} - -.highlight [data-linenos]::before { - display: inline-block; - position: -webkit-sticky; - position: sticky; - left: -0.6rem; - margin-right: 0.6rem; - margin-left: -0.6rem; - padding-left: 0.6rem; - border-right: 0.05rem solid var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color--lighter); - content: attr(data-linenos); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.md-typeset code.codehilite, .md-typeset code.highlight { - margin: 0 0.2941176471em; - padding: 0.0735294118em 0; -} - -.md-typeset .tabbed-content { - display: none; - order: 99; - width: 100%; - background-color: var(--md-code-bg-color); -} -.md-typeset .tabbed-content pre { - margin: 0; - border-radius: 0; -} -.md-typeset .tabbed-set { - display: flex; - position: relative; - flex-wrap: wrap; - margin: 1em 0; - border: 0.05rem solid var(--md-default-fg-color--lightest); - border-radius: 0.1rem; -} -.md-typeset .tabbed-set > input { - display: none; -} -.md-typeset .tabbed-set > input:checked + label { - border-color: var(--md-accent-fg-color); - color: var(--md-accent-fg-color); -} -.md-typeset .tabbed-set > input:checked + label + .tabbed-content { - display: block; - padding: 0 0.6rem; -} -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > :last-child { - margin-bottom: 0.6rem; -} -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > pre:only-child, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlight:only-child, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlighttable:only-child, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilite:only-child, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilitetable:only-child { - margin: 0 -0.6rem; -} -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > pre:only-child pre, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlight:only-child pre, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlighttable:only-child pre, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilite:only-child pre, -.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilitetable:only-child pre { - background: transparent; -} -.md-typeset .tabbed-set > label { - width: auto; - padding: 0.6rem; - padding-bottom: 0.5rem; - transition: color 125ms, border 250ms; - border-bottom: 0.1rem solid transparent; - color: var(--md-default-fg-color--light); - font-size: 0.64rem; - font-weight: 700; - cursor: pointer; -} -html .md-typeset .tabbed-set > label:hover { - color: var(--md-accent-fg-color); -} - -.md-typeset .task-list-item { - position: relative; - list-style-type: none; -} -.md-typeset .task-list-item [type=checkbox] { - position: absolute; - top: 0.45em; - left: -2em; -} -[dir=rtl] .md-typeset .task-list-item [type=checkbox] { - right: -2em; - left: initial; -} -.md-typeset .task-list-control .task-list-indicator::before { - position: absolute; - top: 0.15em; - left: -1.5em; - width: 1.25em; - height: 1.25em; - background-color: var(--md-default-fg-color--lightest); - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); - content: ""; -} -[dir=rtl] .md-typeset .task-list-control .task-list-indicator::before { - right: -1.5em; - left: initial; -} -.md-typeset .task-list-control [type=checkbox]:checked + .task-list-indicator::before { - background-color: #00e676; - -webkit-mask-image: url("data:image/svg+xml;utf8,"); - mask-image: url("data:image/svg+xml;utf8,"); -} -.md-typeset .task-list-control [type=checkbox] { - opacity: 0; - z-index: -1; -} -@media print { - .md-typeset a::after { - color: var(--md-default-fg-color--light); - content: " [" attr(href) "]"; - } - .md-typeset code, -.md-typeset pre, -.md-typeset kbd { - white-space: pre-wrap; - } - .md-clipboard { - display: none; - } - .md-content__button { - display: none; - } - .md-dialog { - display: none; - } - .md-header { - display: none; - } - .md-footer { - display: none; - } - .md-sidebar { - display: none; - } - .md-tabs { - display: none; - } - .md-typeset .headerlink { - display: none; - } -} -@media screen and (max-width: 44.9375em) { - .md-typeset > pre { - margin: 1em -0.8rem; - border-radius: 0; - } - .md-typeset > pre > code { - padding: 0.525rem 0.8rem; - } - .md-footer-nav__link--prev .md-footer-nav__title { - display: none; - } - .md-search-result__teaser { - max-height: 2.5rem; - -webkit-line-clamp: 3; - } - .codehilite .hll, .highlight .hll { - margin: 0 -0.8rem; - padding: 0 0.8rem; - } - .md-typeset > .codehilite, .md-typeset > .highlight { - margin: 1em -0.8rem; - } - .md-typeset > .codehilite code, .md-typeset > .highlight code { - padding: 0.525rem 0.8rem; - } - .md-typeset > .codehilitetable, .md-typeset > .highlighttable { - margin: 1em -0.8rem; - border-radius: 0; - } - .md-typeset > .codehilitetable .linenodiv, .md-typeset > .highlighttable .linenodiv { - padding: 0.5rem 0.8rem; - } - .md-typeset > p > .MJXc-display { - margin: 0.75em -0.8rem; - padding: 0.25em 0.8rem; - } - .highlight [data-linenos]::before { - left: -1.6rem; - margin-left: -1.6rem; - padding-left: 1.6rem; - } - .md-typeset > .tabbed-set { - margin: 1em -0.8rem; - border: 0; - border-top: 0.05rem solid var(--md-default-fg-color--lightest); - border-radius: 0; - } - .md-typeset > .tabbed-set code { - padding: 0.525rem 0.8rem; - } - .md-typeset > .tabbed-set input:first-child + label { - margin-left: 0.2rem; - } -} -@media screen and (min-width: 100em) { - html { - font-size: 137.5%; - } -} -@media screen and (min-width: 125em) { - html { - font-size: 150%; - } -} -@media screen and (max-width: 59.9375em) { - body[data-md-state=lock] { - position: fixed; - } - html .md-nav__link[for=__toc] { - display: block; - padding-right: 2.4rem; - } - html .md-nav__link[for=__toc] + .md-nav__link { - display: none; - } - html .md-nav__link[for=__toc] ~ .md-nav { - display: flex; - } - html [dir=rtl] .md-nav__link { - padding-right: 0.8rem; - padding-left: 2.4rem; - } - .md-nav__source { - display: block; - padding: 0 0.2rem; - background-color: var(--md-primary-fg-color--dark); - color: var(--md-primary-bg-color); - } - .md-search__overlay { - position: absolute; - top: 0.2rem; - left: -2.2rem; - width: 2rem; - height: 2rem; - transform-origin: center; - transition: transform 300ms 100ms, opacity 200ms 200ms; - border-radius: 1rem; - background-color: var(--md-default-bg-color); - overflow: hidden; - pointer-events: none; - } - [dir=rtl] .md-search__overlay { - right: -2.2rem; - left: initial; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { - transition: transform 400ms, opacity 100ms; - opacity: 1; - } - .md-search__inner { - position: fixed; - top: 0; - left: 100%; - width: 100%; - height: 100%; - transform: translateX(5%); - transition: right 0ms 300ms, left 0ms 300ms, transform 150ms 150ms cubic-bezier(0.4, 0, 0.2, 1), opacity 150ms 150ms; - opacity: 0; - z-index: 2; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__inner { - left: 0; - transform: translateX(0); - transition: right 0ms 0ms, left 0ms 0ms, transform 150ms 150ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms 150ms; - opacity: 1; - } - [dir=rtl] [data-md-toggle=search]:checked ~ .md-header .md-search__inner { - right: 0; - left: initial; - } - html [dir=rtl] .md-search__inner { - right: 100%; - left: initial; - transform: translateX(-5%); - } - .md-search__input { - width: 100%; - height: 2.4rem; - font-size: 0.9rem; - } - .md-search__icon[for=__search] { - top: 0.6rem; - left: 0.8rem; - } - [dir=rtl] .md-search__icon[for=__search] { - right: 0.8rem; - left: initial; - } - .md-search__icon[for=__search] svg:first-child { - display: none; - } - .md-search__icon[type=reset] { - top: 0.6rem; - right: 0.8rem; - } - [dir=rtl] .md-search__icon[type=reset] { - right: initial; - left: 0.8rem; - } - .md-search__output { - top: 2.4rem; - bottom: 0; - } - .md-search-result__icon { - display: none; - } -} -@media screen and (max-width: 76.1875em) { - [data-md-toggle=drawer]:checked ~ .md-overlay { - width: 100%; - height: 100%; - transition: width 0ms, height 0ms, opacity 250ms; - opacity: 1; - } - .md-header-nav__button.md-logo { - display: none; - } - .md-hero__inner { - margin-top: 2.4rem; - margin-bottom: 1.2rem; - } - .md-nav { - background-color: var(--md-default-bg-color); - } - .md-nav--primary, .md-nav--primary .md-nav { - display: flex; - position: absolute; - top: 0; - right: 0; - left: 0; - flex-direction: column; - height: 100%; - z-index: 1; - } - .md-nav--primary .md-nav__title, -.md-nav--primary .md-nav__item { - font-size: 0.8rem; - line-height: 1.5; - } - .md-nav--primary .md-nav__title { - position: relative; - height: 5.6rem; - padding: 3rem 0.8rem 0.2rem; - background-color: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color--light); - font-weight: 400; - line-height: 2.4rem; - white-space: nowrap; - cursor: pointer; - } - .md-nav--primary .md-nav__title .md-nav__icon { - display: block; - position: absolute; - top: 0.4rem; - left: 0.4rem; - width: 1.2rem; - height: 1.2rem; - margin: 0.2rem; - } - [dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon { - right: 0.4rem; - left: initial; - } - .md-nav--primary .md-nav__title ~ .md-nav__list { - background-color: var(--md-default-bg-color); - box-shadow: inset 0 0.05rem 0 var(--md-default-fg-color--lightest); - overflow-y: auto; - -webkit-scroll-snap-type: y mandatory; - -ms-scroll-snap-type: y mandatory; - scroll-snap-type: y mandatory; - } - .md-nav--primary .md-nav__title ~ .md-nav__list > .md-nav__item:first-child { - border-top: 0; - } - .md-nav--primary .md-nav__title[for=__drawer] { - position: relative; - background-color: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); - } - .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button { - display: block; - position: absolute; - top: 0.2rem; - left: 0.2rem; - width: 3.2rem; - height: 3.2rem; - margin: 0.2rem; - padding: 0.4rem; - font-size: 2.4rem; - } - html [dir=rtl] .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button { - right: 0.2rem; - left: initial; - } - .md-nav--primary .md-nav__list { - flex: 1; - } - .md-nav--primary .md-nav__item { - padding: 0; - border-top: 0.05rem solid var(--md-default-fg-color--lightest); - } - [dir=rtl] .md-nav--primary .md-nav__item { - padding: 0; - } - .md-nav--primary .md-nav__item--nested > .md-nav__link { - padding-right: 2.4rem; - } - [dir=rtl] .md-nav--primary .md-nav__item--nested > .md-nav__link { - padding-right: 0.8rem; - padding-left: 2.4rem; - } - .md-nav--primary .md-nav__item--active > .md-nav__link { - color: var(--md-primary-fg-color); - } - .md-nav--primary .md-nav__link { - position: relative; - margin-top: 0; - padding: 0.6rem 0.8rem; - } - .md-nav--primary .md-nav__link .md-nav__icon { - position: absolute; - top: 50%; - right: 0.6rem; - margin-top: -0.6rem; - color: inherit; - font-size: 1.2rem; - } - [dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon { - right: initial; - left: 0.6rem; - } - [dir=rtl] .md-nav--primary .md-nav__icon svg { - transform: scale(-1); - } - .md-nav--primary .md-nav--secondary .md-nav__link { - position: static; - } - .md-nav--primary .md-nav--secondary .md-nav { - position: static; - background-color: transparent; - } - .md-nav--primary .md-nav--secondary .md-nav .md-nav__link { - padding-left: 1.4rem; - } - [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link { - padding-right: 1.4rem; - padding-left: initial; - } - .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link { - padding-left: 2rem; - } - [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link { - padding-right: 2rem; - padding-left: initial; - } - .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link { - padding-left: 2.6rem; - } - [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link { - padding-right: 2.6rem; - padding-left: initial; - } - .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link { - padding-left: 3.2rem; - } - [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link { - padding-right: 3.2rem; - padding-left: initial; - } - .md-nav__toggle ~ .md-nav { - display: flex; - transform: translateX(100%); - transition: transform 250ms cubic-bezier(0.8, 0, 0.6, 1), opacity 125ms 50ms; - opacity: 0; - } - [dir=rtl] .md-nav__toggle ~ .md-nav { - transform: translateX(-100%); - } - .md-nav__toggle:checked ~ .md-nav { - transform: translateX(0); - transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 125ms 125ms; - opacity: 1; - } - .md-sidebar--primary { - position: fixed; - top: 0; - left: -12.1rem; - width: 12.1rem; - height: 100%; - transform: translateX(0); - transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 250ms; - background-color: var(--md-default-bg-color); - z-index: 3; - } - [dir=rtl] .md-sidebar--primary { - right: -12.1rem; - left: initial; - } - [data-md-toggle=drawer]:checked ~ .md-container .md-sidebar--primary { - box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.4); - transform: translateX(12.1rem); - } - [dir=rtl] [data-md-toggle=drawer]:checked ~ .md-container .md-sidebar--primary { - transform: translateX(-12.1rem); - } - .md-sidebar--primary .md-sidebar__scrollwrap { - overflow: hidden; - } - .md-sidebar--primary .md-sidebar__scrollwrap { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - margin: 0; - -webkit-scroll-snap-type: none; - -ms-scroll-snap-type: none; - scroll-snap-type: none; - } - .md-tabs { - display: none; - } -} -@media screen and (min-width: 60em) { - .md-content { - margin-right: 12.1rem; - } - [dir=rtl] .md-content { - margin-right: initial; - margin-left: 12.1rem; - } - .md-header-nav__button[for=__search] { - display: none; - } - .md-header-nav__source { - display: block; - width: 11.7rem; - max-width: 11.7rem; - margin-left: 1rem; - } - [dir=rtl] .md-header-nav__source { - margin-right: 1rem; - margin-left: initial; - } - .md-nav--secondary .md-nav__title[for=__toc] { - scroll-snap-align: start; - } - .md-nav--secondary .md-nav__title .md-nav__icon { - display: none; - } - .md-search { - padding: 0.2rem 0; - } - .md-search__overlay { - position: fixed; - top: 0; - left: 0; - width: 0; - height: 0; - transition: width 0ms 250ms, height 0ms 250ms, opacity 250ms; - background-color: var(--md-default-fg-color--light); - cursor: pointer; - } - [dir=rtl] .md-search__overlay { - right: 0; - left: initial; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { - width: 100%; - height: 100%; - transition: width 0ms, height 0ms, opacity 250ms; - opacity: 1; - } - .md-search__inner { - position: relative; - width: 11.7rem; - padding: 0.1rem 0; - float: right; - transition: width 250ms cubic-bezier(0.1, 0.7, 0.1, 1); - } - [dir=rtl] .md-search__inner { - float: left; - } - .md-search__form { - border-radius: 0.1rem; - } - .md-search__input { - width: 100%; - height: 1.8rem; - padding-left: 2.2rem; - transition: background-color 250ms cubic-bezier(0.1, 0.7, 0.1, 1), color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); - border-radius: 0.1rem; - background-color: var(--md-default-fg-color--lighter); - color: inherit; - font-size: 0.8rem; - } - [dir=rtl] .md-search__input { - padding-right: 2.2rem; - } - .md-search__input + .md-search__icon { - color: var(--md-primary-bg-color); - } - .md-search__input::-webkit-input-placeholder { - color: var(--md-primary-bg-color--light); - } - .md-search__input::-moz-placeholder { - color: var(--md-primary-bg-color--light); - } - .md-search__input::-ms-input-placeholder { - color: var(--md-primary-bg-color--light); - } - .md-search__input::placeholder { - color: var(--md-primary-bg-color--light); - } - .md-search__input:hover { - background-color: var(--md-default-bg-color--lightest); - } - [data-md-toggle=search]:checked ~ .md-header .md-search__input { - border-radius: 0.1rem 0.1rem 0 0; - background-color: var(--md-default-bg-color); - color: var(--md-default-fg-color); - text-overflow: clip; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__input::-webkit-input-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-toggle=search]:checked ~ .md-header .md-search__input::-moz-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-toggle=search]:checked ~ .md-header .md-search__input::-ms-input-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-toggle=search]:checked ~ .md-header .md-search__input + .md-search__icon, [data-md-toggle=search]:checked ~ .md-header .md-search__input::placeholder { - color: var(--md-default-fg-color--light); - } - .md-search__icon[for=__search] svg:last-child { - display: none; - } - .md-search__output { - top: 1.9rem; - transition: opacity 400ms; - opacity: 0; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__output { - box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.4); - opacity: 1; - } - .md-search__scrollwrap { - max-height: 0; - } - [data-md-toggle=search]:checked ~ .md-header .md-search__scrollwrap { - max-height: 75vh; - } - .md-search__scrollwrap::-webkit-scrollbar { - width: 0.2rem; - height: 0.2rem; - } - .md-search__scrollwrap::-webkit-scrollbar-thumb { - background-color: var(--md-default-fg-color--lighter); - } - .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { - background-color: var(--md-accent-fg-color); - } - .md-search-result__meta { - padding-left: 2.2rem; - } - [dir=rtl] .md-search-result__meta { - padding-right: 2.2rem; - padding-left: initial; - } - .md-search-result__article { - padding-left: 2.2rem; - } - [dir=rtl] .md-search-result__article { - padding-right: 2.2rem; - padding-left: 0.8rem; - } - .md-sidebar--secondary { - display: block; - margin-left: calc(100% - 12.1rem); - } - [dir=rtl] .md-sidebar--secondary { - margin-right: calc(100% - 12.1rem); - margin-left: initial; - } - .md-sidebar--secondary .md-sidebar__scrollwrap { - -webkit-overflow-scrolling: touch; - } -} -@media screen and (min-width: 76.25em) { - .md-content { - margin-left: 12.1rem; - } - [dir=rtl] .md-content { - margin-right: 12.1rem; - } - .md-content__inner { - margin-right: 1.2rem; - margin-left: 1.2rem; - } - .md-header-nav__button[for=__drawer] { - display: none; - } - .md-header-nav__source { - margin-left: 1.4rem; - } - [dir=rtl] .md-header-nav__source { - margin-right: 1.4rem; - } - .md-nav { - transition: max-height 250ms cubic-bezier(0.86, 0, 0.07, 1); - } - .md-nav--primary .md-nav__title[for=__drawer] { - scroll-snap-align: start; - } - .md-nav--primary .md-nav__title .md-nav__icon { - display: none; - } - .md-nav__toggle ~ .md-nav { - display: none; - } - .md-nav__toggle:checked ~ .md-nav { - display: block; - } - .md-nav__item--nested > .md-nav > .md-nav__title { - display: none; - } - .md-nav__icon { - height: 0.9rem; - float: right; - transition: transform 250ms; - } - .md-nav__icon svg { - display: inline-block; - width: 0.9rem; - height: 0.9rem; - vertical-align: -0.1rem; - } - .md-nav__item--nested .md-nav__toggle:checked ~ .md-nav__link .md-nav__icon { - transform: rotateZ(90deg); - } - [data-md-toggle=search]:checked ~ .md-header .md-search__inner { - width: 34.4rem; - } - .md-search__scrollwrap { - width: 34.4rem; - } - .md-sidebar--secondary { - margin-left: 48.9rem; - } - [dir=rtl] .md-sidebar--secondary { - margin-right: 48.9rem; - margin-left: initial; - } - .md-tabs ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--nested { - display: none; - } - .md-tabs--active ~ .md-main .md-nav--primary .md-nav__title { - display: block; - padding: 0 0.6rem; - pointer-events: none; - scroll-snap-align: start; - } - .md-tabs--active ~ .md-main .md-nav--primary .md-nav__title[for=__drawer] { - display: none; - } - .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item { - display: none; - } - .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--nested { - display: none; - } - .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--active { - display: block; - padding: 0; - } - .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--active > .md-nav__link { - display: none; - } - .md-tabs--active ~ .md-main .md-nav[data-md-level="1"] > .md-nav__list > .md-nav__item { - padding: 0 0.6rem; - } - .md-tabs--active ~ .md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title { - display: none; - } -} -@media screen and (min-width: 45em) { - .md-footer-nav__link { - width: 50%; - } - .md-footer-copyright { - max-width: 75%; - float: left; - } - [dir=rtl] .md-footer-copyright { - float: right; - } - .md-footer-social { - padding: 0.6rem 0; - float: right; - } - [dir=rtl] .md-footer-social { - float: left; - } -} -@media screen and (max-width: 29.9375em) { - [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { - transform: scale(45); - } -} -@media screen and (min-width: 30em) and (max-width: 44.9375em) { - [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { - transform: scale(60); - } -} -@media screen and (min-width: 45em) and (max-width: 59.9375em) { - [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { - transform: scale(75); - } -} -@media screen and (min-width: 60em) and (max-width: 76.1875em) { - [data-md-toggle=search]:checked ~ .md-header .md-search__inner { - width: 23.4rem; - } - .md-search__scrollwrap { - width: 23.4rem; - } - .md-search-result__teaser { - max-height: 2.5rem; - -webkit-line-clamp: 3; - } -} -@media (-webkit-max-device-pixel-ratio: 1), (max-resolution: 1dppx) { - .md-search__scrollwrap { - transform: translateZ(0); - } -} -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/main.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_reset.scss */ -/*# sourceURL=main.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_colors.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_icons.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_typeset.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_base.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_announce.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_clipboard.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_content.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_dialog.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/node_modules/material-shadows/material-shadows.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_header.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_hero.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_footer.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_nav.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_search.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_sidebar.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_source.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_tabs.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_admonition.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_codehilite.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_footnotes.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_permalinks.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_arithmatex.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_critic.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_details.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_emoji.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_highlight.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_inlinehilite.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_tabbed.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_tasklist.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/utilities/_break.scss */ -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9tYWluLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvYmFzZS9fcmVzZXQuc2NzcyIsIm1haW4uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9iYXNlL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9iYXNlL19pY29ucy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2Jhc2UvX3R5cGVzZXQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Jhc2Uuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Fubm91bmNlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19jbGlwYm9hcmQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2NvbnRlbnQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2RpYWxvZy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtc2hhZG93cy9tYXRlcmlhbC1zaGFkb3dzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19oZWFkZXIuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2hlcm8uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2xheW91dC9fbmF2LnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19zZWFyY2guc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX3NpZGViYXIuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX3NvdXJjZS5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2xheW91dC9fdGFicy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvX2FkbW9uaXRpb24uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9leHRlbnNpb25zL19jb2RlaGlsaXRlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9fZm9vdG5vdGVzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9fcGVybWFsaW5rcy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fYXJpdGhtYXRleC5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fY3JpdGljLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19kZXRhaWxzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19lbW9qaS5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9faGlnaGxpZ2h0LnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19pbmxpbmVoaWxpdGUuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9leHRlbnNpb25zL3B5bWRvd24vX3RhYmJlZC5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fdGFza2xpc3Quc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy91dGlsaXRpZXMvX2JyZWFrLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQUE7QUM2QkE7RUFDRSxzQkFBQTtBQzNCRjs7QUQrQkE7OztFQUdFLG1CQUFBO0FDNUJGOztBRGdDQTtFQUNFLDhCQUFBO0tBQUEsMkJBQUE7TUFBQSwwQkFBQTtVQUFBLHNCQUFBO0FDMUJGOztBRDhCQTtFQUNFLFNBQUE7QUMzQkY7O0FEK0JBO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtBQzVCRjs7QURnQ0E7RUFDRSxxQ0FBQTtBQzdCRjs7QURpQ0E7Ozs7RUFJRSx3Q0FBQTtBQzlCRjs7QURrQ0E7RUFDRSxjQUFBO0VBQ0EscUJBQUE7QUMvQkY7O0FEbUNBO0VBQ0UsY0FBQTtBQ2hDRjs7QURvQ0E7O0VBRUUsa0JBQUE7RUFDQSxjQUFBO0VBQ0EsY0FBQTtFQUNBLHdCQUFBO0FDakNGOztBRHFDQTtFQUNFLGVBQUE7QUNsQ0Y7O0FEc0NBO0VBQ0UsV0FBQTtBQ25DRjs7QUR1Q0E7RUFDRSxrQkFBQTtBQ3BDRjs7QUR3Q0E7RUFDRSx5QkFBQTtFQUNBLGlCQUFBO0FDckNGOztBRHlDQTs7RUFFRSxtQkFBQTtFQUNBLG1CQUFBO0FDdENGOztBRDBDQTtFQUNFLFNBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLHVCQUFBO0VBQ0Esa0JBQUE7QUN2Q0Y7O0FEMkNBO0VBQ0UsU0FBQTtFQUNBLFVBQUE7QUN4Q0Y7O0FDL0RBO0VBR0UsNENBQUE7RUFDQSxtREFBQTtFQUNBLHFEQUFBO0VBQ0Esc0RBQUE7RUFDQSwyQ0FBQTtFQUNBLG9EQUFBO0VBQ0Esc0RBQUE7RUFDQSx3REFBQTtFQUdBLGdEQUFBO0VBQ0EsdURB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QTtBbkJxK0NSO0FtQmwrQ0U7RUFBTSxjQUFBO0FuQnErQ1I7QW1CcCtDRTtFQUFNLGNBQUE7QW5CdStDUjtBbUJ0K0NFO0VBQU0sY0FBQTtBbkJ5K0NSO0FtQngrQ0U7RUFBTSxjQUFBO0FuQjIrQ1I7QW1CMStDRTtFQUFNLGNBQUE7QW5CNitDUjtBbUI1K0NFO0VBQU0sY0FBQTtBbkIrK0NSO0FtQjkrQ0U7RUFBTSxjQUFBO0FuQmkvQ1I7QW1CaC9DRTtFQUFNLGNBQUE7QW5CbS9DUjtBbUJsL0NFO0VBQU0sY0FBQTtBbkJxL0NSO0FtQnAvQ0U7RUFBTSxjQUFBO0FuQnUvQ1I7QW1CdC9DRTtFQUFNLGNBQUE7QW5CeS9DUjtBbUJ4L0NFO0VBQU0sY0FBQTtBbkIyL0NSO0FtQjEvQ0U7RUFBTSxjQUFBO0FuQjYvQ1I7QW1CNS9DRTtFQUFNLGNBQUE7QW5CKy9DUjtBbUI5L0NFO0VBQU0sY0FBQTtBbkJpZ0RSO0FtQmhnREU7RUFBTSxjQUFBO0FuQm1nRFI7QW1CbGdERTtFQUFNLGNBQUE7QW5CcWdEUjtBbUJsZ0RFO0VBQU0sY0FBQTtBbkJxZ0RSO0FtQnBnREU7RUFBTSxjQUFBO0FuQnVnRFI7QW1CdGdERTtFQUFNLGNBQUE7QW5CeWdEUjtBbUJ4Z0RFO0VBQU0sY0FBQTtBbkIyZ0RSO0FtQjFnREU7RUFBTSxjQUFBO0FuQjZnRFI7QW1CNWdERTtFQUFNLGNBQUE7QW5CK2dEUjtBbUI1Z0RFO0VBQU0sY0FBQTtBbkIrZ0RSO0FtQjlnREU7RUFBTSxjQUFBO0FuQmloRFI7QW1CaGhERTtFQUFNLGNBQUE7QW5CbWhEUjtBbUJsaERFO0VBQU0sY0FBQTtBbkJxaERSO0FtQnBoREU7RUFBTSxjQUFBO0FuQnVoRFI7QW1CdGhERTtFQUFNLGNBQUE7QW5CeWhEUjtBbUJ4aERFO0VBQU0sY0FBQTtBbkIyaERSO0FtQjFoREU7RUFBTSxjQUFBO0FuQjZoRFI7QW1CNWhERTtFQUFNLGNBQUE7QW5CK2hEUjtBbUI5aERFO0VBQU0sY0FBQTtBbkJpaURSO0FtQmhpREU7RUFBTSxjQUFBO0FuQm1pRFI7QW1CbGlE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c3VGTjtBQUNGO0E4QjFwRk07RWhCakZGO0lBU0ksb0JBQUE7RWRzdUZOO0FBQ0Y7QThCL3BGTTtFaEJqRkY7SUFjSSxvQkFBQTtFZHN1Rk47QUFDRjtBOEJwcUZNO0VoQmdDRjtJQUlJLGNBQUE7RWRvb0ZOO0VjeDVFQTtJQWlCSSxjQUFBO0VkMDRFSjtFY3B1RUE7SUFvQkksa0JBQUE7SUFDQSxxQkFBQTtFZG10RUo7QUFDRjtBY3I1RUk7RUFYRjtJQVlJLHdCQUFBO0VkdzVFSjtBQUNGIiwiZmlsZSI6Im1haW4uc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5odG1sIHtcbiAgdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbn1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuaHIge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbmEge1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzO1xufVxuXG5hLFxuYnV0dG9uLFxubGFiZWwsXG5pbnB1dCB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbnRkLFxudGgge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG5idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cblxuaW5wdXQge1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG59XG5cbjpyb290IHtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC44Nyk7XG4gIC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMCwgMCUsIDAlLCAwLjU0KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyOiBoc2xhKDAsIDAlLCAwJSwgMC4yNik7XG4gIC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3Q6IGhzbGEoMCwgMCUsIDAlLCAwLjA3KTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yOiBoc2xhKDAsIDAlLCAxMDAlLCAxKTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodDogaHNsYSgwLCAwJSwgMTAwJSwgMC43KTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVyOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjMpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjEyKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDIzMWRlZywgNDglLCA0OCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDIzMGRlZywgNDQlLCA2NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjMyZGVnLCA1NCUsIDQxJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMjMxZGVnLCA5OSUsIDY2JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgyMzFkZWcsIDk5JSwgNjYlLCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xuICAtLW1kLWNvZGUtYmctY29sb3I6IGhzbGEoMCwgMCUsIDkyLjUlLCAwLjUpO1xuICAtLW1kLWNvZGUtZmctY29sb3I6IGhzbGEoMjAwLCAxOCUsIDI2JSwgMSk7XG59XG5cbi5tZC1pY29uIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuYm9keSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5ib2R5LFxuaW5wdXQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIsIFwibGlnYVwiO1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG5jb2RlLFxucHJlLFxua2JkIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiO1xuICBmb250LWZhbWlseTogXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2U7XG59XG5cbi5tZC10eXBlc2V0IHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbn1cbi5tZC10eXBlc2V0IHAsXG4ubWQtdHlwZXNldCB1bCxcbi5tZC10eXBlc2V0IG9sLFxuLm1kLXR5cGVzZXQgYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMWVtIDA7XG59XG4ubWQtdHlwZXNldCBoMSB7XG4gIG1hcmdpbjogMCAwIDJyZW07XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMS41NjI1cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cbi5tZC10eXBlc2V0IGgyIHtcbiAgbWFyZ2luOiAycmVtIDAgMC44cmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuLm1kLXR5cGVzZXQgaDMge1xuICBtYXJnaW46IDEuNnJlbSAwIDAuOHJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cbi5tZC10eXBlc2V0IGgyICsgaDMge1xuICBtYXJnaW4tdG9wOiAwLjhyZW07XG59XG4ubWQtdHlwZXNldCBoNCB7XG4gIG1hcmdpbjogMC44cmVtIDA7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbn1cbi5tZC10eXBlc2V0IGg1LFxuLm1kLXR5cGVzZXQgaDYge1xuICBtYXJnaW46IDAuOHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuLm1kLXR5cGVzZXQgaDUge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuLm1kLXR5cGVzZXQgaHIge1xuICBtYXJnaW46IDEuNWVtIDA7XG4gIGJvcmRlci1ib3R0b206IDAuMDVyZW0gZG90dGVkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xufVxuLm1kLXR5cGVzZXQgYSB7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC10eXBlc2V0IGEsIC5tZC10eXBlc2V0IGE6OmJlZm9yZSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zO1xufVxuLm1kLXR5cGVzZXQgYTpmb2N1cywgLm1kLXR5cGVzZXQgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLXR5cGVzZXQgYTo6YWZ0ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgY29udGVudDogXCIgW1wiIGF0dHIoaHJlZikgXCJdXCI7XG4gIH1cbn1cbi5tZC10eXBlc2V0IGNvZGUsXG4ubWQtdHlwZXNldCBwcmUsXG4ubWQtdHlwZXNldCBrYmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWNvZGUtZmctY29sb3IpO1xuICBmb250LXNpemU6IDg1JTtcbiAgZGlyZWN0aW9uOiBsdHI7XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdHlwZXNldCBjb2RlLFxuLm1kLXR5cGVzZXQgcHJlLFxuLm1kLXR5cGVzZXQga2JkIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIH1cbn1cbi5tZC10eXBlc2V0IGNvZGUge1xuICBtYXJnaW46IDAgMC4yOTQxMTc2NDcxZW07XG4gIHBhZGRpbmc6IDAuMDczNTI5NDExOGVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgYm94LXNoYWRvdzogMC4yOTQxMTc2NDcxZW0gMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpLCAtMC4yOTQxMTc2NDcxZW0gMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG59XG4ubWQtdHlwZXNldCBoMSBjb2RlLFxuLm1kLXR5cGVzZXQgaDIgY29kZSxcbi5tZC10eXBlc2V0IGgzIGNvZGUsXG4ubWQtdHlwZXNldCBoNCBjb2RlLFxuLm1kLXR5cGVzZXQgaDUgY29kZSxcbi5tZC10eXBlc2V0IGg2IGNvZGUge1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLm1kLXR5cGVzZXQgYSA+IGNvZGUge1xuICBtYXJnaW46IGluaGVyaXQ7XG4gIHBhZGRpbmc6IGluaGVyaXQ7XG4gIGJvcmRlci1yYWRpdXM6IGluaXRpYWw7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLm1kLXR5cGVzZXQgcHJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDFlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAuNTI1cmVtIDAuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMC4ycmVtO1xuICBoZWlnaHQ6IDAuMnJlbTtcbn1cbi5tZC10eXBlc2V0IHByZSA+IGNvZGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXR5cGVzZXQgPiBwcmUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IHByZSA+IGNvZGUge1xuICAgIHBhZGRpbmc6IDAuNTI1cmVtIDAuOHJlbTtcbiAgfVxufVxuLm1kLXR5cGVzZXQga2JkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNTg4MjM1Mjk0MWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3gtc2hhZG93OiAwIDAuMXJlbSAwIDAuMDVyZW0gdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlciksIDAgMC4xcmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlciksIGluc2V0IDAgLTAuMXJlbSAwLjJyZW0gdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbn1cbi5tZC10eXBlc2V0IG1hcmsge1xuICBtYXJnaW46IDAgMC4yNWVtO1xuICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMzUsIDU5LCAwLjUpO1xuICBib3gtc2hhZG93OiAwLjI1ZW0gMCAwIHJnYmEoMjU1LCAyMzUsIDU5LCAwLjUpLCAtMC4yNWVtIDAgMCByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xufVxuLm1kLXR5cGVzZXQgYWJiciB7XG4gIGJvcmRlci1ib3R0b206IDAuMDVyZW0gZG90dGVkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IGhlbHA7XG59XG4ubWQtdHlwZXNldCBzbWFsbCB7XG4gIG9wYWNpdHk6IDAuNzU7XG59XG4ubWQtdHlwZXNldCBzdXAsXG4ubWQtdHlwZXNldCBzdWIge1xuICBtYXJnaW4tbGVmdDogMC4wNzgxMjVlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBzdXAsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3ViIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjA3ODEyNWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IGJsb2NrcXVvdGUge1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbiAgYm9yZGVyLWxlZnQ6IDAuMnJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgcGFkZGluZy1yaWdodDogMC42cmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIGJvcmRlci1yaWdodDogMC4ycmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3JkZXItbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xufVxuLm1kLXR5cGVzZXQgdWwsXG4ubWQtdHlwZXNldCBvbCB7XG4gIG1hcmdpbi1sZWZ0OiAwLjYyNWVtO1xuICBwYWRkaW5nOiAwO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHVsLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IG9sIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjYyNWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IHVsIG9sLFxuLm1kLXR5cGVzZXQgb2wgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLWFscGhhO1xufVxuLm1kLXR5cGVzZXQgdWwgb2wgb2wsXG4ubWQtdHlwZXNldCBvbCBvbCBvbCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItcm9tYW47XG59XG4ubWQtdHlwZXNldCB1bCBsaSxcbi5tZC10eXBlc2V0IG9sIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIG1hcmdpbi1sZWZ0OiAxLjI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGksXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkge1xuICBtYXJnaW4tcmlnaHQ6IDEuMjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCBsaSBwLFxuLm1kLXR5cGVzZXQgdWwgbGkgYmxvY2txdW90ZSxcbi5tZC10eXBlc2V0IG9sIGxpIHAsXG4ubWQtdHlwZXNldCBvbCBsaSBibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwLjVlbSAwO1xufVxuLm1kLXR5cGVzZXQgdWwgbGk6bGFzdC1jaGlsZCxcbi5tZC10eXBlc2V0IG9sIGxpOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm1kLXR5cGVzZXQgdWwgbGkgdWwsXG4ubWQtdHlwZXNldCB1bCBsaSBvbCxcbi5tZC10eXBlc2V0IG9sIGxpIHVsLFxuLm1kLXR5cGVzZXQgb2wgbGkgb2wge1xuICBtYXJnaW46IDAuNWVtIDAgMC41ZW0gMC42MjVlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCBsaSB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCBsaSBvbCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCBsaSB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCBsaSBvbCB7XG4gIG1hcmdpbi1yaWdodDogMC42MjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCBkZCB7XG4gIG1hcmdpbjogMWVtIDAgMWVtIDEuODc1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgZGQge1xuICBtYXJnaW4tcmlnaHQ6IDEuODc1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgaWZyYW1lLFxuLm1kLXR5cGVzZXQgaW1nLFxuLm1kLXR5cGVzZXQgc3ZnIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMC41cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMCAwLjA1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSArICoge1xuICBtYXJnaW4tdG9wOiAxLjVlbTtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0aDpub3QoW2FsaWduXSksXG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQ6bm90KFthbGlnbl0pIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGg6bm90KFthbGlnbl0pLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0ZDpub3QoW2FsaWduXSkge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0aCB7XG4gIG1pbi13aWR0aDogNXJlbTtcbiAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQge1xuICBwYWRkaW5nOiAwLjZyZW0gMC44cmVtO1xuICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0ciB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTI1bXM7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDM1KTtcbiAgYm94LXNoYWRvdzogMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcikgaW5zZXQ7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHI6Zmlyc3QtY2hpbGQgdGQge1xuICBib3JkZXItdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIGEge1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG4ubWQtdHlwZXNldF9fc2Nyb2xsd3JhcCB7XG4gIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IC5tZC10eXBlc2V0X190YWJsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIHBhZGRpbmc6IDAgMC44cmVtO1xufVxuLm1kLXR5cGVzZXQgLm1kLXR5cGVzZXRfX3RhYmxlIHRhYmxlIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbmh0bWwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDEyNSU7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMGVtKSB7XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTM3LjUlO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjVlbSkge1xuICBodG1sIHtcbiAgICBmb250LXNpemU6IDE1MCU7XG4gIH1cbn1cblxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMC41cmVtO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIGJvZHlbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG59XG5cbmhyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMC4wNXJlbTtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xufVxuXG4ubWQtZ3JpZCB7XG4gIG1heC13aWR0aDogNjFyZW07XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5tZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5tZC1tYWluIHtcbiAgZmxleC1ncm93OiAxO1xufVxuLm1kLW1haW5fX2lubmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC4wNXJlbTtcbn1cblxuLm1kLWVsbGlwc2lzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubWQtdG9nZ2xlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMG1zIDI1MG1zLCBoZWlnaHQgMG1zIDI1MG1zLCBvcGFjaXR5IDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDM7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogMC41cmVtO1xuICBwYWRkaW5nOiAwLjNyZW0gMC41cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC40cmVtKTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIG9wYWNpdHk6IDA7XG59XG4ubWQtc2tpcDpmb2N1cyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTc1bXMgNzVtcztcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuLm1kLWFubm91bmNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG4ubWQtYW5ub3VuY2VfX2lubmVyIHtcbiAgbWluLWhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbn1cblxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjRyZW07XG4gIHJpZ2h0OiAwLjRyZW07XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbkBtZWRpYSBwcmludCB7XG4gIC5tZC1jbGlwYm9hcmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5tZC1jbGlwYm9hcmQgc3ZnIHtcbiAgd2lkdGg6IDAuOXJlbTtcbiAgaGVpZ2h0OiAwLjlyZW07XG59XG5wcmU6aG92ZXIgLm1kLWNsaXBib2FyZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5wcmUgLm1kLWNsaXBib2FyZDpmb2N1cywgcHJlIC5tZC1jbGlwYm9hcmQ6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtY29udGVudCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMi4xcmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtY29udGVudCB7XG4gICAgbWFyZ2luLXJpZ2h0OiBpbml0aWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAxMi4xcmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogMTIuMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWNvbnRlbnQge1xuICAgIG1hcmdpbi1yaWdodDogMTIuMXJlbTtcbiAgfVxufVxuLm1kLWNvbnRlbnRfX2lubmVyIHtcbiAgbWFyZ2luOiAwIDAuOHJlbSAxLjJyZW07XG4gIHBhZGRpbmctdG9wOiAwLjZyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50X19pbm5lciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XG4gICAgbWFyZ2luLWxlZnQ6IDEuMnJlbTtcbiAgfVxufVxuLm1kLWNvbnRlbnRfX2lubmVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjRyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtY29udGVudF9faW5uZXIgPiA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtY29udGVudF9fYnV0dG9uIHtcbiAgbWFyZ2luOiAwLjRyZW0gMDtcbiAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXR5cGVzZXQgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtZGlhbG9nIHtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMC44cmVtO1xuICBib3R0b206IDAuOHJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbiAgbWluLXdpZHRoOiAxMS4xcmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtZGlhbG9nIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuOHJlbTtcbn1cbi5tZC1kaWFsb2dbZGF0YS1tZC1zdGF0ZT1vcGVuXSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLCBvcGFjaXR5IDQwMG1zO1xuICBvcGFjaXR5OiAxO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWRpYWxvZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtaGVhZGVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAyLjRyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMsIGNvbG9yIDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICBib3gtc2hhZG93OiAwIDAgMC4ycmVtIHJnYmEoMCwgMCwgMCwgMCksIDAgMC4ycmVtIDAuNHJlbSByZ2JhKDAsIDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHotaW5kZXg6IDI7XG59XG4ubm8tanMgLm1kLWhlYWRlciB7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtaGVhZGVyW2RhdGEtbWQtc3RhdGU9c2hhZG93XSB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMsIGNvbG9yIDI1MG1zLCBib3gtc2hhZG93IDI1MG1zO1xuICBib3gtc2hhZG93OiAwIDAgMC4ycmVtIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwLjJyZW0gMC40cmVtIHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbkBtZWRpYSBwcmludCB7XG4gIC5tZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLm1kLWhlYWRlci1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwIDAuMnJlbTtcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fYnV0dG9uIHN2ZyB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b246Zm9jdXMsIC5tZC1oZWFkZXItbmF2X19idXR0b246aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28ge1xuICBtYXJnaW46IDAuMnJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIGltZyxcbi5tZC1oZWFkZXItbmF2X19idXR0b24ubWQtbG9nbyBzdmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbi5uby1qcyAubWQtaGVhZGVyLW5hdl9fYnV0dG9uW2Zvcj1fX3NlYXJjaF0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fYnV0dG9uW2Zvcj1fX3NlYXJjaF0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2LjI1ZW0pIHtcbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19kcmF3ZXJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSwgb3BhY2l0eSAxNTBtcztcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogLTE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgcG9zaXRpb246IGluaXRpYWw7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMSwgMC43LCAwLjEsIDAuMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZVtkYXRhLW1kLXN0YXRlPWFjdGl2ZV0gLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAwO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSA+IC5tZC1oZWFkZXItbmF2X19lbGxpcHNpcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBtYXgtd2lkdGg6IDExLjdyZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBtYXJnaW4tbGVmdDogMS40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNHJlbTtcbiAgfVxufVxuXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZXJvX19pbm5lciB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMC40cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtaGVyb19faW5uZXIge1xuICAgIG1hcmdpbi10b3A6IDIuNHJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG4gIH1cbn1cbltkYXRhLW1kLXN0YXRlPWhpZGRlbl0gLm1kLWhlcm9fX2lubmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjYyNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgMTAwbXMgMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuLm1kLWhlcm8tLWV4cGFuZCAubWQtaGVyb19faW5uZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG59XG5cbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtZm9vdGVyLW5hdl9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMS40cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC40cmVtO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDVlbSkge1xuICAubWQtZm9vdGVyLW5hdl9fbGluayB7XG4gICAgd2lkdGg6IDUwJTtcbiAgfVxufVxuLm1kLWZvb3Rlci1uYXZfX2xpbms6Zm9jdXMsIC5tZC1mb290ZXItbmF2X19saW5rOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYge1xuICB3aWR0aDogMjUlO1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiB7XG4gIGZsb2F0OiByaWdodDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYgLm1kLWZvb3Rlci1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCB7XG4gIHdpZHRoOiA3NSU7XG4gIGZsb2F0OiByaWdodDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5bZGlyPXJ0bF0gLm1kLWZvb3Rlci1uYXZfX2xpbmstLW5leHQge1xuICBmbG9hdDogbGVmdDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjRyZW0pO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBsaW5lLWhlaWdodDogMi40cmVtO1xufVxuLm1kLWZvb3Rlci1uYXZfX2J1dHRvbiB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtZm9vdGVyLW5hdl9fZGlyZWN0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogLTFyZW07XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1mb290ZXItbWV0YV9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cbmh0bWwgLm1kLWZvb3Rlci1tZXRhLm1kLXR5cGVzZXQgYTpmb2N1cywgaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gIG1hcmdpbjogMCAwLjZyZW07XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pIHtcbiAgLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICAgIG1heC13aWR0aDogNzUlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICB9XG4gIFtkaXI9cnRsXSAubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG4ubWQtZm9vdGVyLWNvcHlyaWdodF9faGlnaGxpZ2h0IHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cblxuLm1kLWZvb3Rlci1zb2NpYWwge1xuICBtYXJnaW46IDAgMC40cmVtO1xuICBwYWRkaW5nOiAwLjJyZW0gMCAwLjZyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NWVtKSB7XG4gIC5tZC1mb290ZXItc29jaWFsIHtcbiAgICBwYWRkaW5nOiAwLjZyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1mb290ZXItc29jaWFsIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbmsge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxLjZyZW07XG4gIGhlaWdodDogMS42cmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbms6OmJlZm9yZSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjk7XG59XG4ubWQtZm9vdGVyLXNvY2lhbF9fbGluayBzdmcge1xuICB3aWR0aDogMC44cmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogLTI1JTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuXG4ubWQtbmF2IHtcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG4ubWQtbmF2X190aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWQtbmF2X190aXRsZSAubWQtbmF2X19idXR0b24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG4ubWQtbmF2X190aXRsZSAubWQtbmF2X19idXR0b24ubWQtbG9nbyBzdmcgaW1nLFxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uLm1kLWxvZ28gc3ZnIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuLm1kLW5hdl9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbn1cbi5tZC1uYXZfX2l0ZW06bGFzdC1jaGlsZCB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjZyZW07XG59XG4ubWQtbmF2X19pdGVtIC5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuW2Rpcj1ydGxdIC5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9faXRlbSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cbi5tZC1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMC42MjVlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbn1cbmh0bWwgLm1kLW5hdl9fbGlua1tmb3I9X190b2NdIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbmh0bWwgLm1kLW5hdl9fbGlua1tmb3I9X190b2NdIH4gLm1kLW5hdiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtbmF2X19saW5rW2RhdGEtbWQtc3RhdGU9Ymx1cl0ge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19saW5rLS1hY3RpdmUge1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG59XG4ubWQtbmF2X19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4ubWQtbmF2X19saW5rOmZvY3VzLCAubWQtbmF2X19saW5rOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIC5tZC1uYXYge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnksIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlLFxuLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDUuNnJlbTtcbiAgICBwYWRkaW5nOiAzcmVtIDAuOHJlbSAwLjJyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC40cmVtO1xuICAgIGxlZnQ6IDAuNHJlbTtcbiAgICB3aWR0aDogMS4ycmVtO1xuICAgIGhlaWdodDogMS4ycmVtO1xuICAgIG1hcmdpbjogMC4ycmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIHJpZ2h0OiAwLjRyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIH4gLm1kLW5hdl9fbGlzdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSB+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0gLm1kLW5hdl9fYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwLjJyZW07XG4gICAgbGVmdDogMC4ycmVtO1xuICAgIHdpZHRoOiAzLjJyZW07XG4gICAgaGVpZ2h0OiAzLjJyZW07XG4gICAgbWFyZ2luOiAwLjJyZW07XG4gICAgcGFkZGluZzogMC40cmVtO1xuICAgIGZvbnQtc2l6ZTogMi40cmVtO1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSAubWQtbmF2X19idXR0b24ge1xuICAgIHJpZ2h0OiAwLjJyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpc3Qge1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0ge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMC44cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fbGluayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIHJpZ2h0OiAwLjZyZW07XG4gICAgbWFyZ2luLXRvcDogLTAuNnJlbTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saW5rIC5tZC1uYXZfX2ljb24ge1xuICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgIGxlZnQ6IDAuNnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pY29uIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgtMSk7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdl9fbGluayB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMS40cmVtO1xuICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAyLjZyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDMuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzLjJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZSB+IC5tZC1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC44LCAwLCAwLjYsIDEpLCBvcGFjaXR5IDEyNW1zIDUwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdl9fdG9nZ2xlIH4gLm1kLW5hdiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuICAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgb3BhY2l0eSAxMjVtcyAxMjVtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcbiAgfVxuICBodG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSArIC5tZC1uYXZfX2xpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10gfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDAgMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fdG9jXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2X190aXRsZSAubWQtbmF2X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1uYXYge1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMjUwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdiA+IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX2ljb24ge1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXM7XG4gIH1cbiAgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMC45cmVtO1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xcmVtO1xuICB9XG4gIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgfVxufVxuXG4ubWQtc2VhcmNoIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm5vLWpzIC5tZC1zZWFyY2gge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtc2VhcmNoIHtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMDtcbiAgfVxufVxuLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC4ycmVtO1xuICAgIGxlZnQ6IC0yLjJyZW07XG4gICAgd2lkdGg6IDJyZW07XG4gICAgaGVpZ2h0OiAycmVtO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgMTAwbXMsIG9wYWNpdHkgMjAwbXMgMjAwbXM7XG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICByaWdodDogLTIuMnJlbTtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX292ZXJsYXkge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcywgb3BhY2l0eSAxMDBtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyOS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg0NSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg2MCk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg3NSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5tZC1zZWFyY2hfX2lubmVyIHtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1JSk7XG4gICAgdHJhbnNpdGlvbjogcmlnaHQgMG1zIDMwMG1zLCBsZWZ0IDBtcyAzMDBtcywgdHJhbnNmb3JtIDE1MG1zIDE1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTUwbXMgMTUwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgICB6LWluZGV4OiAyO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICBsZWZ0OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiByaWdodCAwbXMgMG1zLCBsZWZ0IDBtcyAwbXMsIHRyYW5zZm9ybSAxNTBtcyAxNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMTUwbXMgMTUwbXM7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICBbZGlyPXJ0bF0gW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgaHRtbCBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01JSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBwYWRkaW5nOiAwLjFyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHdpZHRoOiAyMy40cmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICB3aWR0aDogMzQuNHJlbTtcbiAgfVxufVxuLm1kLXNlYXJjaF9fZm9ybSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fZm9ybSB7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICB9XG59XG4ubWQtc2VhcmNoX19pbnB1dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMCAyLjJyZW0gMCAzLjZyZW07XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB6LWluZGV4OiAyO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgcGFkZGluZzogMCAzLjZyZW0gMCAyLjJyZW07XG59XG4ubWQtc2VhcmNoX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG59XG4ubWQtc2VhcmNoX19pbnB1dCB+IC5tZC1zZWFyY2hfX2ljb24sIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG4ubWQtc2VhcmNoX19pbnB1dDo6LW1zLWNsZWFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyLjRyZW07XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9faW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMS44cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMi4ycmVtO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgcGFkZGluZy1yaWdodDogMi4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBib3JkZXItcmFkaXVzOiAwLjFyZW0gMC4xcmVtIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dCArIC5tZC1zZWFyY2hfX2ljb24sIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxufVxuLm1kLXNlYXJjaF9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgb3BhY2l0eSAyNTBtcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAyO1xufVxuLm1kLXNlYXJjaF9faWNvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gIHRvcDogMC4zcmVtO1xuICBsZWZ0OiAwLjVyZW07XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgcmlnaHQ6IDAuNXJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gICAgdG9wOiAwLjZyZW07XG4gICAgbGVmdDogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0ge1xuICAgIHJpZ2h0OiAwLjhyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0gc3ZnOmZpcnN0LWNoaWxkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6bGFzdC1jaGlsZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gIHRvcDogMC4zcmVtO1xuICByaWdodDogMC41cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuNXJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgICB0b3A6IDAuNnJlbTtcbiAgICByaWdodDogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiAwLjhyZW07XG4gIH1cbn1cbltkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0OnZhbGlkIH4gLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIG9wYWNpdHk6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xufVxuW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6dmFsaWQgfiAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAuMXJlbSAwLjFyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICB0b3A6IDIuNHJlbTtcbiAgICBib3R0b206IDA7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICB0b3A6IDEuOXJlbTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMThweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4ubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5AbWVkaWEgKG1heC1yZXNvbHV0aW9uOiAxZHBweCkge1xuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2LjI1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgbWF4LWhlaWdodDogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiA3NXZoO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMC4ycmVtO1xuICAgIGhlaWdodDogMC4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgfVxuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgfVxufVxuXG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS44cmVtO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX21ldGEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pdGVtIHtcbiAgYm94LXNoYWRvdzogMCAtMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIG91dGxpbmU6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmZvY3VzLCAubWQtc2VhcmNoLXJlc3VsdF9fbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQpO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6Zm9jdXMgLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGU6OmJlZm9yZSwgLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6aG92ZXIgLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGU6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmxhc3QtY2hpbGQgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gIG1hcmdpbi1ib3R0b206IDAuNnJlbTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgfVxufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUtLWRvY3VtZW50IC5tZC1zZWFyY2gtcmVzdWx0X190aXRsZSB7XG4gIG1hcmdpbjogMC41NXJlbSAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDAuMXJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGluaXRpYWw7XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2ljb24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fdGl0bGUge1xuICBtYXJnaW46IDAuNWVtIDA7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgbWF4LWhlaWdodDogMS42NXJlbTtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gICAgbWF4LWhlaWdodDogMi41cmVtO1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkgYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtc2VhcmNoLXJlc3VsdF9fdGVhc2VyIHtcbiAgICBtYXgtaGVpZ2h0OiAyLjVyZW07XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICB9XG59XG4ubWQtc2VhcmNoLXJlc3VsdCBlbSB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5tZC1zaWRlYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTIuMXJlbTtcbiAgcGFkZGluZzogMS4ycmVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXNpZGViYXJbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAyLjRyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEyLjFyZW07XG4gICAgd2lkdGg6IDEyLjFyZW07XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYm94LXNoYWRvdyAyNTBtcztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICB6LWluZGV4OiAzO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgcmlnaHQ6IC0xMi4xcmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1jb250YWluZXIgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTIuMXJlbSk7XG4gIH1cbiAgW2Rpcj1ydGxdIFtkYXRhLW1kLXRvZ2dsZT1kcmF3ZXJdOmNoZWNrZWQgfiAubWQtY29udGFpbmVyIC5tZC1zaWRlYmFyLS1wcmltYXJ5IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEyLjFyZW0pO1xuICB9XG4gIC5tZC1zaWRlYmFyLS1wcmltYXJ5IC5tZC1zaWRlYmFyX19zY3JvbGx3cmFwIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG4ubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTAwJSAtIDEyLjFyZW0pO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTAwJSAtIDEyLjFyZW0pO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBtYXJnaW4tbGVmdDogNDguOXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA0OC45cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMCAwLjJyZW07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG4gIH1cbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwLjJyZW07XG4gIGhlaWdodDogMC4ycmVtO1xufVxuLm1kLXNpZGViYXJfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuXG5Aa2V5ZnJhbWVzIG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUge1xuICAwJSB7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIGhlaWdodDogMC42NXJlbTtcbiAgfVxufVxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm1kLXNvdXJjZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2Uge1xuICBwYWRkaW5nLXJpZ2h0OiBpbml0aWFsO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbn1cbi5tZC1zb3VyY2U6aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc291cmNlX19pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMi40cmVtO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXRvcDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogMC42cmVtO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXNvdXJjZV9faWNvbiArIC5tZC1zb3VyY2VfX3JlcG9zaXRvcnkge1xuICBtYXJnaW4tbGVmdDogLTJyZW07XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19pY29uICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gIG1hcmdpbi1yaWdodDogLTJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtc291cmNlX19yZXBvc2l0b3J5IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm1kLXNvdXJjZV9fZmFjdHMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMC41NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvcGFjaXR5OiAwLjc1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdHMge1xuICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUgMjUwbXMgZWFzZS1pbjtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Qge1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19mYWN0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdCB7XG4gIGFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0LS1kb25lIDQwMG1zIGVhc2Utb3V0O1xufVxuLm1kLXNvdXJjZV9fZmFjdDo6YmVmb3JlIHtcbiAgbWFyZ2luOiAwIDAuMXJlbTtcbiAgY29udGVudDogXCLCt1wiO1xufVxuLm1kLXNvdXJjZV9fZmFjdDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLXRhYnMge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ubm8tanMgLm1kLXRhYnMge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIC5tZC10YWJzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdGFicyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXRhYnNfX2xpc3Qge1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5bZGlyPXJ0bF0gLm1kLXRhYnNfX2xpc3Qge1xuICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdGFic19faXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAyLjRyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG59XG4ubWQtdGFic19fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAwLjhyZW07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC43cmVtO1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubm8tanMgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuLm1kLXRhYnNfX2xpbmstLWFjdGl2ZSwgLm1kLXRhYnNfX2xpbms6aG92ZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgb3BhY2l0eTogMTtcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDIwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiA0MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDQpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg1KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg3KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEyMG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDgpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTQwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoOSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMCkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxODBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyNDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNCkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyODBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAzMDBtcztcbn1cbi5tZC10YWJzW2RhdGEtbWQtc3RhdGU9aGlkZGVuXSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLm1kLXRhYnNbZGF0YS1tZC1zdGF0ZT1oaWRkZW5dIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zLCB0cmFuc2Zvcm0gMG1zIDQwMG1zLCBvcGFjaXR5IDEwMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtdGFicyB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tbmVzdGVkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtLS1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSAubWQtbmF2IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLCAubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgbWFyZ2luOiAxLjU2MjVlbSAwO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgYm9yZGVyLWxlZnQ6IDAuMnJlbSBzb2xpZCAjNDQ4YWZmO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMC41cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMCAwLjA1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24sIFtkaXI9cnRsXSAubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgYm9yZGVyLXJpZ2h0OiAwLjJyZW0gc29saWQgIzQ0OGFmZjtcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XG59XG5odG1sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uID4gOmxhc3QtY2hpbGQsIGh0bWwgLm1kLXR5cGVzZXQgZGV0YWlscyA+IDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMgLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uIGRldGFpbHMsIC5tZC10eXBlc2V0IGRldGFpbHMgZGV0YWlscyB7XG4gIG1hcmdpbjogMWVtIDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50bGRyLCAubWQtdHlwZXNldCBkZXRhaWxzLnRsZHIsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1bW1hcnksIC5tZC10eXBlc2V0IGRldGFpbHMuc3VtbWFyeSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uYWJzdHJhY3QsIC5tZC10eXBlc2V0IGRldGFpbHMuYWJzdHJhY3Qge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYjBmZjtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VtbWFyeSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50bGRyID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VtbWFyeSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiMGZmO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyB0ZXh0LXN1YmplY3QgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50b2RvLCAubWQtdHlwZXNldCBkZXRhaWxzLnRvZG8sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmluZm8sIC5tZC10eXBlc2V0IGRldGFpbHMuaW5mbyB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBiOGQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbmZvID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8gPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE4NCwgMjEyLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnRvZG8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW5mbyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQ7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGluZm9ybWF0aW9uIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW1wb3J0YW50LCAubWQtdHlwZXNldCBkZXRhaWxzLmltcG9ydGFudCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGludCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oaW50LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi50aXAsIC5tZC10eXBlc2V0IGRldGFpbHMudGlwIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMGJmYTU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oaW50ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50aXAgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE5MSwgMTY1LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhpbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5oaW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnRpcCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmZhNTtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZmlyZSB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZG9uZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2ssIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2ssIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1Y2Nlc3MsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBjODUzO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZG9uZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kb25lID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaGVjayA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5jaGVjayA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VjY2VzcyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdWNjZXNzID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyMDAsIDgzLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZG9uZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmRvbmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2sgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5jaGVjayA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdWNjZXNzID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MztcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2stY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGVscCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdWVzdGlvbiB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjRkZDE3O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGVscCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAyMjEsIDIzLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFxID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1ZXN0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGRkMTc7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGhlbHAtY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uYXR0ZW50aW9uLCAubWQtdHlwZXNldCBkZXRhaWxzLmF0dGVudGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2F1dGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5jYXV0aW9uLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi53YXJuaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLndhcm5pbmcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2ZmOTEwMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy53YXJuaW5nID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE0NSwgMCwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jYXV0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi53YXJuaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMud2FybmluZyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMDtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgYWxlcnQgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjUyNTI7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDgyLCA4MiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5taXNzaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWx1cmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBjbG9zZS1jaXJjbGUgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5lcnJvciwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZGFuZ2VyLCAubWQtdHlwZXNldCBkZXRhaWxzLmRhbmdlciB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmYxNzQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRhbmdlciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjMsIDY4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjE3NDQ7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGZsYXNoLWNpcmNsZSB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZywgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2Y1MDA1Nztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NSwgMCwgODcsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTc7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGJ1ZyB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmV4YW1wbGUsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjUxZmZmO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXhhbXBsZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5leGFtcGxlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDEsIDMxLCAyNTUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5leGFtcGxlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY1MWZmZjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZm9ybWF0LWxpc3QtbnVtYmVyZWQgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5ZTllOWU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2l0ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVvdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdW90ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZm9ybWF0LXF1b3RlLWNsb3NlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGUsIC5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBtYXJnaW46IDAgLTAuNnJlbTtcbiAgcGFkZGluZzogMC40cmVtIDAuNnJlbSAwLjRyZW0gMnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2OCwgMTM4LCAyNTUsIDAuMSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGUsIFtkaXI9cnRsXSAubWQtdHlwZXNldCBzdW1tYXJ5IHtcbiAgcGFkZGluZzogMC40cmVtIDJyZW0gMC40cmVtIDAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOmxhc3QtY2hpbGQsIC5tZC10eXBlc2V0IHN1bW1hcnk6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZTo6YmVmb3JlLCAubWQtdHlwZXNldCBzdW1tYXJ5OjpiZWZvcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMS40cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBwZW5jaWwgfX1cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGU6OmJlZm9yZSwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1bW1hcnk6OmJlZm9yZSB7XG4gIG1hcmdpbi1yaWdodDogLTEuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5cbi5jb2RlaGlsaXRlIC5vLCAuaGlnaGxpZ2h0IC5vIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAub3csIC5oaWdobGlnaHQgLm93IHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAuZ2UsIC5oaWdobGlnaHQgLmdlIHtcbiAgY29sb3I6ICMwMDAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ3IsIC5oaWdobGlnaHQgLmdyIHtcbiAgY29sb3I6ICNBQTAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ2gsIC5oaWdobGlnaHQgLmdoIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuZ28sIC5oaWdobGlnaHQgLmdvIHtcbiAgY29sb3I6ICM4ODg4ODg7XG59XG4uY29kZWhpbGl0ZSAuZ3AsIC5oaWdobGlnaHQgLmdwIHtcbiAgY29sb3I6ICM1NTU1NTU7XG59XG4uY29kZWhpbGl0ZSAuZ3MsIC5oaWdobGlnaHQgLmdzIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAuZ3UsIC5oaWdobGlnaHQgLmd1IHtcbiAgY29sb3I6ICNBQUFBQUE7XG59XG4uY29kZWhpbGl0ZSAuZ3QsIC5oaWdobGlnaHQgLmd0IHtcbiAgY29sb3I6ICNBQTAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ2QsIC5oaWdobGlnaHQgLmdkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRERERDtcbn1cbi5jb2RlaGlsaXRlIC5naSwgLmhpZ2hsaWdodCAuZ2kge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERGRkREO1xufVxuLmNvZGVoaWxpdGUgLmssIC5oaWdobGlnaHQgLmsge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rYywgLmhpZ2hsaWdodCAua2Mge1xuICBjb2xvcjogI0E3MUQ1RDtcbn1cbi5jb2RlaGlsaXRlIC5rZCwgLmhpZ2hsaWdodCAua2Qge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rbiwgLmhpZ2hsaWdodCAua24ge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rcCwgLmhpZ2hsaWdodCAua3Age1xuICBjb2xvcjogI0E3MUQ1RDtcbn1cbi5jb2RlaGlsaXRlIC5rciwgLmhpZ2hsaWdodCAua3Ige1xuICBjb2xvcjogIzNFNjFBMjtcbn1cbi5jb2RlaGlsaXRlIC5rdCwgLmhpZ2hsaWdodCAua3Qge1xuICBjb2xvcjogIzNFNjFBMjtcbn1cbi5jb2RlaGlsaXRlIC5jLCAuaGlnaGxpZ2h0IC5jIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY20sIC5oaWdobGlnaHQgLmNtIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY3AsIC5oaWdobGlnaHQgLmNwIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAuYzEsIC5oaWdobGlnaHQgLmMxIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY2gsIC5oaWdobGlnaHQgLmNoIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY3MsIC5oaWdobGlnaHQgLmNzIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAubmEsIC5oaWdobGlnaHQgLm5hIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmIsIC5oaWdobGlnaHQgLm5iIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAuYnAsIC5oaWdobGlnaHQgLmJwIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubmMsIC5oaWdobGlnaHQgLm5jIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubm8sIC5oaWdobGlnaHQgLm5vIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubmQsIC5oaWdobGlnaHQgLm5kIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAubmksIC5oaWdobGlnaHQgLm5pIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAubmUsIC5oaWdobGlnaHQgLm5lIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmYsIC5oaWdobGlnaHQgLm5mIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmwsIC5oaWdobGlnaHQgLm5sIHtcbiAgY29sb3I6ICMzQjUxNzk7XG59XG4uY29kZWhpbGl0ZSAubm4sIC5oaWdobGlnaHQgLm5uIHtcbiAgY29sb3I6ICNFQzQwN0E7XG59XG4uY29kZWhpbGl0ZSAubnQsIC5oaWdobGlnaHQgLm50IHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAubnYsIC5oaWdobGlnaHQgLm52IHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmMsIC5oaWdobGlnaHQgLnZjIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmcsIC5oaWdobGlnaHQgLnZnIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmksIC5oaWdobGlnaHQgLnZpIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubngsIC5oaWdobGlnaHQgLm54IHtcbiAgY29sb3I6ICNFQzQwN0E7XG59XG4uY29kZWhpbGl0ZSAubSwgLmhpZ2hsaWdodCAubSB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1mLCAuaGlnaGxpZ2h0IC5tZiB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1oLCAuaGlnaGxpZ2h0IC5taCB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1pLCAuaGlnaGxpZ2h0IC5taSB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLmlsLCAuaGlnaGxpZ2h0IC5pbCB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1vLCAuaGlnaGxpZ2h0IC5tbyB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLnMsIC5oaWdobGlnaHQgLnMge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zYiwgLmhpZ2hsaWdodCAuc2Ige1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zYywgLmhpZ2hsaWdodCAuc2Mge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zZCwgLmhpZ2hsaWdodCAuc2Qge1xuICBjb2xvcjogIzk5OTk5OTtcbn1cbi5jb2RlaGlsaXRlIC5zMiwgLmhpZ2hsaWdodCAuczIge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zZSwgLmhpZ2hsaWdodCAuc2Uge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zaCwgLmhpZ2hsaWdodCAuc2gge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zaSwgLmhpZ2hsaWdodCAuc2kge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zeCwgLmhpZ2hsaWdodCAuc3gge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zciwgLmhpZ2hsaWdodCAuc3Ige1xuICBjb2xvcjogIzAwOTkyNjtcbn1cbi5jb2RlaGlsaXRlIC5zMSwgLmhpZ2hsaWdodCAuczEge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zcywgLmhpZ2hsaWdodCAuc3Mge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5lcnIsIC5oaWdobGlnaHQgLmVyciB7XG4gIGNvbG9yOiAjQTYxNzE3O1xufVxuLmNvZGVoaWxpdGUgLncsIC5oaWdobGlnaHQgLncge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uY29kZWhpbGl0ZSAuaGxsLCAuaGlnaGxpZ2h0IC5obGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIC0wLjZyZW07XG4gIHBhZGRpbmc6IDAgMC42cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAuY29kZWhpbGl0ZSAuaGxsLCAuaGlnaGxpZ2h0IC5obGwge1xuICAgIG1hcmdpbjogMCAtMC44cmVtO1xuICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICB9XG59XG5cbi5jb2RlaGlsaXRldGFibGUsIC5oaWdobGlnaHR0YWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0Ym9keSwgLmhpZ2hsaWdodHRhYmxlIHRib2R5LFxuLmNvZGVoaWxpdGV0YWJsZSB0ZCxcbi5oaWdobGlnaHR0YWJsZSB0ZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0ciwgLmhpZ2hsaWdodHRhYmxlIHRyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jb2RlaGlsaXRldGFibGUgcHJlLCAuaGlnaGxpZ2h0dGFibGUgcHJlLFxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vZGl2LFxuLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9kaXYge1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4uY29kZWhpbGl0ZXRhYmxlIC5saW5lbm9kaXYsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vZGl2IHtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcywgLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9zIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjA1cmVtIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5jb2RlaGlsaXRldGFibGUgLmxpbmVub3MgcHJlLCAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub3MgcHJlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5jb2RlaGlsaXRldGFibGUgLmNvZGUsIC5oaWdobGlnaHR0YWJsZSAuY29kZSB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICBtYXJnaW46IDFlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZSBjb2RlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQgY29kZSB7XG4gICAgcGFkZGluZzogMC41MjVyZW0gMC44cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRldGFibGUgLmxpbmVub2RpdiwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogMC41cmVtIDAuOHJlbTtcbiAgfVxufVxuXG4ubWQtdHlwZXNldCBbaWRePVwiZm5yZWY6XCJdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm1kLXR5cGVzZXQgW2lkXj1cImZucmVmOlwiXTp0YXJnZXQge1xuICBtYXJnaW4tdG9wOiAtMy44cmVtO1xuICBwYWRkaW5nLXRvcDogMy44cmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06dGFyZ2V0OjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTMuNXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUgb2wge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOnRhcmdldCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSA6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICBvcGFjaXR5OiAxO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmOmhvdmVyLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUtcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1yZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luOiAwIDAuMmVtO1xuICBib3JkZXItbGVmdDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHZlcnRpY2FsLWFsaWduOiAtMC4yNXJlbTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXM7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAwO1xuICBvcGFjaXR5OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWYge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTAuMjVyZW0pO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDAuOHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sga2V5Ym9hcmQtcmV0dXJuIH19XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmOjpiZWZvcmUgc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuXG4ubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zIDUwMG1zO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5odG1sIGJvZHkgLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXR5cGVzZXQgOmhvdmVyIC5oZWFkZXJsaW5rLFxuLm1kLXR5cGVzZXQgOnRhcmdldCAuaGVhZGVybGluayxcbi5tZC10eXBlc2V0IC5oZWFkZXJsaW5rOmZvY3VzIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLm1kLXR5cGVzZXQgLmhlYWRlcmxpbms6Zm9jdXMsXG4ubWQtdHlwZXNldCAuaGVhZGVybGluazpob3Zlcixcbi5tZC10eXBlc2V0IDp0YXJnZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IGgzW2lkXTo6YmVmb3JlLCAubWQtdHlwZXNldCBoMltpZF06OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDFbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNHJlbTtcbiAgcGFkZGluZy10b3A6IDAuNHJlbTtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IGgzW2lkXTp0YXJnZXQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDJbaWRdOnRhcmdldDo6YmVmb3JlLCAubWQtdHlwZXNldCBoMVtpZF06dGFyZ2V0OjpiZWZvcmUge1xuICBtYXJnaW4tdG9wOiAtMy40cmVtO1xuICBwYWRkaW5nLXRvcDogMy40cmVtO1xufVxuLm1kLXR5cGVzZXQgaDRbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNDVyZW07XG4gIHBhZGRpbmctdG9wOiAwLjQ1cmVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuLm1kLXR5cGVzZXQgaDRbaWRdOnRhcmdldDo6YmVmb3JlIHtcbiAgbWFyZ2luLXRvcDogLTMuNDVyZW07XG4gIHBhZGRpbmctdG9wOiAzLjQ1cmVtO1xufVxuLm1kLXR5cGVzZXQgaDZbaWRdOjpiZWZvcmUsIC5tZC10eXBlc2V0IGg1W2lkXTo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0wLjZyZW07XG4gIHBhZGRpbmctdG9wOiAwLjZyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtdHlwZXNldCBoNltpZF06dGFyZ2V0OjpiZWZvcmUsIC5tZC10eXBlc2V0IGg1W2lkXTp0YXJnZXQ6OmJlZm9yZSB7XG4gIG1hcmdpbi10b3A6IC0zLjZyZW07XG4gIHBhZGRpbmctdG9wOiAzLjZyZW07XG59XG4ubWQtdHlwZXNldCAuTUpYYy1kaXNwbGF5IHtcbiAgbWFyZ2luOiAwLjc1ZW0gMDtcbiAgcGFkZGluZzogMC43NWVtIDA7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXR5cGVzZXQgPiBwID4gLk1KWGMtZGlzcGxheSB7XG4gICAgbWFyZ2luOiAwLjc1ZW0gLTAuOHJlbTtcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC44cmVtO1xuICB9XG59XG4ubWQtdHlwZXNldCAuTWF0aEpheF9DSFRNTCB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi5tZC10eXBlc2V0IGRlbC5jcml0aWMsXG4ubWQtdHlwZXNldCBpbnMuY3JpdGljLFxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50IHtcbiAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG59XG4ubWQtdHlwZXNldCBkZWwuY3JpdGljIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRERERDtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCAjRkZERERELCAtMC4yNWVtIDAgMCAjRkZEREREO1xufVxuLm1kLXR5cGVzZXQgaW5zLmNyaXRpYyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNEREZGREQ7XG4gIGJveC1zaGFkb3c6IDAuMjVlbSAwIDAgI0RERkZERCwgLTAuMjVlbSAwIDAgI0RERkZERDtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuY29tbWVudCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50OjpiZWZvcmUge1xuICBjb250ZW50OiBcIi8qIFwiO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiICovXCI7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMWVtIDA7XG4gIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjhyZW07XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIDpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDAuNWVtO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5ibG9jayA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xufVxuXG4ubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnk6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHM6bm90KFtvcGVuXSkge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHM6bm90KFtvcGVuXSkgPiBzdW1tYXJ5IHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHMgc3VtbWFyeSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1yaWdodDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBkZXRhaWxzIHN1bW1hcnkge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG4ubWQtdHlwZXNldCBzdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tZC10eXBlc2V0IHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwLjZyZW07XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBjaGV2cm9uLWRvd24gfX1cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC42cmVtO1xufVxuXG4ubWQtdHlwZXNldCAuZW1vamlvbmUsXG4ubWQtdHlwZXNldCAudHdlbW9qaSxcbi5tZC10eXBlc2V0IC5nZW1vamkge1xuICB3aWR0aDogMXJlbTtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xufVxuXG4uaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIGxlZnQ6IC0wLjZyZW07XG4gIG1hcmdpbi1yaWdodDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG4gIGJvcmRlci1yaWdodDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgY29udGVudDogYXR0cihkYXRhLWxpbmVub3MpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAuaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICAgIGxlZnQ6IC0xLjZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjZyZW07XG4gIH1cbn1cblxuLm1kLXR5cGVzZXQgY29kZS5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCBjb2RlLmhpZ2hsaWdodCB7XG4gIG1hcmdpbjogMCAwLjI5NDExNzY0NzFlbTtcbiAgcGFkZGluZzogMC4wNzM1Mjk0MTE4ZW0gMDtcbn1cblxuLm1kLXR5cGVzZXQgLnRhYmJlZC1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgb3JkZXI6IDk5O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLWNvbnRlbnQgcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgYm9yZGVyOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IHByZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0Om9ubHktY2hpbGQsXG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IC5oaWdobGlnaHR0YWJsZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZXRhYmxlOm9ubHktY2hpbGQge1xuICBtYXJnaW46IDAgLTAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gcHJlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0Om9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0dGFibGU6b25seS1jaGlsZCBwcmUsXG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IC5jb2RlaGlsaXRlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZXRhYmxlOm9ubHktY2hpbGQgcHJlIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGxhYmVsIHtcbiAgd2lkdGg6IGF1dG87XG4gIHBhZGRpbmc6IDAuNnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXMsIGJvcmRlciAyNTBtcztcbiAgYm9yZGVyLWJvdHRvbTogMC4xcmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmh0bWwgLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBsYWJlbDpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQuOTM3NWVtKSB7XG4gIC5tZC10eXBlc2V0ID4gLnRhYmJlZC1zZXQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICB9XG59XG5cbi5tZC10eXBlc2V0IC50YXNrLWxpc3QtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIFt0eXBlPWNoZWNrYm94XSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjQ1ZW07XG4gIGxlZnQ6IC0yZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIFt0eXBlPWNoZWNrYm94XSB7XG4gIHJpZ2h0OiAtMmVtO1xuICBsZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIC50YXNrLWxpc3QtaW5kaWNhdG9yOjpiZWZvcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMC4xNWVtO1xuICBsZWZ0OiAtMS41ZW07XG4gIHdpZHRoOiAxLjI1ZW07XG4gIGhlaWdodDogMS4yNWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGNoZWNrYm94LWJsYW5rLWNpcmNsZSB9fVwiKTtcbiAgY29udGVudDogXCJcIjtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHJpZ2h0OiAtMS41ZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2stY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIFt0eXBlPWNoZWNrYm94XSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xufSIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEVuZm9yY2UgY29ycmVjdCBib3ggbW9kZWxcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vLyBBbGwgZWxlbWVudHMgc2hhbGwgaW5oZXJpdCB0aGUgZG9jdW1lbnQgZGVmYXVsdFxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuLy8gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBJRSBhbmQgaU9TXG5odG1sIHtcbiAgdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbn1cblxuLy8gUmVtb3ZlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnNcbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8vIFJlc2V0IGhvcml6b250YWwgcnVsZXMgaW4gRkZcbmhyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4vLyBSZW1vdmUgZ2FwcyBpbiB1bmRlcmxpbmVkIGxpbmtzIGluIGlPUyA+PSA4IGFuZCBTYWZhcmkgPj0gOFxuYSB7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmVcbn1cblxuLy8gUmVzZXQgdGFwIG91dGxpbmVzIG9uIGlPUyBhbmQgQW5kcm9pZFxuYSxcbmJ1dHRvbixcbmxhYmVsLFxuaW5wdXQge1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vLyBSZXNldCBsaW5rIHN0eWxlc1xuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8vIE5vcm1hbGl6ZSBmb250LXNpemUgaW4gYWxsIGJyb3dzZXJzXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vLyBQcmV2ZW50IHN1YnNjcmlwdCBhbmQgc3VwZXJzY3JpcHQgZnJvbSBhZmZlY3RpbmcgbGluZS1oZWlnaHRcbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8vIENvcnJlY3Qgc3Vic2NyaXB0IG9mZnNldFxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vLyBDb3JyZWN0IHN1cGVyc2NyaXB0IG9mZnNldFxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8vIFJlbW92ZSBib3JkZXJzIG9uIGltYWdlc1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vLyBSZXNldCB0YWJsZSBzdHlsZXNcbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbi8vIFJlc2V0IHRhYmxlIGNlbGwgc3R5bGVzXG50ZCxcbnRoIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZVxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4vLyBSZXNldCAobmF0aXZlKSBidXR0b24gc3R5bGVzXG5idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cblxuLy8gUmVzZXQgKG5hdGl2ZSkgaW5wdXQgc3R5bGVzXG5pbnB1dCB7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5odG1sIHtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBub25lO1xuICAgICAtbW96LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7XG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbiAgICAgICAgICB0ZXh0LXNpemUtYWRqdXN0OiBub25lO1xufVxuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG5ociB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuYSB7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7XG59XG5cbmEsXG5idXR0b24sXG5sYWJlbCxcbmlucHV0IHtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbmJ1dHRvbiB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5pbnB1dCB7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbn1cblxuOnJvb3Qge1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjg3KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodDogaHNsYSgwLCAwJSwgMCUsIDAuNTQpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXI6IGhzbGEoMCwgMCUsIDAlLCAwLjI2KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdDogaHNsYSgwLCAwJSwgMCUsIDAuMDcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDEpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXI6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMyk7XG4gIC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTIpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMjMxZGVnLCA0OCUsIDQ4JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMjMwZGVnLCA0NCUsIDY0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgyMzJkZWcsIDU0JSwgNDElLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgyMzFkZWcsIDk5JSwgNjYlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDIzMWRlZywgOTklLCA2NiUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodCk7XG4gIC0tbWQtY29kZS1iZy1jb2xvcjogaHNsYSgwLCAwJSwgOTIuNSUsIDAuNSk7XG4gIC0tbWQtY29kZS1mZy1jb2xvcjogaHNsYSgyMDAsIDE4JSwgMjYlLCAxKTtcbn1cblxuLm1kLWljb24gc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuXG5ib2R5IHtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbmJvZHksXG5pbnB1dCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiLCBcImxpZ2FcIjtcbiAgICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiLCBcImxpZ2FcIjtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuY29kZSxcbnByZSxcbmtiZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiO1xuICAgICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCI7XG4gIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcbn1cblxuLm1kLXR5cGVzZXQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xufVxuLm1kLXR5cGVzZXQgcCxcbi5tZC10eXBlc2V0IHVsLFxuLm1kLXR5cGVzZXQgb2wsXG4ubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAxZW0gMDtcbn1cbi5tZC10eXBlc2V0IGgxIHtcbiAgbWFyZ2luOiAwIDAgMnJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAxLjU2MjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xufVxuLm1kLXR5cGVzZXQgaDIge1xuICBtYXJnaW46IDJyZW0gMCAwLjhyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG4ubWQtdHlwZXNldCBoMyB7XG4gIG1hcmdpbjogMS42cmVtIDAgMC44cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuLm1kLXR5cGVzZXQgaDIgKyBoMyB7XG4gIG1hcmdpbi10b3A6IDAuOHJlbTtcbn1cbi5tZC10eXBlc2V0IGg0IHtcbiAgbWFyZ2luOiAwLjhyZW0gMDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuLm1kLXR5cGVzZXQgaDUsXG4ubWQtdHlwZXNldCBoNiB7XG4gIG1hcmdpbjogMC44cmVtIDA7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG4ubWQtdHlwZXNldCBoNSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG4ubWQtdHlwZXNldCBociB7XG4gIG1hcmdpbjogMS41ZW0gMDtcbiAgYm9yZGVyLWJvdHRvbTogMC4wNXJlbSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuLm1kLXR5cGVzZXQgYSwgLm1kLXR5cGVzZXQgYTo6YmVmb3JlIHtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG59XG4ubWQtdHlwZXNldCBhOmZvY3VzLCAubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCBjb2RlLFxuLm1kLXR5cGVzZXQgcHJlLFxuLm1kLXR5cGVzZXQga2JkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1jb2RlLWZnLWNvbG9yKTtcbiAgZm9udC1zaXplOiA4NSU7XG4gIGRpcmVjdGlvbjogbHRyO1xufVxuLm1kLXR5cGVzZXQgY29kZSB7XG4gIG1hcmdpbjogMCAwLjI5NDExNzY0NzFlbTtcbiAgcGFkZGluZzogMC4wNzM1Mjk0MTE4ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBib3gtc2hhZG93OiAwLjI5NDExNzY0NzFlbSAwIDAgdmFyKC0tbWQtY29kZS1iZy1jb2xvciksIC0wLjI5NDExNzY0NzFlbSAwIDAgdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGgxIGNvZGUsXG4ubWQtdHlwZXNldCBoMiBjb2RlLFxuLm1kLXR5cGVzZXQgaDMgY29kZSxcbi5tZC10eXBlc2V0IGg0IGNvZGUsXG4ubWQtdHlwZXNldCBoNSBjb2RlLFxuLm1kLXR5cGVzZXQgaDYgY29kZSB7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBhID4gY29kZSB7XG4gIG1hcmdpbjogaW5oZXJpdDtcbiAgcGFkZGluZzogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogaW5pdGlhbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBwcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBib3gtc2hhZG93OiBub25lO1xuICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcbiAgICAgICAgICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwLjJyZW07XG4gIGhlaWdodDogMC4ycmVtO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC10eXBlc2V0IHByZSA+IGNvZGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IGtiZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMCAwLjU4ODIzNTI5NDFlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm94LXNoYWRvdzogMCAwLjFyZW0gMCAwLjA1cmVtIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLCAwIDAuMXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLCBpbnNldCAwIC0wLjFyZW0gMC4ycmVtIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG59XG4ubWQtdHlwZXNldCBtYXJrIHtcbiAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KSwgLTAuMjVlbSAwIDAgcmdiYSgyNTUsIDIzNSwgNTksIDAuNSk7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGFiYnIge1xuICBib3JkZXItYm90dG9tOiAwLjA1cmVtIGRvdHRlZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBoZWxwO1xufVxuLm1kLXR5cGVzZXQgc21hbGwge1xuICBvcGFjaXR5OiAwLjc1O1xufVxuLm1kLXR5cGVzZXQgc3VwLFxuLm1kLXR5cGVzZXQgc3ViIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMDc4MTI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VwLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1YiB7XG4gIG1hcmdpbi1yaWdodDogMC4wNzgxMjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG4gIGJvcmRlci1sZWZ0OiAwLjJyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgYmxvY2txdW90ZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICBib3JkZXItcmlnaHQ6IDAuMnJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgYm9yZGVyLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbn1cbi5tZC10eXBlc2V0IHVsLFxuLm1kLXR5cGVzZXQgb2wge1xuICBtYXJnaW4tbGVmdDogMC42MjVlbTtcbiAgcGFkZGluZzogMDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCB7XG4gIG1hcmdpbi1yaWdodDogMC42MjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCBvbCxcbi5tZC10eXBlc2V0IG9sIG9sIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBsb3dlci1hbHBoYTtcbn1cbi5tZC10eXBlc2V0IHVsIG9sIG9sLFxuLm1kLXR5cGVzZXQgb2wgb2wgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLXJvbWFuO1xufVxuLm1kLXR5cGVzZXQgdWwgbGksXG4ubWQtdHlwZXNldCBvbCBsaSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICBtYXJnaW4tbGVmdDogMS4yNWVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHVsIGxpLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IG9sIGxpIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjI1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgdWwgbGkgcCxcbi5tZC10eXBlc2V0IHVsIGxpIGJsb2NrcXVvdGUsXG4ubWQtdHlwZXNldCBvbCBsaSBwLFxuLm1kLXR5cGVzZXQgb2wgbGkgYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMC41ZW0gMDtcbn1cbi5tZC10eXBlc2V0IHVsIGxpOmxhc3QtY2hpbGQsXG4ubWQtdHlwZXNldCBvbCBsaTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IHVsIGxpIHVsLFxuLm1kLXR5cGVzZXQgdWwgbGkgb2wsXG4ubWQtdHlwZXNldCBvbCBsaSB1bCxcbi5tZC10eXBlc2V0IG9sIGxpIG9sIHtcbiAgbWFyZ2luOiAwLjVlbSAwIDAuNWVtIDAuNjI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGkgdWwsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGkgb2wsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkgdWwsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkgb2wge1xuICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgZGQge1xuICBtYXJnaW46IDFlbSAwIDFlbSAxLjg3NWVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRkIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjg3NWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IGlmcmFtZSxcbi5tZC10eXBlc2V0IGltZyxcbi5tZC10eXBlc2V0IHN2ZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGJveC1zaGFkb3c6IDAgMC4ycmVtIDAuNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDAgMC4wNXJlbSByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgKyAqIHtcbiAgbWFyZ2luLXRvcDogMS41ZW07XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGg6bm90KFthbGlnbl0pLFxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRkOm5vdChbYWxpZ25dKSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRoOm5vdChbYWxpZ25dKSxcbltkaXI9cnRsXSAubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQ6bm90KFthbGlnbl0pIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGgge1xuICBtaW4td2lkdGg6IDVyZW07XG4gIHBhZGRpbmc6IDAuNnJlbSAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRkIHtcbiAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgYm9yZGVyLXRvcDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHIge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDEyNW1zO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzNSk7XG4gIGJveC1zaGFkb3c6IDAgMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpIGluc2V0O1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgYm9yZGVyLXRvcDogMDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSBhIHtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuLm1kLXR5cGVzZXRfX3Njcm9sbHdyYXAge1xuICBtYXJnaW46IDFlbSAtMC44cmVtO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCAubWQtdHlwZXNldF9fdGFibGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbn1cbi5tZC10eXBlc2V0IC5tZC10eXBlc2V0X190YWJsZSB0YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5odG1sIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgZm9udC1zaXplOiAxMjUlO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbmJvZHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBmb250LXNpemU6IDAuNXJlbTtcbn1cblxuaHIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjA1cmVtO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi5tZC1ncmlkIHtcbiAgbWF4LXdpZHRoOiA2MXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxuLm1kLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLm1kLW1haW4ge1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubWQtbWFpbl9faW5uZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjA1cmVtO1xufVxuXG4ubWQtZWxsaXBzaXMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZC10b2dnbGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWQtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMztcbn1cblxuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogMC41cmVtO1xuICBwYWRkaW5nOiAwLjNyZW0gMC41cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC40cmVtKTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIG9wYWNpdHk6IDA7XG59XG4ubWQtc2tpcDpmb2N1cyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTc1bXMgNzVtcztcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuLm1kLWFubm91bmNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG4ubWQtYW5ub3VuY2VfX2lubmVyIHtcbiAgbWluLWhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbn1cblxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjRyZW07XG4gIHJpZ2h0OiAwLjRyZW07XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5tZC1jbGlwYm9hcmQgc3ZnIHtcbiAgd2lkdGg6IDAuOXJlbTtcbiAgaGVpZ2h0OiAwLjlyZW07XG59XG5wcmU6aG92ZXIgLm1kLWNsaXBib2FyZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5wcmUgLm1kLWNsaXBib2FyZDpmb2N1cywgcHJlIC5tZC1jbGlwYm9hcmQ6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC1jb250ZW50X19pbm5lciB7XG4gIG1hcmdpbjogMCAwLjhyZW0gMS4ycmVtO1xuICBwYWRkaW5nLXRvcDogMC42cmVtO1xufVxuLm1kLWNvbnRlbnRfX2lubmVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjRyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtY29udGVudF9faW5uZXIgPiA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtY29udGVudF9fYnV0dG9uIHtcbiAgbWFyZ2luOiAwLjRyZW0gMDtcbiAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXR5cGVzZXQgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4ubWQtZGlhbG9nIHtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMC44cmVtO1xuICBib3R0b206IDAuOHJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbiAgbWluLXdpZHRoOiAxMS4xcmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtZGlhbG9nIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuOHJlbTtcbn1cbi5tZC1kaWFsb2dbZGF0YS1tZC1zdGF0ZT1vcGVuXSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLCBvcGFjaXR5IDQwMG1zO1xuICBvcGFjaXR5OiAxO1xufVxuXG4ubWQtaGVhZGVyIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyNTBtcywgY29sb3IgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGJveC1zaGFkb3c6IDAgMCAwLjJyZW0gcmdiYSgwLCAwLCAwLCAwKSwgMCAwLjJyZW0gMC40cmVtIHJnYmEoMCwgMCwgMCwgMCk7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMjtcbn1cbi5uby1qcyAubWQtaGVhZGVyIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5tZC1oZWFkZXJbZGF0YS1tZC1zdGF0ZT1zaGFkb3ddIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyNTBtcywgY29sb3IgMjUwbXMsIGJveC1zaGFkb3cgMjUwbXM7XG4gIGJveC1zaGFkb3c6IDAgMCAwLjJyZW0gcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAuMnJlbSAwLjRyZW0gcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4ubWQtaGVhZGVyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMC4ycmVtO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAwLjJyZW07XG4gIHBhZGRpbmc6IDAuNHJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAxO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbjpmb2N1cywgLm1kLWhlYWRlci1uYXZfX2J1dHRvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b24ubWQtbG9nbyB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28gaW1nLFxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuLm5vLWpzIC5tZC1oZWFkZXItbmF2X19idXR0b25bZm9yPV9fc2VhcmNoXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSwgb3BhY2l0eSAxNTBtcztcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogLTE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgcG9zaXRpb246IGluaXRpYWw7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMSwgMC43LCAwLjEsIDAuMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZVtkYXRhLW1kLXN0YXRlPWFjdGl2ZV0gLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAwO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSA+IC5tZC1oZWFkZXItbmF2X19lbGxpcHNpcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZXJvX19pbm5lciB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMC40cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbltkYXRhLW1kLXN0YXRlPWhpZGRlbl0gLm1kLWhlcm9fX2lubmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjYyNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgMTAwbXMgMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuLm1kLWhlcm8tLWV4cGFuZCAubWQtaGVyb19faW5uZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG59XG5cbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLW5hdl9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMS40cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC40cmVtO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbms6Zm9jdXMsIC5tZC1mb290ZXItbmF2X19saW5rOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYge1xuICB3aWR0aDogMjUlO1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiB7XG4gIGZsb2F0OiByaWdodDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCB7XG4gIHdpZHRoOiA3NSU7XG4gIGZsb2F0OiByaWdodDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5bZGlyPXJ0bF0gLm1kLWZvb3Rlci1uYXZfX2xpbmstLW5leHQge1xuICBmbG9hdDogbGVmdDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjRyZW0pO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBsaW5lLWhlaWdodDogMi40cmVtO1xufVxuLm1kLWZvb3Rlci1uYXZfX2J1dHRvbiB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtZm9vdGVyLW5hdl9fZGlyZWN0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogLTFyZW07XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1mb290ZXItbWV0YV9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cbmh0bWwgLm1kLWZvb3Rlci1tZXRhLm1kLXR5cGVzZXQgYTpmb2N1cywgaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gIG1hcmdpbjogMCAwLjZyZW07XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbn1cbi5tZC1mb290ZXItY29weXJpZ2h0X19oaWdobGlnaHQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xufVxuXG4ubWQtZm9vdGVyLXNvY2lhbCB7XG4gIG1hcmdpbjogMCAwLjRyZW07XG4gIHBhZGRpbmc6IDAuMnJlbSAwIDAuNnJlbTtcbn1cbi5tZC1mb290ZXItc29jaWFsX19saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS42cmVtO1xuICBoZWlnaHQ6IDEuNnJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5tZC1mb290ZXItc29jaWFsX19saW5rOjpiZWZvcmUge1xuICBsaW5lLWhlaWdodDogMS45O1xufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbmsgc3ZnIHtcbiAgd2lkdGg6IDAuOHJlbTtcbiAgdmVydGljYWwtYWxpZ246IC0yNSU7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuLm1kLW5hdiB7XG4gIGZvbnQtc2l6ZTogMC43cmVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xufVxuLm1kLW5hdl9fdGl0bGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2J1dHRvbiBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uLm1kLWxvZ28gc3ZnIGltZyxcbi5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2J1dHRvbi5tZC1sb2dvIHN2ZyBzdmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbi5tZC1uYXZfX2xpc3Qge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4ubWQtbmF2X19pdGVtIHtcbiAgcGFkZGluZzogMCAwLjZyZW07XG59XG4ubWQtbmF2X19pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19pdGVtIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cbltkaXI9cnRsXSAubWQtbmF2X19pdGVtIC5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cbi5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9faXRlbTpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG4ubWQtbmF2X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDAuNjI1ZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG5odG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5odG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSB+IC5tZC1uYXYge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLW5hdl9fbGlua1tkYXRhLW1kLXN0YXRlPWJsdXJdIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9fbGluay0tYWN0aXZlIHtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xufVxuLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLm1kLW5hdl9fbGluazpmb2N1cywgLm1kLW5hdl9fbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLW5hdl9fc291cmNlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLXNlYXJjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5uby1qcyAubWQtc2VhcmNoIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1zZWFyY2hfX292ZXJsYXkge1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xufVxuLm1kLXNlYXJjaF9faW5uZXIge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG4ubWQtc2VhcmNoX19mb3JtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm1kLXNlYXJjaF9faW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAgMi4ycmVtIDAgMy42cmVtO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gIHBhZGRpbmc6IDAgMy42cmVtIDAgMi4ycmVtO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAtbW96LXRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIC1tcy10cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQgfiAubWQtc2VhcmNoX19pY29uLCAubWQtc2VhcmNoX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tcy1jbGVhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtc2VhcmNoX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDI7XG59XG4ubWQtc2VhcmNoX19pY29uOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgdG9wOiAwLjNyZW07XG4gIGxlZnQ6IDAuNXJlbTtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0ge1xuICByaWdodDogMC41cmVtO1xuICBsZWZ0OiBpbml0aWFsO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgdG9wOiAwLjNyZW07XG4gIHJpZ2h0OiAwLjVyZW07XG4gIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bdHlwZT1yZXNldF0ge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC41cmVtO1xufVxuW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6dmFsaWQgfiAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgb3BhY2l0eTogMTtcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG59XG5bZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDp2YWxpZCB+IC5tZC1zZWFyY2hfX2ljb25bdHlwZT1yZXNldF06aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc2VhcmNoX19vdXRwdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwIDAgMC4xcmVtIDAuMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbn1cbi5tZC1zZWFyY2hfX3Njcm9sbHdyYXAge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAuMDVyZW0gMCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS44cmVtO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXRvcDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9faXRlbSB7XG4gIGJveC1zaGFkb3c6IDAgLTAuMDVyZW0gMCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDI1MG1zO1xuICBvdXRsaW5lOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluazpmb2N1cywgLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50KTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmZvY3VzIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUsIC5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmhvdmVyIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluazpsYXN0LWNoaWxkIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fYXJ0aWNsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUtLWRvY3VtZW50IC5tZC1zZWFyY2gtcmVzdWx0X190aXRsZSB7XG4gIG1hcmdpbjogMC41NXJlbSAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDAuMXJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGluaXRpYWw7XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2ljb24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fdGVhc2VyIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIG1heC1oZWlnaHQ6IDEuNjVyZW07XG4gIG1hcmdpbjogMC41ZW0gMDtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS40O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xufVxuLm1kLXNlYXJjaC1yZXN1bHQgZW0ge1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ubWQtc2lkZWJhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEyLjFyZW07XG4gIHBhZGRpbmc6IDEuMnJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1kLXNpZGViYXJbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAyLjRyZW07XG59XG4ubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwIHtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwIDAuMnJlbTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLm1kLXNpZGViYXJfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDAuMnJlbTtcbiAgaGVpZ2h0OiAwLjJyZW07XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBoZWlnaHQ6IDAuNjVyZW07XG4gIH1cbn1cblxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBoZWlnaHQ6IDAuNjVyZW07XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm1kLXNvdXJjZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2Uge1xuICBwYWRkaW5nLXJpZ2h0OiBpbml0aWFsO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbn1cbi5tZC1zb3VyY2U6aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc291cmNlX19pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMi40cmVtO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXRvcDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogMC42cmVtO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXNvdXJjZV9faWNvbiArIC5tZC1zb3VyY2VfX3JlcG9zaXRvcnkge1xuICBtYXJnaW4tbGVmdDogLTJyZW07XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19pY29uICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gIG1hcmdpbi1yaWdodDogLTJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtc291cmNlX19yZXBvc2l0b3J5IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm1kLXNvdXJjZV9fZmFjdHMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMC41NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvcGFjaXR5OiAwLjc1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdHMge1xuICAtd2Via2l0LWFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0cy0tZG9uZSAyNTBtcyBlYXNlLWluO1xuICAgICAgICAgIGFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0cy0tZG9uZSAyNTBtcyBlYXNlLWluO1xufVxuLm1kLXNvdXJjZV9fZmFjdCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ZhY3Qge1xuICBmbG9hdDogcmlnaHQ7XG59XG5bZGF0YS1tZC1zdGF0ZT1kb25lXSAubWQtc291cmNlX19mYWN0IHtcbiAgLXdlYmtpdC1hbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdC0tZG9uZSA0MDBtcyBlYXNlLW91dDtcbiAgICAgICAgICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdC0tZG9uZSA0MDBtcyBlYXNlLW91dDtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Q6OmJlZm9yZSB7XG4gIG1hcmdpbjogMCAwLjFyZW07XG4gIGNvbnRlbnQ6IFwiwrdcIjtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Q6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tZC10YWJzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm5vLWpzIC5tZC10YWJzIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cbi5tZC10YWJzX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuW2Rpcj1ydGxdIC5tZC10YWJzX19saXN0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXRhYnNfX2l0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHBhZGRpbmctbGVmdDogMC42cmVtO1xufVxuLm1kLXRhYnNfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMC44cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMC43O1xufVxuLm5vLWpzIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cbi5tZC10YWJzX19saW5rLS1hY3RpdmUsIC5tZC10YWJzX19saW5rOmhvdmVyIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDE7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDMpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogNDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg0KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiA4MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDYpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTAwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg4KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDE0MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDkpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTApIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTEpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjAwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTIpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjIwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTMpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjQwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTQpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTUpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTYpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMzAwbXM7XG59XG4ubWQtdGFic1tkYXRhLW1kLXN0YXRlPWhpZGRlbl0ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10YWJzW2RhdGEtbWQtc3RhdGU9aGlkZGVuXSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MCUpO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcywgdHJhbnNmb3JtIDBtcyA0MDBtcywgb3BhY2l0eSAxMDBtcztcbiAgb3BhY2l0eTogMDtcbn1cblxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMge1xuICBtYXJnaW46IDEuNTYyNWVtIDA7XG4gIHBhZGRpbmc6IDAgMC42cmVtO1xuICBib3JkZXItbGVmdDogMC4ycmVtIHNvbGlkICM0NDhhZmY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBib3gtc2hhZG93OiAwIDAuMnJlbSAwLjVyZW0gcmdiYSgwLCAwLCAwLCAwLjA1KSwgMCAwIDAuMDVyZW0gcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAuYWRtb25pdGlvbiwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRldGFpbHMge1xuICBib3JkZXItcmlnaHQ6IDAuMnJlbSBzb2xpZCAjNDQ4YWZmO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cbmh0bWwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gPiA6bGFzdC1jaGlsZCwgaHRtbCAubWQtdHlwZXNldCBkZXRhaWxzID4gOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbiAuYWRtb25pdGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscyAuYWRtb25pdGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gZGV0YWlscywgLm1kLXR5cGVzZXQgZGV0YWlscyBkZXRhaWxzIHtcbiAgbWFyZ2luOiAxZW0gMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VtbWFyeSwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hYnN0cmFjdCB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBiMGZmO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGxkciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50bGRyID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1bW1hcnkgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy50bGRyID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1bW1hcnkgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuYWJzdHJhY3QgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGIwZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTQsNUgyMFY3SDRWNU00LDlIMjBWMTFINFY5TTQsMTNIMjBWMTVINFYxM000LDE3SDE0VjE5SDRWMTdaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNNCw1SDIwVjdINFY1TTQsOUgyMFYxMUg0VjlNNCwxM0gyMFYxNUg0VjEzTTQsMTdIMTRWMTlINFYxN1pcXFwiIC8+PC9zdmc+XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbywgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbmZvLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8ge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYjhkNDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRvZG8gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMudG9kbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW5mbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbmZvID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxODQsIDIxMiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRvZG8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmluZm8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbmZvID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiOGQ0O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMyw5SDExVjdIMTNNMTMsMTdIMTFWMTFIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTMsOUgxMVY3SDEzTTEzLDE3SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oaW50LCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCwgLm1kLXR5cGVzZXQgZGV0YWlscy50aXAge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYmZhNTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmltcG9ydGFudCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhpbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaGludCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGlwID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnRpcCA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTkxLCAxNjUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGludCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGlwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMudGlwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZmE1O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNy41NSwxMS4yQzE3LjMyLDEwLjkgMTcuMDUsMTAuNjQgMTYuNzksMTAuMzhDMTYuMTQsOS43OCAxNS4zOSw5LjM1IDE0Ljc2LDguNzJDMTMuMyw3LjI2IDEzLDQuODUgMTMuOTEsM0MxMywzLjIzIDEyLjE2LDMuNzUgMTEuNDYsNC4zMkM4LjkyLDYuNCA3LjkyLDEwLjA3IDkuMTIsMTMuMjJDOS4xNiwxMy4zMiA5LjIsMTMuNDIgOS4yLDEzLjU1QzkuMiwxMy43NyA5LjA1LDEzLjk3IDguODUsMTQuMDVDOC42MywxNC4xNSA4LjM5LDE0LjA5IDguMjEsMTMuOTNDOC4xNSwxMy44OCA4LjExLDEzLjgzIDguMDYsMTMuNzZDNi45NiwxMi4zMyA2Ljc4LDEwLjI4IDcuNTMsOC42NEM1Ljg5LDEwIDUsMTIuMyA1LjE0LDE0LjQ3QzUuMTgsMTQuOTcgNS4yNCwxNS40NyA1LjQxLDE1Ljk3QzUuNTUsMTYuNTcgNS44MSwxNy4xNyA2LjEzLDE3LjdDNy4xNywxOS40MyA5LDIwLjY3IDEwLjk3LDIwLjkyQzEzLjA3LDIxLjE5IDE1LjMyLDIwLjggMTYuOTMsMTkuMzJDMTguNzMsMTcuNjYgMTkuMzgsMTUgMTguNDMsMTIuNzJMMTguMywxMi40NkMxOC4xLDEyIDE3LjgzLDExLjU5IDE3LjUsMTEuMjFMMTcuNTUsMTEuMk0xNC40NSwxNy41QzE0LjE3LDE3Ljc0IDEzLjcyLDE4IDEzLjM3LDE4LjFDMTIuMjcsMTguNSAxMS4xNywxNy45NCAxMC41LDE3LjI4QzExLjY5LDE3IDEyLjM5LDE2LjEyIDEyLjU5LDE1LjIzQzEyLjc2LDE0LjQzIDEyLjQ1LDEzLjc3IDEyLjMyLDEzQzEyLjIsMTIuMjYgMTIuMjIsMTEuNjMgMTIuNSwxMC45NEMxMi42NywxMS4zMiAxMi44NywxMS43IDEzLjEsMTJDMTMuODYsMTMgMTUuMDUsMTMuNDQgMTUuMywxNC44QzE1LjM0LDE0Ljk0IDE1LjM2LDE1LjA4IDE1LjM2LDE1LjIzQzE1LjM5LDE2LjA1IDE1LjA0LDE2Ljk1IDE0LjQ0LDE3LjVIMTQuNDVaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTcuNTUsMTEuMkMxNy4zMiwxMC45IDE3LjA1LDEwLjY0IDE2Ljc5LDEwLjM4QzE2LjE0LDkuNzggMTUuMzksOS4zNSAxNC43Niw4LjcyQzEzLjMsNy4yNiAxMyw0Ljg1IDEzLjkxLDNDMTMsMy4yMyAxMi4xNiwzLjc1IDExLjQ2LDQuMzJDOC45Miw2LjQgNy45MiwxMC4wNyA5LjEyLDEzLjIyQzkuMTYsMTMuMzIgOS4yLDEzLjQyIDkuMiwxMy41NUM5LjIsMTMuNzcgOS4wNSwxMy45NyA4Ljg1LDE0LjA1QzguNjMsMTQuMTUgOC4zOSwxNC4wOSA4LjIxLDEzLjkzQzguMTUsMTMuODggOC4xMSwxMy44MyA4LjA2LDEzLjc2QzYuOTYsMTIuMzMgNi43OCwxMC4yOCA3LjUzLDguNjRDNS44OSwxMCA1LDEyLjMgNS4xNCwxNC40N0M1LjE4LDE0Ljk3IDUuMjQsMTUuNDcgNS40MSwxNS45N0M1LjU1LDE2LjU3IDUuODEsMTcuMTcgNi4xMywxNy43QzcuMTcsMTkuNDMgOSwyMC42NyAxMC45NywyMC45MkMxMy4wNywyMS4xOSAxNS4zMiwyMC44IDE2LjkzLDE5LjMyQzE4LjczLDE3LjY2IDE5LjM4LDE1IDE4LjQzLDEyLjcyTDE4LjMsMTIuNDZDMTguMSwxMiAxNy44MywxMS41OSAxNy41LDExLjIxTDE3LjU1LDExLjJNMTQuNDUsMTcuNUMxNC4xNywxNy43NCAxMy43MiwxOCAxMy4zNywxOC4xQzEyLjI3LDE4LjUgMTEuMTcsMTcuOTQgMTAuNSwxNy4yOEMxMS42OSwxNyAxMi4zOSwxNi4xMiAxMi41OSwxNS4yM0MxMi43NiwxNC40MyAxMi40NSwxMy43NyAxMi4zMiwxM0MxMi4yLDEyLjI2IDEyLjIyLDExLjYzIDEyLjUsMTAuOTRDMTIuNjcsMTEuMzIgMTIuODcsMTEuNyAxMy4xLDEyQzEzLjg2LDEzIDE1LjA1LDEzLjQ0IDE1LjMsMTQuOEMxNS4zNCwxNC45NCAxNS4zNiwxNS4wOCAxNS4zNiwxNS4yM0MxNS4zOSwxNi4wNSAxNS4wNCwxNi45NSAxNC40NCwxNy41SDE0LjQ1WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kb25lLCAubWQtdHlwZXNldCBkZXRhaWxzLmRvbmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNoZWNrLCAubWQtdHlwZXNldCBkZXRhaWxzLmNoZWNrLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdWNjZXNzLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1Y2Nlc3Mge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYzg1Mztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZG9uZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2sgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2sgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1Y2Nlc3MgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjAwLCA4MywgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kb25lID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNoZWNrID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2sgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VjY2VzcyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1Y2Nlc3MgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGM4NTM7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTExLDE2LjVMMTgsOS41TDE2LjU5LDguMDlMMTEsMTMuNjdMNy45MSwxMC41OUw2LjUsMTJMMTEsMTYuNVpcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSwxNi41TDE4LDkuNUwxNi41OSw4LjA5TDExLDEzLjY3TDcuOTEsMTAuNTlMNi41LDEyTDExLDE2LjVaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYXEsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVlc3Rpb24sIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24ge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzY0ZGQxNztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYXEgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMjIxLCAyMywgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oZWxwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1ZXN0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRkZDE3O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNS4wNywxMS4yNUwxNC4xNywxMi4xN0MxMy40NSwxMi44OSAxMywxMy41IDEzLDE1SDExVjE0LjVDMTEsMTMuMzkgMTEuNDUsMTIuMzkgMTIuMTcsMTEuNjdMMTMuNDEsMTAuNDFDMTMuNzgsMTAuMDUgMTQsOS41NSAxNCw5QzE0LDcuODkgMTMuMSw3IDEyLDdBMiwyIDAgMCwwIDEwLDlIOEE0LDQgMCAwLDEgMTIsNUE0LDQgMCAwLDEgMTYsOUMxNiw5Ljg4IDE1LjY0LDEwLjY3IDE1LjA3LDExLjI1TTEzLDE5SDExVjE3SDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyWlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE1LjA3LDExLjI1TDE0LjE3LDEyLjE3QzEzLjQ1LDEyLjg5IDEzLDEzLjUgMTMsMTVIMTFWMTQuNUMxMSwxMy4zOSAxMS40NSwxMi4zOSAxMi4xNywxMS42N0wxMy40MSwxMC40MUMxMy43OCwxMC4wNSAxNCw5LjU1IDE0LDlDMTQsNy44OSAxMy4xLDcgMTIsN0EyLDIgMCAwLDAgMTAsOUg4QTQsNCAwIDAsMSAxMiw1QTQsNCAwIDAsMSAxNiw5QzE2LDkuODggMTUuNjQsMTAuNjcgMTUuMDcsMTEuMjVNMTMsMTlIMTFWMTdIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNhdXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZywgLm1kLXR5cGVzZXQgZGV0YWlscy53YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjkxMDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuYXR0ZW50aW9uID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jYXV0aW9uID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLndhcm5pbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMud2FybmluZyA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxNDUsIDAsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2F1dGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLndhcm5pbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjkxMDA7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEzLDE0SDExVjEwSDEzTTEzLDE4SDExVjE2SDEzTTEsMjFIMjNMMTIsMkwxLDIxWlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEzLDE0SDExVjEwSDEzTTEzLDE4SDExVjE2SDEzTTEsMjFIMjNMMTIsMkwxLDIxWlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjUyNTI7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDgyLCA4MiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5taXNzaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWx1cmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMiwyQzE3LjUzLDIgMjIsNi40NyAyMiwxMkMyMiwxNy41MyAxNy41MywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNTMgMiwxMkMyLDYuNDcgNi40NywyIDEyLDJNMTUuNTksN0wxMiwxMC41OUw4LjQxLDdMNyw4LjQxTDEwLjU5LDEyTDcsMTUuNTlMOC40MSwxN0wxMiwxMy40MUwxNS41OSwxN0wxNywxNS41OUwxMy40MSwxMkwxNyw4LjQxTDE1LjU5LDdaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkMxNy41MywyIDIyLDYuNDcgMjIsMTJDMjIsMTcuNTMgMTcuNTMsMjIgMTIsMjJDNi40NywyMiAyLDE3LjUzIDIsMTJDMiw2LjQ3IDYuNDcsMiAxMiwyTTE1LjU5LDdMMTIsMTAuNTlMOC40MSw3TDcsOC40MUwxMC41OSwxMkw3LDE1LjU5TDguNDEsMTdMMTIsMTMuNDFMMTUuNTksMTdMMTcsMTUuNTlMMTMuNDEsMTJMMTcsOC40MUwxNS41OSw3WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5lcnJvciwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZGFuZ2VyLCAubWQtdHlwZXNldCBkZXRhaWxzLmRhbmdlciB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmYxNzQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRhbmdlciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjMsIDY4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjE3NDQ7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTExLjUsMjBMMTYuMzYsMTAuMjdIMTNWNEw4LDEzLjczSDExLjVWMjBNMTIsMkMxNC43NSwyIDE3LjEsMyAxOS4wNSw0Ljk1QzIxLDYuOSAyMiw5LjI1IDIyLDEyQzIyLDE0Ljc1IDIxLDE3LjEgMTkuMDUsMTkuMDVDMTcuMSwyMSAxNC43NSwyMiAxMiwyMkM5LjI1LDIyIDYuOSwyMSA0Ljk1LDE5LjA1QzMsMTcuMSAyLDE0Ljc1IDIsMTJDMiw5LjI1IDMsNi45IDQuOTUsNC45NUM2LjksMyA5LjI1LDIgMTIsMlpcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMS41LDIwTDE2LjM2LDEwLjI3SDEzVjRMOCwxMy43M0gxMS41VjIwTTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZywgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2Y1MDA1Nztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NSwgMCwgODcsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTc7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE0LDEySDEwVjEwSDE0TTE0LDE2SDEwVjE0SDE0TTIwLDhIMTcuMTlDMTYuNzQsNy4yMiAxNi4xMiw2LjU1IDE1LjM3LDYuMDRMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDQsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2LjA0QzcuODgsNi41NSA3LjI2LDcuMjIgNi44MSw4SDRWMTBINi4wOUM2LjA0LDEwLjMzIDYsMTAuNjYgNiwxMVYxMkg0VjE0SDZWMTVDNiwxNS4zNCA2LjA0LDE1LjY3IDYuMDksMTZINFYxOEg2LjgxQzcuODUsMTkuNzkgOS43OCwyMSAxMiwyMUMxNC4yMiwyMSAxNi4xNSwxOS43OSAxNy4xOSwxOEgyMFYxNkgxNy45MUMxNy45NiwxNS42NyAxOCwxNS4zNCAxOCwxNVYxNEgyMFYxMkgxOFYxMUMxOCwxMC42NiAxNy45NiwxMC4zMyAxNy45MSwxMEgyMFY4WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE0LDEySDEwVjEwSDE0TTE0LDE2SDEwVjE0SDE0TTIwLDhIMTcuMTlDMTYuNzQsNy4yMiAxNi4xMiw2LjU1IDE1LjM3LDYuMDRMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDQsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2LjA0QzcuODgsNi41NSA3LjI2LDcuMjIgNi44MSw4SDRWMTBINi4wOUM2LjA0LDEwLjMzIDYsMTAuNjYgNiwxMVYxMkg0VjE0SDZWMTVDNiwxNS4zNCA2LjA0LDE1LjY3IDYuMDksMTZINFYxOEg2LjgxQzcuODUsMTkuNzkgOS43OCwyMSAxMiwyMUMxNC4yMiwyMSAxNi4xNSwxOS43OSAxNy4xOSwxOEgyMFYxNkgxNy45MUMxNy45NiwxNS42NyAxOCwxNS4zNCAxOCwxNVYxNEgyMFYxMkgxOFYxMUMxOCwxMC42NiAxNy45NiwxMC4zMyAxNy45MSwxMEgyMFY4WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5leGFtcGxlLCAubWQtdHlwZXNldCBkZXRhaWxzLmV4YW1wbGUge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzY1MWZmZjtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmV4YW1wbGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAxLCAzMSwgMjU1LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXhhbXBsZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmV4YW1wbGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NTFmZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcsMTNWMTFIMjFWMTNIN003LDE5VjE3SDIxVjE5SDdNNyw3VjVIMjFWN0g3TTMsOFY1SDJWNEg0VjhIM00yLDE3VjE2SDVWMjBIMlYxOUg0VjE4LjVIM1YxNy41SDRWMTdIMk00LjI1LDEwQTAuNzUsMC43NSAwIDAsMSA1LDEwLjc1QzUsMTAuOTUgNC45MiwxMS4xNCA0Ljc5LDExLjI3TDMuMTIsMTNINVYxNEgyVjEzLjA4TDQsMTFIMlYxMEg0LjI1WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcsMTNWMTFIMjFWMTNIN003LDE5VjE3SDIxVjE5SDdNNyw3VjVIMjFWN0g3TTMsOFY1SDJWNEg0VjhIM00yLDE3VjE2SDVWMjBIMlYxOUg0VjE4LjVIM1YxNy41SDRWMTdIMk00LjI1LDEwQTAuNzUsMC43NSAwIDAsMSA1LDEwLjc1QzUsMTAuOTUgNC45MiwxMS4xNCA0Ljc5LDExLjI3TDMuMTIsMTNINVYxNEgyVjEzLjA4TDQsMTFIMlYxMEg0LjI1WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5ZTllOWU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2l0ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVvdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdW90ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTQsMTdIMTdMMTksMTNWN0gxM1YxM0gxNk02LDE3SDlMMTEsMTNWN0g1VjEzSDhMNiwxN1pcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNCwxN0gxN0wxOSwxM1Y3SDEzVjEzSDE2TTYsMTdIOUwxMSwxM1Y3SDVWMTNIOEw2LDE3WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZSwgLm1kLXR5cGVzZXQgc3VtbWFyeSB7XG4gIG1hcmdpbjogMCAtMC42cmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtIDAuNHJlbSAycmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxMzgsIDI1NSwgMC4xKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZSwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBwYWRkaW5nOiAwLjRyZW0gMnJlbSAwLjRyZW0gMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGU6bGFzdC1jaGlsZCwgLm1kLXR5cGVzZXQgc3VtbWFyeTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOjpiZWZvcmUsIC5tZC10eXBlc2V0IHN1bW1hcnk6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0xLjRyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NDhhZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTIwLjcxLDcuMDRDMjEuMSw2LjY1IDIxLjEsNiAyMC43MSw1LjYzTDE4LjM3LDMuMjlDMTgsMi45IDE3LjM1LDIuOSAxNi45NiwzLjI5TDE1LjEyLDUuMTJMMTguODcsOC44N00zLDE3LjI1VjIxSDYuNzVMMTcuODEsOS45M0wxNC4wNiw2LjE4TDMsMTcuMjVaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMjAuNzEsNy4wNEMyMS4xLDYuNjUgMjEuMSw2IDIwLjcxLDUuNjNMMTguMzcsMy4yOUMxOCwyLjkgMTcuMzUsMi45IDE2Ljk2LDMuMjlMMTUuMTIsNS4xMkwxOC44Nyw4Ljg3TTMsMTcuMjVWMjFINi43NUwxNy44MSw5LjkzTDE0LjA2LDYuMThMMywxNy4yNVpcXFwiIC8+PC9zdmc+XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOjpiZWZvcmUsIFtkaXI9cnRsXSAubWQtdHlwZXNldCBzdW1tYXJ5OjpiZWZvcmUge1xuICBtYXJnaW4tcmlnaHQ6IC0xLjRyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuXG4uY29kZWhpbGl0ZSAubywgLmhpZ2hsaWdodCAubyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLm93LCAuaGlnaGxpZ2h0IC5vdyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLmdlLCAuaGlnaGxpZ2h0IC5nZSB7XG4gIGNvbG9yOiAjMDAwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdyLCAuaGlnaGxpZ2h0IC5nciB7XG4gIGNvbG9yOiAjQUEwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdoLCAuaGlnaGxpZ2h0IC5naCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmdvLCAuaGlnaGxpZ2h0IC5nbyB7XG4gIGNvbG9yOiAjODg4ODg4O1xufVxuLmNvZGVoaWxpdGUgLmdwLCAuaGlnaGxpZ2h0IC5ncCB7XG4gIGNvbG9yOiAjNTU1NTU1O1xufVxuLmNvZGVoaWxpdGUgLmdzLCAuaGlnaGxpZ2h0IC5ncyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLmd1LCAuaGlnaGxpZ2h0IC5ndSB7XG4gIGNvbG9yOiAjQUFBQUFBO1xufVxuLmNvZGVoaWxpdGUgLmd0LCAuaGlnaGxpZ2h0IC5ndCB7XG4gIGNvbG9yOiAjQUEwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdkLCAuaGlnaGxpZ2h0IC5nZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRkREREQ7XG59XG4uY29kZWhpbGl0ZSAuZ2ksIC5oaWdobGlnaHQgLmdpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RERkZERDtcbn1cbi5jb2RlaGlsaXRlIC5rLCAuaGlnaGxpZ2h0IC5rIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua2MsIC5oaWdobGlnaHQgLmtjIHtcbiAgY29sb3I6ICNBNzFENUQ7XG59XG4uY29kZWhpbGl0ZSAua2QsIC5oaWdobGlnaHQgLmtkIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua24sIC5oaWdobGlnaHQgLmtuIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua3AsIC5oaWdobGlnaHQgLmtwIHtcbiAgY29sb3I6ICNBNzFENUQ7XG59XG4uY29kZWhpbGl0ZSAua3IsIC5oaWdobGlnaHQgLmtyIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAua3QsIC5oaWdobGlnaHQgLmt0IHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAuYywgLmhpZ2hsaWdodCAuYyB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNtLCAuaGlnaGxpZ2h0IC5jbSB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNwLCAuaGlnaGxpZ2h0IC5jcCB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLmMxLCAuaGlnaGxpZ2h0IC5jMSB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNoLCAuaGlnaGxpZ2h0IC5jaCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNzLCAuaGlnaGxpZ2h0IC5jcyB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLm5hLCAuaGlnaGxpZ2h0IC5uYSB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5iLCAuaGlnaGxpZ2h0IC5uYiB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLmJwLCAuaGlnaGxpZ2h0IC5icCB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm5jLCAuaGlnaGxpZ2h0IC5uYyB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5vLCAuaGlnaGxpZ2h0IC5ubyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm5kLCAuaGlnaGxpZ2h0IC5uZCB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLm5pLCAuaGlnaGxpZ2h0IC5uaSB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLm5lLCAuaGlnaGxpZ2h0IC5uZSB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5mLCAuaGlnaGxpZ2h0IC5uZiB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5sLCAuaGlnaGxpZ2h0IC5ubCB7XG4gIGNvbG9yOiAjM0I1MTc5O1xufVxuLmNvZGVoaWxpdGUgLm5uLCAuaGlnaGxpZ2h0IC5ubiB7XG4gIGNvbG9yOiAjRUM0MDdBO1xufVxuLmNvZGVoaWxpdGUgLm50LCAuaGlnaGxpZ2h0IC5udCB7XG4gIGNvbG9yOiAjM0I3OEU3O1xufVxuLmNvZGVoaWxpdGUgLm52LCAuaGlnaGxpZ2h0IC5udiB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZjLCAuaGlnaGxpZ2h0IC52YyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZnLCAuaGlnaGxpZ2h0IC52ZyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZpLCAuaGlnaGxpZ2h0IC52aSB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm54LCAuaGlnaGxpZ2h0IC5ueCB7XG4gIGNvbG9yOiAjRUM0MDdBO1xufVxuLmNvZGVoaWxpdGUgLm0sIC5oaWdobGlnaHQgLm0ge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5tZiwgLmhpZ2hsaWdodCAubWYge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5taCwgLmhpZ2hsaWdodCAubWgge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5taSwgLmhpZ2hsaWdodCAubWkge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5pbCwgLmhpZ2hsaWdodCAuaWwge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5tbywgLmhpZ2hsaWdodCAubW8ge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5zLCAuaGlnaGxpZ2h0IC5zIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2IsIC5oaWdobGlnaHQgLnNiIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2MsIC5oaWdobGlnaHQgLnNjIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2QsIC5oaWdobGlnaHQgLnNkIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuczIsIC5oaWdobGlnaHQgLnMyIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2UsIC5oaWdobGlnaHQgLnNlIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc2gsIC5oaWdobGlnaHQgLnNoIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc2ksIC5oaWdobGlnaHQgLnNpIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc3gsIC5oaWdobGlnaHQgLnN4IHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc3IsIC5oaWdobGlnaHQgLnNyIHtcbiAgY29sb3I6ICMwMDk5MjY7XG59XG4uY29kZWhpbGl0ZSAuczEsIC5oaWdobGlnaHQgLnMxIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc3MsIC5oaWdobGlnaHQgLnNzIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuZXJyLCAuaGlnaGxpZ2h0IC5lcnIge1xuICBjb2xvcjogI0E2MTcxNztcbn1cbi5jb2RlaGlsaXRlIC53LCAuaGlnaGxpZ2h0IC53IHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmNvZGVoaWxpdGUgLmhsbCwgLmhpZ2hsaWdodCAuaGxsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMCAtMC42cmVtO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIzNSwgNTksIDAuNSk7XG59XG5cbi5jb2RlaGlsaXRldGFibGUsIC5oaWdobGlnaHR0YWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0Ym9keSwgLmhpZ2hsaWdodHRhYmxlIHRib2R5LFxuLmNvZGVoaWxpdGV0YWJsZSB0ZCxcbi5oaWdobGlnaHR0YWJsZSB0ZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0ciwgLmhpZ2hsaWdodHRhYmxlIHRyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jb2RlaGlsaXRldGFibGUgcHJlLCAuaGlnaGxpZ2h0dGFibGUgcHJlLFxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vZGl2LFxuLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9kaXYge1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4uY29kZWhpbGl0ZXRhYmxlIC5saW5lbm9kaXYsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vZGl2IHtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcywgLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9zIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjA1cmVtIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcyBwcmUsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vcyBwcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLmNvZGVoaWxpdGV0YWJsZSAuY29kZSwgLmhpZ2hsaWdodHRhYmxlIC5jb2RlIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZXRhYmxlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHR0YWJsZSB7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMmVtO1xufVxuXG4ubWQtdHlwZXNldCBbaWRePVwiZm5yZWY6XCJdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm1kLXR5cGVzZXQgW2lkXj1cImZucmVmOlwiXTp0YXJnZXQge1xuICBtYXJnaW4tdG9wOiAtMy44cmVtO1xuICBwYWRkaW5nLXRvcDogMy44cmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06dGFyZ2V0OjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTMuNXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUgb2wge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOnRhcmdldCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSA6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICBvcGFjaXR5OiAxO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmOmhvdmVyLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUtcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1yZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luOiAwIDAuMmVtO1xuICBib3JkZXItbGVmdDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHZlcnRpY2FsLWFsaWduOiAtMC4yNXJlbTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXM7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAwO1xuICBvcGFjaXR5OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWYge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTAuMjVyZW0pO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDAuOHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTksN1YxMUg1LjgzTDkuNDEsNy40MUw4LDZMMiwxMkw4LDE4TDkuNDEsMTYuNThMNS44MywxM0gyMVY3SDE5WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE5LDdWMTFINS44M0w5LjQxLDcuNDFMOCw2TDIsMTJMOCwxOEw5LjQxLDE2LjU4TDUuODMsMTNIMjFWN0gxOVpcXFwiIC8+PC9zdmc+XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmOjpiZWZvcmUgc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuXG4ubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zIDUwMG1zO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5odG1sIGJvZHkgLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCA6aG92ZXIgLmhlYWRlcmxpbmssXG4ubWQtdHlwZXNldCA6dGFyZ2V0IC5oZWFkZXJsaW5rLFxuLm1kLXR5cGVzZXQgLmhlYWRlcmxpbms6Zm9jdXMge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIDI1MG1zLCBjb2xvciAyNTBtcywgb3BhY2l0eSAxMjVtcyAyNTBtcywgdmlzaWJpbGl0eSAwbXM7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4ubWQtdHlwZXNldCAuaGVhZGVybGluazpmb2N1cyxcbi5tZC10eXBlc2V0IC5oZWFkZXJsaW5rOmhvdmVyLFxuLm1kLXR5cGVzZXQgOnRhcmdldCAuaGVhZGVybGluayB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgaDNbaWRdOjpiZWZvcmUsIC5tZC10eXBlc2V0IGgyW2lkXTo6YmVmb3JlLCAubWQtdHlwZXNldCBoMVtpZF06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMC40cmVtO1xuICBwYWRkaW5nLXRvcDogMC40cmVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuLm1kLXR5cGVzZXQgaDNbaWRdOnRhcmdldDo6YmVmb3JlLCAubWQtdHlwZXNldCBoMltpZF06dGFyZ2V0OjpiZWZvcmUsIC5tZC10eXBlc2V0IGgxW2lkXTp0YXJnZXQ6OmJlZm9yZSB7XG4gIG1hcmdpbi10b3A6IC0zLjRyZW07XG4gIHBhZGRpbmctdG9wOiAzLjRyZW07XG59XG4ubWQtdHlwZXNldCBoNFtpZF06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMC40NXJlbTtcbiAgcGFkZGluZy10b3A6IDAuNDVyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtdHlwZXNldCBoNFtpZF06dGFyZ2V0OjpiZWZvcmUge1xuICBtYXJnaW4tdG9wOiAtMy40NXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNDVyZW07XG59XG4ubWQtdHlwZXNldCBoNltpZF06OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDVbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNnJlbTtcbiAgcGFkZGluZy10b3A6IDAuNnJlbTtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IGg2W2lkXTp0YXJnZXQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDVbaWRdOnRhcmdldDo6YmVmb3JlIHtcbiAgbWFyZ2luLXRvcDogLTMuNnJlbTtcbiAgcGFkZGluZy10b3A6IDMuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC5NSlhjLWRpc3BsYXkge1xuICBtYXJnaW46IDAuNzVlbSAwO1xuICBwYWRkaW5nOiAwLjc1ZW0gMDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IC5NYXRoSmF4X0NIVE1MIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLm1kLXR5cGVzZXQgZGVsLmNyaXRpYyxcbi5tZC10eXBlc2V0IGlucy5jcml0aWMsXG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQge1xuICBtYXJnaW46IDAgMC4yNWVtO1xuICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGRlbC5jcml0aWMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZEREREO1xuICBib3gtc2hhZG93OiAwLjI1ZW0gMCAwICNGRkREREQsIC0wLjI1ZW0gMCAwICNGRkREREQ7XG59XG4ubWQtdHlwZXNldCBpbnMuY3JpdGljIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RERkZERDtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCAjRERGRkRELCAtMC4yNWVtIDAgMCAjRERGRkREO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50IHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiLyogXCI7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQ6OmFmdGVyIHtcbiAgY29udGVudDogXCIgKi9cIjtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAxZW0gMDtcbiAgcGFkZGluZy1yaWdodDogMC44cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuYmxvY2sgOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMC41ZW07XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG5cbi5tZC10eXBlc2V0IGRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy10b3A6IDA7XG59XG4ubWQtdHlwZXNldCBkZXRhaWxzW29wZW5dID4gc3VtbWFyeTo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsczpub3QoW29wZW5dKSB7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsczpub3QoW29wZW5dKSA+IHN1bW1hcnkge1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlscyBzdW1tYXJ5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRldGFpbHMgc3VtbWFyeSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbi5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm1kLXR5cGVzZXQgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBzdW1tYXJ5OjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDAuNnJlbTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcuNDEsOC41OEwxMiwxMy4xN0wxNi41OSw4LjU4TDE4LDEwTDEyLDE2TDYsMTBMNy40MSw4LjU4WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcuNDEsOC41OEwxMiwxMy4xN0wxNi41OSw4LjU4TDE4LDEwTDEyLDE2TDYsMTBMNy40MSw4LjU4WlxcXCIgLz48L3N2Zz5cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC42cmVtO1xufVxuXG4ubWQtdHlwZXNldCAuZW1vamlvbmUsXG4ubWQtdHlwZXNldCAudHdlbW9qaSxcbi5tZC10eXBlc2V0IC5nZW1vamkge1xuICB3aWR0aDogMXJlbTtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xufVxuXG4uaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbGVmdDogLTAuNnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMC42cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbiAgYm9yZGVyLXJpZ2h0OiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBjb250ZW50OiBhdHRyKGRhdGEtbGluZW5vcyk7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5tZC10eXBlc2V0IGNvZGUuY29kZWhpbGl0ZSwgLm1kLXR5cGVzZXQgY29kZS5oaWdobGlnaHQge1xuICBtYXJnaW46IDAgMC4yOTQxMTc2NDcxZW07XG4gIHBhZGRpbmc6IDAuMDczNTI5NDExOGVtIDA7XG59XG5cbi5tZC10eXBlc2V0IC50YWJiZWQtY29udGVudCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9yZGVyOiA5OTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1jb250ZW50IHByZSB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlcjogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwge1xuICBib3JkZXItY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiBwcmU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodDpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0dGFibGU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGV0YWJsZTpvbmx5LWNoaWxkIHtcbiAgbWFyZ2luOiAwIC0wLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IHByZTpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodDpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodHRhYmxlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZTpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGV0YWJsZTpvbmx5LWNoaWxkIHByZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBsYWJlbCB7XG4gIHdpZHRoOiBhdXRvO1xuICBwYWRkaW5nOiAwLjZyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zLCBib3JkZXIgMjUwbXM7XG4gIGJvcmRlci1ib3R0b206IDAuMXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5odG1sIC5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gbGFiZWw6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cblxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWl0ZW0gW3R5cGU9Y2hlY2tib3hdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuNDVlbTtcbiAgbGVmdDogLTJlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWl0ZW0gW3R5cGU9Y2hlY2tib3hdIHtcbiAgcmlnaHQ6IC0yZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjE1ZW07XG4gIGxlZnQ6IC0xLjVlbTtcbiAgd2lkdGg6IDEuMjVlbTtcbiAgaGVpZ2h0OiAxLjI1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgY29udGVudDogXCJcIjtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHJpZ2h0OiAtMS41ZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsMTYuNUwxOCw5LjVMMTYuNTksOC4wOUwxMSwxMy42N0w3LjkxLDEwLjU5TDYuNSwxMkwxMSwxNi41WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTExLDE2LjVMMTgsOS41TDE2LjU5LDguMDlMMTEsMTMuNjdMNy45MSwxMC41OUw2LjUsMTJMMTEsMTYuNVpcXFwiIC8+PC9zdmc+XCIpO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIFt0eXBlPWNoZWNrYm94XSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLXR5cGVzZXQgYTo6YWZ0ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgY29udGVudDogXCIgW1wiIGF0dHIoaHJlZikgXCJdXCI7XG4gIH1cbiAgLm1kLXR5cGVzZXQgY29kZSxcbi5tZC10eXBlc2V0IHByZSxcbi5tZC10eXBlc2V0IGtiZCB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB9XG4gIC5tZC1jbGlwYm9hcmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtZGlhbG9nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQuOTM3NWVtKSB7XG4gIC5tZC10eXBlc2V0ID4gcHJlIHtcbiAgICBtYXJnaW46IDFlbSAtMC44cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiBwcmUgPiBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYgLm1kLWZvb3Rlci1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICAgIG1heC1oZWlnaHQ6IDIuNXJlbTtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gIH1cbiAgLmNvZGVoaWxpdGUgLmhsbCwgLmhpZ2hsaWdodCAuaGxsIHtcbiAgICBtYXJnaW46IDAgLTAuOHJlbTtcbiAgICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZSBjb2RlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQgY29kZSB7XG4gICAgcGFkZGluZzogMC41MjVyZW0gMC44cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRldGFibGUgLmxpbmVub2RpdiwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogMC41cmVtIDAuOHJlbTtcbiAgfVxuICAubWQtdHlwZXNldCA+IHAgPiAuTUpYYy1kaXNwbGF5IHtcbiAgICBtYXJnaW46IDAuNzVlbSAtMC44cmVtO1xuICAgIHBhZGRpbmc6IDAuMjVlbSAwLjhyZW07XG4gIH1cbiAgLmhpZ2hsaWdodCBbZGF0YS1saW5lbm9zXTo6YmVmb3JlIHtcbiAgICBsZWZ0OiAtMS42cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS42cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS42cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLnRhYmJlZC1zZXQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDBlbSkge1xuICBodG1sIHtcbiAgICBmb250LXNpemU6IDEzNy41JTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI1ZW0pIHtcbiAgaHRtbCB7XG4gICAgZm9udC1zaXplOiAxNTAlO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgYm9keVtkYXRhLW1kLXN0YXRlPWxvY2tdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcbiAgfVxuICBodG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSArIC5tZC1uYXZfX2xpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10gfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDAgMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwLjJyZW07XG4gICAgbGVmdDogLTIuMnJlbTtcbiAgICB3aWR0aDogMnJlbTtcbiAgICBoZWlnaHQ6IDJyZW07XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyAxMDBtcywgb3BhY2l0eSAyMDBtcyAyMDBtcztcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX292ZXJsYXkge1xuICAgIHJpZ2h0OiAtMi4ycmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zLCBvcGFjaXR5IDEwMG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUlKTtcbiAgICB0cmFuc2l0aW9uOiByaWdodCAwbXMgMzAwbXMsIGxlZnQgMG1zIDMwMG1zLCB0cmFuc2Zvcm0gMTUwbXMgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgb3BhY2l0eSAxNTBtcyAxNTBtcztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDI7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIGxlZnQ6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zaXRpb246IHJpZ2h0IDBtcyAwbXMsIGxlZnQgMG1zIDBtcywgdHJhbnNmb3JtIDE1MG1zIDE1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgb3BhY2l0eSAxNTBtcyAxNTBtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFtkaXI9cnRsXSBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBodG1sIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUlKTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyLjRyZW07XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgICB0b3A6IDAuNnJlbTtcbiAgICBsZWZ0OiAwLjhyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gICAgcmlnaHQ6IDAuOHJlbTtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6Zmlyc3QtY2hpbGQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gICAgdG9wOiAwLjZyZW07XG4gICAgcmlnaHQ6IDAuOHJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gICAgcmlnaHQ6IGluaXRpYWw7XG4gICAgbGVmdDogMC44cmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX291dHB1dCB7XG4gICAgdG9wOiAyLjRyZW07XG4gICAgYm90dG9tOiAwO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZXJvX19pbm5lciB7XG4gICAgbWFyZ2luLXRvcDogMi40cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMnJlbTtcbiAgfVxuICAubWQtbmF2IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5LCAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSxcbi5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbSB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiA1LjZyZW07XG4gICAgcGFkZGluZzogM3JlbSAwLjhyZW0gMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAuNHJlbTtcbiAgICBsZWZ0OiAwLjRyZW07XG4gICAgd2lkdGg6IDEuMnJlbTtcbiAgICBoZWlnaHQ6IDEuMnJlbTtcbiAgICBtYXJnaW46IDAuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSAubWQtbmF2X19pY29uIHtcbiAgICByaWdodDogMC40cmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSB+IC5tZC1uYXZfX2xpc3Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gICAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgfiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC4ycmVtO1xuICAgIGxlZnQ6IDAuMnJlbTtcbiAgICB3aWR0aDogMy4ycmVtO1xuICAgIGhlaWdodDogMy4ycmVtO1xuICAgIG1hcmdpbjogMC4ycmVtO1xuICAgIHBhZGRpbmc6IDAuNHJlbTtcbiAgICBmb250LXNpemU6IDIuNHJlbTtcbiAgfVxuICBodG1sIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0gLm1kLW5hdl9fYnV0dG9uIHtcbiAgICByaWdodDogMC4ycmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saXN0IHtcbiAgICBmbGV4OiAxO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMi40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCA+IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0tLWFjdGl2ZSA+IC5tZC1uYXZfX2xpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIHBhZGRpbmc6IDAuNnJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saW5rIC5tZC1uYXZfX2ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMC42cmVtO1xuICAgIG1hcmdpbi10b3A6IC0wLjZyZW07XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fbGluayAubWQtbmF2X19pY29uIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiAwLjZyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoLTEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXZfX2xpbmsge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMS40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMi42cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAzLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMy4ycmVtO1xuICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuOCwgMCwgMC42LCAxKSwgb3BhY2l0eSAxMjVtcyA1MG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXZfX3RvZ2dsZSB+IC5tZC1uYXYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cbiAgLm1kLW5hdl9fdG9nZ2xlOmNoZWNrZWQgfiAubWQtbmF2IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTI1bXMgMTI1bXM7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTIuMXJlbTtcbiAgICB3aWR0aDogMTIuMXJlbTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCBib3gtc2hhZG93IDI1MG1zO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIHotaW5kZXg6IDM7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1wcmltYXJ5IHtcbiAgICByaWdodDogLTEyLjFyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9ZHJhd2VyXTpjaGVja2VkIH4gLm1kLWNvbnRhaW5lciAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMi4xcmVtKTtcbiAgfVxuICBbZGlyPXJ0bF0gW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1jb250YWluZXIgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTIuMXJlbSk7XG4gIH1cbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbm9uZTtcbiAgICAgICAgLW1zLXNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xuICB9XG4gIC5tZC10YWJzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEyLjFyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tcmlnaHQ6IGluaXRpYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDEyLjFyZW07XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19zZWFyY2hdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMS43cmVtO1xuICAgIG1heC13aWR0aDogMTEuN3JlbTtcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWhlYWRlci1uYXZfX3NvdXJjZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2X190aXRsZVtmb3I9X190b2NdIHtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLXNlYXJjaCB7XG4gICAgcGFkZGluZzogMC4ycmVtIDA7XG4gIH1cbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBwYWRkaW5nOiAwLjFyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbiAgLm1kLXNlYXJjaF9fZm9ybSB7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faW5wdXQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dCArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBib3JkZXItcmFkaXVzOiAwLjFyZW0gMC4xcmVtIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiwgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6bGFzdC1jaGlsZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtc2VhcmNoX19vdXRwdXQge1xuICAgIHRvcDogMS45cmVtO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdXRwdXQge1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCAxOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgbWF4LWhlaWdodDogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiA3NXZoO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMC4ycmVtO1xuICAgIGhlaWdodDogMC4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgfVxuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoLXJlc3VsdF9fbWV0YSB7XG4gICAgcGFkZGluZy1sZWZ0OiAyLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgfVxuICAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogY2FsYygxMDAlIC0gMTIuMXJlbSk7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkge1xuICAgIG1hcmdpbi1yaWdodDogY2FsYygxMDAlIC0gMTIuMXJlbSk7XG4gICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogMTIuMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWNvbnRlbnQge1xuICAgIG1hcmdpbi1yaWdodDogMTIuMXJlbTtcbiAgfVxuICAubWQtY29udGVudF9faW5uZXIge1xuICAgIG1hcmdpbi1yaWdodDogMS4ycmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19kcmF3ZXJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1yaWdodDogMS40cmVtO1xuICB9XG4gIC5tZC1uYXYge1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMjUwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdiA+IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX2ljb24ge1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXM7XG4gIH1cbiAgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMC45cmVtO1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xcmVtO1xuICB9XG4gIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQ4LjlyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkge1xuICAgIG1hcmdpbi1yaWdodDogNDguOXJlbTtcbiAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtdGFicyB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tbmVzdGVkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtLS1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSAubWQtbmF2IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NWVtKSB7XG4gIC5tZC1mb290ZXItbmF2X19saW5rIHtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5tZC1mb290ZXItY29weXJpZ2h0IHtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuICAubWQtZm9vdGVyLXNvY2lhbCB7XG4gICAgcGFkZGluZzogMC42cmVtIDA7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG4gIFtkaXI9cnRsXSAubWQtZm9vdGVyLXNvY2lhbCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDI5LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQ1KTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkgYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDYwKTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDVlbSkgYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDc1KTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkgYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gICAgbWF4LWhlaWdodDogMi41cmVtO1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgfVxufVxuQG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpLCAobWF4LXJlc29sdXRpb246IDFkcHB4KSB7XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXAge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgfVxufSIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbjpyb290IHtcblxuICAvLyBEZWZhdWx0IGNvbG9yIHNoYWRlc1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3I6ICAgICAgICAgICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuODcpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0OiAgICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuNTQpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXI6ICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuMjYpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0OiAgICAgaHNsYSgwLCAwJSwgMCUsIDAuMDcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3I6ICAgICAgICAgICAgICAgaHNsYSgwLCAwJSwgMTAwJSwgMSk7XG4gIC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQ6ICAgICAgICBoc2xhKDAsIDAlLCAxMDAlLCAwLjcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXI6ICAgICAgaHNsYSgwLCAwJSwgMTAwJSwgMC4zKTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdDogICAgIGhzbGEoMCwgMCUsIDEwMCUsIDAuMTIpO1xuXG4gIC8vIFByaW1hcnkgY29sb3Igc2hhZGVzXG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogICAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby01MDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6ICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby0zMDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby03MDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogICAgICAgICAgICAgICB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogICAgICAgIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcblxuICAvLyBBY2NlbnQgY29sb3Igc2hhZGVzXG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiAgICAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby1hMjAwKX0sIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6ICAgaHNsYSgje2hleDJoc2woJGNsci1pbmRpZ28tYTIwMCl9LCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogICAgICAgICB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodCk7XG5cbiAgLy8gQ29kZSBibG9jayBjb2xvciBzaGFkZXNcbiAgLS1tZC1jb2RlLWJnLWNvbG9yOiAgICAgICAgICAgICAgICAgIGhzbGEoMCwgMCUsIDkyLjUlLCAwLjUpO1xuICAtLW1kLWNvZGUtZmctY29sb3I6ICAgICAgICAgICAgICAgICAgaHNsYSgyMDAsIDE4JSwgMjYlLCAxKTtcbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBJY29uXG4ubWQtaWNvbiB7XG5cbiAgLy8gU1ZHIGRlZmF1bHRzXG4gIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IHB4MnJlbSgyNHB4KTtcbiAgICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogZm9udCBkZWZpbml0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBFbmFibGUgZm9udC1zbW9vdGhpbmcgaW4gV2Via2l0IGFuZCBGRlxuYm9keSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4vLyBEZWZhdWx0IGZvbnRzXG5ib2R5LFxuaW5wdXQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIsIFwibGlnYVwiO1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4vLyBQcm9wb3J0aW9uYWxseSBzcGFjZWQgZm9udHNcbmNvZGUsXG5wcmUsXG5rYmQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCI7XG4gIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IHR5cGVzZXR0ZWQgY29udGVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb250ZW50IHRoYXQgaXMgdHlwZXNldCAtIGlmIHBvc3NpYmxlLCBhbGwgbWFyZ2lucywgcGFkZGluZ3MgYW5kIGZvbnQgc2l6ZXNcbi8vIHNob3VsZCBiZSBzZXQgaW4gZW1zLCBzbyBuZXN0ZWQgYmxvY2tzIChlLmcuIEFkbW9uaXRpb24pIHJlbmRlciBjb3JyZWN0bHksXG4vLyBleGNlcHQgaGVhZGxpbmVzIHRoYXQgc2hvdWxkIG9ubHkgYXBwZWFyIG9uIHRoZSB0b3AgbGV2ZWwgYW5kIG5lZWQgdG8gaGF2ZVxuLy8gY29uc2lzdGVudCBzcGFjaW5nIGR1ZSB0byBsYXlvdXQgY29uc3RyYWludHMuXG4ubWQtdHlwZXNldCB7XG4gIGZvbnQtc2l6ZTogbXMoMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG5cbiAgLy8gQ29sb3JzIHNob3VsZCBiZSBrZXB0IHdoZW4gcHJpbnRpbmdcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lXG5cbiAgLy8gRGVmYXVsdCBzcGFjaW5nXG4gIHAsXG4gIHVsLFxuICBvbCxcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIC8vIDFzdCBsZXZlbCBoZWFkbGluZVxuICBoMSB7XG4gICAgbWFyZ2luOiAwIDAgcHgycmVtKDQwcHgpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygzKTtcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIH1cblxuICAvLyAybmQgbGV2ZWwgaGVhZGxpbmVcbiAgaDIge1xuICAgIG1hcmdpbjogcHgycmVtKDQwcHgpIDAgcHgycmVtKDE2cHgpO1xuICAgIGZvbnQtc2l6ZTogbXMoMik7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICB9XG5cbiAgLy8gM3JkIGxldmVsIGhlYWRsaW5lXG4gIGgzIHtcbiAgICBtYXJnaW46IHB4MnJlbSgzMnB4KSAwIHB4MnJlbSgxNnB4KTtcbiAgICBmb250LXNpemU6IG1zKDEpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgfVxuXG4gIC8vIDNyZCBsZXZlbCBoZWFkbGluZSBmb2xsb3dpbmcgYW4gMm5kIGxldmVsIGhlYWRsaW5lXG4gIGgyICsgaDMge1xuICAgIG1hcmdpbi10b3A6IHB4MnJlbSgxNnB4KTtcbiAgfVxuXG4gIC8vIDR0aCBsZXZlbCBoZWFkbGluZVxuICBoNCB7XG4gICAgbWFyZ2luOiBweDJyZW0oMTZweCkgMDtcbiAgICBmb250LXNpemU6IG1zKDApO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIH1cblxuICAvLyA1dGggYW5kIDZ0aCBsZXZlbCBoZWFkbGluZVxuICBoNSxcbiAgaDYge1xuICAgIG1hcmdpbjogcHgycmVtKDE2cHgpIDA7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVzIGZvciA1dGggbGV2ZWwgaGVhZGxpbmVcbiAgaDUge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHNlcGFyYXRvcnNcbiAgaHIge1xuICAgIG1hcmdpbjogMS41ZW0gMDtcbiAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIH1cblxuICAvLyBMaW5rc1xuICBhIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAgIC8vIEFsc28gZW5hYmxlIGNvbG9yIHRyYW5zaXRpb24gb24gcHNldWRvIGVsZW1lbnRzXG4gICAgJixcbiAgICAmOjpiZWZvcmUge1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlciBsaW5rc1xuICAgICY6Zm9jdXMsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgVVJMcyBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuXG4gICAgICAvLyBTaG93IGxpbmsgVVJMXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFtcIiBhdHRyKGhyZWYpIFwiXVwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvZGUgYmxvY2tzXG4gIGNvZGUsXG4gIHByZSxcbiAga2JkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtY29kZS1mZy1jb2xvcik7XG4gICAgZm9udC1zaXplOiA4NSU7XG4gICAgZGlyZWN0aW9uOiBsdHI7XG5cbiAgICAvLyBXcmFwIHRleHQgYW5kIGhpZGUgc2NvbGxiYXJzXG4gICAgQG1lZGlhIHByaW50IHtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB9XG4gIH1cblxuICAvLyBJbmxpbmUgY29kZSBibG9ja3MsIGNvcnJlY3QgcmVsYXRpdmUgZW1zIGZvciBzbWFsbGVyIGZvbnQgc2l6ZVxuICBjb2RlIHtcbiAgICAkZjogMSAvIDAuODU7XG5cbiAgICBtYXJnaW46IDAgMC4yNWVtICogJGY7XG4gICAgcGFkZGluZzogMC4wNjI1ZW0gKiAkZiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICArMC4yNWVtICogJGYgMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpLFxuICAgICAgLTAuMjVlbSAqICRmIDAgMCB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbiAgfVxuXG4gIC8vIERpc2FibGUgY29udGFpbmluZyBibG9jayBpbnNpZGUgaGVhZGxpbmVzXG4gIGgxIGNvZGUsXG4gIGgyIGNvZGUsXG4gIGgzIGNvZGUsXG4gIGg0IGNvZGUsXG4gIGg1IGNvZGUsXG4gIGg2IGNvZGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLy8gUmVzZXQgY29kZSBpZiBpdCdzIGluc2lkZSBhIGxpbmtcbiAgYSA+IGNvZGUge1xuICAgIG1hcmdpbjogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiBpbmhlcml0O1xuICAgIGJvcmRlci1yYWRpdXM6IGluaXRpYWw7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLy8gVW5mb3JtYXR0ZWQgY29kZSBibG9ja3NcbiAgcHJlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLy8gQWN0dWFsIGNvbnRhaW5lciB3aXRoIGNvZGUsIG92ZXJmbG93aW5nXG4gICAgPiBjb2RlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogcHgycmVtKDEwLjVweCkgcHgycmVtKDEycHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG5cbiAgICAgIC8vIE92ZXJyaWRlIG5hdGl2ZSBzY3JvbGxiYXIgc3R5bGVzXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oNHB4KTtcbiAgICAgICAgaGVpZ2h0OiBweDJyZW0oNHB4KTtcbiAgICAgIH1cblxuICAgICAgLy8gU2Nyb2xsYmFyIHRodW1iXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuXG4gICAgICAgIC8vIEhvdmVyZWQgc2Nyb2xsYmFyIHRodW1iXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBbbW9iaWxlIC1dOiBTdHJldGNoIHRvIHdob2xlIHdpZHRoXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcblxuICAgIC8vIFN0cmV0Y2ggdG9wLWxldmVsIGNvbnRhaW5lcnNcbiAgICA+IHByZSB7XG4gICAgICBtYXJnaW46IDFlbSBweDJyZW0oLTE2cHgpO1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgLy8gQWN0dWFsIGNvbnRhaW5lciB3aXRoIGNvZGUsIG92ZXJmbG93aW5nXG4gICAgICA+IGNvZGUge1xuICAgICAgICBwYWRkaW5nOiBweDJyZW0oMTAuNXB4KSBweDJyZW0oMTZweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5c3Ryb2tlc1xuICBrYmQge1xuICAgICRmOiAxIC8gMC44NTtcblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNWVtICogJGY7XG4gICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCBweDJyZW0oMnB4KSAwIHB4MnJlbSgxcHgpIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLFxuICAgICAgMCBweDJyZW0oMnB4KSAwICAgICAgICAgICAgIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLFxuICAgICAgaW5zZXQgMCBweDJyZW0oLTJweCkgcHgycmVtKDRweCkgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cblxuICAvLyBUZXh0IGhpZ2hsaWdodGluZyBtYXJrZXJcbiAgbWFyayB7XG4gICAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRjbHIteWVsbG93LTUwMCwgMC41KTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgKzAuMjVlbSAwIDAgdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpLFxuICAgICAgLTAuMjVlbSAwIDAgdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICB9XG5cbiAgLy8gQWJicmV2aWF0aW9uc1xuICBhYmJyIHtcbiAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IGhlbHA7XG4gIH1cblxuICAvLyBTbWFsbCB0ZXh0XG4gIHNtYWxsIHtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICB9XG5cbiAgLy8gU3VwZXJzY3JpcHQgYW5kIHN1YnNjcmlwdFxuICBzdXAsXG4gIHN1YiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMDYyNWVtICogMSAvIDAuODtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjA2MjVlbSAqIDEgLyAwLjg7XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBCbG9ja3F1b3RlcywgcG9zc2libHkgbmVzdGVkXG4gIGJsb2NrcXVvdGUge1xuICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDEycHgpO1xuICAgIGJvcmRlci1sZWZ0OiBweDJyZW0oNHB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTJweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICBib3JkZXItcmlnaHQ6IHB4MnJlbSg0cHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgYm9yZGVyLWxlZnQ6IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gIH1cblxuICAvLyBVbm9yZGVyZWQgYW5kIG9yZGVyZWQgbGlzdHNcbiAgdWwsXG4gIG9sIHtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVlbTtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAvLyBOZXN0ZWQgb3JkZXJlZCBsaXN0c1xuICAgIG9sIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItYWxwaGE7XG5cbiAgICAgIC8vIFRyaXBseSBuZXN0ZWQgb3JkZXJlZCBsaXN0XG4gICAgICBvbCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItcm9tYW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGlzdCBlbGVtZW50c1xuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDEuMjVlbTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjI1ZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWNyZWFzZSB2ZXJ0aWNhbCBzcGFjaW5nXG4gICAgICBwLFxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIG1hcmdpbiBvbiBsYXN0IGVsZW1lbnRcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG5cbiAgICAgIC8vIE5lc3RlZCBsaXN0c1xuICAgICAgdWwsXG4gICAgICBvbCB7XG4gICAgICAgIG1hcmdpbjogMC41ZW0gMCAwLjVlbSAwLjYyNWVtO1xuXG4gICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbml0aW9uIGxpc3RzXG4gIGRkIHtcbiAgICBtYXJnaW46IDFlbSAwIDFlbSAxLjg3NWVtO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuODc1ZW07XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBMaW1pdCB3aWR0aCB0byBjb250YWluZXJcbiAgaWZyYW1lLFxuICBpbWcsXG4gIHN2ZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gRGF0YSB0YWJsZXNcbiAgdGFibGU6bm90KFtjbGFzc10pIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAwIHB4MnJlbSg0cHgpIHB4MnJlbSgxMHB4KSBoc2xhKDAsIDAlLCAwJSwgMC4wNSksXG4gICAgICAwIDAgICAgICAgICAgIHB4MnJlbSgxcHgpICBoc2xhKDAsIDAlLCAwJSwgMC4xKTtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgICAvLyBEdWUgdG8gbWFyZ2luIGNvbGxhcHNlIGJlY2F1c2Ugb2YgdGhlIG5lY2Vzc2FyeSBpbmxpbmUtYmxvY2sgaGFjaywgd2VcbiAgICAvLyBjYW5ub3QgaW5jcmVhc2UgdGhlIGJvdHRvbSBtYXJnaW4gb24gdGhlIHRhYmxlLCBzbyB3ZSBqdXN0IGluY3JlYXNlIHRoZVxuICAgIC8vIHRvcCBtYXJnaW4gb24gdGhlIGZvbGxvd2luZyBlbGVtZW50XG4gICAgJiArICoge1xuICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgfVxuXG4gICAgLy8gVGFibGUgaGVhZGluZ3MgYW5kIGNlbGxzXG4gICAgdGg6bm90KFthbGlnbl0pLFxuICAgIHRkOm5vdChbYWxpZ25dKSB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSBoZWFkaW5nc1xuICAgIHRoIHtcbiAgICAgIG1pbi13aWR0aDogcHgycmVtKDEwMHB4KTtcbiAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMnB4KSBweDJyZW0oMTZweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cblxuICAgIC8vIFRhYmxlIGNlbGxzXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuXG4gICAgLy8gVGFibGUgcm93c1xuICAgIHRyIHtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTI1bXM7XG5cbiAgICAgIC8vIEFkZCBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzNSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgcHgycmVtKDFweCkgIDAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcikgaW5zZXQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB0b3AgYm9yZGVyIG9uIGZpcnN0IHJvd1xuICAgICAgJjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBEbyBub3Qgd3JhcCBsaW5rcyBpbiB0YWJsZXNcbiAgICBhIHtcbiAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwcGVyIGZvciBzY3JvbGxpbmcgb24gb3ZlcmZsb3dcbiAgJl9fc2Nyb2xsd3JhcCB7XG4gICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuXG4gIC8vIERhdGEgdGFibGUgd3JhcHBlciwgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAubWQtdHlwZXNldF9fdGFibGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxNnB4KTtcblxuICAgIC8vIERhdGEgdGFibGVzXG4gICAgdGFibGUge1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFjdGl2ZSAodG9nZ2xlZCkgZHJhd2VyXG4kbWQtdG9nZ2xlX19kcmF3ZXItLWNoZWNrZWQ6XG4gIFwiW2RhdGEtbWQtdG9nZ2xlPVxcXCJkcmF3ZXJcXFwiXTpjaGVja2VkIH5cIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IGJhc2UgZ3JpZCBhbmQgY29udGFpbmVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTdHJldGNoIGNvbnRhaW5lciB0byB2aWV3cG9ydCBhbmQgc2V0IGJhc2UgZm9udC1zaXplZm9yIHNpbXBsZSBjYWxjdWxhdGlvbnNcbi8vIGJhc2VkIG9uIHJlbGF0aXZlIGVtcyAocmVtcylcbmh0bWwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAvLyBIYWNrOiBub3JtYWxseSwgd2Ugd291bGQgc2V0IHRoZSBiYXNlIGZvbnQtc2l6ZSB0byA2Mi41JSwgc28gd2UgY2FuIGJhc2VcbiAgLy8gYWxsIGNhbGN1bGF0aW9ucyBvbiAxMHB4LCBidXQgQ2hyb21pdW0gYW5kIENocm9tZSBkZWZpbmUgYSBtaW5pbWFsIGZvbnRcbiAgLy8gc2l6ZSBvZiAxMiBpZiB0aGUgc3lzdGVtIGxhbmd1YWdlIGlzIHNldCB0byBDaGluZXNlLiBGb3IgdGhpcyByZWFzb24gd2VcbiAgLy8ganVzdCBkb3VibGUgdGhlIGZvbnQtc2l6ZSwgc2V0IGl0IHRvIDIwcHggd2hpY2ggc2VlbXMgdG8gZG8gdGhlIHRyaWNrLlxuICAvL1xuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NxdWlkZnVuay9ta2RvY3MtbWF0ZXJpYWwvaXNzdWVzLzkxMVxuICBmb250LXNpemU6IDEyNSU7XG4gIC8vIEhhY2s6IHNvbWUgYnJvd3NlcnMgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBkb24ndCBhY2NvdW50IGZvciBzY3JvbGxcbiAgLy8gYmFycyB3aGVuIGZpcmluZyBtZWRpYSBxdWVyaWVzLCBzbyB3ZSBuZWVkIHRvIGRvIHRoaXMgZm9yIHNhZmV0eS4gVGhpc1xuICAvLyBjdXJyZW50bHkgaW1wYWN0cyB0aGUgdGFibGUgb2YgY29udGVudHMgY29tcG9uZW50IGJldHdlZW4gMTIyMCBhbmQgMTIzNHB4XG4gIC8vIGFuZCBpcyB0byBjdXJyZW50IGtub3dsZWRnZSBub3QgZml4YWJsZS5cbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gIC8vIFtzY3JlZW4gbWVkaXVtICtdOiBTZXQgYmFzZSBmb250LXNpemUgdG8gMTFweFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4gbWVkaXVtKSB7XG4gICAgZm9udC1zaXplOiAxMzcuNTAlO1xuICB9XG5cbiAgLy8gW3NjcmVlbiBsYXJnZSArXTogU2V0IGJhc2UgZm9udC1zaXplIHRvIDEycHhcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuIGxhcmdlKSB7XG4gICAgZm9udC1zaXplOiAxNTAlO1xuICB9XG59XG5cbi8vIFN0cmV0Y2ggYm9keSB0byBjb250YWluZXIgYW5kIGxlYXZlIHJvb20gZm9yIGZvb3RlclxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIC8vIEhhY2s6IHJlc2V0IGZvbnQtc2l6ZSB0byAxMHB4LCBzbyB0aGUgc3BhY2luZyBmb3IgYWxsIGlubGluZSBlbGVtZW50cyBpc1xuICAvLyBjb3JyZWN0IGFnYWluLiBPdGhlcndpc2UgdGhlIHNwYWNpbmcgd291bGQgYmUgYmFzZWQgb24gMjBweC5cbiAgZm9udC1zaXplOiAwLjVyZW07IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgdW5pdC13aGl0ZWxpc3RcblxuICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBMb2NrIGJvZHkgdG8gZGlzYWJsZSBzY3JvbGwgYnViYmxpbmdcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuXG4gICAgLy8gTG9jayBib2R5IHRvIHZpZXdwb3J0IGhlaWdodCAoZS5nLiBpbiBzZWFyY2ggbW9kZSlcbiAgICAmW2RhdGEtbWQtc3RhdGU9XCJsb2NrXCJdIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSG9yaXpvbnRhbCBzZXBhcmF0b3JzXG5ociB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IHB4MnJlbSgxcHgpO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi8vIFRlbXBsYXRlLXdpZGUgZ3JpZFxuLm1kLWdyaWQge1xuICBtYXgtd2lkdGg6IHB4MnJlbSgxMjIwcHgpO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4vLyBDb250ZW50IHdyYXBwZXJcbi5tZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi8vIFRoZSBtYWluIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gbWF4aW11bSBoZWlnaHQgaW4gdGhlIHRhYmxlXG4ubWQtbWFpbiB7XG4gIGZsZXgtZ3JvdzogMTtcblxuICAvLyBJbmNyZWFzZSB0b3Agc3BhY2luZyBvZiBjb250ZW50IGFyZWEgdG8gZ2l2ZSB0eXBvZ3JhcGh5IG1vcmUgcm9vbVxuICAmX19pbm5lciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiBweDJyZW0oMjRweCArIDZweCk7XG4gICAgLy8gSGFjazogaW5kdWNlIG1hcmdpbi1jb2xsYXBzZSwgYmVjYXVzZSBvdGhlcndpc2UgdGhlIHNpZGViYXIgaGVpZ2h0IGlzXG4gICAgLy8gbm90IGNhbGN1bGF0ZWQgY29ycmVjdGx5IGFuZCB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgb24gdGhpcyBlbGVtZW50IG11c3RcbiAgICAvLyBiZSBsZWZ0IGluIGluaXRpYWwgc3RhdGUgZm9yIHRhcmdldHRlZCBsaW5rIG9mZnNldHMgdG8gd29yayBwcm9wZXJseVxuICAgIHBhZGRpbmctYm90dG9tOiBweDJyZW0oMXB4KTtcbiAgfVxufVxuXG4vLyBBcHBseSBlbGxpcHNpcyBpbiBjYXNlIG9mIG92ZXJmbG93aW5nIHRleHRcbi5tZC1lbGxpcHNpcyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IG5hdmlnYXRpb25hbCBlbGVtZW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUb2dnbGUgY2hlY2tib3hcbi5tZC10b2dnbGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBPdmVybGF5IGJlbG93IGV4cGFuZGVkIGRyYXdlclxuLm1kLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgdHJhbnNpdGlvbjpcbiAgICB3aWR0aCAgICAgMG1zIDI1MG1zLFxuICAgIGhlaWdodCAgICAwbXMgMjUwbXMsXG4gICAgb3BhY2l0eSAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAzO1xuXG4gIC8vIFt0YWJsZXQgLV06IFRyaWdnZXIgb3ZlcmxheVxuICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG5cbiAgICAvLyBFeHBhbmRlZCBkcmF3ZXJcbiAgICAjeyRtZC10b2dnbGVfX2RyYXdlci0tY2hlY2tlZH0gJiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHdpZHRoICAgICAwbXMsXG4gICAgICAgIGhlaWdodCAgICAwbXMsXG4gICAgICAgIG9wYWNpdHkgMjUwbXM7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogc2tpcCBsaW5rXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNraXAgbGlua1xuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogcHgycmVtKDEwcHgpO1xuICBwYWRkaW5nOiBweDJyZW0oNnB4KSBweDJyZW0oMTBweCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWShweDJyZW0oOHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IG1zKC0xKTtcbiAgb3BhY2l0eTogMDtcblxuICAvLyBTaG93IHNraXAgbGluayBvbiBmb2N1c1xuICAmOmZvY3VzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgb3BhY2l0eSAgIDE3NW1zIDc1bXM7XG4gICAgb3BhY2l0eTogMTtcbiAgICB6LWluZGV4OiAxMDtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogcHJpbnQgc3R5bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFkZCBtYXJnaW5zIHRvIHBhZ2VcbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFubm91bmNlbWVudCBiYXJcbi5tZC1hbm5vdW5jZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuXG4gIC8vIEFjdHVhbCBjb250ZW50XG4gICZfX2lubmVyIHtcbiAgICBtaW4taGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogcHgycmVtKDE0cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb3B5IHRvIGNsaXBib2FyZFxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBweDJyZW0oOHB4KTtcbiAgcmlnaHQ6IHB4MnJlbSg4cHgpO1xuICB3aWR0aDogcHgycmVtKDI0cHgpO1xuICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC8vIEhpZGUgZm9yIHByaW50XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8vIFNsaWdodGx5IHNtYWxsZXIgaWNvblxuICBzdmcge1xuICAgIHdpZHRoOiBweDJyZW0oMThweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMThweCk7XG4gIH1cblxuICAvLyBTaG93IG9uIGNvbnRhaW5lciBob3ZlclxuICBwcmU6aG92ZXIgJiB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuXG4gIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBpY29uXG4gIHByZSAmOmZvY3VzLFxuICBwcmUgJjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb250ZW50IGNvbnRhaW5lclxuLm1kLWNvbnRlbnQge1xuXG4gIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBBZGQgc3BhY2UgZm9yIHRhYmxlIG9mIGNvbnRlbnRzXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgyNDJweCk7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogaW5pdGlhbDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjQycHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtzY3JlZW4gK106IEFkZCBzcGFjZSBmb3IgdGFibGUgb2YgY29udGVudHNcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG4gICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgyNDJweCk7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDI0MnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbmUgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgbWFyZ2luOiAwIHB4MnJlbSgxNnB4KSBweDJyZW0oMjRweCk7XG4gICAgcGFkZGluZy10b3A6IHB4MnJlbSgxMnB4KTtcblxuICAgIC8vIFtzY3JlZW4gK106IEluY3JlYXNlIGhvcml6b250YWwgc3BhY2luZ1xuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBweDJyZW0oMjRweCk7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKDI0cHgpO1xuICAgIH1cblxuICAgIC8vIEhhY2s6IGFkZCBwc2V1ZG8gZWxlbWVudCBmb3Igc3BhY2luZywgYXMgdGhlIG92ZXJmbG93IG9mIHRoZSBjb250ZW50XG4gICAgLy8gY29udGFpbmVyIG1heSBub3QgYmUgaGlkZGVuIGR1ZSB0byBhbiBpbW1pbmVudCBvZmZzZXQgZXJyb3Igb24gdGFyZ2V0c1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogcHgycmVtKDhweCk7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhY2s6IHJlbW92ZSBib3R0b20gc3BhY2luZyBvZiBsYXN0IGVsZW1lbnQsIGR1ZSB0byBtYXJnaW4gY29sbGFwc2VcbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gQnV0dG9uIG5leHQgdG8gdGhlIHRpdGxlXG4gICZfX2J1dHRvbiB7XG4gICAgbWFyZ2luOiBweDJyZW0oOHB4KSAwO1xuICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oOHB4KTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBweDJyZW0oOHB4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBsaW5rIGNvbG9yIGZvciBpY29uc1xuICAgIC5tZC10eXBlc2V0ICYge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC8vIEFsaWduIHRleHQgd2l0aCBpY29uXG4gICAgc3ZnIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBEaWFsb2cgcmVuZGVyZWQgYXMgc25hY2tiYXJcbi5tZC1kaWFsb2cge1xuICBAaW5jbHVkZSB6LWRlcHRoKDIpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiBweDJyZW0oMTZweCk7XG4gIGJvdHRvbTogcHgycmVtKDE2cHgpO1xuICBsZWZ0OiBpbml0aWFsO1xuICBtaW4td2lkdGg6IHB4MnJlbSgyMjJweCk7XG4gIHBhZGRpbmc6IHB4MnJlbSg4cHgpIHB4MnJlbSgxMnB4KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB0cmFuc2l0aW9uOlxuICAgIHRyYW5zZm9ybSAwbXMgICA0MDBtcyxcbiAgICBvcGFjaXR5ICAgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogcHgycmVtKDE0cHgpO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAyO1xuXG4gIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiBweDJyZW0oMTZweCk7XG4gIH1cblxuICAvLyBTaG93IG9wZW4gZGlhbG9nXG4gICZbZGF0YS1tZC1zdGF0ZT1cIm9wZW5cIl0ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLFxuICAgICAgb3BhY2l0eSAgIDQwMG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vXG4vLyBOYW1lOiAgICAgICAgICAgTWF0ZXJpYWwgU2hhZG93c1xuLy8gRGVzY3JpcHRpb246ICAgIE1peGlucyBmb3IgTWF0ZXJpYWwgRGVzaWduIFNoYWRvd3MuXG4vLyBWZXJzaW9uOiAgICAgICAgMy4wLjFcbi8vXG4vLyBBdXRob3I6ICAgICAgICAgRGVuaXMgTWFsaW5vY2hraW5cbi8vIEdpdDogICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vbXJtbG5jL21hdGVyaWFsLXNoYWRvd3Ncbi8vXG4vLyB0d2l0dGVyOiAgICAgICAgQG1ybWxuY1xuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiB6LWRlcHRoLXRyYW5zaXRpb24oKSB7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKTtcbn1cblxuQG1peGluIHotZGVwdGgtZm9jdXMoKSB7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAuMTgpLCAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgLjM2KTtcbn1cblxuQG1peGluIHotZGVwdGgtMmRwKCkge1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIC4xNCksXG4gICAgICAgICAgICAgIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMik7XG59XG5cbkBtaXhpbiB6LWRlcHRoLTNkcCgpIHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwIDFweCA4cHggMCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC00ZHAoKSB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoLTZkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA2cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAxcHggMThweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoLThkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC0xNmRwKCkge1xuICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwICA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAuMTIpLFxuICAgICAgICAgICAgICAwICA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC0yNGRwKCkge1xuICBib3gtc2hhZG93OiAwICA5cHggNDZweCAgOHB4IHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAyNHB4IDM4cHggIDNweCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoKCRkcDogMikge1xuICBAaWYgJGRwID09IDIge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtMmRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDMge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtM2RwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDQge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtNGRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDYge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtNmRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDgge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtOGRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDE2IHtcbiAgICBAaW5jbHVkZSB6LWRlcHRoLTE2ZHAoKTtcbiAgfSBAZWxzZSBpZiAkZHAgPT0gMjQge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtMjRkcCgpO1xuICB9XG59XG5cblxuLy8gQ2xhc3MgZ2VuZXJhdG9yXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIHotZGVwdGgtY2xhc3NlcygkdHJhbnNpdGlvbjogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgQGlmICR0cmFuc2l0aW9uID09IHRydWUge1xuICAgICYtdHJhbnNpdGlvbiB7XG4gICAgICBAaW5jbHVkZSB6LWRlcHRoLXRyYW5zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJGZvY3VzID09IHRydWUge1xuICAgICYtZm9jdXMge1xuICAgICAgQGluY2x1ZGUgei1kZXB0aC1mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSBhdmFpbGFibGUgdmFsdWVzIGZvciB0aGUgc2hhZG93IGRlcHRoXG4gIEBlYWNoICRkZXB0aCBpbiAyLCAzLCA0LCA2LCA4LCAxNiwgMjQge1xuICAgICYtI3skZGVwdGh9ZHAge1xuICAgICAgQGluY2x1ZGUgei1kZXB0aCgkZGVwdGgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFwcGxpY2F0aW9uIGhlYWRlciAoc3RheXMgYWx3YXlzIG9uIHRvcClcbi5tZC1oZWFkZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IHB4MnJlbSg0OHB4KTtcbiAgdHJhbnNpdGlvbjpcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zLFxuICAgIGNvbG9yIDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICAvLyBIYWNrOiByZWR1Y2Ugaml0dGVyIGJ5IGFkZGluZyBhIHRyYW5zcGFyZW50IGJveCBzaGFkb3cgb2YgdGhlIHNhbWUgc2l6ZVxuICAvLyBzbyB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgZG9lc24ndCBjaGFuZ2UgZHVyaW5nIGFuaW1hdGlvblxuICBib3gtc2hhZG93OlxuICAgIDAgMCAgICAgICAgICAgcHgycmVtKDRweCkgcmdiYSgwLCAwLCAwLCAwKSxcbiAgICAwIHB4MnJlbSg0cHgpIHB4MnJlbSg4cHgpIHJnYmEoMCwgMCwgMCwgMCk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMjtcblxuICAvLyBBbHdheXMgaGlkZSBzaGFkb3csIGluIGNhc2UgSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlXG4gIC5uby1qcyAmIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAvLyBTaG93IGFuZCBhbmltYXRlIHNoYWRvd1xuICAmW2RhdGEtbWQtc3RhdGU9XCJzaGFkb3dcIl0ge1xuICAgIHRyYW5zaXRpb246XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zLFxuICAgICAgY29sb3IgICAgICAgICAgICAyNTBtcyxcbiAgICAgIGJveC1zaGFkb3cgICAgICAgMjUwbXM7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgIDAgMCAgICAgICAgICAgcHgycmVtKDRweCkgcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgICAgMCBweDJyZW0oNHB4KSBweDJyZW0oOHB4KSByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gTmF2aWdhdGlvbiB3aXRoaW4gaGVhZGVyXG4ubWQtaGVhZGVyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgcHgycmVtKDRweCk7XG5cbiAgLy8gSWNvbiBidXR0b25zXG4gICZfX2J1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuXG4gICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBpY29uXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAvLyBMb2dvXG4gICAgJi5tZC1sb2dvIHtcbiAgICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgICBwYWRkaW5nOiBweDJyZW0oOHB4KTtcblxuICAgICAgLy8gSW1hZ2Ugb3IgaWNvblxuICAgICAgaW1nLFxuICAgICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oMjRweCk7XG4gICAgICAgIGhlaWdodDogcHgycmVtKDI0cHgpO1xuICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBzZWFyY2ggaWNvbiwgaWYgSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlLlxuICAgIC5uby1qcyAmW2Zvcj1cIl9fc2VhcmNoXCJdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IEhpZGUgdGhlIHNlYXJjaCBidXR0b25cbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAgIC8vIFNlYXJjaCBidXR0b25cbiAgICAgICZbZm9yPVwiX19zZWFyY2hcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgLV06IEhpZGUgdGhlIGxvZ29cbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG5cbiAgICAgIC8vIExvZ29cbiAgICAgICYubWQtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gW3NjcmVlbiArXTogSGlkZSB0aGUgbWVudSBidXR0b25cbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcblxuICAgICAgLy8gTWVudSBidXR0b25cbiAgICAgICZbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhlYWRlciB0b3BpY3NcbiAgJl9fdG9waWMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgyMHB4KTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSxcbiAgICAgIG9wYWNpdHkgICAxNTBtcztcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBQYWdlIHRpdGxlXG4gICAgJiArICYge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgyNXB4KSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDEsIDAuNywgMC4xLCAwLjEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgtMjVweCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluZHVjZSBlbGxpcHNpcywgaWYgbm8gSmF2YVNjcmlwdCBpcyBhdmFpbGFibGVcbiAgICAubm8tanMgJiB7XG4gICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAvLyBIaWRlIHBhZ2UgdGl0bGUgYXMgaXQgaXMgaW52aXNpYmxlIGFueXdheSBhbmQgd2lsbCBvdmVyZmxvdyB0aGUgaGVhZGVyXG4gICAgLm5vLWpzICYgKyAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVhZGVyIHRpdGxlIC0gc2V0IGxpbmUgaGVpZ2h0IHRvIG1hdGNoIGljb24gZm9yIGNvcnJlY3QgYWxpZ25tZW50XG4gICZfX3RpdGxlIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZm9udC1zaXplOiBweDJyZW0oMThweCk7XG4gICAgbGluZS1oZWlnaHQ6IHB4MnJlbSg0OHB4KTtcblxuICAgIC8vIFNob3cgcGFnZSB0aXRsZVxuICAgICZbZGF0YS1tZC1zdGF0ZT1cImFjdGl2ZVwiXSAubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgtMjVweCkpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSxcbiAgICAgICAgb3BhY2l0eSAgIDE1MG1zO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oMjVweCkpO1xuICAgICAgfVxuXG4gICAgICAvLyBQYWdlIHRpdGxlXG4gICAgICAmICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICAgICAgb3BhY2l0eSAgIDE1MG1zO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQYXRjaCBlbGxpcHNpc1xuICAgID4gLm1kLWhlYWRlci1uYXZfX2VsbGlwc2lzIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlcG9zaXRvcnkgY29udGFpbmluZyBzb3VyY2VcbiAgJl9fc291cmNlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IFNob3cgdGhlIHJlcG9zaXN0b3J5IGZyb20gdGFibGV0XG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogcHgycmVtKDIzNHB4KTtcbiAgICAgIG1heC13aWR0aDogcHgycmVtKDIzNHB4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjBweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDIwcHgpO1xuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbc2NyZWVuICtdOiBJbmNyZWFzZSBzcGFjaW5nIG9mIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjhweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDI4cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEhlcm8gdGVhc2VyXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogbXMoMSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLy8gSW5uZXIgd3JhcHBlclxuICAmX19pbm5lciB7XG4gICAgbWFyZ2luLXRvcDogcHgycmVtKDIwcHgpO1xuICAgIHBhZGRpbmc6IHB4MnJlbSgxNnB4KSBweDJyZW0oMTZweCkgcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICBvcGFjaXR5ICAgMjUwbXM7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMTAwbXM7XG5cbiAgICAvLyBbdGFibGV0IC1dOiBDb21wZW5zYXRlIGZvciBtaXNzaW5nIHRhYnNcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG4gICAgICBtYXJnaW4tdG9wOiBweDJyZW0oNDhweCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiBweDJyZW0oMjRweCk7XG4gICAgfVxuXG4gICAgLy8gRmFkZS1vdXQgdGFicyBiYWNrZ3JvdW5kIHVwb24gc2Nyb2xsaW5nXG4gICAgW2RhdGEtbWQtc3RhdGU9XCJoaWRkZW5cIl0gJiB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShweDJyZW0oMTIuNXB4KSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gICAwbXMgNDAwbXMsXG4gICAgICAgIG9wYWNpdHkgICAxMDBtcyAgIDBtcztcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IGJvdHRvbSBzcGFjaW5nIGlmIHRoZXJlIGFyZSBubyB0YWJzXG4gICAgLm1kLWhlcm8tLWV4cGFuZCAmIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHB4MnJlbSgyNHB4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBBcHBsaWNhdGlvbiBmb290ZXJcbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuXG4gIC8vIEhpZGUgZm9yIHByaW50XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBOYXZpZ2F0aW9uIHdpdGhpbiBmb290ZXJcbi5tZC1mb290ZXItbmF2IHtcblxuICAvLyBTZXQgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBMaW5rcyB0byBwcmV2aW91cyBhbmQgbmV4dCBwYWdlXG4gICZfX2xpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZy10b3A6IHB4MnJlbSgyOHB4KTtcbiAgICBwYWRkaW5nLWJvdHRvbTogcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcblxuICAgIC8vIFt0YWJsZXQgK106IFNldCBwcm9wb3J0aW9uYWwgd2lkdGhcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQpIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtzXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAvLyBMaW5rIHRvIHByZXZpb3VzIHBhZ2VcbiAgICAmLS1wcmV2IHtcbiAgICAgIHdpZHRoOiAyNSU7XG4gICAgICBmbG9hdDogbGVmdDtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuXG4gICAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRpdGxlXG4gICAgICAubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuXG4gICAgICAgIC8vIFttb2JpbGUgLV06IEhpZGUgdGl0bGUgZm9yIHByZXZpb3VzIHBhZ2VcbiAgICAgICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMaW5rIHRvIG5leHQgcGFnZVxuICAgICYtLW5leHQge1xuICAgICAgd2lkdGg6IDc1JTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmsgdGl0bGUgLSBzZXQgbGluZSBoZWlnaHQgdG8gbWF0Y2ggaWNvbiBmb3IgY29ycmVjdCBhbGlnbm1lbnRcbiAgJl9fdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAje3B4MnJlbSg0OHB4KX0pO1xuICAgIHBhZGRpbmc6IDAgcHgycmVtKDIwcHgpO1xuICAgIGZvbnQtc2l6ZTogcHgycmVtKDE4cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gIH1cblxuICAvLyBMaW5rIGJ1dHRvblxuICAmX19idXR0b24ge1xuICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gIH1cblxuICAvLyBMaW5rIGRpcmVjdGlvblxuICAmX19kaXJlY3Rpb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IHB4MnJlbSgtMjBweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMjBweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgICBmb250LXNpemU6IHB4MnJlbSgxNXB4KTtcbiAgfVxufVxuXG4vLyBOb24tbmF2aWdhdGlvbmFsIGluZm9ybWF0aW9uXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcblxuICAvLyBTZXQgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBVc2UgYSBkZWNlbnQgY29sb3IgZm9yIG5vbi1ob3ZlcmVkIGxpbmtzIGFuZCBlbnN1cmUgc3BlY2lmaWNpdHlcbiAgaHRtbCAmLm1kLXR5cGVzZXQgYSB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcblxuICAgIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBsaW5rXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29weXJpZ2h0IGFuZCB0aGVtZSBpbmZvcm1hdGlvblxuLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICBtYXJnaW46IDAgcHgycmVtKDEycHgpO1xuICBwYWRkaW5nOiBweDJyZW0oOHB4KSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogbXMoLTEpO1xuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgK106IFNob3cgbmV4dCB0byBzb2NpYWwgbWVkaWEgbGlua3NcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBIaWdobGlnaHQgY29weXJpZ2h0IGluZm9ybWF0aW9uXG4gICZfX2hpZ2hsaWdodCB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxufVxuXG4vLyBTb2NpYWwgbWVkaWEgbGlua3Ncbi5tZC1mb290ZXItc29jaWFsIHtcbiAgbWFyZ2luOiAwIHB4MnJlbSg4cHgpO1xuICBwYWRkaW5nOiBweDJyZW0oNHB4KSAwIHB4MnJlbSgxMnB4KTtcblxuICAvLyBbdGFibGV0IHBvcnRyYWl0ICtdOiBTaG93IG5leHQgdG8gY29weXJpZ2h0IGluZm9ybWF0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgIHBhZGRpbmc6IHB4MnJlbSgxMnB4KSAwO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gTGluayB3aXRoIGljb25cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBweDJyZW0oMzJweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMzJweCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLy8gQWRqdXN0IGxpbmUtaGVpZ2h0IHRvIG1hdGNoIGhlaWdodCBmb3IgY29ycmVjdCBhbGlnbm1lbnRcbiAgICAmOjpiZWZvcmUge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuOTtcbiAgICB9XG5cbiAgICAvLyBTb2NpYWwgaWNvblxuICAgIHN2ZyB7XG4gICAgICB3aWR0aDogcHgycmVtKDE2cHgpO1xuICAgICAgdmVydGljYWwtYWxpZ246IC0yNSU7XG4gICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gTmF2aWdhdGlvbiBjb250YWluZXJcbi5tZC1uYXYge1xuICBmb250LXNpemU6IHB4MnJlbSgxNHB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcblxuICAvLyBMaXN0IHRpdGxlXG4gICZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxMnB4KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBIaWRlIGJ1dHRvbnMgYnkgZGVmYXVsdFxuICAgIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAvLyBTdHJldGNoIGltYWdlc1xuICAgICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICAgICAgLy8gTG9nb1xuICAgICAgJi5tZC1sb2dvIHN2ZyB7XG5cbiAgICAgICAgLy8gSW1hZ2Ugb3IgaWNvblxuICAgICAgICBpbWcsXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IHB4MnJlbSgyNHB4KTtcbiAgICAgICAgICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaXN0IG9mIGl0ZW1zXG4gICZfX2xpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1cbiAgJl9faXRlbSB7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG5cbiAgICAvLyBBZGQgYm90dG9tIHNwYWNpbmcgdG8gbGFzdCBpdGVtXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gMm5kKyBsZXZlbCBpdGVtc1xuICAgICYgJiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTJweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGJvdHRvbSBzcGFjaW5nIGZvciBuZXN0ZWQgaXRlbXNcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW1cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMC42MjVlbTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAxMjVtcztcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG5cbiAgICAvLyBIaWRlIGxpbmsgdG8gdGFibGUgb2YgY29udGVudHMgYnkgZGVmYXVsdCAtIHRoaXMgd2lsbCBvbmx5IG1hdGNoIHRoZVxuICAgIC8vIHRhYmxlIG9mIGNvbnRlbnRzIGluc2lkZSB0aGUgZHJhd2VyIGJlbG93IGFuZCBpbmNsdWRpbmcgdGFibGV0IHBvcnRyYWl0XG4gICAgaHRtbCAmW2Zvcj1cIl9fdG9jXCJdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIC8vIEhpZGUgdGFibGUgb2YgY29udGVudHMgYnkgZGVmYXVsdFxuICAgICAgJiB+IC5tZC1uYXYge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsdXJyZWQgbGlua1xuICAgICZbZGF0YS1tZC1zdGF0ZT1cImJsdXJcIl0ge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmUgbGlua1xuICAgIC5tZC1uYXZfX2l0ZW0gJi0tYWN0aXZlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBhY3RpdmUgY29sb3IgZm9yIG5lc3RlZCBsaXN0IHRpdGxlc1xuICAgIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCA+ICYge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVwb3NpdG9yeSBjb250YWluaW5nIHNvdXJjZVxuICAmX19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBMYXllcmVkIG5hdmlnYXRpb25cbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuXG4gICAgLy8gU3RyZXRjaCBwcmltYXJ5IG5hdmlnYXRpb24gdG8gZHJhd2VyXG4gICAgJi0tcHJpbWFyeSxcbiAgICAmLS1wcmltYXJ5IC5tZC1uYXYge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC8vIEFkanVzdCBzdHlsZXMgZm9yIHByaW1hcnkgbmF2aWdhdGlvblxuICAgICYtLXByaW1hcnkge1xuXG4gICAgICAvLyBMaXN0IHRpdGxlIGFuZCBpdGVtXG4gICAgICAubWQtbmF2X190aXRsZSxcbiAgICAgIC5tZC1uYXZfX2l0ZW0ge1xuICAgICAgICBmb250LXNpemU6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLy8gTGlzdCB0aXRsZVxuICAgICAgLm1kLW5hdl9fdGl0bGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGhlaWdodDogcHgycmVtKDExMnB4KTtcbiAgICAgICAgcGFkZGluZzogcHgycmVtKDYwcHgpIHB4MnJlbSgxNnB4KSBweDJyZW0oNHB4KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgLy8gSWNvblxuICAgICAgICAubWQtbmF2X19pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiBweDJyZW0oOHB4KTtcbiAgICAgICAgICBsZWZ0OiBweDJyZW0oOHB4KTtcbiAgICAgICAgICB3aWR0aDogcHgycmVtKDI0cHgpO1xuICAgICAgICAgIGhlaWdodDogcHgycmVtKDI0cHgpO1xuICAgICAgICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHJpZ2h0OiBweDJyZW0oOHB4KTtcbiAgICAgICAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFpbiBsaXN0c1xuICAgICAgICB+IC5tZC1uYXZfX2xpc3Qge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIHB4MnJlbSgxcHgpIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG5cbiAgICAgICAgICAvLyBSZW1vdmUgYm9yZGVyIGZvciBmaXJzdCBsaXN0IGl0ZW1cbiAgICAgICAgICA+IC5tZC1uYXZfX2l0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaXRlIHRpdGxlIGluIG1haW4gbmF2aWdhdGlvblxuICAgICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgICAgICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuXG4gICAgICAgICAgLy8gU2l0ZSBsb2dvXG4gICAgICAgICAgLm1kLW5hdl9fYnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiBweDJyZW0oNHB4KTtcbiAgICAgICAgICAgIGxlZnQ6IHB4MnJlbSg0cHgpO1xuICAgICAgICAgICAgd2lkdGg6IHB4MnJlbSg2NHB4KTtcbiAgICAgICAgICAgIGhlaWdodDogcHgycmVtKDY0cHgpO1xuICAgICAgICAgICAgbWFyZ2luOiBweDJyZW0oNHB4KTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHB4MnJlbSg4cHgpO1xuICAgICAgICAgICAgZm9udC1zaXplOiBweDJyZW0oNDhweCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIGh0bWwgW2Rpcj1cInJ0bFwiXSAmIC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgICAvLyBTaXRlIHRpdGxlIGluIG1haW4gbmF2aWdhdGlvblxuICAgICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgICAgICAgcmlnaHQ6IHB4MnJlbSg0cHgpO1xuICAgICAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGlzdCBvZiBpdGVtc1xuICAgICAgLm1kLW5hdl9fbGlzdCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC8vIExpc3QgaXRlbVxuICAgICAgLm1kLW5hdl9faXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluY3JlYXNlIHNwYWNpbmcgdG8gYWNjb3VudCBmb3IgaWNvblxuICAgICAgICAmLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDhweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ4cHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFjdGl2ZSBwYXJlbnQgaXRlbVxuICAgICAgICAmLS1hY3RpdmUgPiAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGluayBpbnNpZGUgaXRlbVxuICAgICAgLm1kLW5hdl9fbGluayB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpIHB4MnJlbSgxNnB4KTtcblxuICAgICAgICAvLyBJY29uXG4gICAgICAgIC5tZC1uYXZfX2ljb24ge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICByaWdodDogcHgycmVtKDEycHgpO1xuICAgICAgICAgIG1hcmdpbi10b3A6IHB4MnJlbSgtMTJweCk7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgZm9udC1zaXplOiBweDJyZW0oMjRweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgbGVmdDogcHgycmVtKDEycHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJY29uXG4gICAgICAubWQtbmF2X19pY29uIHtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG5cbiAgICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGFibGUgb2YgY29udGVudHMgaW5zaWRlIG5hdmlnYXRpb25cbiAgICAgIC5tZC1uYXYtLXNlY29uZGFyeSB7XG5cbiAgICAgICAgLy8gU2V0IGxpbmtzIHRvIHN0YXRpYyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBsYXllcmluZ1xuICAgICAgICAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IG5lc3RlZCBuYXZpZ2F0aW9uIGZvciB0YWJsZSBvZiBjb250ZW50cyB0byBzdGF0aWNcbiAgICAgICAgLm1kLW5hdiB7XG4gICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAgIC8vIDNyZCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdl9fbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgyOHB4KTtcblxuICAgICAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDI4cHgpO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNHRoIGxldmVsIGxpbmtcbiAgICAgICAgICAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oNDBweCk7XG5cbiAgICAgICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg0MHB4KTtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDV0aCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oNTJweCk7XG5cbiAgICAgICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg1MnB4KTtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDZ0aCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg2NHB4KTtcblxuICAgICAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDY0cHgpO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBuZXN0ZWQgbmF2aWdhdGlvbiBieSBkZWZhdWx0XG4gICAgLm1kLW5hdl9fdG9nZ2xlIH4gJiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjgsIDAsIDAuNiwgMSksXG4gICAgICAgIG9wYWNpdHkgICAxMjVtcyA1MG1zO1xuICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmQgbmVzdGVkIG5hdmlnYXRpb24sIGlmIHRvZ2dsZSBpcyBjaGVja2VkXG4gICAgLm1kLW5hdl9fdG9nZ2xlOmNoZWNrZWQgfiAmIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTI1bXMgMTI1bXM7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IFNob3cgdGFibGUgb2YgY29udGVudHMgaW4gZHJhd2VyXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcblxuICAgIC8vIFNob3cgbGluayB0byB0YWJsZSBvZiBjb250ZW50cyAtIGhpZ2hlciBzcGVjaWZpY2l0eSBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBkaXNwbGF5IHRoZSB0YWJsZSBvZiBjb250ZW50cyBpbnNpZGUgdGhlIGRyYXdlclxuICAgIGh0bWwgJl9fbGlua1tmb3I9XCJfX3RvY1wiXSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg0OHB4KTtcblxuICAgICAgLy8gSGlkZSBsaW5rIHRvIGN1cnJlbnQgaXRlbVxuICAgICAgKyAubWQtbmF2X19saW5rIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyB0YWJsZSBvZiBjb250ZW50c1xuICAgICAgJiB+IC5tZC1uYXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBodG1sIFtkaXI9XCJydGxcIl0gJl9fbGluayB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTZweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg0OHB4KTtcbiAgICB9XG5cbiAgICAvLyBSZXBvc2l0b3J5IGNvbnRhaW5pbmcgc291cmNlXG4gICAgJl9fc291cmNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZzogMCBweDJyZW0oNHB4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBUcmVlLWxpa2UgbmF2aWdhdGlvblxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAvLyBMaXN0IHRpdGxlXG4gICAgJi0tc2Vjb25kYXJ5IC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgLy8gU25hcCB0byB0YWJsZSBvZiBjb250ZW50cyB0aXRsZVxuICAgICAgJltmb3I9XCJfX3RvY1wiXSB7XG4gICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLy8gSGlkZSBpY29uXG4gICAgICAubWQtbmF2X19pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBbc2NyZWVuICtdOiBUcmVlLWxpa2UgbmF2aWdhdGlvblxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDI1MG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKTtcblxuICAgIC8vIExpc3QgdGl0bGVcbiAgICAmLS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgLy8gU25hcCB0byBzaXRlIHRpdGxlXG4gICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIHtcbiAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAvLyBIaWRlIGljb25cbiAgICAgIC5tZC1uYXZfX2ljb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhpZGUgbmVzdGVkIG5hdmlnYXRpb24gYnkgZGVmYXVsdFxuICAgIC5tZC1uYXZfX3RvZ2dsZSB+ICYge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBTaG93IG5lc3RlZCBuYXZpZ2F0aW9uLCBpZiB0b2dnbGUgaXMgY2hlY2tlZFxuICAgIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvLyBIaWRlIHRpdGxlcyBmb3IgbmVzdGVkIG5hdmlnYXRpb25cbiAgICAmX19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2ID4gJl9fdGl0bGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBJY29uXG4gICAgJl9faWNvbiB7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgxOHB4KTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcztcblxuICAgICAgLy8gSW5saW5lIGljb24gYW5kIGFkanVzdCB0byBtYXRjaCBmb250IHNpemVcbiAgICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IHB4MnJlbSgxOHB4KTtcbiAgICAgICAgaGVpZ2h0OiBweDJyZW0oMThweCk7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBweDJyZW0oLTJweCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJvdGF0ZSBpY29uIGZvciBleHBhbmRlZCBsaXN0c1xuICAgICAgLm1kLW5hdl9faXRlbS0tbmVzdGVkIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdl9fbGluayAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBWYXJpYWJsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQWN0aXZlICh0b2dnbGVkKSBzZWFyY2hcbiRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZDpcbiAgXCJbZGF0YS1tZC10b2dnbGU9XFxcInNlYXJjaFxcXCJdOmNoZWNrZWQgfiAubWQtaGVhZGVyXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNlYXJjaCBjb250YWluZXJcbi5tZC1zZWFyY2gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gSGlkZSBzZWFyY2gsIGlmIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAgLm5vLWpzICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCkgMDtcbiAgfVxuXG4gIC8vIFNlYXJjaCBtb2RhbCBvdmVybGF5XG4gICZfX292ZXJsYXkge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IHB4MnJlbSg0cHgpO1xuICAgICAgbGVmdDogcHgycmVtKC00NHB4KTtcbiAgICAgIHdpZHRoOiBweDJyZW0oNDBweCk7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSg0MHB4KTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAzMDBtcyAxMDBtcyxcbiAgICAgICAgb3BhY2l0eSAgIDIwMG1zIDIwMG1zO1xuICAgICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDIwcHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oLTQ0cHgpO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuXG4gICAgICAvLyBFeHBhbmRlZCBvdmVybGF5XG4gICAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgdHJhbnNmb3JtIDQwMG1zLFxuICAgICAgICAgIG9wYWNpdHkgICAxMDBtcztcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgc2NhbGUgZmFjdG9yc1xuICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcblxuICAgICAgLy8gW21vYmlsZSBwb3J0cmFpdCAtXTogU2NhbGUgdXAgNDUgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUgcG9ydHJhaXQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSg0NSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFttb2JpbGUgbGFuZHNjYXBlXTogU2NhbGUgdXAgNjAgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZShtb2JpbGUgbGFuZHNjYXBlKSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoNjApO1xuICAgICAgfVxuXG4gICAgICAvLyBbdGFibGV0IHBvcnRyYWl0XTogU2NhbGUgdXAgNzUgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSg3NSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IE92ZXJsYXkgZm9yIGJldHRlciBmb2N1cyBvbiBzZWFyY2hcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB3aWR0aCAgICAgMG1zIDI1MG1zLFxuICAgICAgICBoZWlnaHQgICAgMG1zIDI1MG1zLFxuICAgICAgICBvcGFjaXR5IDI1MG1zO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRXhwYW5kZWQgb3ZlcmxheVxuICAgICAgI3skbWQtdG9nZ2xlX19zZWFyY2gtLWNoZWNrZWR9ICYge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIHdpZHRoICAgICAwbXMsXG4gICAgICAgICAgaGVpZ2h0ICAgIDBtcyxcbiAgICAgICAgICBvcGFjaXR5IDI1MG1zO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNlYXJjaCBtb2RhbCB3cmFwcGVyXG4gICZfX2lubmVyIHtcbiAgICAvLyBIYWNrOiByZWR1Y2Ugaml0dGVyXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgLy8gW3RhYmxldCBwb3J0cmFpdCAtXTogUHV0IHNlYXJjaCBtb2RhbCBvZmYtY2FudmFzIGJ5IGRlZmF1bHRcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNSUpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgcmlnaHQgICAgICAgMG1zIDMwMG1zLFxuICAgICAgICBsZWZ0ICAgICAgICAwbXMgMzAwbXMsXG4gICAgICAgIHRyYW5zZm9ybSAxNTBtcyAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXMgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogMjtcblxuICAgICAgLy8gQWN0aXZlIHNlYXJjaCBtb2RhbFxuICAgICAgI3skbWQtdG9nZ2xlX19zZWFyY2gtLWNoZWNrZWR9ICYge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgcmlnaHQgICAgICAgMG1zICAgMG1zLFxuICAgICAgICAgIGxlZnQgICAgICAgIDBtcyAgIDBtcyxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTUwbXMgMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgICAgIG9wYWNpdHkgICAxNTBtcyAxNTBtcztcbiAgICAgICAgb3BhY2l0eTogMTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBodG1sIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiBweDJyZW0oMjM0cHgpO1xuICAgICAgcGFkZGluZzogcHgycmVtKDJweCkgMDtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IG1heGltdW0gd2lkdGhcbiAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG5cbiAgICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogRG8gbm90IG92ZXJsYXkgdGl0bGVcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oNDY4cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBbc2NyZWVuICtdOiBNYXRjaCBjb250ZW50IHdpZHRoXG4gICAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICAgICAgd2lkdGg6IHB4MnJlbSg2ODhweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2VhcmNoIGZvcm1cbiAgJl9fZm9ybSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IEhlYWRlci1lbWJlZGRlZCBzZWFyY2hcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZWFyY2ggaW5wdXRcbiAgJl9faW5wdXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSg0NHB4KSAwIHB4MnJlbSg3MnB4KTtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB6LWluZGV4OiAyO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBwYWRkaW5nOiAwIHB4MnJlbSg3MnB4KSAwIHB4MnJlbSg0NHB4KTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2l0aW9uIG9uIHBsYWNlaG9sZGVyXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgIH1cblxuICAgIC8vIFBsYWNlaG9sZGVyIGFuZCBpY29uIGNvbG9yIGluIGFjdGl2ZSBzdGF0ZVxuICAgIH4gLm1kLXNlYXJjaF9faWNvbixcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgXCJ4XCIgcmVuZGVyZWQgYnkgSW50ZXJuZXQgRXhwbG9yZXJcbiAgICAmOjotbXMtY2xlYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBGdWxsLXNjcmVlbiBzZWFyY2ggYmFyXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSg0OHB4KTtcbiAgICAgIGZvbnQtc2l6ZTogcHgycmVtKDE4cHgpO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBIZWFkZXItZW1iZWRkZWQgc2VhcmNoXG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgzNnB4KTtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ0cHgpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICAgIGNvbG9yICAgICAgICAgICAgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgZm9udC1zaXplOiBtcygwKTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDQ0cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBJY29uIGNvbG9yXG4gICAgICArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFBsYWNlaG9sZGVyIGNvbG9yXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhvdmVyZWQgc2VhcmNoIGZpZWxkXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgbGlnaHQgYmFja2dyb3VuZCBvbiBhY3RpdmUgc2VhcmNoIGZpZWxkXG4gICAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpIHB4MnJlbSgycHgpIDAgMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcblxuICAgICAgICAvLyBJY29uIGFuZCBwbGFjZWhvbGRlciBjb2xvciBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICAgKyAubWQtc2VhcmNoX19pY29uLFxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEljb25cbiAgJl9faWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiBweDJyZW0oMjRweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMjRweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIGNvbG9yICAgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgb3BhY2l0eSAyNTBtcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogMjtcblxuICAgIC8vIEhvdmVyZWQgaWNvblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBpY29uXG4gICAgJltmb3I9XCJfX3NlYXJjaFwiXSB7XG4gICAgICB0b3A6IHB4MnJlbSg2cHgpO1xuICAgICAgbGVmdDogcHgycmVtKDEwcHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogcHgycmVtKDEwcHgpO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuXG4gICAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICAgIGxlZnQ6IHB4MnJlbSgxNnB4KTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcmlnaHQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0aGUgbWFnbmlmeWluZyBnbGFzcyAoMXN0IGljb24pXG4gICAgICAgIHN2ZzpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuXG4gICAgICAgIC8vIEhpZGUgdGhlIGFycm93ICgybmQgaWNvbilcbiAgICAgICAgc3ZnOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNldCBidXR0b25cbiAgICAmW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgICB0b3A6IHB4MnJlbSg2cHgpO1xuICAgICAgcmlnaHQ6IHB4MnJlbSgxMHB4KTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICBsZWZ0OiBweDJyZW0oMTBweCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oMTZweCk7XG5cbiAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgIGxlZnQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IHJlc2V0IGJ1dHRvbiBpZiBzZWFyY2ggaXMgYWN0aXZlIGFuZCBpbnB1dCBub24tZW1wdHlcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAubWQtc2VhcmNoX19pbnB1dDp2YWxpZCB+ICYge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcblxuICAgICAgICAvLyBIb3ZlcmVkIGljb25cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2VhcmNoIG91dHB1dCBjb250YWluZXJcbiAgJl9fb3V0cHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHB4MnJlbSgycHgpIHB4MnJlbSgycHgpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICB0b3A6IHB4MnJlbSg0OHB4KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHRvcDogcHgycmVtKDM4cHgpO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcztcbiAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgIC8vIFNob3cgc2VhcmNoIG91dHB1dCBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcbiAgICAgICAgQGluY2x1ZGUgei1kZXB0aCg2KTtcblxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXBwZXIgZm9yIHNjcm9sbGluZyBvbiBvdmVyZmxvd1xuICAmX19zY3JvbGx3cmFwIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCBweDJyZW0oMXB4KSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLy8gTWl0aWdpYXRlIGV4Y2Vzc2l2ZSByZXBhaW50cyBvbiBub24tcmV0aW5hIGRldmljZXNcbiAgICBAbWVkaWEgKG1heC1yZXNvbHV0aW9uOiAxZHBweCkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogU2V0IGFic29sdXRlIHdpZHRoIHRvIG9taXQgdW5uZWNlc3NhcnkgcmVmbG93XG4gICAgQGluY2x1ZGUgYnJlYWstYXQtZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHdpZHRoOiBweDJyZW0oNDY4cHgpO1xuICAgIH1cblxuICAgIC8vIFtzY3JlZW4gK106IFNldCBhYnNvbHV0ZSB3aWR0aCB0byBvbWl0IHVubmVjZXNzYXJ5IHJlZmxvd1xuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuICAgICAgd2lkdGg6IHB4MnJlbSg2ODhweCk7XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IExpbWl0IGhlaWdodCB0byB2aWV3cG9ydFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIG1heC1oZWlnaHQ6IDA7XG5cbiAgICAgIC8vIEV4cGFuZCBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcbiAgICAgICAgbWF4LWhlaWdodDogNzV2aDtcbiAgICAgIH1cblxuICAgICAgLy8gT3ZlcnJpZGUgbmF0aXZlIHNjcm9sbGJhciBzdHlsZXNcbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IHB4MnJlbSg0cHgpO1xuICAgICAgICBoZWlnaHQ6IHB4MnJlbSg0cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGxiYXIgdGh1bWJcbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG5cbiAgICAgICAgLy8gSG92ZXJlZCBzY3JvbGxiYXIgdGh1bWJcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWFyY2ggcmVzdWx0XG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAvLyBTZWFyY2ggbWV0YWRhdGFcbiAgJl9fbWV0YSB7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygtMSk7XG4gICAgbGluZS1oZWlnaHQ6IHB4MnJlbSgzNnB4KTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSW5jcmVhc2UgbGVmdCBpbmRlbnRcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg0NHB4KTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDQ0cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlzdCBvZiBpdGVtc1xuICAmX19saXN0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItdG9wOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbVxuICAmX19pdGVtIHtcbiAgICBib3gtc2hhZG93OiAwIHB4MnJlbSgtMXB4KSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW1cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgICBvdXRsaW5lOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudCk7XG5cbiAgICAgIC8vIFNsaWdodGx5IHRyYW5zcGFyZW50IGljb25cbiAgICAgIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgbGl0dGxlIHNwYWNpbmcgb24gdGhlIHRlYXNlciBvZiB0aGUgbGFzdCBsaW5rXG4gICAgJjpsYXN0LWNoaWxkIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICAgICAgbWFyZ2luLWJvdHRvbTogcHgycmVtKDEycHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFydGljbGUgLSBkb2N1bWVudCBvciBzZWN0aW9uXG4gICZfX2FydGljbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxNnB4KTtcbiAgICBvdmVyZmxvdzogYXV0bztcblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBJbmNyZWFzZSBsZWZ0IGluZGVudFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ0cHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDRweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDE2cHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERvY3VtZW50XG4gICAgJi0tZG9jdW1lbnQge1xuXG4gICAgICAvLyBUaXRsZVxuICAgICAgLm1kLXNlYXJjaC1yZXN1bHRfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiBweDJyZW0oMTFweCkgMDtcbiAgICAgICAgZm9udC1zaXplOiBtcygwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJY29uXG4gICZfX2ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogcHgycmVtKDJweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBpbml0aWFsO1xuXG4gICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEhpZGUgcGFnZSBpY29uXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBUaXRsZVxuICAmX190aXRsZSB7XG4gICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgfVxuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlIHZhbHVlLW5vLXZlbmRvci1wcmVmaXgsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuICAvLyBUZWFzZXJcbiAgJl9fdGVhc2VyIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBtYXgtaGVpZ2h0OiBweDJyZW0oMzNweCk7XG4gICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuXG4gICAgLy8gW21vYmlsZSAtXTogSW5jcmVhc2UgbnVtYmVyIG9mIGxpbmVzXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgbWF4LWhlaWdodDogcHgycmVtKDUwcHgpO1xuICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogSW5jcmVhc2UgbnVtYmVyIG9mIGxpbmVzXG4gICAgQGluY2x1ZGUgYnJlYWstYXQtZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIG1heC1oZWlnaHQ6IHB4MnJlbSg1MHB4KTtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICB9XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHZhbHVlLW5vLXZlbmRvci1wcmVmaXgsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuICAvLyBTZWFyY2ggdGVybSBoaWdobGlnaHRpbmdcbiAgZW0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFjdGl2ZSAodG9nZ2xlZCkgZHJhd2VyXG4kbWQtdG9nZ2xlX19kcmF3ZXItLWNoZWNrZWQ6XG4gIFwiW2RhdGEtbWQtdG9nZ2xlPVxcXCJkcmF3ZXJcXFwiXTpjaGVja2VkIH4gLm1kLWNvbnRhaW5lclwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTaWRlYmFyIGNvbnRhaW5lclxuLm1kLXNpZGViYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiBweDJyZW0oMjQycHgpO1xuICBwYWRkaW5nOiBweDJyZW0oMjRweCkgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBMb2NrIHNpZGViYXIgdG8gY29udGFpbmVyIGhlaWdodCAoYWNjb3VudCBmb3IgZml4ZWQgaGVhZGVyKVxuICAmW2RhdGEtbWQtc3RhdGU9XCJsb2NrXCJdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiBweDJyZW0oNDhweCk7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBDb252ZXJ0IG5hdmlnYXRpb24gdG8gZHJhd2VyXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFJlbmRlciBwcmltYXJ5IHNpZGViYXIgYXMgYSBzbGlkZW91dCBjb250YWluZXJcbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IHB4MnJlbSgtMjQycHgpO1xuICAgICAgd2lkdGg6IHB4MnJlbSgyNDJweCk7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgICAgIGJveC1zaGFkb3cgMjUwbXM7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICAgIHotaW5kZXg6IDM7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oLTI0MnB4KTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRXhwYW5kZWQgZHJhd2VyXG4gICAgICAjeyRtZC10b2dnbGVfX2RyYXdlci0tY2hlY2tlZH0gJiB7XG4gICAgICAgIEBpbmNsdWRlIHotZGVwdGgoOCk7XG5cbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgyNDJweCkpO1xuXG4gICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgocHgycmVtKC0yNDJweCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEhpZGUgb3ZlcmZsb3cgZm9yIG5lc3RlZCBuYXZpZ2F0aW9uXG4gICAgICAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2Vjb25kYXJ5IHNpZGViYXIgd2l0aCB0YWJsZSBvZiBjb250ZW50c1xuICAmLS1zZWNvbmRhcnkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogU2hvdyB0YWJsZSBvZiBjb250ZW50cyBuZXh0IHRvIGJvZHkgY29weVxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTAwJSAtICN7cHgycmVtKDI0MnB4KX0pO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTAwJSAtICN7cHgycmVtKDI0MnB4KX0pO1xuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRW5zdXJlIHNtb290aCBzY3JvbGxpbmcgb24gaU9TXG4gICAgICAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbc2NyZWVuICtdOiBMaW1pdCB0byBncmlkXG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKCgxMjIwIC0gMjQyKSAqIDFweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKCgxMjIwIC0gMjQyKSAqIDFweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXBwZXIgZm9yIHNjcm9sbGluZyBvbiBvdmVyZmxvd1xuICAmX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMCBweDJyZW0oNHB4KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAvLyBbdGFibGV0IC1dOiBBZGp1c3QgbWFyZ2luc1xuICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgICAgLy8gU3RyZXRjaCBzY3JvbGx3cmFwIGZvciBwcmltYXJ5IHNpZGViYXJcbiAgICAgIC5tZC1zaWRlYmFyLS1wcmltYXJ5ICYge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE92ZXJyaWRlIG5hdGl2ZSBzY3JvbGxiYXIgc3R5bGVzXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IHB4MnJlbSg0cHgpO1xuICAgICAgaGVpZ2h0OiBweDJyZW0oNHB4KTtcbiAgICB9XG5cbiAgICAvLyBTY3JvbGxiYXIgdGh1bWJcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcblxuICAgICAgLy8gSG92ZXJlZCBzY3JvbGxiYXIgdGh1bWJcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEtleWZyYW1lc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTaG93IHNvdXJjZSBmYWN0c1xuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGhlaWdodDogcHgycmVtKDEzcHgpO1xuICB9XG59XG5cbi8vIFNob3cgc291cmNlIGZhY3RcbkBrZXlmcmFtZXMgbWQtc291cmNlX19mYWN0LS1kb25lIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNvdXJjZSBjb250YWluZXJcbi5tZC1zb3VyY2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1yaWdodDogcHgycmVtKDEycHgpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xuICBmb250LXNpemU6IHB4MnJlbSgxM3B4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLy8gSGFjazogcmVkdWNlIGppdHRlclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICBbZGlyPVwicnRsXCJdICYge1xuICAgIHBhZGRpbmctcmlnaHQ6IGluaXRpYWw7XG4gICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oMTJweCk7XG4gIH1cblxuICAvLyBIb3ZlcmVkIHNvdXJjZSBjb250YWluZXJcbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG5cbiAgLy8gUmVwb3NpdG9yeSBwbGF0Zm9ybSBpY29uXG4gICZfX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogcHgycmVtKDQ4cHgpO1xuICAgIGhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBBbGlnbiB3aXRoIG1hcmdpbiBvbmx5IChhcyBvcHBvc2VkIHRvIG5vcm1hbCBidXR0b24gYWxpZ25tZW50KVxuICAgIHN2ZyB7XG4gICAgICBtYXJnaW4tdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKDEycHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29ycmVjdCBhbGlnbm1lbnQsIGlmIGljb24gaXMgcHJlc2VudFxuICAgICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKC00MHB4KTtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQwcHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgtNDBweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDBweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXBvc2l0b3J5IG5hbWVcbiAgJl9fcmVwb3NpdG9yeSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogcHgycmVtKDEycHgpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5cbiAgLy8gU291cmNlIGZhY3RzIChzdGF0aXN0aWNzIGV0Yy4pXG4gICZfX2ZhY3RzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IHB4MnJlbSgxMXB4KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBTaG93IGFmdGVyIHRoZSBkYXRhIHdhcyBsb2FkZWRcbiAgICBbZGF0YS1tZC1zdGF0ZT1cImRvbmVcIl0gJiB7XG4gICAgICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUgMjUwbXMgZWFzZS1pbjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWN0XG4gICZfX2ZhY3Qge1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gU2hvdyBhZnRlciB0aGUgZGF0YSB3YXMgbG9hZGVkXG4gICAgW2RhdGEtbWQtc3RhdGU9XCJkb25lXCJdICYge1xuICAgICAgYW5pbWF0aW9uOiBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUgNDAwbXMgZWFzZS1vdXQ7XG4gICAgfVxuXG4gICAgLy8gTWlkZGxlIGRvdCBiZWZvcmUgZmFjdFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBtYXJnaW46IDAgcHgycmVtKDJweCk7XG4gICAgICBjb250ZW50OiBcIlxcMDBCN1wiO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBtaWRkbGUgZG90IG9uIGZpcnN0IGZhY3RcbiAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUYWJzIHdpdGggb3V0bGluZVxuLm1kLXRhYnMge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgLy8gT21pdCB0cmFuc2l0aW9ucywgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGVcbiAgLm5vLWpzICYge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBIaWRlIHRhYnMgZm9yIHRhYmxldCBhbmQgYmVsb3csIGFzIHRoZXkgZG9uJ3QgbWFrZSBhbnkgc2Vuc2VcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBMaXN0IG9mIGl0ZW1zXG4gICZfX2xpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tbGVmdDogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDRweCk7XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1cbiAgJl9faXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW0gLSBjb3VsZCBiZSBkZWZpbmVkIGFzIGJsb2NrIGVsZW1lbnRzIGFuZCBhbGlnbmVkIHZpYVxuICAvLyBsaW5lIGhlaWdodCwgYnV0IHRoaXMgd291bGQgaW1wbHkgbW9yZSByZXBhaW50cyB3aGVuIHNjcm9sbGluZ1xuICAmX19saW5rIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tdG9wOiBweDJyZW0oMTZweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICBvcGFjaXR5ICAgMjUwbXM7XG4gICAgZm9udC1zaXplOiBweDJyZW0oMTRweCk7XG4gICAgb3BhY2l0eTogMC43O1xuXG4gICAgLy8gT21pdCB0cmFuc2l0aW9ucywgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGVcbiAgICAubm8tanMgJiB7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBvciBob3ZlcmVkIGxpbmtcbiAgICAmLS1hY3RpdmUsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLy8gRGVsYXkgdHJhbnNpdGlvbnMgYnkgYSBzbWFsbCBhbW91bnRcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIDE2IHtcbiAgICAgIC5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgjeyRpfSkgJiB7XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDIwbXMgKiAoJGkgLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGYWRlLW91dCB0YWJzIGJhY2tncm91bmQgdXBvbiBzY3JvbGxpbmdcbiAgJltkYXRhLW1kLXN0YXRlPVwiaGlkZGVuXCJdIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIC8vIEhpZGUgdGFicyB1cG9uIHNjcm9sbGluZyAtIGRpc2FibGUgdHJhbnNpdGlvbiB0byBtaW5pbWl6ZXMgcmVwYWludHMgd2hpbHRlXG4gICAgLy8gc2Nyb2xsaW5nIGRvd24sIHdoaWxlIHNjcm9sbGluZyB1cCBzZWVtcyB0byBiZSBva2F5XG4gICAgLm1kLXRhYnNfX2xpbmsge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICBjb2xvciAgICAgMjUwbXMsXG4gICAgICAgIHRyYW5zZm9ybSAgIDBtcyA0MDBtcyxcbiAgICAgICAgb3BhY2l0eSAgIDEwMG1zO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBbc2NyZWVuICtdOiBBZGp1c3QgbWFpbiBuYXZpZ2F0aW9uIHN0eWxlc1xuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcblxuICAgIC8vIEhpZGUgMXN0IGxldmVsIG5lc3RlZCBpdGVtcywgYXMgdGhleSBhcmUgbGlzdGVkIGluIHRoZSB0YWJzXG4gICAgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIFdlJ3JlIG9uIHRoZSAybmQrIGxldmVsXG4gICAgJi0tYWN0aXZlIH4gLm1kLW1haW4ge1xuXG4gICAgICAvLyBBZGp1c3QgMXN0IGxldmVsIHN0eWxlc1xuICAgICAgLm1kLW5hdi0tcHJpbWFyeSB7XG5cbiAgICAgICAgLy8gU2hvdyB0aXRsZSBhbmQgcmVtb3ZlIHNwYWNpbmdcbiAgICAgICAgLm1kLW5hdl9fdGl0bGUge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcblxuICAgICAgICAgIC8vIEhpZGUgc2l0ZSB0aXRsZVxuICAgICAgICAgICZbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIaWRlIDFzdCBsZXZlbCBub3JtYWwgaXRlbXNcbiAgICAgICAgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgIC8vIEhpZGUgbmVzdGVkIGl0ZW1zXG4gICAgICAgICAgJi0tbmVzdGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2hvdyAxc3QgbGV2ZWwgYWN0aXZlIG5lc3RlZCBpdGVtc1xuICAgICAgICAgICYtLWFjdGl2ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIC8vIEhpZGUgbmVzdGVkIGxpbmtzXG4gICAgICAgICAgICA+IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBbHdheXMgZXhwYW5kIG5lc3RlZCBuYXZpZ2F0aW9uIG9uIDJuZCBsZXZlbFxuICAgICAgLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSB7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHNwYWNpbmcgb24gMm5kIGxldmVsIGl0ZW1zXG4gICAgICAgID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0ge1xuICAgICAgICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0aXRsZXMgZnJvbSAybmQgbGV2ZWwgb25cbiAgICAgICAgLm1kLW5hdiAubWQtbmF2X190aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gQWRtb25pdGlvblxuICAuYWRtb25pdGlvbiB7XG4gICAgbWFyZ2luOiAxLjU2MjVlbSAwO1xuICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgIGJvcmRlci1sZWZ0OiBweDJyZW0oNHB4KSBzb2xpZCAkY2xyLWJsdWUtYTIwMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCBweDJyZW0oNHB4KSBweDJyZW0oMTBweCkgaHNsYSgwLCAwJSwgMCUsIDAuMDUpLFxuICAgICAgMCAwICAgICAgICAgICBweDJyZW0oMXB4KSAgaHNsYSgwLCAwJSwgMCUsIDAuMSk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIGJvcmRlci1yaWdodDogcHgycmVtKDRweCkgc29saWQgJGNsci1ibHVlLWEyMDA7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBBZGp1c3Qgc3BhY2luZyBvbiBsYXN0IGVsZW1lbnRcbiAgICBodG1sICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IG1hcmdpbiBmb3IgbmVzdGVkIGFkbW9uaXRpb24gYmxvY2tzXG4gICAgLmFkbW9uaXRpb24ge1xuICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICB9XG5cbiAgICAvLyBCdWlsZCByZXByZXNlbnRhdGlvbmFsIGNsYXNzZXNcbiAgICBAZWFjaCAkbmFtZXMsICRhcHBlYXJhbmNlIGluIChcbiAgICAgIGFic3RyYWN0IHN1bW1hcnkgdGxkcjogJGNsci1saWdodC1ibHVlLWE0MDAgXCJ0ZXh0LXN1YmplY3RcIixcbiAgICAgIGluZm8gdG9kbzogJGNsci1jeWFuLWE3MDAgXCJpbmZvcm1hdGlvblwiLFxuICAgICAgdGlwIGhpbnQgaW1wb3J0YW50OiAkY2xyLXRlYWwtYTcwMCBcImZpcmVcIixcbiAgICAgIHN1Y2Nlc3MgY2hlY2sgZG9uZTogJGNsci1ncmVlbi1hNzAwIFwiY2hlY2stY2lyY2xlXCIsXG4gICAgICBxdWVzdGlvbiBoZWxwIGZhcTogJGNsci1saWdodC1ncmVlbi1hNzAwIFwiaGVscC1jaXJjbGVcIixcbiAgICAgIHdhcm5pbmcgY2F1dGlvbiBhdHRlbnRpb246ICRjbHItb3JhbmdlLWE0MDAgXCJhbGVydFwiLFxuICAgICAgZmFpbHVyZSBmYWlsIG1pc3Npbmc6ICRjbHItcmVkLWEyMDAgXCJjbG9zZS1jaXJjbGVcIixcbiAgICAgIGRhbmdlciBlcnJvcjogJGNsci1yZWQtYTQwMCBcImZsYXNoLWNpcmNsZVwiLFxuICAgICAgYnVnOiAkY2xyLXBpbmstYTQwMCBcImJ1Z1wiLFxuICAgICAgZXhhbXBsZTogJGNsci1kZWVwLXB1cnBsZS1hNDAwIFwiZm9ybWF0LWxpc3QtbnVtYmVyZWRcIixcbiAgICAgIHF1b3RlIGNpdGU6ICRjbHItZ3JleSBcImZvcm1hdC1xdW90ZS1jbG9zZVwiXG4gICAgKSB7XG4gICAgICAkdGludDogbnRoKCRhcHBlYXJhbmNlLCAxKTtcbiAgICAgICRpY29uOiBudGgoJGFwcGVhcmFuY2UsIDIpO1xuXG4gICAgICAvLyBEZWZpbmUgYmFzZSBjbGFzc1xuICAgICAgJiUje250aCgkbmFtZXMsIDEpfSxcbiAgICAgICYuI3tudGgoJG5hbWVzLCAxKX0ge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHRpbnQ7XG5cbiAgICAgICAgLy8gVGl0bGVcbiAgICAgICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR0aW50LCAwLjkpO1xuXG4gICAgICAgICAgLy8gSWNvblxuICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGludDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcInt7ICN7JGljb259IH19XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEZWZpbmUgc3lub255bXMgZm9yIGJhc2UgY2xhc3NcbiAgICAgIEBpZiBsZW5ndGgoJG5hbWVzKSA+IDEge1xuICAgICAgICBAZm9yICRuIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkbmFtZXMpIHtcbiAgICAgICAgICAmLiN7bnRoKCRuYW1lcywgJG4pfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICUje250aCgkbmFtZXMsIDEpfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBZG1vbml0aW9uIHRpdGxlXG4gIC5hZG1vbml0aW9uLXRpdGxlIHtcbiAgICBtYXJnaW46IDAgcHgycmVtKC0xMnB4KTtcbiAgICBwYWRkaW5nOiBweDJyZW0oOHB4KSBweDJyZW0oMTJweCkgcHgycmVtKDhweCkgcHgycmVtKDQwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRjbHItYmx1ZS1hMjAwLCAwLjkpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIHBhZGRpbmc6IHB4MnJlbSg4cHgpIHB4MnJlbSg0MHB4KSBweDJyZW0oOHB4KSBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgc3BhY2luZywgaWYgdGl0bGUgaXMgdGhlIG9ubHkgZWxlbWVudFxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC8vIEljb25cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IHB4MnJlbSgyMHB4KTtcbiAgICAgIGhlaWdodDogcHgycmVtKDIwcHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMjhweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2xyLWJsdWUtYTIwMDtcbiAgICAgIG1hc2staW1hZ2U6IHVybChcInt7IHBlbmNpbCB9fVwiKTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKC0yOHB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIE9wZXJhdG9yc1xuJGNvZGVoaWxpdGUtb3BlcmF0b3I6IGluaGVyaXQ7XG4kY29kZWhpbGl0ZS1vcGVyYXRvci13b3JkOiBpbmhlcml0O1xuXG4vLyBHZW5lcmljc1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1lbXBoOiAjMDAwMDAwO1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1lcnJvcjogI0FBMDAwMDtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtaGVhZGluZzogIzk5OTk5OTtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtb3V0cHV0OiAjODg4ODg4O1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1wcm9tcHQ6ICM1NTU1NTU7XG4kY29kZWhpbGl0ZS1nZW5lcmljLXN0cm9uZzogaW5oZXJpdDtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtc3ViaGVhZGluZzogI0FBQUFBQTtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtdHJhY2ViYWNrOiAjQUEwMDAwO1xuXG4vLyBEaWZmc1xuJGNvZGVoaWxpdGUtZGlmZi1kZWxldGVkOiAjRkZEREREO1xuJGNvZGVoaWxpdGUtZGlmZi1pbnNlcnRlZDogI0RERkZERDtcblxuLy8gS2V5d29yZHNcbiRjb2RlaGlsaXRlLWtleXdvcmQ6ICMzQjc4RTc7XG4kY29kZWhpbGl0ZS1rZXl3b3JkLWNvbnN0YW50OiAjQTcxRDVEO1xuJGNvZGVoaWxpdGUta2V5d29yZC1kZWNsYXJhdGlvbjogIzNCNzhFNztcbiRjb2RlaGlsaXRlLWtleXdvcmQtbmFtZXNwYWNlOiAjM0I3OEU3O1xuJGNvZGVoaWxpdGUta2V5d29yZC1wc2V1ZG86ICNBNzFENUQ7XG4kY29kZWhpbGl0ZS1rZXl3b3JkLXJlc2VydmVkOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUta2V5d29yZC10eXBlOiAjM0U2MUEyO1xuXG4vLyBDb21tZW50c1xuJGNvZGVoaWxpdGUtY29tbWVudDogIzk5OTk5OTtcbiRjb2RlaGlsaXRlLWNvbW1lbnQtbXVsdGlsaW5lOiAjOTk5OTk5O1xuJGNvZGVoaWxpdGUtY29tbWVudC1wcmVwcm9jOiAjNjY2NjY2O1xuJGNvZGVoaWxpdGUtY29tbWVudC1zaW5nbGU6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1jb21tZW50LXNoZWJhbmc6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1jb21tZW50LXNwZWNpYWw6ICM5OTk5OTk7XG5cbi8vIE5hbWVzXG4kY29kZWhpbGl0ZS1uYW1lLWF0dHJpYnV0ZTogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbjogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbi1wc2V1ZG86ICMzRTYxQTI7XG4kY29kZWhpbGl0ZS1uYW1lLWNsYXNzOiAjQzIxODVCO1xuJGNvZGVoaWxpdGUtbmFtZS1jb25zdGFudDogIzNFNjFBMjtcbiRjb2RlaGlsaXRlLW5hbWUtZGVjb3JhdG9yOiAjNjY2NjY2O1xuJGNvZGVoaWxpdGUtbmFtZS1lbnRpdHk6ICM2NjY2NjY7XG4kY29kZWhpbGl0ZS1uYW1lLWV4Y2VwdGlvbjogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtZnVuY3Rpb246ICNDMjE4NUI7XG4kY29kZWhpbGl0ZS1uYW1lLWxhYmVsOiAjM0I1MTc5O1xuJGNvZGVoaWxpdGUtbmFtZS1uYW1lc3BhY2U6ICNFQzQwN0E7XG4kY29kZWhpbGl0ZS1uYW1lLXRhZzogIzNCNzhFNztcbiRjb2RlaGlsaXRlLW5hbWUtdmFyaWFibGU6ICMzRTYxQTI7XG4kY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWNsYXNzOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUtbmFtZS12YXJpYWJsZS1pbnN0YW5jZTogIzNFNjFBMjtcbiRjb2RlaGlsaXRlLW5hbWUtdmFyaWFibGUtZ2xvYmFsOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUtbmFtZS1leHRlbnNpb246ICNFQzQwN0E7XG5cbi8vIE51bWJlcnNcbiRjb2RlaGlsaXRlLWxpdGVyYWwtbnVtYmVyOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItZmxvYXQ6ICNFNzRDM0M7XG4kY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1oZXg6ICNFNzRDM0M7XG4kY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1pbnRlZ2VyOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlci1sb25nOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItb2N0OiAjRTc0QzNDO1xuXG4vLyBTdHJpbmdzXG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZzogIzBEOTA0RjtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWJhY2t0aWNrczogIzBEOTA0RjtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWNoYXI6ICMwRDkwNEY7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb2M6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb3VibGU6ICMwRDkwNEY7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1lc2NhcGU6ICMxODM2OTE7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1oZXJlZG9jOiAjMTgzNjkxO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctaW50ZXJwb2w6ICMxODM2OTE7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1vdGhlcjogIzE4MzY5MTtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXJlZ2V4OiAjMDA5OTI2O1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctc2luZ2xlOiAjMEQ5MDRGO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctc3ltYm9sOiAjMEQ5MDRGO1xuXG4vLyBNaXNjZWxsYW5lb3VzXG4kY29kZWhpbGl0ZS1lcnJvcjogI0E2MTcxNztcbiRjb2RlaGlsaXRlLXdoaXRlc3BhY2U6IHRyYW5zcGFyZW50O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogc3ludGF4IGhpZ2hsaWdodGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb2RlaGlsaXRlIGV4dGVuc2lvblxuLmNvZGVoaWxpdGUge1xuXG4gIC8vIE9wZXJhdG9yc1xuICAubyAgeyBjb2xvcjogJGNvZGVoaWxpdGUtb3BlcmF0b3I7IH1cbiAgLm93IHsgY29sb3I6ICRjb2RlaGlsaXRlLW9wZXJhdG9yLXdvcmQ7IH1cblxuICAvLyBHZW5lcmljc1xuICAuZ2UgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy1lbXBoOyB9XG4gIC5nciB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLWVycm9yOyB9XG4gIC5naCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLWhlYWRpbmc7IH1cbiAgLmdvIHsgY29sb3I6ICRjb2RlaGlsaXRlLWdlbmVyaWMtb3V0cHV0OyB9XG4gIC5ncCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLXByb21wdDsgfVxuICAuZ3MgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy1zdHJvbmc7IH1cbiAgLmd1IHsgY29sb3I6ICRjb2RlaGlsaXRlLWdlbmVyaWMtc3ViaGVhZGluZzsgfVxuICAuZ3QgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy10cmFjZWJhY2s7IH1cblxuICAvLyBEaWZmc1xuICAuZ2QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZWhpbGl0ZS1kaWZmLWRlbGV0ZWQ7IH1cbiAgLmdpIHsgYmFja2dyb3VuZC1jb2xvcjogJGNvZGVoaWxpdGUtZGlmZi1pbnNlcnRlZDsgfVxuXG4gIC8vIEtleXdvcmRzXG4gIC5rICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkOyB9XG4gIC5rYyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLWNvbnN0YW50OyB9XG4gIC5rZCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLWRlY2xhcmF0aW9uOyB9XG4gIC5rbiB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLW5hbWVzcGFjZTsgfVxuICAua3AgeyBjb2xvcjogJGNvZGVoaWxpdGUta2V5d29yZC1wc2V1ZG87IH1cbiAgLmtyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWtleXdvcmQtcmVzZXJ2ZWQ7IH1cbiAgLmt0IHsgY29sb3I6ICRjb2RlaGlsaXRlLWtleXdvcmQtdHlwZTsgfVxuXG4gIC8vIENvbW1lbnRzXG4gIC5jICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50OyB9XG4gIC5jbSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LW11bHRpbGluZTsgfVxuICAuY3AgeyBjb2xvcjogJGNvZGVoaWxpdGUtY29tbWVudC1wcmVwcm9jOyB9XG4gIC5jMSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LXNpbmdsZTsgfVxuICAuY2ggeyBjb2xvcjogJGNvZGVoaWxpdGUtY29tbWVudC1zaGViYW5nOyB9XG4gIC5jcyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LXNwZWNpYWw7IH1cblxuICAvLyBOYW1lc1xuICAubmEgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1hdHRyaWJ1dGU7IH1cbiAgLm5iIHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbjsgfVxuICAuYnAgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1idWlsdGluLXBzZXVkbzsgfVxuICAubmMgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1jbGFzczsgfVxuICAubm8geyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1jb25zdGFudDsgfVxuICAubmQgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1lbnRpdHk7IH1cbiAgLm5pIHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtZW50aXR5OyB9XG4gIC5uZSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLWV4Y2VwdGlvbjsgfVxuICAubmYgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1mdW5jdGlvbjsgfVxuICAubmwgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1sYWJlbDsgfVxuICAubm4geyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1uYW1lc3BhY2U7IH1cbiAgLm50IHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtdGFnOyB9XG4gIC5udiB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlOyB9XG4gIC52YyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWNsYXNzOyB9XG4gIC52ZyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWdsb2JhbDsgfVxuICAudmkgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS12YXJpYWJsZS1pbnN0YW5jZTsgfVxuICAubnggeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1leHRlbnNpb247IH1cblxuICAvLyBOdW1iZXJzXG4gIC5tICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlcjsgfVxuICAubWYgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItZmxvYXQ7IH1cbiAgLm1oIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtbnVtYmVyLWhleDsgfVxuICAubWkgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlcjsgfVxuICAuaWwgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlci1sb25nOyB9XG4gIC5tbyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1vY3Q7IH1cblxuICAvLyBTdHJpbmdzXG4gIC5zICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZzsgfVxuICAuc2IgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctYmFja3RpY2tzOyB9XG4gIC5zYyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1jaGFyOyB9XG4gIC5zZCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb2M7IH1cbiAgLnMyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWRvdWJsZTsgfVxuICAuc2UgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctZXNjYXBlOyB9XG4gIC5zaCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1oZXJlZG9jOyB9XG4gIC5zaSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1pbnRlcnBvbDsgfVxuICAuc3ggeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctb3RoZXI7IH1cbiAgLnNyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXJlZ2V4OyB9XG4gIC5zMSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1zaW5nbGU7IH1cbiAgLnNzIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXN5bWJvbDsgfVxuXG4gIC8vIE1pc2NlbGxhbmVvdXNcbiAgLmVyciB7IGNvbG9yOiAkY29kZWhpbGl0ZS1lcnJvcjsgfVxuICAudyB7IGNvbG9yOiAkY29kZWhpbGl0ZS13aGl0ZXNwYWNlOyB9XG5cbiAgLy8gSGlnaGxpZ2h0ZWQgbGluZXNcbiAgLmhsbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIHB4MnJlbSgtMTJweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpO1xuXG4gICAgLy8gW21vYmlsZSAtXTogU3RyZXRjaCB0byB3aG9sZSB3aWR0aFxuICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcbiAgICAgIG1hcmdpbjogMCBweDJyZW0oLTE2cHgpO1xuICAgICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiBsYXlvdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQmxvY2sgd2l0aCBsaW5lIG51bWJlcnNcbi5jb2RlaGlsaXRldGFibGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBTZXQgdGFibGUgZWxlbWVudHMgdG8gYmxvY2sgbGF5b3V0LCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgd2hvbGUgZmxleGJveFxuICAvLyBoYWNraW5nIHdvbid0IHdvcmsgY29ycmVjdGx5XG4gIHRib2R5LFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gdXNlIGZsZXhib3ggbGF5b3V0LCBiZWNhdXNlIG90aGVyd2lzZSBpdCdzIG5vdCBwb3NzaWJsZSB0b1xuICAvLyBtYWtlIHRoZSBjb2RlIGNvbnRhaW5lciBzY3JvbGwgd2hpbGUga2VlcGluZyB0aGUgbGluZSBudW1iZXJzIHN0YXRpY1xuICB0ciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC8vIFRoZSBwcmUgdGFncyBhcmUgbmVzdGVkIGluc2lkZSBhIHRhYmxlLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGVcbiAgLy8gbWFyZ2luIGJlY2F1c2UgaXQgY29sbGFwc2VzIGJlbG93IGFsbCB0aGUgb3ZlcmZsb3dzXG4gIHByZSxcbiAgLmxpbmVub2RpdiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cblxuICAvLyBBZGQgc3BhY2luZyB0byBsaW5lIG51bWJlciBjb250YWluZXJcbiAgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogcHgycmVtKDEwLjVweCkgcHgycmVtKDEycHgpO1xuICB9XG5cbiAgLy8gRGlzYWJsZSB1c2VyIHNlbGVjdGlvbiwgc28gY29kZSBjYW4gYmUgZWFzaWx5IGNvcGllZCB3aXRob3V0XG4gIC8vIGFjY2lkZW50YWxseSBhbHNvIGNvcHlpbmcgdGhlIGxpbmUgbnVtYmVyc1xuICAubGluZW5vcyB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIHB4MnJlbSgxcHgpIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgLy8gUmVzZXQgc3BhY2luZ3NcbiAgICBwcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSB0YWJsZSBjZWxsIGNvbnRhaW5pbmcgdGhlIGNvZGUgY29udGFpbmVyIHdyYXBwZXIgYW5kIGNvZGUgc2hvdWxkXG4gIC8vIHN0cmV0Y2ggaG9yaXpvbnRhbGx5IHRvIHRoZSByZW1haW5pbmcgc3BhY2VcbiAgLmNvZGUge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIEJsb2NrIHdpdGggbGluZSBudW1iZXJzXG4gID4gLmNvZGVoaWxpdGV0YWJsZSB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjJlbTtcbiAgfVxuXG4gIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuXG4gICAgLy8gRnVsbC13aWR0aCBjb250YWluZXJcbiAgICA+IC5jb2RlaGlsaXRlIHtcbiAgICAgIG1hcmdpbjogMWVtIHB4MnJlbSgtMTZweCk7XG5cbiAgICAgIC8vIEFjdHVhbCBjb250YWluZXIgd2l0aCBjb2RlLCBvdmVyZmxvd2luZ1xuICAgICAgY29kZSB7XG4gICAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMC41cHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGdWxsLXdpZHRoIGNvbnRhaW5lciBvbiB0b3AtbGV2ZWxcbiAgICA+IC5jb2RlaGlsaXRldGFibGUge1xuICAgICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgIC8vIEluY3JlYXNlIHNwYWNpbmdcbiAgICAgIC5saW5lbm9kaXYge1xuICAgICAgICBwYWRkaW5nOiBweDJyZW0oMTBweCkgcHgycmVtKDE2cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gQWxsIGZvb3Rub3RlIHJlZmVyZW5jZXNcbiAgW2lkXj1cImZucmVmOlwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLy8gVGFyZ2V0ZWQgYW5jaG9yXG4gICAgJjp0YXJnZXQge1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oNDhweCArIDEycHggKyAxNnB4KTtcbiAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAxNnB4KTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFsbCBmb290bm90ZSBiYWNrIHJlZmVyZW5jZXNcbiAgW2lkXj1cImZuOlwiXSB7XG5cbiAgICAvLyBBZGQgc3BhY2luZyB0byBhbmNob3IgZm9yIG9mZnNldFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG5cbiAgICAvLyBUYXJnZXRlZCBhbmNob3JcbiAgICAmOnRhcmdldDo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oNDhweCArIDEycHggKyAxMHB4KTtcbiAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAxMHB4KTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvb3Rub3RlcyBleHRlbnNpb25cbiAgLmZvb3Rub3RlIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuXG4gICAgLy8gUmVtb3ZlIGFkZGl0aW9uYWwgc3BhY2luZyBvbiBmb290bm90ZXNcbiAgICBvbCB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAvLyBGb290bm90ZVxuICAgIGxpIHtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xuXG4gICAgICAvLyBEYXJrZW4gY29sb3IgZm9yIHRhcmdldGVkIGZvb3Rub3RlXG4gICAgICAmOnRhcmdldCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHNwYWNpbmcgb24gZmlyc3QgZWxlbWVudFxuICAgICAgOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gTWFrZSBiYWNrIHJlZmVyZW5jZXMgdmlzaWJsZSBvbiBob3ZlclxuICAgICAgJjpob3ZlciAgLmZvb3Rub3RlLWJhY2tyZWYsXG4gICAgICAmOnRhcmdldCAuZm9vdG5vdGUtYmFja3JlZiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLy8gQWN0aXZlIG9yIHRhcmdldGVkIGJhY2sgcmVmZXJlbmNlXG4gICAgICAmOmhvdmVyICAuZm9vdG5vdGUtYmFja3JlZjpob3ZlcixcbiAgICAgICY6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRm9vdG5vdGUgcmVmZXJlbmNlXG4gIC5mb290bm90ZS1yZWYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcblxuICAgIC8vIFJlbmRlciBhIHRoaW4gbGluZSBiZWZvcmUgZm9vdG5vdGVcbiAgICAmOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgbWFyZ2luOiAwIDAuMmVtO1xuICAgICAgYm9yZGVyLWxlZnQ6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgdmVydGljYWwtYWxpZ246IHB4MnJlbSgtNXB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBGb290bm90ZSBiYWNrIHJlZmVyZW5jZVxuICAuZm9vdG5vdGUtYmFja3JlZiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oNXB4KSk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSAyNTBtcyAyNTBtcyxcbiAgICAgIGNvbG9yICAgICAyNTBtcyxcbiAgICAgIG9wYWNpdHkgICAxMjVtcyAyNTBtcztcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gICAgLy8gSGFjazogcmVtb3ZlIFVuaWNvZGUgYXJyb3cgZm9yIGljb25cbiAgICBmb250LXNpemU6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oLTVweCkpO1xuICAgIH1cblxuICAgIC8vIEJhY2sgcmVmZXJlbmNlIGljb25cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6IHB4MnJlbSgxNnB4KTtcbiAgICAgIGhlaWdodDogcHgycmVtKDE2cHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sga2V5Ym9hcmQtcmV0dXJuIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcblxuICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gU2NvcGVkIGluIHR5cGVzZXR0ZWQgY29udGVudCB0byBtYXRjaCBzcGVjaWZpY2l0eSBvZiByZWd1bGFyIGNvbnRlbnRcbi5tZC10eXBlc2V0IHtcblxuICAvLyBQZXJtYWxpbmtzIGV4dGVuc2lvblxuICAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMTBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgcHgycmVtKDVweCkpO1xuICAgIHRyYW5zaXRpb246XG4gICAgICB0cmFuc2Zvcm0gIDI1MG1zIDI1MG1zLFxuICAgICAgY29sb3IgICAgICAyNTBtcyxcbiAgICAgIG9wYWNpdHkgICAgMTI1bXMgMjUwbXMsXG4gICAgICB2aXNpYmlsaXR5ICAgMG1zIDUwMG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLy8gSGFjazogSWYgd2UgZG9uJ3Qgc2V0IHZpc2liaWxpdHkgaGlkZGVuLCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBub2RlXG4gICAgLy8gd2lsbCBpbmNsdWRlIHRoZSBoZWFkZXJsaW5rIGNoYXJhY3Rlciwgd2hpY2ggaXMgd2h5IEdvb2dsZSBpbmRleGVzIHRoZW0uXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgLy8gQWRqdXN0IGZvciBSVEwgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDEwcHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgfVxuXG4gICAgLy8gSGlnaGVyIHNwZWNpZmljaXR5IGZvciBjb2xvciBkdWUgdG8gcGFsZXR0ZXMgaW50ZWdyYXRpb25cbiAgICBodG1sIGJvZHkgJiB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBNYWtlIHBlcm1hbGluayB2aXNpYmxlIG9uIGhvdmVyXG4gIDpob3ZlciAgLmhlYWRlcmxpbmssXG4gIDp0YXJnZXQgLmhlYWRlcmxpbmssXG4gIC5oZWFkZXJsaW5rOmZvY3VzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtICAyNTBtcyAyNTBtcyxcbiAgICAgIGNvbG9yICAgICAgMjUwbXMsXG4gICAgICBvcGFjaXR5ICAgIDEyNW1zIDI1MG1zLFxuICAgICAgdmlzaWJpbGl0eSAgIDBtcztcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAvLyBBY3RpdmUgb3IgdGFyZ2V0ZWQgcGVybWFsaW5rXG4gIC5oZWFkZXJsaW5rOmZvY3VzLFxuICAuaGVhZGVybGluazpob3ZlcixcbiAgOnRhcmdldCAuaGVhZGVybGluayB7XG4gICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIH1cblxuICAvLyBDb3JyZWN0IGFuY2hvciBvZmZzZXQgZm9yIGxpbmsgYmx1cnJpbmdcbiAgQGVhY2ggJGxldmVsLCAkZGVsdGEgaW4gKFxuICAgIGgxIGgyIGgzOiA4cHgsXG4gICAgaDQ6IDlweCxcbiAgICBoNSBoNjogMTJweCxcbiAgKSB7XG4gICAgJSN7bnRoKCRsZXZlbCwgMSl9IHtcblxuICAgICAgLy8gVW4tdGFyZ2V0ZWQgYW5jaG9yXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oJGRlbHRhKTtcbiAgICAgICAgcGFkZGluZy10b3A6IHB4MnJlbSgkZGVsdGEpO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgfVxuXG4gICAgICAvLyBUYXJnZXRlZCBhbmNob3IgKDQ4cHggZnJvbSBoZWFkZXIsIDEycHggZnJvbSBzaWRlYmFyIG9mZnNldClcbiAgICAgICY6dGFyZ2V0OjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMSAqIHB4MnJlbSg0OHB4ICsgMTJweCArICRkZWx0YSk7XG4gICAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAkZGVsdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlZmluZSBsZXZlbHNcbiAgICBAZm9yICRuIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGV2ZWwpIHtcbiAgICAgICN7bnRoKCRsZXZlbCwgJG4pfVtpZF0ge1xuICAgICAgICBAZXh0ZW5kICUje250aCgkbGV2ZWwsIDEpfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gTWF0aEpheCBpbnRlZ3JhdGlvbiAtIGFkZCBwYWRkaW5nIHRvIG9taXQgdmVydGljYWwgc2Nyb2xsYmFyXG4gIC5NSlhjLWRpc3BsYXkge1xuICAgIG1hcmdpbjogMC43NWVtIDA7XG4gICAgcGFkZGluZzogMC43NWVtIDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG5cbiAgLy8gU3RyZXRjaCB0b3AtbGV2ZWwgY29udGFpbmVyc1xuICA+IHAgPiAuTUpYYy1kaXNwbGF5IHtcblxuICAgIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UobW9iaWxlKSB7XG4gICAgICBtYXJnaW46IDAuNzVlbSBweDJyZW0oLTE2cHgpO1xuICAgICAgcGFkZGluZzogMC4yNWVtIHB4MnJlbSgxNnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgb3V0bGluZSBvbiB0YWIgaW5kZXhcbiAgLk1hdGhKYXhfQ0hUTUwge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIERlbGV0aW9ucywgYWRkaXRpb25zIGFuZCBjb21tZW50c1xuICBkZWwuY3JpdGljLFxuICBpbnMuY3JpdGljLFxuICAuY3JpdGljLmNvbW1lbnQge1xuICAgIG1hcmdpbjogMCAwLjI1ZW07XG4gICAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG4gIH1cblxuICAvLyBEZWxldGlvblxuICBkZWwuY3JpdGljIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZWhpbGl0ZS1kaWZmLWRlbGV0ZWQ7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgICswLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtZGVsZXRlZCxcbiAgICAgIC0wLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtZGVsZXRlZDtcbiAgfVxuXG4gIC8vIEFkZGl0aW9uXG4gIGlucy5jcml0aWMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlaGlsaXRlLWRpZmYtaW5zZXJ0ZWQ7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgICswLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtaW5zZXJ0ZWQsXG4gICAgICAtMC4yNWVtIDAgMCAkY29kZWhpbGl0ZS1kaWZmLWluc2VydGVkO1xuICB9XG5cbiAgLy8gQ29tbWVudFxuICAuY3JpdGljLmNvbW1lbnQge1xuICAgIGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50O1xuXG4gICAgLy8gQ29tbWVudCBvcGVuaW5nIG1hcmtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCIvKiBcIjtcbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGNsb3NpbmcgbWFya1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiICovXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2tcbiAgLmNyaXRpYy5ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTZweCk7XG4gICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oMTZweCk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC8vIERlY3JlYXNlIHNwYWNpbmcgb24gZmlyc3QgZWxlbWVudFxuICAgIDpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICB9XG5cbiAgICAvLyBEZWNyZWFzZSBzcGFjaW5nIG9uIGxhc3QgZWxlbWVudFxuICAgIDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gRGV0YWlscyBleHRlbnNpb25cbiAgZGV0YWlscyB7XG4gICAgQGV4dGVuZCAuYWRtb25pdGlvbjtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgLy8gUm90YXRlIHRpdGxlIGljb25cbiAgICAmW29wZW5dID4gc3VtbWFyeTo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgYm90dG9tIHNwYWNpbmdcbiAgICAmOm5vdChbb3Blbl0pIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG4gICAgICAvLyBSZW1vdmUgYm90dG9tIGJvcmRlciBpZiBibG9jayBpcyBjbG9zZWRcbiAgICAgID4gc3VtbWFyeSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2Ugc3BhY2luZyB0byB0aGUgcmlnaHQgLSBzY29wZWQgaGVyZSBmb3IgaGlnaGVyIHNwZWNpZmljaXR5XG4gICAgc3VtbWFyeSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDBweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQwcHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRpdGxlXG4gIHN1bW1hcnkge1xuICAgIEBleHRlbmQgLmFkbW9uaXRpb24tdGl0bGU7XG5cbiAgICAvLyBIYWNrOiBzZXQgdG8gYmxvY2ssIHNvIEZpcmVmb3ggZG9lc24ndCByZW5kZXIgbWFya2VyXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAvLyBSZW1vdmUgZGVmYXVsdCBkZXRhaWxzIG1hcmtlclxuICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBJY29uXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIHdpZHRoOiBweDJyZW0oMjBweCk7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgyMHB4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hldnJvbi1kb3duIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcmlnaHQ6IGluaXRpYWw7XG4gICAgICAgIGxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIENvcnJlY3QgYWxpZ25tZW50IG9mIGVtb2ppc1xuICAuZW1vamlvbmUsXG4gIC50d2Vtb2ppLFxuICAuZ2Vtb2ppIHtcbiAgICB3aWR0aDogcHgycmVtKDIwcHgpO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFdoZW4gcHltZG93bnguc3VwZXJmZW5jZXMgaXMgZW5hYmxlZCBidXQgY29kZWhpbGl0ZSBpcyBkaXNhYmxlZCxcbi8vIHB5bWRvd254LmhpZ2hsaWdodCB3aWxsIGJlIHVzZWQuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgb3V0ZXIgY29udGFpbmVyXG4vLyBhbmQgdGFibGVzIGdldCB0aGlzIGNsYXNzIG5hbWVzIGJ5IGRlZmF1bHRcbi5oaWdobGlnaHQge1xuICBAZXh0ZW5kIC5jb2RlaGlsaXRlO1xuXG4gIC8vIElubGluZSBsaW5lIG51bWJlcnNcbiAgW2RhdGEtbGluZW5vc10ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgbGVmdDogcHgycmVtKC0xMnB4KTtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDEycHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMTJweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIGJvcmRlci1yaWdodDogcHgycmVtKDFweCkgc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgY29udGVudDogYXR0cihkYXRhLWxpbmVub3MpO1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcbiAgICAgICAgbGVmdDogcHgycmVtKC0zMnB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMzJweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDMycHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTYW1lIGFzIGFib3ZlLCBidXQgZm9yIGNvZGUgYmxvY2tzIHdpdGggbGluZSBudW1iZXJzIGVuYWJsZWRcbi5oaWdobGlnaHR0YWJsZSB7XG4gIEBleHRlbmQgLmNvZGVoaWxpdGV0YWJsZTtcbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIFF1YWxpZmllZCBjbGFzcyBzZWxlY3RvciB0byBkaXN0aW5ndWlzaCBpbmxpbmUgY29kZSBmcm9tIGNvZGUgYmxvY2tzXG4gIGNvZGUuY29kZWhpbGl0ZSB7XG4gICAgJGNvcnJlY3Q6IDEgLyAwLjg1O1xuXG4gICAgbWFyZ2luOiAwIDAuMjVlbSAqICRjb3JyZWN0O1xuICAgIHBhZGRpbmc6IDAuMDYyNWVtICogJGNvcnJlY3QgMDtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gVGFiYmVkIGNvZGUgYmxvY2sgY29udGVudFxuICAudGFiYmVkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgb3JkZXI6IDk5O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuXG4gICAgLy8gQWN0dWFsIGNvbnRlbnRcbiAgICBwcmUge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogMFxuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmJlZCBjb2RlIGJsb2NrIGNvbnRhaW5lclxuICAudGFiYmVkLXNldCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIG1hcmdpbjogMWVtIDA7XG4gICAgYm9yZGVyOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG5cbiAgICAvLyBIaWRlIHJhZGlvIGJ1dHRvbnNcbiAgICA+IGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIC8vIEFjdGl2ZSB0YWIgbGFiZWxcbiAgICAgICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcblxuICAgICAgICAvLyBTaG93IGNvZGUgdGFiIGNvbnRlbnRcbiAgICAgICAgJiArIC50YWJiZWQtY29udGVudCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3Qgc3BhY2luZyBvbiBsYXN0IGVsZW1lbnRcbiAgICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHB4MnJlbSgxMnB4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbXVsYXRlIG9yaWdpbmFsIHB5bWRvd254LnN1cGVyZmVuY2VzIGJlaGF2aW9yIGFuZCBzdHJldGNoIHRvIGZ1bGxcbiAgICAgICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gYSBjb2RlIGJsb2NrIGlzIHRoZSBvbmx5IGNoaWxkIG9mIGEgdGFiXG4gICAgICAgICAgPiB7XG4gICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAuaGlnaGxpZ2h0LFxuICAgICAgICAgICAgLmhpZ2hsaWdodHRhYmxlLFxuICAgICAgICAgICAgLmNvZGVoaWxpdGUsXG4gICAgICAgICAgICAuY29kZWhpbGl0ZXRhYmxlIHtcbiAgICAgICAgICAgICAgJjpvbmx5LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgcHgycmVtKC0xMnB4KTtcblxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBkb3VibGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIHByZSB7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWIgbGFiZWxcbiAgICA+IGxhYmVsIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpO1xuICAgICAgcGFkZGluZy1ib3R0b206IHB4MnJlbSgxMHB4KTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIGNvbG9yIDEyNW1zLFxuICAgICAgICBib3JkZXIgMjUwbXM7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMnB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIC8vIEhvdmVyZWQgdGFiIGxhYmVsXG4gICAgICBodG1sICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGdWxsLXdpZHRoIGNvbnRhaW5lciBvbiB0b3AtbGV2ZWxcbiAgPiAudGFiYmVkLXNldCB7XG5cbiAgICAvLyBbbW9iaWxlIC1dOiBTdHJldGNoIHRvIHdob2xlIHdpZHRoXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgIC8vIEFjdHVhbCBjb250YWluZXIgd2l0aCBjb2RlLCBvdmVyZmxvd2luZ1xuICAgICAgY29kZSB7XG4gICAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMC41cHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIH1cblxuICAgICAgLy8gRmlyc3QgdGFiIGxhYmVsXG4gICAgICBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSg0cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gUmVtb3ZlIGxpc3QgaWNvbiBvbiB0YXNrIGl0ZW1zXG4gIC50YXNrLWxpc3QtaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAgIC8vIE1ha2UgY2hlY2tib3ggaXRlbXMgYWxpZ24gd2l0aCBub3JtYWwgbGlzdCBpdGVtcywgYnV0IHBvc2l0aW9uXG4gICAgLy8gZXZlcnl0aGluZyBpbiBlbXMgZm9yIGNvcnJlY3QgbGF5b3V0IGF0IHNtYWxsZXIgZm9udCBzaXplc1xuICAgIFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjQ1ZW07XG4gICAgICBsZWZ0OiAtMmVtO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogLTJlbTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBXcmFwcGVyIGZvciBsaXN0IGNvbnRyb2xzLCBpbiBjYXNlIGN1c3RvbSBjaGVja2JveGVzIGFyZSBlbmFibGVkXG4gIC50YXNrLWxpc3QtY29udHJvbCB7XG5cbiAgICAvLyBDaGVja2JveCBpY29uIGluIHVuY2hlY2tlZCBzdGF0ZVxuICAgIC50YXNrLWxpc3QtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjE1ZW07XG4gICAgICBsZWZ0OiBweDJlbSgtMjRweCk7XG4gICAgICB3aWR0aDogcHgyZW0oMjBweCk7XG4gICAgICBoZWlnaHQ6IHB4MmVtKDIwcHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2tib3gtYmxhbmstY2lyY2xlIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcmlnaHQ6IHB4MmVtKC0yNHB4KTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVja2JveCBpY29uIGluIGNoZWNrZWQgc3RhdGVcbiAgICBbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjbHItZ3JlZW4tYTQwMDtcbiAgICAgIG1hc2staW1hZ2U6IHVybChcInt7IGNoZWNrLWNpcmNsZSB9fVwiKTtcbiAgICB9XG5cbiAgICAvLyBIaWRlIG9yaWdpbmFsIGNoZWNrYm94IGJlaGluZCBpY29uXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vL1xuLy8vIERldmljZS1zcGVjaWZpYyBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgICRicmVhay1kZXZpY2VzOiAoXG4vLy8gICAgIG1vYmlsZTogKFxuLy8vICAgICAgIHBvcnRyYWl0OiAgMjIwcHggIDQ3OXB4LFxuLy8vICAgICAgIGxhbmRzY2FwZTogNDgwcHggIDcxOXB4XG4vLy8gICAgICksXG4vLy8gICAgIHRhYmxldDogKFxuLy8vICAgICAgIHBvcnRyYWl0OiAgNzIwcHggIDk1OXB4LFxuLy8vICAgICAgIGxhbmRzY2FwZTogOTYwcHggIDEyMTlweFxuLy8vICAgICApLFxuLy8vICAgICBzY3JlZW46IChcbi8vLyAgICAgICBzbWFsbDogICAgIDEyMjBweCAxNTk5cHgsXG4vLy8gICAgICAgbWVkaXVtOiAgICAxNjAwcHggMTk5OXB4LFxuLy8vICAgICAgIGxhcmdlOiAgICAgMjAwMHB4XG4vLy8gICAgIClcbi8vLyAgICk7XG4vLy9cbiRicmVhay1kZXZpY2VzOiAoKSAhZGVmYXVsdDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy9cbi8vLyBDaG9vc2UgbWluaW11bSBhbmQgbWF4aW11bSBkZXZpY2Ugd2lkdGhzXG4vLy9cbkBmdW5jdGlvbiBicmVhay1zZWxlY3QtbWluLW1heCgkZGV2aWNlcykge1xuICAkbWluOiAxMDAwMDAwO1xuICAkbWF4OiAwO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGRldmljZXMge1xuICAgIEB3aGlsZSB0eXBlLW9mKCR2YWx1ZSkgPT0gbWFwIHtcbiAgICAgICR2YWx1ZTogYnJlYWstc2VsZWN0LW1pbi1tYXgoJHZhbHVlKTtcbiAgICB9XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgIEBlYWNoICRudW1iZXIgaW4gJHZhbHVlIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbnVtYmVyIHtcbiAgICAgICAgICAkbWluOiBtaW4oJG51bWJlciwgJG1pbik7XG4gICAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgICAkbWF4OiBtYXgoJG51bWJlciwgJG1heCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAZXJyb3IgXCJJbnZhbGlkIG51bWJlcjogI3skbnVtYmVyfVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICAgICRtaW46IG1pbigkdmFsdWUsICRtaW4pO1xuICAgICAgJG1heDogbnVsbDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgdmFsdWU6ICN7JHZhbHVlfVwiO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRtaW4sICRtYXg7XG59XG5cbi8vL1xuLy8vIFNlbGVjdCBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocyBmb3IgYSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AZnVuY3Rpb24gYnJlYWstc2VsZWN0LWRldmljZSgkZGV2aWNlKSB7XG4gICRjdXJyZW50OiAkYnJlYWstZGV2aWNlcztcbiAgQGZvciAkbiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGRldmljZSkge1xuICAgIEBpZiB0eXBlLW9mKCRjdXJyZW50KSA9PSBtYXAge1xuICAgICAgJGN1cnJlbnQ6IG1hcC1nZXQoJGN1cnJlbnQsIG50aCgkZGV2aWNlLCAkbikpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2UgbWFwOiAjeyRkZXZpY2VzfVwiO1xuICAgIH1cbiAgfVxuICBAaWYgdHlwZS1vZigkY3VycmVudCkgPT0gbGlzdCBvciB0eXBlLW9mKCRjdXJyZW50KSA9PSBudW1iZXIge1xuICAgICRjdXJyZW50OiAoZGVmYXVsdDogJGN1cnJlbnQpO1xuICB9XG4gIEByZXR1cm4gYnJlYWstc2VsZWN0LW1pbi1tYXgoJGN1cnJlbnQpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNaXhpbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vXG4vLy8gQSBtaW5pbXVtLW1heGltdW0gbWVkaWEgcXVlcnkgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstYXQoJGJyZWFrcG9pbnQpIHtcbiAgQGlmIHR5cGUtb2YoJGJyZWFrcG9pbnQpID09IG51bWJlciB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBsaXN0IHtcbiAgICAkbWluOiBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgQGlmIHR5cGUtb2YoJG1pbikgPT0gbnVtYmVyIGFuZCB0eXBlLW9mKCRtYXgpID09IG51bWJlciB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgfVxufVxuXG4vLy9cbi8vLyBBbiBvcmllbnRhdGlvbiBtZWRpYSBxdWVyeSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1vcmllbnRhdGlvbigkYnJlYWtwb2ludCkge1xuICBAaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gc3RyaW5nIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246ICRicmVha3BvaW50KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgfVxufVxuXG4vLy9cbi8vLyBBIG1heGltdW0tYXNwZWN0LXJhdGlvIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0LXJhdGlvKCRicmVha3BvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBudW1iZXIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtYXNwZWN0LXJhdGlvOiAkYnJlYWtwb2ludCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtaW5pbXVtLW1heGltdW0gbWVkaWEgcXVlcnkgZGV2aWNlIGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0LWRldmljZSgkZGV2aWNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IHN0cmluZyB7XG4gICAgJGRldmljZTogJGRldmljZSw7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gbGlzdCB7XG4gICAgJGJyZWFrcG9pbnQ6IGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSk7XG4gICAgQGlmIG50aCgkYnJlYWtwb2ludCwgMikgIT0gbnVsbCB7XG4gICAgICAkbWluOiBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICAgJG1heDogbnRoKCRicmVha3BvaW50LCAyKTtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2U6ICN7JGRldmljZX1cIjtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtaW5pbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1mcm9tLWRldmljZSgkZGV2aWNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IHN0cmluZyB7XG4gICAgJGRldmljZTogJGRldmljZSw7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gbGlzdCB7XG4gICAgJGJyZWFrcG9pbnQ6IGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSk7XG4gICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtYXhpbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay10by1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG4iXX0= */ \ No newline at end of file diff --git a/material/assets/stylesheets/palette.css b/material/assets/stylesheets/palette.css deleted file mode 100644 index 59d6558b4..000000000 --- a/material/assets/stylesheets/palette.css +++ /dev/null @@ -1,290 +0,0 @@ -[data-md-color-primary=red] { - --md-primary-fg-color: hsla(1deg, 83%, 63%, 1); - --md-primary-fg-color--light: hsla(0deg, 73%, 77%, 1); - --md-primary-fg-color--dark: hsla(1deg, 77%, 55%, 1); -} - -[data-md-color-primary=pink] { - --md-primary-fg-color: hsla(340deg, 82%, 52%, 1); - --md-primary-fg-color--light: hsla(340deg, 82%, 76%, 1); - --md-primary-fg-color--dark: hsla(336deg, 78%, 43%, 1); -} - -[data-md-color-primary=purple] { - --md-primary-fg-color: hsla(291deg, 47%, 51%, 1); - --md-primary-fg-color--light: hsla(291deg, 47%, 71%, 1); - --md-primary-fg-color--dark: hsla(287deg, 65%, 40%, 1); -} - -[data-md-color-primary=deep-purple] { - --md-primary-fg-color: hsla(262deg, 47%, 55%, 1); - --md-primary-fg-color--light: hsla(261deg, 46%, 74%, 1); - --md-primary-fg-color--dark: hsla(262deg, 52%, 47%, 1); -} - -[data-md-color-primary=indigo] { - --md-primary-fg-color: hsla(231deg, 48%, 48%, 1); - --md-primary-fg-color--light: hsla(231deg, 44%, 74%, 1); - --md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1); -} - -[data-md-color-primary=blue] { - --md-primary-fg-color: hsla(207deg, 90%, 54%, 1); - --md-primary-fg-color--light: hsla(207deg, 90%, 77%, 1); - --md-primary-fg-color--dark: hsla(210deg, 79%, 46%, 1); -} - -[data-md-color-primary=light-blue] { - --md-primary-fg-color: hsla(199deg, 98%, 48%, 1); - --md-primary-fg-color--light: hsla(199deg, 92%, 74%, 1); - --md-primary-fg-color--dark: hsla(201deg, 98%, 41%, 1); -} - -[data-md-color-primary=cyan] { - --md-primary-fg-color: hsla(187deg, 100%, 42%, 1); - --md-primary-fg-color--light: hsla(187deg, 72%, 71%, 1); - --md-primary-fg-color--dark: hsla(186deg, 100%, 33%, 1); -} - -[data-md-color-primary=teal] { - --md-primary-fg-color: hsla(174deg, 100%, 29%, 1); - --md-primary-fg-color--light: hsla(174deg, 42%, 65%, 1); - --md-primary-fg-color--dark: hsla(173deg, 100%, 24%, 1); -} - -[data-md-color-primary=green] { - --md-primary-fg-color: hsla(122deg, 39%, 49%, 1); - --md-primary-fg-color--light: hsla(122deg, 37%, 74%, 1); - --md-primary-fg-color--dark: hsla(123deg, 43%, 39%, 1); -} - -[data-md-color-primary=light-green] { - --md-primary-fg-color: hsla(88deg, 50%, 53%, 1); - --md-primary-fg-color--light: hsla(88deg, 50%, 76%, 1); - --md-primary-fg-color--dark: hsla(92deg, 48%, 42%, 1); -} - -[data-md-color-primary=lime] { - --md-primary-fg-color: hsla(66deg, 70%, 54%, 1); - --md-primary-fg-color--light: hsla(66deg, 71%, 77%, 1); - --md-primary-fg-color--dark: hsla(62deg, 61%, 44%, 1); - --md-primary-bg-color: var(--md-default-fg-color); - --md-primary-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-primary=yellow] { - --md-primary-fg-color: hsla(54deg, 100%, 67%, 1); - --md-primary-fg-color--light: hsla(54deg, 100%, 81%, 1); - --md-primary-fg-color--dark: hsla(49deg, 98%, 60%, 1); - --md-primary-bg-color: var(--md-default-fg-color); - --md-primary-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-primary=amber] { - --md-primary-fg-color: hsla(45deg, 100%, 51%, 1); - --md-primary-fg-color--light: hsla(45deg, 100%, 75%, 1); - --md-primary-fg-color--dark: hsla(38deg, 100%, 50%, 1); - --md-primary-bg-color: var(--md-default-fg-color); - --md-primary-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-primary=orange] { - --md-primary-fg-color: hsla(36deg, 100%, 57%, 1); - --md-primary-fg-color--light: hsla(36deg, 100%, 75%, 1); - --md-primary-fg-color--dark: hsla(33deg, 100%, 49%, 1); - --md-primary-bg-color: var(--md-default-fg-color); - --md-primary-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-primary=deep-orange] { - --md-primary-fg-color: hsla(14deg, 100%, 63%, 1); - --md-primary-fg-color--light: hsla(14deg, 100%, 78%, 1); - --md-primary-fg-color--dark: hsla(14deg, 91%, 54%, 1); -} - -[data-md-color-primary=brown] { - --md-primary-fg-color: hsla(16deg, 25%, 38%, 1); - --md-primary-fg-color--light: hsla(15deg, 15%, 69%, 1); - --md-primary-fg-color--dark: hsla(14deg, 26%, 29%, 1); -} - -[data-md-color-primary=grey] { - --md-primary-fg-color: hsla(0deg, 0%, 46%, 1); - --md-primary-fg-color--light: hsla(0deg, 0%, 93%, 1); - --md-primary-fg-color--dark: hsla(0deg, 0%, 38%, 1); -} - -[data-md-color-primary=blue-grey] { - --md-primary-fg-color: hsla(199deg, 18%, 40%, 1); - --md-primary-fg-color--light: hsla(200deg, 15%, 73%, 1); - --md-primary-fg-color--dark: hsla(199deg, 18%, 33%, 1); -} - -[data-md-color-primary=white] .md-header { - background-color: var(--md-default-bg-color); - color: var(--md-default-fg-color); -} -[data-md-color-primary=white] .md-hero { - background-color: var(--md-default-bg-color); - color: var(--md-default-fg-color); -} -[data-md-color-primary=white] .md-hero--expand { - border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); -} - -[data-md-color-primary=black] .md-header { - background-color: black; -} -[data-md-color-primary=black] .md-hero { - background-color: black; -} - -[data-md-color-accent=red] { - --md-accent-fg-color: hsla(348deg, 100%, 55%, 1); - --md-accent-fg-color--transparent: hsla(348deg, 100%, 55%, 0.1); -} - -[data-md-color-accent=pink] { - --md-accent-fg-color: hsla(339deg, 100%, 48%, 1); - --md-accent-fg-color--transparent: hsla(339deg, 100%, 48%, 0.1); -} - -[data-md-color-accent=purple] { - --md-accent-fg-color: hsla(291deg, 96%, 62%, 1); - --md-accent-fg-color--transparent: hsla(291deg, 96%, 62%, 0.1); -} - -[data-md-color-accent=deep-purple] { - --md-accent-fg-color: hsla(256deg, 100%, 65%, 1); - --md-accent-fg-color--transparent: hsla(256deg, 100%, 65%, 0.1); -} - -[data-md-color-accent=indigo] { - --md-accent-fg-color: hsla(231deg, 99%, 66%, 1); - --md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1); -} - -[data-md-color-accent=blue] { - --md-accent-fg-color: hsla(218deg, 100%, 63%, 1); - --md-accent-fg-color--transparent: hsla(218deg, 100%, 63%, 0.1); -} - -[data-md-color-accent=light-blue] { - --md-accent-fg-color: hsla(203deg, 100%, 46%, 1); - --md-accent-fg-color--transparent: hsla(203deg, 100%, 46%, 0.1); -} - -[data-md-color-accent=cyan] { - --md-accent-fg-color: hsla(188deg, 100%, 42%, 1); - --md-accent-fg-color--transparent: hsla(188deg, 100%, 42%, 0.1); -} - -[data-md-color-accent=teal] { - --md-accent-fg-color: hsla(172deg, 100%, 37%, 1); - --md-accent-fg-color--transparent: hsla(172deg, 100%, 37%, 0.1); -} - -[data-md-color-accent=green] { - --md-accent-fg-color: hsla(145deg, 100%, 39%, 1); - --md-accent-fg-color--transparent: hsla(145deg, 100%, 39%, 0.1); -} - -[data-md-color-accent=light-green] { - --md-accent-fg-color: hsla(97deg, 81%, 48%, 1); - --md-accent-fg-color--transparent: hsla(97deg, 81%, 48%, 0.1); -} - -[data-md-color-accent=lime] { - --md-accent-fg-color: hsla(75deg, 100%, 46%, 1); - --md-accent-fg-color--transparent: hsla(75deg, 100%, 46%, 0.1); - --md-accent-bg-color: var(--md-default-fg-color); - --md-accent-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-accent=yellow] { - --md-accent-fg-color: hsla(50deg, 100%, 50%, 1); - --md-accent-fg-color--transparent: hsla(50deg, 100%, 50%, 0.1); - --md-accent-bg-color: var(--md-default-fg-color); - --md-accent-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-accent=amber] { - --md-accent-fg-color: hsla(40deg, 100%, 50%, 1); - --md-accent-fg-color--transparent: hsla(40deg, 100%, 50%, 0.1); - --md-accent-bg-color: var(--md-default-fg-color); - --md-accent-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-accent=orange] { - --md-accent-fg-color: hsla(34deg, 100%, 50%, 1); - --md-accent-fg-color--transparent: hsla(34deg, 100%, 50%, 0.1); - --md-accent-bg-color: var(--md-default-fg-color); - --md-accent-bg-color--light: var(--md-default-fg-color--light); -} - -[data-md-color-accent=deep-orange] { - --md-accent-fg-color: hsla(14deg, 100%, 63%, 1); - --md-accent-fg-color--transparent: hsla(14deg, 100%, 63%, 0.1); -} - -@media screen and (max-width: 59.9375em) { - [data-md-color-primary=white] .md-nav__source { - background-color: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color); - } - [data-md-color-primary=black] .md-nav__source { - background-color: var(--md-default-fg-color); - } -} - -@media screen and (min-width: 60em) { - [data-md-color-primary=white] .md-search__input { - background-color: var(--md-default-fg-color--lightest); - } - [data-md-color-primary=white] .md-search__input + .md-search__icon { - color: var(--md-default-fg-color); - } - [data-md-color-primary=white] .md-search__input::-webkit-input-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-color-primary=white] .md-search__input::-moz-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-color-primary=white] .md-search__input::-ms-input-placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-color-primary=white] .md-search__input::placeholder { - color: var(--md-default-fg-color--light); - } - [data-md-color-primary=black] .md-search__input { - background-color: var(--md-default-bg-color--lightest); - } -} - -@media screen and (max-width: 76.1875em) { - html [data-md-color-primary=white] .md-nav--primary .md-nav__title[for=__drawer] { - background-color: var(--md-default-bg-color); - color: var(--md-default-fg-color); - } - [data-md-color-primary=white] .md-hero { - border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); - } - html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer] { - background-color: black; - } -} - -@media screen and (min-width: 76.25em) { - [data-md-color-primary=white] .md-tabs { - border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); - background-color: var(--md-default-bg-color); - color: var(--md-default-fg-color); - } - [data-md-color-primary=black] .md-tabs { - background-color: black; - } -} -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/palette.scss */ -/*# sourceURL=palette.scss */ -/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/utilities/_break.scss */ -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9wYWxldHRlLnNjc3MiLCJwYWxldHRlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvdXRpbGl0aWVzL19icmVhay5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFRTtFQUNFLDhDQUFBO0VBQ0EscURBQUE7RUFDQSxvREFBQTtBQ2hFSjs7QUQ2REU7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7QUMxREo7O0FEdURFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDcERKOztBRGlERTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQzlDSjs7QUQyQ0U7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7QUN4Q0o7O0FEcUNFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDbENKOztBRCtCRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQzVCSjs7QUR5QkU7RUFDRSxpREFBQTtFQUNBLHVEQUFBO0VBQ0EsdURBQUE7QUN0Qko7O0FEbUJFO0VBQ0UsaURBQUE7RUFDQSx1REFBQTtFQUNBLHVEQUFBO0FDaEJKOztBRGFFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDVko7O0FET0U7RUFDRSwrQ0FBQTtFQUNBLHNEQUFBO0VBQ0EscURBQUE7QUNKSjs7QURDRTtFQUNFLCtDQUFBO0VBQ0Esc0RBQUE7RUFDQSxxREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNETjs7QURQRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNPTjs7QURmRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNlTjs7QUR2QkU7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7RUFJRSxpREFBQTtFQUNBLCtEQUFBO0FDdUJOOztBRC9CRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtBQ2tDSjs7QURyQ0U7RUFDRSwrQ0FBQTtFQUNBLHNEQUFBO0VBQ0EscURBQUE7QUN3Q0o7O0FEM0NFO0VBQ0UsNkNBQUE7RUFDQSxvREFBQTtFQUNBLG1EQUFBO0FDOENKOztBRGpERTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQ29ESjs7QURsQ0U7RUFDRSw0Q0FBQTtFQUNBLGlDQUFBO0FDcUNKO0FEakNFO0VBQ0UsNENBQUE7RUFDQSxpQ0FBQTtBQ21DSjtBRGhDSTtFQUNFLGlFQUFBO0FDa0NOOztBRGtDRTtFQUNFLHVCQUFBO0FDL0JKO0FEbUNFO0VBQ0UsdUJBQUE7QUNqQ0o7O0FEaUdFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQzlGSjs7QUQ0RkU7RUFDRSxnREFBQTtFQUNBLCtEQUFBO0FDekZKOztBRHVGRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7QUNwRko7O0FEa0ZFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQy9FSjs7QUQ2RUU7RUFDRSwrQ0FBQTtFQUNBLDhEQUFBO0FDMUVKOztBRHdFRTtFQUNFLGdEQUFBO0VBQ0EsK0RBQUE7QUNyRUo7O0FEbUVFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQ2hFSjs7QUQ4REU7RUFDRSxnREFBQTtFQUNBLCtEQUFBO0FDM0RKOztBRHlERTtFQUNFLGdEQUFBO0VBQ0EsK0RBQUE7QUN0REo7O0FEb0RFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQ2pESjs7QUQrQ0U7RUFDRSw4Q0FBQTtFQUNBLDZEQUFBO0FDNUNKOztBRDBDRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDMUNOOztBRG1DRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDbkNOOztBRDRCRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDNUJOOztBRHFCRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDckJOOztBRGNFO0VBQ0UsK0NBQUE7RUFDQSw4REFBQTtBQ1hKOztBQ3RCSTtFRm5HQTtJQUNFLHNEQUFBO0lBQ0EsaUNBQUE7RUM2SEo7RUR0REU7SUFDRSw0Q0FBQTtFQ3dESjtBQUNGOztBQ2xESTtFRnZFQTtJQUNFLHNEQUFBO0VDNkhKO0VEMUhJO0lBQ0UsaUNBQUE7RUM0SE47RUR4SEk7SUFDRSx3Q0FBQTtFQzBITjtFRDNISTtJQUNFLHdDQUFBO0VDNkhOO0VEOUhJO0lBQ0Usd0NBQUE7RUNnSU47RURqSUk7SUFDRSx3Q0FBQTtFQ21JTjtFRHJFRTtJQUNFLHNEQUFBO0VDdUVKO0FBQ0Y7O0FDeERJO0VGdEVBO0lBQ0UsNENBQUE7SUFDQSxpQ0FBQTtFQ2tJSjtFRDlIRTtJQUNFLGlFQUFBO0VDZ0lKO0VEekVFO0lBQ0UsdUJBQUE7RUMyRUo7QUFDRjs7QUN2Rkk7RUZyQ0E7SUFDRSxpRUFBQTtJQUNBLDRDQUFBO0lBQ0EsaUNBQUE7RUNnSUo7RUQzRUU7SUFDRSx1QkFBQTtFQzZFSjtBQUNGIiwiZmlsZSI6InBhbGV0dGUuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZXBlbmRlbmNpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGltcG9ydCBcIm1vZHVsYXJzY2FsZVwiO1xuQGltcG9ydCBcIm1hdGVyaWFsLWNvbG9yXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvY2FsIGltcG9ydHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGltcG9ydCBcInV0aWxpdGllcy9icmVha1wiO1xuQGltcG9ydCBcInV0aWxpdGllcy9jb252ZXJ0XCI7XG5cbkBpbXBvcnQgXCJjb25maWdcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IHByaW1hcnkgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBlYWNoICRuYW1lLCAkY29sb3JzIGluIChcbiAgXCJyZWRcIjogICAgICAgICAkY2xyLXJlZC00MDAgICAgICAgICAkY2xyLXJlZC0yMDAgICAgICAgICAkY2xyLXJlZC02MDAsXG4gIFwicGlua1wiOiAgICAgICAgJGNsci1waW5rLTUwMCAgICAgICAgJGNsci1waW5rLTIwMCAgICAgICAgJGNsci1waW5rLTcwMCxcbiAgXCJwdXJwbGVcIjogICAgICAkY2xyLXB1cnBsZS00MDAgICAgICAkY2xyLXB1cnBsZS0yMDAgICAgICAkY2xyLXB1cnBsZS02MDAsXG4gIFwiZGVlcC1wdXJwbGVcIjogJGNsci1kZWVwLXB1cnBsZS00MDAgJGNsci1kZWVwLXB1cnBsZS0yMDAgJGNsci1kZWVwLXB1cnBsZS01MDAsXG4gIFwiaW5kaWdvXCI6ICAgICAgJGNsci1pbmRpZ28tNTAwICAgICAgJGNsci1pbmRpZ28tMjAwICAgICAgJGNsci1pbmRpZ28tNzAwLFxuICBcImJsdWVcIjogICAgICAgICRjbHItYmx1ZS01MDAgICAgICAgICRjbHItYmx1ZS0yMDAgICAgICAgICRjbHItYmx1ZS03MDAsXG4gIFwibGlnaHQtYmx1ZVwiOiAgJGNsci1saWdodC1ibHVlLTUwMCAgJGNsci1saWdodC1ibHVlLTIwMCAgJGNsci1saWdodC1ibHVlLTcwMCxcbiAgXCJjeWFuXCI6ICAgICAgICAkY2xyLWN5YW4tNTAwICAgICAgICAkY2xyLWN5YW4tMjAwICAgICAgICAkY2xyLWN5YW4tNzAwLFxuICBcInRlYWxcIjogICAgICAgICRjbHItdGVhbC01MDAgICAgICAgICRjbHItdGVhbC0yMDAgICAgICAgICRjbHItdGVhbC03MDAsXG4gIFwiZ3JlZW5cIjogICAgICAgJGNsci1ncmVlbi01MDAgICAgICAgJGNsci1ncmVlbi0yMDAgICAgICAgJGNsci1ncmVlbi03MDAsXG4gIFwibGlnaHQtZ3JlZW5cIjogJGNsci1saWdodC1ncmVlbi01MDAgJGNsci1saWdodC1ncmVlbi0yMDAgJGNsci1saWdodC1ncmVlbi03MDAsXG4gIFwibGltZVwiOiAgICAgICAgJGNsci1saW1lLTUwMCAgICAgICAgJGNsci1saW1lLTIwMCAgICAgICAgJGNsci1saW1lLTcwMCxcbiAgXCJ5ZWxsb3dcIjogICAgICAkY2xyLXllbGxvdy00MDAgICAgICAkY2xyLXllbGxvdy0yMDAgICAgICAkY2xyLXllbGxvdy02MDAsXG4gIFwiYW1iZXJcIjogICAgICAgJGNsci1hbWJlci01MDAgICAgICAgJGNsci1hbWJlci0yMDAgICAgICAgJGNsci1hbWJlci03MDAsXG4gIFwib3JhbmdlXCI6ICAgICAgJGNsci1vcmFuZ2UtNDAwICAgICAgJGNsci1vcmFuZ2UtMjAwICAgICAgJGNsci1vcmFuZ2UtNjAwLFxuICBcImRlZXAtb3JhbmdlXCI6ICRjbHItZGVlcC1vcmFuZ2UtNDAwICRjbHItZGVlcC1vcmFuZ2UtMjAwICRjbHItZGVlcC1vcmFuZ2UtNjAwLFxuICBcImJyb3duXCI6ICAgICAgICRjbHItYnJvd24tNTAwICAgICAgICRjbHItYnJvd24tMjAwICAgICAgICRjbHItYnJvd24tNzAwLFxuICBcImdyZXlcIjogICAgICAgICRjbHItZ3JleS02MDAgICAgICAgICRjbHItZ3JleS0yMDAgICAgICAgICRjbHItZ3JleS03MDAsXG4gIFwiYmx1ZS1ncmV5XCI6ICAgJGNsci1ibHVlLWdyZXktNjAwICAgJGNsci1ibHVlLWdyZXktMjAwICAgJGNsci1ibHVlLWdyZXktNzAwXG4pIHtcblxuICAvLyBDb2xvciBwYWxldHRlXG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9XCIjeyRuYW1lfVwiXSB7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMSkpfSwgMSk7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMikpfSwgMSk7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiAgICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMykpfSwgMSk7XG5cbiAgICAvLyBJbnZlcnRlZCB0ZXh0IGZvciBsaWdodGVyIHNoYWRlc1xuICAgIEBpZiBpbmRleChcImxpbWVcIiBcInllbGxvd1wiIFwiYW1iZXJcIiBcIm9yYW5nZVwiLCAkbmFtZSkge1xuICAgICAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiAgICAgICAgICAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiAgICB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiB3aGl0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb2xvciBwYWxldHRlXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PVwid2hpdGVcIl0ge1xuXG4gIC8vIEFwcGxpY2F0aW9uIGhlYWRlciAoc3RheXMgYWx3YXlzIG9uIHRvcClcbiAgLm1kLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG5cbiAgLy8gSGVybyB0ZWFzZXJcbiAgLm1kLWhlcm8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcblxuICAgIC8vIEFkZCBhIGJvcmRlciBpZiB0aGVyZSBhcmUgbm8gdGFic1xuICAgICYtLWV4cGFuZCB7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCBwb3J0cmFpdCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcblxuICAgIC8vIFJlcG9zaXRvcnkgY29udGFpbmluZyBzb3VyY2VcbiAgICAubWQtbmF2X19zb3VyY2Uge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgK106IENoYW5nZSBjb2xvciBvZiBzZWFyY2ggaW5wdXRcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuXG4gICAgLy8gU2VhcmNoIGlucHV0XG4gICAgLm1kLXNlYXJjaF9faW5wdXQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuXG4gICAgICAvLyBJY29uIGNvbG9yXG4gICAgICArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFBsYWNlaG9sZGVyIGNvbG9yXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFNpdGUgdGl0bGUgaW4gbWFpbiBuYXZpZ2F0aW9uXG4gICAgaHRtbCAmIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgfVxuXG4gICAgLy8gSGVybyB0ZWFzZXJcbiAgICAubWQtaGVybyB7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3NjcmVlbiArXTogU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRhYnNcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG5cbiAgICAvLyBUYWJzIHdpdGggb3V0bGluZVxuICAgIC5tZC10YWJzIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogYmxhY2tcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQ29sb3IgcGFsZXR0ZVxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1cImJsYWNrXCJdIHtcblxuICAvLyBBcHBsaWNhdGlvbiBoZWFkZXIgKHN0YXlzIGFsd2F5cyBvbiB0b3ApXG4gIC5tZC1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAxKTtcbiAgfVxuXG4gIC8vIEhlcm8gdGVhc2VyXG4gIC5tZC1oZXJvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMSk7XG4gIH1cblxuICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBMYXllcmVkIG5hdmlnYXRpb25cbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuXG4gICAgLy8gUmVwb3NpdG9yeSBjb250YWluaW5nIHNvdXJjZVxuICAgIC5tZC1uYXZfX3NvdXJjZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICB9XG4gIH1cblxuICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAvLyBTZWFyY2ggaW5wdXRcbiAgICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFNpdGUgdGl0bGUgaW4gbWFpbiBuYXZpZ2F0aW9uXG4gICAgaHRtbCAmIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgMCUsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtzY3JlZW4gK106IFNldCBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0YWJzXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuXG4gICAgLy8gVGFicyB3aXRoIG91dGxpbmVcbiAgICAubWQtdGFicyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMSk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiBhY2NlbnQgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBlYWNoICRuYW1lLCAkY29sb3IgaW4gKFxuICBcInJlZFwiOiAgICAgICAgICRjbHItcmVkLWE0MDAsXG4gIFwicGlua1wiOiAgICAgICAgJGNsci1waW5rLWE0MDAsXG4gIFwicHVycGxlXCI6ICAgICAgJGNsci1wdXJwbGUtYTIwMCxcbiAgXCJkZWVwLXB1cnBsZVwiOiAkY2xyLWRlZXAtcHVycGxlLWEyMDAsXG4gIFwiaW5kaWdvXCI6ICAgICAgJGNsci1pbmRpZ28tYTIwMCxcbiAgXCJibHVlXCI6ICAgICAgICAkY2xyLWJsdWUtYTIwMCxcbiAgXCJsaWdodC1ibHVlXCI6ICAkY2xyLWxpZ2h0LWJsdWUtYTcwMCxcbiAgXCJjeWFuXCI6ICAgICAgICAkY2xyLWN5YW4tYTcwMCxcbiAgXCJ0ZWFsXCI6ICAgICAgICAkY2xyLXRlYWwtYTcwMCxcbiAgXCJncmVlblwiOiAgICAgICAkY2xyLWdyZWVuLWE3MDAsXG4gIFwibGlnaHQtZ3JlZW5cIjogJGNsci1saWdodC1ncmVlbi1hNzAwLFxuICBcImxpbWVcIjogICAgICAgICRjbHItbGltZS1hNzAwLFxuICBcInllbGxvd1wiOiAgICAgICRjbHIteWVsbG93LWE3MDAsXG4gIFwiYW1iZXJcIjogICAgICAgJGNsci1hbWJlci1hNzAwLFxuICBcIm9yYW5nZVwiOiAgICAgICRjbHItb3JhbmdlLWE0MDAsXG4gIFwiZGVlcC1vcmFuZ2VcIjogJGNsci1kZWVwLW9yYW5nZS1hMjAwXG4pIHtcblxuICAvLyBDb2xvciBwYWxldHRlXG4gIFtkYXRhLW1kLWNvbG9yLWFjY2VudD1cIiN7JG5hbWV9XCJdIHtcbiAgICAtLW1kLWFjY2VudC1mZy1jb2xvcjogICAgICAgICAgICAgIGhzbGEoI3toZXgyaHNsKCRjb2xvcil9LCAxKTtcbiAgICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoI3toZXgyaHNsKCRjb2xvcil9LCAwLjEpO1xuXG4gICAgLy8gSW52ZXJ0ZWQgdGV4dCBmb3IgbGlnaHRlciBzaGFkZXNcbiAgICBAaWYgaW5kZXgoXCJsaW1lXCIgXCJ5ZWxsb3dcIiBcImFtYmVyXCIgXCJvcmFuZ2VcIiwgJG5hbWUpIHtcbiAgICAgIC0tbWQtYWNjZW50LWJnLWNvbG9yOiAgICAgICAgICAgIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgICAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiAgICAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIH1cbiAgfVxufVxuIiwiW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1yZWRdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDFkZWcsIDgzJSwgNjMlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgwZGVnLCA3MyUsIDc3JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxZGVnLCA3NyUsIDU1JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9cGlua10ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMzQwZGVnLCA4MiUsIDUyJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMzQwZGVnLCA4MiUsIDc2JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgzMzZkZWcsIDc4JSwgNDMlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1wdXJwbGVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDI5MWRlZywgNDclLCA1MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDI5MWRlZywgNDclLCA3MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjg3ZGVnLCA2NSUsIDQwJSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9ZGVlcC1wdXJwbGVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDI2MmRlZywgNDclLCA1NSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDI2MWRlZywgNDYlLCA3NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjYyZGVnLCA1MiUsIDQ3JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9aW5kaWdvXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgyMzFkZWcsIDQ4JSwgNDglLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgyMzFkZWcsIDQ0JSwgNzQlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDIzMmRlZywgNTQlLCA0MSUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWJsdWVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDIwN2RlZywgOTAlLCA1NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDIwN2RlZywgOTAlLCA3NyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjEwZGVnLCA3OSUsIDQ2JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9bGlnaHQtYmx1ZV0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTk5ZGVnLCA5OCUsIDQ4JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMTk5ZGVnLCA5MiUsIDc0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgyMDFkZWcsIDk4JSwgNDElLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1jeWFuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgxODdkZWcsIDEwMCUsIDQyJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMTg3ZGVnLCA3MiUsIDcxJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxODZkZWcsIDEwMCUsIDMzJSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9dGVhbF0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTc0ZGVnLCAxMDAlLCAyOSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDE3NGRlZywgNDIlLCA2NSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTczZGVnLCAxMDAlLCAyNCUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWdyZWVuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgxMjJkZWcsIDM5JSwgNDklLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgxMjJkZWcsIDM3JSwgNzQlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDEyM2RlZywgNDMlLCAzOSUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWxpZ2h0LWdyZWVuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSg4OGRlZywgNTAlLCA1MyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDg4ZGVnLCA1MCUsIDc2JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSg5MmRlZywgNDglLCA0MiUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWxpbWVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDY2ZGVnLCA3MCUsIDU0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoNjZkZWcsIDcxJSwgNzclLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDYyZGVnLCA2MSUsIDQ0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT15ZWxsb3ddIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDU0ZGVnLCAxMDAlLCA2NyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDU0ZGVnLCAxMDAlLCA4MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoNDlkZWcsIDk4JSwgNjAlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWFtYmVyXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSg0NWRlZywgMTAwJSwgNTElLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSg0NWRlZywgMTAwJSwgNzUlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDM4ZGVnLCAxMDAlLCA1MCUsIDEpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9b3JhbmdlXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgzNmRlZywgMTAwJSwgNTclLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgzNmRlZywgMTAwJSwgNzUlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDMzZGVnLCAxMDAlLCA0OSUsIDEpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9ZGVlcC1vcmFuZ2VdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDE0ZGVnLCAxMDAlLCA2MyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDE0ZGVnLCAxMDAlLCA3OCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTRkZWcsIDkxJSwgNTQlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1icm93bl0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTZkZWcsIDI1JSwgMzglLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgxNWRlZywgMTUlLCA2OSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTRkZWcsIDI2JSwgMjklLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ncmV5XSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgwZGVnLCAwJSwgNDYlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgwZGVnLCAwJSwgOTMlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDBkZWcsIDAlLCAzOCUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWJsdWUtZ3JleV0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTk5ZGVnLCAxOCUsIDQwJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMjAwZGVnLCAxNSUsIDczJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxOTlkZWcsIDE4JSwgMzMlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtaGVybyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtaGVyby0tZXhwYW5kIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1oZXJvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1yZWRdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMzQ4ZGVnLCAxMDAlLCA1NSUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMzQ4ZGVnLCAxMDAlLCA1NSUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1waW5rXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDMzOWRlZywgMTAwJSwgNDglLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDMzOWRlZywgMTAwJSwgNDglLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9cHVycGxlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDI5MWRlZywgOTYlLCA2MiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjkxZGVnLCA5NiUsIDYyJSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWRlZXAtcHVycGxlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDI1NmRlZywgMTAwJSwgNjUlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDI1NmRlZywgMTAwJSwgNjUlLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9aW5kaWdvXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDIzMWRlZywgOTklLCA2NiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjMxZGVnLCA5OSUsIDY2JSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWJsdWVdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMjE4ZGVnLCAxMDAlLCA2MyUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjE4ZGVnLCAxMDAlLCA2MyUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1saWdodC1ibHVlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDIwM2RlZywgMTAwJSwgNDYlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDIwM2RlZywgMTAwJSwgNDYlLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9Y3lhbl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgxODhkZWcsIDEwMCUsIDQyJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxODhkZWcsIDEwMCUsIDQyJSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PXRlYWxdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMTcyZGVnLCAxMDAlLCAzNyUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMTcyZGVnLCAxMDAlLCAzNyUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1ncmVlbl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgxNDVkZWcsIDEwMCUsIDM5JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxNDVkZWcsIDEwMCUsIDM5JSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWxpZ2h0LWdyZWVuXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDk3ZGVnLCA4MSUsIDQ4JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSg5N2RlZywgODElLCA0OCUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1saW1lXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDc1ZGVnLCAxMDAlLCA0NiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoNzVkZWcsIDEwMCUsIDQ2JSwgMC4xKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PXllbGxvd10ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSg1MGRlZywgMTAwJSwgNTAlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDUwZGVnLCAxMDAlLCA1MCUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1hbWJlcl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSg0MGRlZywgMTAwJSwgNTAlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDQwZGVnLCAxMDAlLCA1MCUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1vcmFuZ2VdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMzRkZWcsIDEwMCUsIDUwJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgzNGRlZywgMTAwJSwgNTAlLCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9ZGVlcC1vcmFuZ2VdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMTRkZWcsIDEwMCUsIDYzJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxNGRlZywgMTAwJSwgNjMlLCAwLjEpO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLW5hdl9fc291cmNlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1uYXZfX3NvdXJjZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICBbZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLXNlYXJjaF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdCk7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIGh0bWwgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLWhlcm8ge1xuICAgIGJvcmRlci1ib3R0b206IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIGh0bWwgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ibGFja10gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ibGFja10gLm1kLXRhYnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICB9XG59IiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFZhcmlhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy9cbi8vLyBEZXZpY2Utc3BlY2lmaWMgYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gICAkYnJlYWstZGV2aWNlczogKFxuLy8vICAgICBtb2JpbGU6IChcbi8vLyAgICAgICBwb3J0cmFpdDogIDIyMHB4ICA0NzlweCxcbi8vLyAgICAgICBsYW5kc2NhcGU6IDQ4MHB4ICA3MTlweFxuLy8vICAgICApLFxuLy8vICAgICB0YWJsZXQ6IChcbi8vLyAgICAgICBwb3J0cmFpdDogIDcyMHB4ICA5NTlweCxcbi8vLyAgICAgICBsYW5kc2NhcGU6IDk2MHB4ICAxMjE5cHhcbi8vLyAgICAgKSxcbi8vLyAgICAgc2NyZWVuOiAoXG4vLy8gICAgICAgc21hbGw6ICAgICAxMjIwcHggMTU5OXB4LFxuLy8vICAgICAgIG1lZGl1bTogICAgMTYwMHB4IDE5OTlweCxcbi8vLyAgICAgICBsYXJnZTogICAgIDIwMDBweFxuLy8vICAgICApXG4vLy8gICApO1xuLy8vXG4kYnJlYWstZGV2aWNlczogKCkgIWRlZmF1bHQ7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vXG4vLy8gQ2hvb3NlIG1pbmltdW0gYW5kIG1heGltdW0gZGV2aWNlIHdpZHRoc1xuLy8vXG5AZnVuY3Rpb24gYnJlYWstc2VsZWN0LW1pbi1tYXgoJGRldmljZXMpIHtcbiAgJG1pbjogMTAwMDAwMDtcbiAgJG1heDogMDtcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRkZXZpY2VzIHtcbiAgICBAd2hpbGUgdHlwZS1vZigkdmFsdWUpID09IG1hcCB7XG4gICAgICAkdmFsdWU6IGJyZWFrLXNlbGVjdC1taW4tbWF4KCR2YWx1ZSk7XG4gICAgfVxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICBAZWFjaCAkbnVtYmVyIGluICR2YWx1ZSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXIpID09IG51bWJlciB7XG4gICAgICAgICAgJG1pbjogbWluKCRudW1iZXIsICRtaW4pO1xuICAgICAgICAgIEBpZiAkbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJG1heDogbWF4KCRudW1iZXIsICRtYXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGVycm9yIFwiSW52YWxpZCBudW1iZXI6ICN7JG51bWJlcn1cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkdmFsdWUpID09IG51bWJlciB7XG4gICAgICAkbWluOiBtaW4oJHZhbHVlLCAkbWluKTtcbiAgICAgICRtYXg6IG51bGw7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZXJyb3IgXCJJbnZhbGlkIHZhbHVlOiAjeyR2YWx1ZX1cIjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbWluLCAkbWF4O1xufVxuXG4vLy9cbi8vLyBTZWxlY3QgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMgZm9yIGEgZGV2aWNlIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSkge1xuICAkY3VycmVudDogJGJyZWFrLWRldmljZXM7XG4gIEBmb3IgJG4gZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRkZXZpY2UpIHtcbiAgICBAaWYgdHlwZS1vZigkY3VycmVudCkgPT0gbWFwIHtcbiAgICAgICRjdXJyZW50OiBtYXAtZ2V0KCRjdXJyZW50LCBudGgoJGRldmljZSwgJG4pKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlIG1hcDogI3skZGV2aWNlc31cIjtcbiAgICB9XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGN1cnJlbnQpID09IGxpc3Qgb3IgdHlwZS1vZigkY3VycmVudCkgPT0gbnVtYmVyIHtcbiAgICAkY3VycmVudDogKGRlZmF1bHQ6ICRjdXJyZW50KTtcbiAgfVxuICBAcmV0dXJuIGJyZWFrLXNlbGVjdC1taW4tbWF4KCRjdXJyZW50KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWl4aW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vL1xuLy8vIEEgbWluaW11bS1tYXhpbXVtIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0KCRicmVha3BvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBudW1iZXIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gbGlzdCB7XG4gICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAkbWF4OiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuICAgIEBpZiB0eXBlLW9mKCRtaW4pID09IG51bWJlciBhbmQgdHlwZS1vZigkbWF4KSA9PSBudW1iZXIge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQW4gb3JpZW50YXRpb24gbWVkaWEgcXVlcnkgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstYXQtb3JpZW50YXRpb24oJGJyZWFrcG9pbnQpIHtcbiAgQGlmIHR5cGUtb2YoJGJyZWFrcG9pbnQpID09IHN0cmluZyB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiAkYnJlYWtwb2ludCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtYXhpbXVtLWFzcGVjdC1yYXRpbyBtZWRpYSBxdWVyeSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1yYXRpbygkYnJlYWtwb2ludCkge1xuICBAaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gbnVtYmVyIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWFzcGVjdC1yYXRpbzogJGJyZWFrcG9pbnQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWluaW11bS1tYXhpbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgIEBpZiBudGgoJGJyZWFrcG9pbnQsIDIpICE9IG51bGwge1xuICAgICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWluaW11bSBtZWRpYSBxdWVyeSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstZnJvbS1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgICRtaW46IG50aCgkYnJlYWtwb2ludCwgMSk7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWF4aW11bSBtZWRpYSBxdWVyeSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstdG8tZGV2aWNlKCRkZXZpY2UpIHtcbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gc3RyaW5nIHtcbiAgICAkZGV2aWNlOiAkZGV2aWNlLDtcbiAgfVxuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBsaXN0IHtcbiAgICAkYnJlYWtwb2ludDogYnJlYWstc2VsZWN0LWRldmljZSgkZGV2aWNlKTtcbiAgICAkbWF4OiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2U6ICN7JGRldmljZX1cIjtcbiAgfVxufVxuIl19 */ \ No newline at end of file diff --git a/material/base.html b/material/base.html index 6306f6555..6d9ea04d7 100644 --- a/material/base.html +++ b/material/base.html @@ -43,9 +43,9 @@ {% endif %} {% endblock %} {% block styles %} - + {% if palette.primary or palette.accent %} - + {% endif %} {% if palette.primary %} {% import "partials/palette.html" as map %} @@ -195,7 +195,8 @@ {% endblock %} {% block scripts %} - + + {%- set translations = {} -%} {%- for key in [ "clipboard.copy", @@ -218,7 +219,7 @@ app = initialize({ base: "{{ base_url }}", worker: { - search: "{{ 'assets/javascripts/worker/search.js' | url }}" + search: "{{ 'assets/javascripts/worker/search.926ffd9e.min.js' | url }}" }, feature: { instant: {{ "true" if feature and feature.instant else "false" }} diff --git a/package-lock.json b/package-lock.json index ea13ecaba..23e81153e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -624,12 +624,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -669,15 +663,6 @@ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -999,29 +984,6 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1323,12 +1285,6 @@ "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, "ccount": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", @@ -1493,12 +1449,6 @@ "tslib": "^1.9.0" } }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -1547,12 +1497,6 @@ "source-map": "~0.6.0" } }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -1688,20 +1632,6 @@ "typedarray": "^0.0.6" } }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -1860,15 +1790,6 @@ "elliptic": "^6.0.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -1928,12 +1849,6 @@ "randomfill": "^1.0.3" } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, "css-loader": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", @@ -2056,12 +1971,6 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "deep-get-set": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/deep-get-set/-/deep-get-set-1.1.0.tgz", @@ -2247,12 +2156,6 @@ "is-obj": "^1.0.0" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -3565,15 +3468,6 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -3663,33 +3557,6 @@ "delegate": "^3.1.2" } }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } - } - }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -3917,12 +3784,6 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -3974,12 +3835,6 @@ "resolve-from": "^3.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -4094,15 +3949,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -4176,28 +4022,12 @@ "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", "dev": true }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -4213,15 +4043,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -4245,24 +4066,12 @@ } } }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, "is-regexp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4393,15 +4202,6 @@ "node-fetch": "^2.6.0" } }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -4517,22 +4317,6 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "lunr": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", @@ -4543,15 +4327,6 @@ "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.4.0.tgz", "integrity": "sha512-YWfZDExJN/MJEVE/DbM4AuVRLsqeHi+q3wmECMsWjGIOkd5mr9DUNos7fv8f5do9VLRMYXIzFjn+N4+KPI9pQA==" }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, "make-error": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", @@ -4994,88 +4769,6 @@ } } }, - "nodemon": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.19.4.tgz", - "integrity": "sha512-VGPaqQBNk193lrJFotBU8nvWZPqEZY2eIzymy2jjY0fJ9qIsxA0sxQ8ATPl0gZC645gijYEc1jtZvpS8QWzJGQ==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.5.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5328,18 +5021,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, "pako": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", @@ -5440,12 +5121,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5978,12 +5653,6 @@ "integrity": "sha512-mKW7Cdn68XMhdes0FjyIbA8+IVPsj3aIuAEQlZVkj9E2VhujWcXZEfwirBoXK6qZYfj1djaTBDCFKjAu1sK93w==", "dev": true }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -6008,18 +5677,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "pstree.remy": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz", - "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==", - "dev": true - }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -6126,26 +5783,6 @@ "safe-buffer": "^5.1.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -6188,25 +5825,6 @@ "safe-regex": "^1.1.0" } }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -6494,15 +6112,6 @@ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, "serialize-javascript": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", @@ -6904,33 +6513,6 @@ "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6967,12 +6549,6 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -7485,49 +7061,6 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } - } - }, "terser": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", @@ -7574,12 +7107,6 @@ "xtend": "~4.0.1" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -7648,26 +7175,6 @@ } } }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -7905,15 +7412,6 @@ } } }, - "undefsafe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", - "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", - "dev": true, - "requires": { - "debug": "^2.2.0" - } - }, "unherit": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", @@ -7976,15 +7474,6 @@ "imurmurhash": "^0.1.4" } }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, "unist-util-find-all-after": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", @@ -8082,36 +7571,12 @@ } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", @@ -8151,15 +7616,6 @@ } } }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -8578,15 +8034,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -8611,17 +8058,6 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", @@ -8634,12 +8070,6 @@ "integrity": "sha1-x/pyyqD0QNt4/VZzQyA4rJhEULk=", "dev": true }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -8652,12 +8082,6 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", diff --git a/package.json b/package.json index 6514a88f8..7dc185d67 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,12 @@ "url": "https://github.com/squidfunk/mkdocs-material.git" }, "scripts": { - "build": "npm run dirty && npx webpack --mode production", - "clean": "npx rimraf 'material'", - "dirty": "npx rimraf 'material/!(.icons)'", + "build": "npm run clean && npx webpack --mode production", + "clean": "npx rimraf material", "lint": "npm run lint:ts && npm run lint:scss", "lint:scss": "npx stylelint `find src/assets -name *.scss`", "lint:ts": "npx tslint -p tsconfig.json 'src/**/*.ts'", - "start": "npm run dirty && npx webpack --mode development --watch" + "start": "npx webpack --mode development --watch" }, "dependencies": { "clipboard": "^2.0.0", @@ -69,7 +68,6 @@ "material-design-icons-svg": "^3.0.0", "material-shadows": "^3.0.1", "modularscale-sass": "^3.0.10", - "nodemon": "^1.19.4", "postcss-loader": "^3.0.0", "postcss-replace": "^1.1.0", "preact": "^10.1.1", diff --git a/src/assets/javascripts/actions/search/index.ts b/src/assets/javascripts/actions/search/index.ts deleted file mode 100644 index cda3d7d1b..000000000 --- a/src/assets/javascripts/actions/search/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -export * from "./result" diff --git a/src/assets/javascripts/components/header/_/index.ts b/src/assets/javascripts/components/header/_/index.ts index eecc874bc..c606fe581 100644 --- a/src/assets/javascripts/components/header/_/index.ts +++ b/src/assets/javascripts/components/header/_/index.ts @@ -20,10 +20,48 @@ * IN THE SOFTWARE. */ -import { Observable, OperatorFunction, pipe } from "rxjs" -import { switchMap } from "rxjs/operators" +import { Observable, OperatorFunction, combineLatest, pipe } from "rxjs" +import { + distinctUntilChanged, + filter, + map, + shareReplay, + startWith, + switchMap, + withLatestFrom +} from "rxjs/operators" -import { Header, Viewport, watchHeader } from "observables" +import { + Viewport, + getElement, + watchViewportAt +} from "observables" + +import { useComponent } from "../../_" +import { paintHeaderType } from "../paint" +import { watchHeader } from "../watch" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Header type + */ +export type HeaderType = + | "site" /* Header shows site title */ + | "page" /* Header shows page title */ + +/* ------------------------------------------------------------------------- */ + +/** + * Header + */ +export interface Header { + type: HeaderType /* Header type */ + sticky: boolean /* Header stickyness */ + height: number /* Header visible height */ +} /* ---------------------------------------------------------------------------- * Helper types @@ -51,6 +89,33 @@ export function mountHeader( { viewport$ }: MountOptions ): OperatorFunction { return pipe( - switchMap(el => watchHeader(el, { viewport$ })) + switchMap(el => { + const header$ = watchHeader(el, { viewport$ }) + + /* Compute whether the header should switch to page header */ + const type$ = useComponent("main") + .pipe( + map(main => getElement("h1, h2, h3, h4, h5, h6", main)!), + filter(hx => typeof hx !== "undefined"), + withLatestFrom(useComponent("header-title")), + switchMap(([hx, title]) => watchViewportAt(hx, { header$, viewport$ }) + .pipe( + map(({ offset: { y } }) => { + return y >= hx.offsetHeight ? "page" : "site" + }), + distinctUntilChanged(), + paintHeaderType(title) + ) + ), + startWith("site") + ) + + /* Combine into single observable */ + return combineLatest([header$, type$]) + .pipe( + map(([header, type]): Header => ({ type, ...header })), + shareReplay(1) + ) + }) ) } diff --git a/src/assets/javascripts/actions/header/title/index.ts b/src/assets/javascripts/components/header/apply/index.ts similarity index 90% rename from src/assets/javascripts/actions/header/title/index.ts rename to src/assets/javascripts/components/header/apply/index.ts index 05793edec..9b58ed23d 100644 --- a/src/assets/javascripts/actions/header/title/index.ts +++ b/src/assets/javascripts/components/header/apply/index.ts @@ -25,23 +25,23 @@ * ------------------------------------------------------------------------- */ /** - * Set header title + * Set header title active * * @param el - Header title element * @param value - Whether the title is shown */ -export function setHeaderTitle( +export function setHeaderTitleActive( el: HTMLElement, value: boolean ): void { el.setAttribute("data-md-state", value ? "active" : "") } /** - * Reset header title + * Reset header title active * - * @param el - Header element + * @param el - Header title element */ -export function resetHeaderTitle( +export function resetHeaderTitleActive( el: HTMLElement ): void { el.removeAttribute("data-md-state") diff --git a/src/assets/javascripts/components/header/index.ts b/src/assets/javascripts/components/header/index.ts index 40a6fdb4b..9dca36fe0 100644 --- a/src/assets/javascripts/components/header/index.ts +++ b/src/assets/javascripts/components/header/index.ts @@ -21,4 +21,6 @@ */ export * from "./_" -export * from "./title" +export * from "./apply" +export * from "./paint" +export * from "./watch" diff --git a/src/assets/javascripts/observables/main/hideable/index.ts b/src/assets/javascripts/components/header/paint/index.ts similarity index 72% rename from src/assets/javascripts/observables/main/hideable/index.ts rename to src/assets/javascripts/components/header/paint/index.ts index 719b58de4..8ee809eae 100644 --- a/src/assets/javascripts/observables/main/hideable/index.ts +++ b/src/assets/javascripts/components/header/paint/index.ts @@ -20,47 +20,44 @@ * IN THE SOFTWARE. */ -import { OperatorFunction, animationFrameScheduler, pipe } from "rxjs" import { - distinctUntilChanged, - finalize, - map, - observeOn, - tap -} from "rxjs/operators" + MonoTypeOperatorFunction, + animationFrameScheduler, + pipe +} from "rxjs" +import { finalize, observeOn, tap } from "rxjs/operators" -import { resetHidden, setHidden } from "actions" - -import { Viewport } from "../../agent" +import { HeaderType } from "../_" +import { + resetHeaderTitleActive, + setHeaderTitleActive +} from "../apply" /* ---------------------------------------------------------------------------- * Functions * ------------------------------------------------------------------------- */ /** - * Paint hideable + * Paint header title type * - * @param el - Hideable element - * @param offset - Additional offset + * @param el - Header title element * * @return Operator function */ -export function paintHideable( - el: HTMLElement, offset: number = 0 -): OperatorFunction { +export function paintHeaderType( + el: HTMLElement +): MonoTypeOperatorFunction { return pipe( - map(({ offset: { y } }) => y >= offset), - distinctUntilChanged(), /* Defer repaint to next animation frame */ observeOn(animationFrameScheduler), - tap(value => { - setHidden(el, value) + tap(type => { + setHeaderTitleActive(el, type === "page") }), /* Reset on complete or error */ finalize(() => { - resetHidden(el) + resetHeaderTitleActive(el) }) ) } diff --git a/src/assets/javascripts/observables/header/_/index.ts b/src/assets/javascripts/components/header/watch/index.ts similarity index 85% rename from src/assets/javascripts/observables/header/_/index.ts rename to src/assets/javascripts/components/header/watch/index.ts index 2dbb6b571..d9f38b0df 100644 --- a/src/assets/javascripts/observables/header/_/index.ts +++ b/src/assets/javascripts/components/header/watch/index.ts @@ -23,19 +23,9 @@ import { Observable, of } from "rxjs" import { distinctUntilKeyChanged, switchMap } from "rxjs/operators" -import { Viewport } from "../../agent" +import { Viewport } from "observables" -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Header - */ -export interface Header { - sticky: boolean /* Header stickyness */ - height: number /* Header visible height */ -} +import { Header } from "../_" /* ---------------------------------------------------------------------------- * Helper types @@ -65,7 +55,7 @@ interface WatchOptions { */ export function watchHeader( el: HTMLElement, { viewport$ }: WatchOptions -): Observable
    { +): Observable> { return viewport$ .pipe( distinctUntilKeyChanged("size"), diff --git a/src/assets/javascripts/components/header/title/index.ts b/src/assets/javascripts/components/hero/_/index.ts similarity index 71% rename from src/assets/javascripts/components/header/title/index.ts rename to src/assets/javascripts/components/hero/_/index.ts index eb7aa191c..75446f90a 100644 --- a/src/assets/javascripts/components/header/title/index.ts +++ b/src/assets/javascripts/components/hero/_/index.ts @@ -21,17 +21,23 @@ */ import { Observable, OperatorFunction, pipe } from "rxjs" -import { filter, map, switchMap } from "rxjs/operators" +import { distinctUntilChanged, map, switchMap } from "rxjs/operators" -import { - Header, - Viewport, - getElement, - paintHeaderTitle, - watchViewportAt -} from "observables" +import { Viewport, watchViewportAt } from "observables" -import { useComponent } from "../../_" +import { Header } from "../../header" +import { paintHero } from "../paint" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Hero + */ +export interface Hero { + hidden: boolean /* Whether the hero is hidden */ +} /* ---------------------------------------------------------------------------- * Helper types @@ -50,26 +56,21 @@ interface MountOptions { * ------------------------------------------------------------------------- */ /** - * Mount header title from source observable + * Mount hero from source observable * * @param options - Options * * @return Operator function */ -export function mountHeaderTitle( +export function mountHero( { header$, viewport$ }: MountOptions -): OperatorFunction { +): OperatorFunction { return pipe( - switchMap(el => useComponent("main") + switchMap(el => watchViewportAt(el, { header$, viewport$ }) .pipe( - map(main => getElement("h1, h2, h3, h4, h5, h6", main)!), - filter(hx => typeof hx !== "undefined"), - switchMap(hx => watchViewportAt(hx, { header$, viewport$ }) - .pipe( - map(({ offset: { y } }) => y >= hx.offsetHeight), - paintHeaderTitle(el) - ) - ) + map(({ offset: { y } }) => ({ hidden: y >= 20 })), + distinctUntilChanged(), + paintHero(el) ) ) ) diff --git a/src/assets/javascripts/actions/main/hideable/index.ts b/src/assets/javascripts/components/hero/apply/index.ts similarity index 90% rename from src/assets/javascripts/actions/main/hideable/index.ts rename to src/assets/javascripts/components/hero/apply/index.ts index e8202d9b3..bb2ac5061 100644 --- a/src/assets/javascripts/actions/main/hideable/index.ts +++ b/src/assets/javascripts/components/hero/apply/index.ts @@ -25,23 +25,23 @@ * ------------------------------------------------------------------------- */ /** - * Set hidden + * Set hero hidden * - * @param el - Hideable element + * @param el - Hero element * @param value - Whether the element is hidden */ -export function setHidden( +export function setHeroHidden( el: HTMLElement, value: boolean ): void { el.setAttribute("data-md-state", value ? "hidden" : "") } /** - * Reset hidden + * Reset hero hidden * - * @param el - Hideable element + * @param el - Hero element */ -export function resetHidden( +export function resetHeroHidden( el: HTMLElement ): void { el.removeAttribute("data-md-state") diff --git a/src/assets/javascripts/components/hero/index.ts b/src/assets/javascripts/components/hero/index.ts index 074a49c3f..8644d81a2 100644 --- a/src/assets/javascripts/components/hero/index.ts +++ b/src/assets/javascripts/components/hero/index.ts @@ -20,59 +20,6 @@ * IN THE SOFTWARE. */ -import { Observable, OperatorFunction, pipe } from "rxjs" -import { map, switchMap } from "rxjs/operators" - -import { - Header, - Viewport, - paintHideable, - watchViewportAt -} from "observables" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Hero - */ -export interface Hero { - hidden: boolean /* Whether the hero is hidden */ -} - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - header$: Observable
    /* Header observable */ - viewport$: Observable /* Viewport observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount hero from source observable - * - * @param options - Options - * - * @return Operator function - */ -export function mountHero( - { header$, viewport$ }: MountOptions -): OperatorFunction { - return pipe( - switchMap(el => watchViewportAt(el, { header$, viewport$ }) - .pipe( - paintHideable(el, 20), - map(hidden => ({ hidden })) - ) - ) - ) -} +export * from "./_" +export * from "./apply" +export * from "./paint" diff --git a/src/assets/javascripts/observables/header/title/index.ts b/src/assets/javascripts/components/hero/paint/index.ts similarity index 86% rename from src/assets/javascripts/observables/header/title/index.ts rename to src/assets/javascripts/components/hero/paint/index.ts index 8e4c48879..e2fe8acb8 100644 --- a/src/assets/javascripts/observables/header/title/index.ts +++ b/src/assets/javascripts/components/hero/paint/index.ts @@ -27,33 +27,37 @@ import { } from "rxjs" import { finalize, observeOn, tap } from "rxjs/operators" -import { resetHeaderTitle, setHeaderTitle } from "actions" +import { Hero } from "../_" +import { + resetHeroHidden, + setHeroHidden +} from "../apply" /* ---------------------------------------------------------------------------- * Functions * ------------------------------------------------------------------------- */ /** - * Paint header title + * Paint hero * - * @param el - Header element + * @param el - Hero element * * @return Operator function */ -export function paintHeaderTitle( +export function paintHero( el: HTMLElement -): MonoTypeOperatorFunction { +): MonoTypeOperatorFunction { return pipe( /* Defer repaint to next animation frame */ observeOn(animationFrameScheduler), - tap(active => { - setHeaderTitle(el, active) + tap(({ hidden }) => { + setHeroHidden(el, hidden) }), /* Reset on complete or error */ finalize(() => { - resetHeaderTitle(el) + resetHeroHidden(el) }) ) } diff --git a/src/assets/javascripts/components/index.ts b/src/assets/javascripts/components/index.ts index 1ac37c069..fc1fb4d8b 100644 --- a/src/assets/javascripts/components/index.ts +++ b/src/assets/javascripts/components/index.ts @@ -26,5 +26,6 @@ export * from "./hero" export * from "./main" export * from "./navigation" export * from "./search" +export * from "./shared" export * from "./tabs" export * from "./toc" diff --git a/src/assets/javascripts/components/main/_/index.ts b/src/assets/javascripts/components/main/_/index.ts new file mode 100644 index 000000000..cd0f85979 --- /dev/null +++ b/src/assets/javascripts/components/main/_/index.ts @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { Observable, OperatorFunction, Subject, pipe } from "rxjs" +import { distinctUntilKeyChanged, switchMap, tap } from "rxjs/operators" + +import { Viewport } from "observables" + +import { useComponent } from "../../_" +import { Header } from "../../header" +import { paintHeaderShadow } from "../paint" +import { watchMain } from "../watch" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Main area + */ +export interface Main { + offset: number /* Main area top offset */ + height: number /* Main area visible height */ + active: boolean /* Scrolled past top offset */ +} + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + header$: Observable
    /* Header observable */ + viewport$: Observable /* Viewport observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount main area from source observable + * + * The header must be connected to the main area observable outside of the + * operator function, as the header will persist in-between document switches + * while the main area is replaced. However, the header observable must be + * passed to this function, so we connect both via a long-living subject. + * + * @param options - Options + * + * @return Operator function + */ +export function mountMain( + { header$, viewport$ }: MountOptions +): OperatorFunction { + const main$ = new Subject
    () + + /* Connect to main area observable via long-living subject */ + useComponent("header") + .pipe( + switchMap(header => main$ + .pipe( + distinctUntilKeyChanged("active"), + paintHeaderShadow(header) + ) + ) + ) + .subscribe() + + /* Return operator */ + return pipe( + switchMap(el => watchMain(el, { header$, viewport$ })), + tap(main => main$.next(main)) + ) +} diff --git a/src/assets/javascripts/actions/header/shadow/index.ts b/src/assets/javascripts/components/main/apply/index.ts similarity index 100% rename from src/assets/javascripts/actions/header/shadow/index.ts rename to src/assets/javascripts/components/main/apply/index.ts diff --git a/src/assets/javascripts/components/main/index.ts b/src/assets/javascripts/components/main/index.ts index d2d2a1467..9dca36fe0 100644 --- a/src/assets/javascripts/components/main/index.ts +++ b/src/assets/javascripts/components/main/index.ts @@ -20,67 +20,7 @@ * IN THE SOFTWARE. */ -import { Observable, OperatorFunction, Subject, pipe } from "rxjs" -import { distinctUntilKeyChanged, switchMap, tap } from "rxjs/operators" - -import { - Header, - Main, - Viewport, - paintHeaderShadow, - watchMain -} from "observables" - -import { useComponent } from "../_" - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - header$: Observable
    /* Header observable */ - viewport$: Observable /* Viewport observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount main area from source observable - * - * The header must be connected to the main area observable outside of the - * operator function, as the header will persist in-between document switches - * while the main area is replaced. However, the header observable must be - * passed to this function, so we connect both via a long-living subject. - * - * @param options - Options - * - * @return Operator function - */ -export function mountMain( - { header$, viewport$ }: MountOptions -): OperatorFunction { - const main$ = new Subject
    () - - /* Connect to main area observable via long-living subject */ - useComponent("header") - .pipe( - switchMap(header => main$ - .pipe( - distinctUntilKeyChanged("active"), - paintHeaderShadow(header) - ) - ) - ) - .subscribe() - - /* Return operator */ - return pipe( - switchMap(el => watchMain(el, { header$, viewport$ })), - tap(main => main$.next(main)) - ) -} +export * from "./_" +export * from "./apply" +export * from "./paint" +export * from "./watch" diff --git a/src/assets/javascripts/observables/header/shadow/index.ts b/src/assets/javascripts/components/main/paint/index.ts similarity index 95% rename from src/assets/javascripts/observables/header/shadow/index.ts rename to src/assets/javascripts/components/main/paint/index.ts index 5ce7761ab..77ae4a67a 100644 --- a/src/assets/javascripts/observables/header/shadow/index.ts +++ b/src/assets/javascripts/components/main/paint/index.ts @@ -27,9 +27,11 @@ import { } from "rxjs" import { finalize, observeOn, tap } from "rxjs/operators" -import { resetHeaderShadow, setHeaderShadow } from "actions" - -import { Main } from "../../main" +import { Main } from "../_" +import { + resetHeaderShadow, + setHeaderShadow +} from "../apply" /* ---------------------------------------------------------------------------- * Functions diff --git a/src/assets/javascripts/observables/main/_/index.ts b/src/assets/javascripts/components/main/watch/index.ts similarity index 87% rename from src/assets/javascripts/observables/main/_/index.ts rename to src/assets/javascripts/components/main/watch/index.ts index 6acb7b876..d12dcae1c 100644 --- a/src/assets/javascripts/observables/main/_/index.ts +++ b/src/assets/javascripts/components/main/watch/index.ts @@ -23,21 +23,10 @@ import { Observable, combineLatest } from "rxjs" import { distinctUntilChanged, map, pluck } from "rxjs/operators" -import { Viewport } from "../../agent" +import { Viewport } from "observables" + import { Header } from "../../header" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Main area - */ -export interface Main { - offset: number /* Main area top offset */ - height: number /* Main area visible height */ - active: boolean /* Scrolled past top offset */ -} +import { Main } from "../_" /* ---------------------------------------------------------------------------- * Helper types diff --git a/src/assets/javascripts/components/navigation/_/index.ts b/src/assets/javascripts/components/navigation/_/index.ts new file mode 100644 index 000000000..6594d3aeb --- /dev/null +++ b/src/assets/javascripts/components/navigation/_/index.ts @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { Observable, OperatorFunction, pipe } from "rxjs" +import { map, switchMap } from "rxjs/operators" + +import { Viewport, getElements } from "observables" + +import { Header } from "../../header" +import { Main } from "../../main" +import { + Sidebar, + paintSidebar, + watchSidebar +} from "../../shared" +import { + NavigationLayer, + paintNavigationLayer, + watchNavigationLayer +} from "../layer" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Navigation for [screen -] + */ +interface NavigationBelowScreen { + layer: NavigationLayer /* Active layer */ +} + +/** + * Navigation for [screen +] + */ +interface NavigationAboveScreen { + sidebar: Sidebar /* Sidebar */ +} + +/* ------------------------------------------------------------------------- */ + +/** + * Navigation + */ +export type Navigation = + | NavigationBelowScreen + | NavigationAboveScreen + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + header$: Observable
    /* Header observable */ + main$: Observable
    /* Main area observable */ + viewport$: Observable /* Viewport observable */ + screen$: Observable /* Screen media observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount navigation from source observable + * + * @param options - Options + * + * @return Operator function + */ +export function mountNavigation( + { header$, main$, viewport$, screen$ }: MountOptions +): OperatorFunction { + return pipe( + switchMap(el => screen$ + .pipe( + switchMap(screen => { + + /* [screen +]: Mount navigation in sidebar */ + if (screen) { + return watchSidebar(el, { main$, viewport$ }) + .pipe( + paintSidebar(el, { header$ }), + map(sidebar => ({ sidebar })) + ) + + /* [screen -]: Mount navigation in drawer */ + } else { + const els = getElements("nav", el) + return watchNavigationLayer(els) + .pipe( + paintNavigationLayer(els), + map(layer => ({ layer })) + ) + } + }) + ) + ) + ) +} diff --git a/src/assets/javascripts/components/navigation/index.ts b/src/assets/javascripts/components/navigation/index.ts index 30d5621be..5f37e174a 100644 --- a/src/assets/javascripts/components/navigation/index.ts +++ b/src/assets/javascripts/components/navigation/index.ts @@ -20,101 +20,5 @@ * IN THE SOFTWARE. */ -import { Observable, OperatorFunction, pipe } from "rxjs" -import { map, switchMap } from "rxjs/operators" - -import { - Header, - Main, - NavigationLayer, - Sidebar, - Viewport, - getElements, - paintNavigationLayer, - paintSidebar, - watchNavigationLayer, - watchSidebar -} from "observables" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Navigation for [screen -] - */ -export interface NavigationBelowScreen { - layer: NavigationLayer /* Active layer */ -} - -/** - * Navigation for [screen +] - */ -export interface NavigationAboveScreen { - sidebar: Sidebar /* Sidebar */ -} - -/* ------------------------------------------------------------------------- */ - -/** - * Navigation - */ -export type Navigation = - | NavigationBelowScreen - | NavigationAboveScreen - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - header$: Observable
    /* Header observable */ - main$: Observable
    /* Main area observable */ - viewport$: Observable /* Viewport observable */ - screen$: Observable /* Screen media observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount navigation from source observable - * - * @param options - Options - * - * @return Operator function - */ -export function mountNavigation( - { header$, main$, viewport$, screen$ }: MountOptions -): OperatorFunction { - return pipe( - switchMap(el => screen$ - .pipe( - switchMap(screen => { - - /* [screen +]: Mount navigation in sidebar */ - if (screen) { - return watchSidebar(el, { main$, viewport$ }) - .pipe( - paintSidebar(el, { header$ }), - map(sidebar => ({ sidebar })) - ) - - /* [screen -]: Mount navigation in drawer */ - } else { - const els = getElements("nav", el) - return watchNavigationLayer(els) - .pipe( - paintNavigationLayer(els), - map(layer => ({ layer })) - ) - } - }) - ) - ) - ) -} +export * from "./_" +export * from "./layer" diff --git a/src/assets/javascripts/components/navigation/layer/_/index.ts b/src/assets/javascripts/components/navigation/layer/_/index.ts new file mode 100644 index 000000000..b48f26ef8 --- /dev/null +++ b/src/assets/javascripts/components/navigation/layer/_/index.ts @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Navigation layer + */ +export interface NavigationLayer { + prev?: HTMLElement /* Layer (previous) */ + next: HTMLElement /* Layer (next) */ +} diff --git a/src/assets/javascripts/actions/main/scrollable/index.ts b/src/assets/javascripts/components/navigation/layer/apply/index.ts similarity index 76% rename from src/assets/javascripts/actions/main/scrollable/index.ts rename to src/assets/javascripts/components/navigation/layer/apply/index.ts index 1c978ae86..ff267170c 100644 --- a/src/assets/javascripts/actions/main/scrollable/index.ts +++ b/src/assets/javascripts/components/navigation/layer/apply/index.ts @@ -58,33 +58,3 @@ export function resetOverflowScrolling( ): void { el.style.webkitOverflowScrolling = "" } - -/* ------------------------------------------------------------------------- */ - -/** - * Set scroll lock - * - * @param el - Scrollable element - * @param value - Vertical offset - */ -export function setScrollLock( - el: HTMLElement, value: number -): void { - el.setAttribute("data-md-state", "lock") - el.style.top = `-${value}px` -} - -/** - * Reset scroll lock - * - * @param el - Scrollable element - */ -export function resetScrollLock( - el: HTMLElement -): void { - const value = -1 * parseInt(el.style.top, 10) - el.removeAttribute("data-md-state") - el.style.top = "" - if (value) - window.scrollTo(0, value) -} diff --git a/src/assets/javascripts/observables/main/index.ts b/src/assets/javascripts/components/navigation/layer/index.ts similarity index 94% rename from src/assets/javascripts/observables/main/index.ts rename to src/assets/javascripts/components/navigation/layer/index.ts index dcd2617d0..9dca36fe0 100644 --- a/src/assets/javascripts/observables/main/index.ts +++ b/src/assets/javascripts/components/navigation/layer/index.ts @@ -21,5 +21,6 @@ */ export * from "./_" -export * from "./hideable" -export * from "./sidebar" +export * from "./apply" +export * from "./paint" +export * from "./watch" diff --git a/src/assets/javascripts/components/navigation/layer/paint/index.ts b/src/assets/javascripts/components/navigation/layer/paint/index.ts new file mode 100644 index 000000000..c1cc11b48 --- /dev/null +++ b/src/assets/javascripts/components/navigation/layer/paint/index.ts @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { + MonoTypeOperatorFunction, + animationFrameScheduler, + pipe +} from "rxjs" +import { + delay, + finalize, + observeOn, + tap +} from "rxjs/operators" + +import { getElementOrThrow } from "observables" + +import { NavigationLayer } from "../_" +import { + resetOverflowScrolling, + setOverflowScrolling +} from "../apply" + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Paint navigation layer + * + * @param els - Navigation elements + * + * @return Operator function + */ +export function paintNavigationLayer( + els: HTMLElement[] +): MonoTypeOperatorFunction { + return pipe( + + /* Defer repaint to next animation frame */ + observeOn(animationFrameScheduler), + tap(({ prev }) => { + if (prev) + resetOverflowScrolling(prev) + }), + + /* Wait until transition has finished */ + delay(250), + + /* Defer repaint to next animation frame */ + observeOn(animationFrameScheduler), + tap(({ next }) => { + setOverflowScrolling(next) + }), + + /* Reset on complete or error */ + finalize(() => { + for (const el of els) + resetOverflowScrolling( + getElementOrThrow(".md-nav__list", el) + ) + }) + ) +} diff --git a/src/assets/javascripts/observables/navigation/layer/index.ts b/src/assets/javascripts/components/navigation/layer/watch/index.ts similarity index 63% rename from src/assets/javascripts/observables/navigation/layer/index.ts rename to src/assets/javascripts/components/navigation/layer/watch/index.ts index ad04447c4..a090d6c72 100644 --- a/src/assets/javascripts/observables/navigation/layer/index.ts +++ b/src/assets/javascripts/components/navigation/layer/watch/index.ts @@ -21,44 +21,15 @@ */ import { findLast } from "ramda" -import { - MonoTypeOperatorFunction, - Observable, - animationFrameScheduler, - fromEvent, - merge, - pipe -} from "rxjs" -import { - delay, - finalize, - map, - observeOn, - scan, - tap -} from "rxjs/operators" - -import { - resetOverflowScrolling, - setOverflowScrolling -} from "actions" +import { Observable, fromEvent, merge } from "rxjs" +import { map, scan } from "rxjs/operators" import { getElement, getElementOrThrow -} from "../../agent" +} from "observables" -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Navigation layer - */ -export interface NavigationLayer { - prev?: HTMLElement /* Layer (previous) */ - next: HTMLElement /* Layer (next) */ -} +import { NavigationLayer } from "../_" /* ---------------------------------------------------------------------------- * Functions @@ -105,43 +76,3 @@ export function watchNavigationLayer( scan(({ next: prev }, { next }) => ({ prev, next })) ) } - -/* ------------------------------------------------------------------------- */ - -/** - * Paint navigation layer - * - * @param els - Navigation elements - * - * @return Operator function - */ -export function paintNavigationLayer( - els: HTMLElement[] -): MonoTypeOperatorFunction { - return pipe( - - /* Defer repaint to next animation frame */ - observeOn(animationFrameScheduler), - tap(({ prev }) => { - if (prev) - resetOverflowScrolling(prev) - }), - - /* Wait until transition has finished */ - delay(250), - - /* Defer repaint to next animation frame */ - observeOn(animationFrameScheduler), - tap(({ next }) => { - setOverflowScrolling(next) - }), - - /* Reset on complete or error */ - finalize(() => { - for (const el of els) - resetOverflowScrolling( - getElementOrThrow(".md-nav__list", el) - ) - }) - ) -} diff --git a/src/assets/javascripts/components/search/_/index.ts b/src/assets/javascripts/components/search/_/index.ts index 9fd96c94c..7e7833afc 100644 --- a/src/assets/javascripts/components/search/_/index.ts +++ b/src/assets/javascripts/components/search/_/index.ts @@ -24,7 +24,8 @@ import { Observable, OperatorFunction, combineLatest, pipe } from "rxjs" import { map, switchMap } from "rxjs/operators" import { SearchResult } from "integrations/search" -import { SearchQuery } from "observables" + +import { SearchQuery } from "../query" /* ---------------------------------------------------------------------------- * Types diff --git a/src/assets/javascripts/components/search/query/_/index.ts b/src/assets/javascripts/components/search/query/_/index.ts new file mode 100644 index 000000000..e96bae9ca --- /dev/null +++ b/src/assets/javascripts/components/search/query/_/index.ts @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { OperatorFunction, pipe } from "rxjs" +import { + distinctUntilKeyChanged, + map, + switchMap, + withLatestFrom +} from "rxjs/operators" + +import { + WorkerHandler, + setToggle, + useToggle +} from "observables" +import { + SearchMessage, + SearchMessageType, + SearchQueryMessage +} from "workers" + +import { watchSearchQuery } from "../watch" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Search query + */ +export interface SearchQuery { + value: string /* Query value */ + focus: boolean /* Query focus */ +} + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + transform?(value: string): string /* Transformation function */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount search query from source observable + * + * @param handler - Worker handler + * @param options - Options + * + * @return Operator function + */ +export function mountSearchQuery( + { tx$ }: WorkerHandler, options: MountOptions = {} +): OperatorFunction { + const toggle$ = useToggle("search") + return pipe( + switchMap(el => { + const query$ = watchSearchQuery(el, options) + + /* Subscribe worker to search query */ + query$ + .pipe( + distinctUntilKeyChanged("value"), + map(({ value }): SearchQueryMessage => ({ + type: SearchMessageType.QUERY, + data: value + })) + ) + .subscribe(tx$.next.bind(tx$)) + + /* Toggle search on focus */ + query$ + .pipe( + distinctUntilKeyChanged("focus"), + withLatestFrom(toggle$) + ) + .subscribe(([{ focus }, toggle]) => { + if (focus) + setToggle(toggle, focus) + }) + + /* Return search query */ + return query$ + }) + ) +} diff --git a/src/assets/javascripts/components/search/query/index.ts b/src/assets/javascripts/components/search/query/index.ts index 0af8d5c8a..824a1a543 100644 --- a/src/assets/javascripts/components/search/query/index.ts +++ b/src/assets/javascripts/components/search/query/index.ts @@ -20,82 +20,5 @@ * IN THE SOFTWARE. */ -import { OperatorFunction, pipe } from "rxjs" -import { - distinctUntilKeyChanged, - map, - switchMap, - withLatestFrom -} from "rxjs/operators" - -import { - SearchQuery, - WorkerHandler, - setToggle, - useToggle, - watchSearchQuery -} from "observables" -import { - SearchMessage, - SearchMessageType, - SearchQueryMessage -} from "workers" - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - transform?(value: string): string /* Transformation function */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount search query from source observable - * - * @param handler - Worker handler - * @param options - Options - * - * @return Operator function - */ -export function mountSearchQuery( - { tx$ }: WorkerHandler, options: MountOptions = {} -): OperatorFunction { - const toggle$ = useToggle("search") - return pipe( - switchMap(el => { - const query$ = watchSearchQuery(el, options) - - /* Subscribe worker to search query */ - query$ - .pipe( - distinctUntilKeyChanged("value"), - map(({ value }) => ({ - type: SearchMessageType.QUERY, - data: value - })) - ) - .subscribe(tx$.next.bind(tx$)) - - /* Toggle search on focus */ - query$ - .pipe( - distinctUntilKeyChanged("focus"), - withLatestFrom(toggle$) - ) - .subscribe(([{ focus }, toggle]) => { - if (focus) - setToggle(toggle, focus) - }) - - /* Return search query */ - return query$ - }) - ) -} +export * from "./_" +export * from "./watch" diff --git a/src/assets/javascripts/observables/search/query/index.ts b/src/assets/javascripts/components/search/query/watch/index.ts similarity index 89% rename from src/assets/javascripts/observables/search/query/index.ts rename to src/assets/javascripts/components/search/query/watch/index.ts index 1ac69668f..8977eb2a2 100644 --- a/src/assets/javascripts/observables/search/query/index.ts +++ b/src/assets/javascripts/components/search/query/watch/index.ts @@ -28,19 +28,9 @@ import { startWith } from "rxjs/operators" -import { watchElementFocus } from "../../agent" +import { watchElementFocus } from "observables" -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Search query - */ -export interface SearchQuery { - value: string /* Query value */ - focus: boolean /* Query focus */ -} +import { SearchQuery } from "../_" /* ---------------------------------------------------------------------------- * Helper types diff --git a/src/assets/javascripts/components/search/reset/_/index.ts b/src/assets/javascripts/components/search/reset/_/index.ts new file mode 100644 index 000000000..deb477cae --- /dev/null +++ b/src/assets/javascripts/components/search/reset/_/index.ts @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { OperatorFunction, pipe } from "rxjs" +import { + mapTo, + startWith, + switchMap, + switchMapTo, + tap +} from "rxjs/operators" + +import { setElementFocus } from "observables" + +import { useComponent } from "../../../_" +import { watchSearchReset } from "../watch" + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount search reset from source observable + * + * @return Operator function + */ +export function mountSearchReset(): OperatorFunction { + return pipe( + switchMap(el => watchSearchReset(el) + .pipe( + switchMapTo(useComponent("search-query")), + tap(setElementFocus), + mapTo(undefined) + ) + ), + startWith(undefined) + ) +} diff --git a/src/assets/javascripts/components/search/reset/index.ts b/src/assets/javascripts/components/search/reset/index.ts index 1f41d2754..824a1a543 100644 --- a/src/assets/javascripts/components/search/reset/index.ts +++ b/src/assets/javascripts/components/search/reset/index.ts @@ -20,37 +20,5 @@ * IN THE SOFTWARE. */ -import { OperatorFunction, pipe } from "rxjs" -import { - mapTo, - startWith, - switchMap, - switchMapTo, - tap -} from "rxjs/operators" - -import { setElementFocus, watchSearchReset } from "observables" - -import { useComponent } from "../../_" - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount search reset from source observable - * - * @return Operator function - */ -export function mountSearchReset(): OperatorFunction { - return pipe( - switchMap(el => watchSearchReset(el) - .pipe( - switchMapTo(useComponent("search-query")), - tap(setElementFocus), - mapTo(undefined) - ) - ), - startWith(undefined) - ) -} +export * from "./_" +export * from "./watch" diff --git a/src/assets/javascripts/observables/search/reset/index.ts b/src/assets/javascripts/components/search/reset/watch/index.ts similarity index 100% rename from src/assets/javascripts/observables/search/reset/index.ts rename to src/assets/javascripts/components/search/reset/watch/index.ts diff --git a/src/assets/javascripts/components/search/result/_/index.ts b/src/assets/javascripts/components/search/result/_/index.ts new file mode 100644 index 000000000..aa9360244 --- /dev/null +++ b/src/assets/javascripts/components/search/result/_/index.ts @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { identity } from "ramda" +import { Observable, OperatorFunction, pipe } from "rxjs" +import { + distinctUntilChanged, + filter, + map, + pluck, + switchMap +} from "rxjs/operators" + +import { SearchResult } from "integrations/search" +import { + WorkerHandler, + watchElementOffset +} from "observables" +import { + SearchMessage, + isSearchResultMessage +} from "workers" + +import { SearchQuery } from "../../query" +import { paintSearchResult } from "../paint" + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + query$: Observable /* Search query observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount search result from source observable + * + * @param handler - Worker handler + * @param options - Options + * + * @return Operator function + */ +export function mountSearchResult( + { rx$ }: WorkerHandler, { query$ }: MountOptions +): OperatorFunction { + return pipe( + switchMap(el => { + const container = el.parentElement! + + /* Compute whether there are more search results to fetch */ + const fetch$ = watchElementOffset(container) + .pipe( + map(({ y }) => { + return y >= container.scrollHeight - container.offsetHeight - 16 + }), + distinctUntilChanged(), + filter(identity) + ) + + /* Paint search results */ + return rx$ + .pipe( + filter(isSearchResultMessage), + pluck("data"), + paintSearchResult(el, { query$, fetch$ }) + ) + }) + ) +} diff --git a/src/assets/javascripts/actions/search/result/index.ts b/src/assets/javascripts/components/search/result/apply/index.ts similarity index 100% rename from src/assets/javascripts/actions/search/result/index.ts rename to src/assets/javascripts/components/search/result/apply/index.ts diff --git a/src/assets/javascripts/components/search/result/index.ts b/src/assets/javascripts/components/search/result/index.ts index 1ad515ae5..8644d81a2 100644 --- a/src/assets/javascripts/components/search/result/index.ts +++ b/src/assets/javascripts/components/search/result/index.ts @@ -20,75 +20,6 @@ * IN THE SOFTWARE. */ -import { identity } from "ramda" -import { Observable, OperatorFunction, pipe } from "rxjs" -import { - distinctUntilChanged, - filter, - map, - pluck, - switchMap -} from "rxjs/operators" - -import { SearchResult } from "integrations/search" -import { - SearchQuery, - WorkerHandler, - paintSearchResult, - watchElementOffset -} from "observables" -import { - SearchMessage, - isSearchResultMessage -} from "workers" - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - query$: Observable /* Search query observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount search result from source observable - * - * @param handler - Worker handler - * @param options - Options - * - * @return Operator function - */ -export function mountSearchResult( - { rx$ }: WorkerHandler, { query$ }: MountOptions -): OperatorFunction { - return pipe( - switchMap(el => { - const container = el.parentElement! - - /* Compute whether there are more search results to fetch */ - const fetch$ = watchElementOffset(container) - .pipe( - map(({ y }) => { - return y >= container.scrollHeight - container.offsetHeight - 16 - }), - distinctUntilChanged(), - filter(identity) - ) - - /* Paint search results */ - return rx$ - .pipe( - filter(isSearchResultMessage), - pluck("data"), - paintSearchResult(el, { query$, fetch$ }) - ) - }) - ) -} +export * from "./_" +export * from "./apply" +export * from "./paint" diff --git a/src/assets/javascripts/observables/search/result/index.ts b/src/assets/javascripts/components/search/result/paint/index.ts similarity index 97% rename from src/assets/javascripts/observables/search/result/index.ts rename to src/assets/javascripts/components/search/result/paint/index.ts index 85b378f7c..f946d82c7 100644 --- a/src/assets/javascripts/observables/search/result/index.ts +++ b/src/assets/javascripts/components/search/result/paint/index.ts @@ -36,17 +36,17 @@ import { withLatestFrom } from "rxjs/operators" +import { SearchResult } from "integrations/search" +import { getElementOrThrow } from "observables" +import { renderSearchResult } from "templates" + +import { SearchQuery } from "../../query" import { addToSearchResultList, resetSearchResultList, resetSearchResultMeta, setSearchResultMeta -} from "actions" -import { SearchResult } from "integrations/search" -import { renderSearchResult } from "templates" - -import { getElementOrThrow } from "../../agent" -import { SearchQuery } from "../query" +} from "../apply" /* ---------------------------------------------------------------------------- * Helper types diff --git a/src/assets/javascripts/observables/navigation/index.ts b/src/assets/javascripts/components/shared/index.ts similarity index 97% rename from src/assets/javascripts/observables/navigation/index.ts rename to src/assets/javascripts/components/shared/index.ts index d3f12c1e9..97c70131e 100644 --- a/src/assets/javascripts/observables/navigation/index.ts +++ b/src/assets/javascripts/components/shared/index.ts @@ -20,4 +20,4 @@ * IN THE SOFTWARE. */ -export * from "./layer" +export * from "./sidebar" diff --git a/src/assets/javascripts/actions/header/index.ts b/src/assets/javascripts/components/shared/sidebar/_/index.ts similarity index 77% rename from src/assets/javascripts/actions/header/index.ts rename to src/assets/javascripts/components/shared/sidebar/_/index.ts index 0fe74ed82..60fb76e84 100644 --- a/src/assets/javascripts/actions/header/index.ts +++ b/src/assets/javascripts/components/shared/sidebar/_/index.ts @@ -20,5 +20,14 @@ * IN THE SOFTWARE. */ -export * from "./shadow" -export * from "./title" +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Sidebar + */ +export interface Sidebar { + height: number /* Sidebar height */ + lock: boolean /* Sidebar lock */ +} diff --git a/src/assets/javascripts/actions/main/sidebar/index.ts b/src/assets/javascripts/components/shared/sidebar/apply/index.ts similarity index 100% rename from src/assets/javascripts/actions/main/sidebar/index.ts rename to src/assets/javascripts/components/shared/sidebar/apply/index.ts diff --git a/src/assets/javascripts/observables/header/index.ts b/src/assets/javascripts/components/shared/sidebar/index.ts similarity index 94% rename from src/assets/javascripts/observables/header/index.ts rename to src/assets/javascripts/components/shared/sidebar/index.ts index 03ba6ccd8..9dca36fe0 100644 --- a/src/assets/javascripts/observables/header/index.ts +++ b/src/assets/javascripts/components/shared/sidebar/index.ts @@ -21,5 +21,6 @@ */ export * from "./_" -export * from "./shadow" -export * from "./title" +export * from "./apply" +export * from "./paint" +export * from "./watch" diff --git a/src/assets/javascripts/components/shared/sidebar/paint/index.ts b/src/assets/javascripts/components/shared/sidebar/paint/index.ts new file mode 100644 index 000000000..75669f892 --- /dev/null +++ b/src/assets/javascripts/components/shared/sidebar/paint/index.ts @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { + MonoTypeOperatorFunction, + Observable, + animationFrameScheduler, + pipe +} from "rxjs" +import { + finalize, + map, + observeOn, + tap, + withLatestFrom +} from "rxjs/operators" + +import { Header } from "../../../header" +import { Sidebar } from "../_" +import { + resetSidebarHeight, + resetSidebarLock, + resetSidebarOffset, + setSidebarHeight, + setSidebarLock, + setSidebarOffset +} from "../apply" + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Paint options + */ +interface PaintOptions { + header$: Observable
    /* Header observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Paint sidebar + * + * @param el - Sidebar element + * @param options - Options + * + * @return Operator function + */ +export function paintSidebar( + el: HTMLElement, { header$ }: PaintOptions +): MonoTypeOperatorFunction { + return pipe( + + /* Defer repaint to next animation frame */ + observeOn(animationFrameScheduler), + withLatestFrom(header$), + tap(([{ height, lock }, { height: offset }]) => { + setSidebarHeight(el, height) + setSidebarLock(el, lock) + + /* Set offset in locked state depending on header height */ + if (lock) + setSidebarOffset(el, offset) + else + resetSidebarOffset(el) + }), + + /* Re-map to sidebar */ + map(([sidebar]) => sidebar), + + /* Reset on complete or error */ + finalize(() => { + resetSidebarOffset(el) + resetSidebarHeight(el) + resetSidebarLock(el) + }) + ) +} diff --git a/src/assets/javascripts/observables/main/sidebar/index.ts b/src/assets/javascripts/components/shared/sidebar/watch/index.ts similarity index 64% rename from src/assets/javascripts/observables/main/sidebar/index.ts rename to src/assets/javascripts/components/shared/sidebar/watch/index.ts index 1a7706e6e..9845c9e97 100644 --- a/src/assets/javascripts/observables/main/sidebar/index.ts +++ b/src/assets/javascripts/components/shared/sidebar/watch/index.ts @@ -20,47 +20,18 @@ * IN THE SOFTWARE. */ -import { - MonoTypeOperatorFunction, - Observable, - animationFrameScheduler, - combineLatest, - pipe -} from "rxjs" +import { Observable, combineLatest } from "rxjs" import { distinctUntilChanged, distinctUntilKeyChanged, - finalize, map, - observeOn, - tap, withLatestFrom } from "rxjs/operators" -import { - resetSidebarHeight, - resetSidebarLock, - resetSidebarOffset, - setSidebarHeight, - setSidebarLock, - setSidebarOffset -} from "actions" +import { Viewport } from "observables" -import { Viewport } from "../../agent" -import { Header } from "../../header" -import { Main } from "../_" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Sidebar - */ -export interface Sidebar { - height: number /* Sidebar height */ - lock: boolean /* Sidebar lock */ -} +import { Main } from "../../../main" +import { Sidebar } from "../_" /* ---------------------------------------------------------------------------- * Helper types @@ -74,13 +45,6 @@ interface WatchOptions { viewport$: Observable /* Viewport observable */ } -/** - * Paint options - */ -interface PaintOptions { - header$: Observable
    /* Header observable */ -} - /* ---------------------------------------------------------------------------- * Functions * ------------------------------------------------------------------------- */ @@ -141,44 +105,3 @@ export function watchSidebar( map(([height, lock]) => ({ height, lock })) ) } - -/* ------------------------------------------------------------------------- */ - -/** - * Paint sidebar - * - * @param el - Sidebar element - * @param options - Options - * - * @return Operator function - */ -export function paintSidebar( - el: HTMLElement, { header$ }: PaintOptions -): MonoTypeOperatorFunction { - return pipe( - - /* Defer repaint to next animation frame */ - observeOn(animationFrameScheduler), - withLatestFrom(header$), - tap(([{ height, lock }, { height: offset }]) => { - setSidebarHeight(el, height) - setSidebarLock(el, lock) - - /* Set offset in locked state depending on header height */ - if (lock) - setSidebarOffset(el, offset) - else - resetSidebarOffset(el) - }), - - /* Re-map to sidebar */ - map(([sidebar]) => sidebar), - - /* Reset on complete or error */ - finalize(() => { - resetSidebarOffset(el) - resetSidebarHeight(el) - resetSidebarLock(el) - }) - ) -} diff --git a/src/assets/javascripts/components/tabs/_/index.ts b/src/assets/javascripts/components/tabs/_/index.ts new file mode 100644 index 000000000..3ef360b1a --- /dev/null +++ b/src/assets/javascripts/components/tabs/_/index.ts @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { Observable, OperatorFunction, of, pipe } from "rxjs" +import { distinctUntilChanged, map, switchMap } from "rxjs/operators" + +import { Viewport, watchViewportAt } from "observables" + +import { Header } from "../../header" +import { paintTabs } from "../paint" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Tabs + */ +export interface Tabs { + hidden: boolean /* Whether the tabs are hidden */ +} + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + header$: Observable
    /* Header observable */ + viewport$: Observable /* Viewport observable */ + screen$: Observable /* Media screen observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount tabs from source observable + * + * @param options - Options + * + * @return Operator function + */ +export function mountTabs( + { header$, viewport$, screen$ }: MountOptions +): OperatorFunction { + return pipe( + switchMap(el => screen$ + .pipe( + switchMap(screen => { + + /* [screen +]: Mount tabs above screen breakpoint */ + if (screen) { + return watchViewportAt(el, { header$, viewport$ }) + .pipe( + map(({ offset: { y } }) => ({ hidden: y >= 10 })), + distinctUntilChanged(), + paintTabs(el) + ) + + /* [screen -]: Unmount tabs below screen breakpoint */ + } else { + return of({ hidden: true }) + } + }) + ) + ) + ) +} diff --git a/src/assets/javascripts/components/tabs/apply/index.ts b/src/assets/javascripts/components/tabs/apply/index.ts new file mode 100644 index 000000000..914f4ded4 --- /dev/null +++ b/src/assets/javascripts/components/tabs/apply/index.ts @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Set tabs hidden + * + * @param el - Tabs element + * @param value - Whether the element is hidden + */ +export function setTabsHidden( + el: HTMLElement, value: boolean +): void { + el.setAttribute("data-md-state", value ? "hidden" : "") +} + +/** + * Reset tabs hidden + * + * @param el - Tabs element + */ +export function resetTabsHidden( + el: HTMLElement +): void { + el.removeAttribute("data-md-state") +} diff --git a/src/assets/javascripts/components/tabs/index.ts b/src/assets/javascripts/components/tabs/index.ts index b01e5473f..8644d81a2 100644 --- a/src/assets/javascripts/components/tabs/index.ts +++ b/src/assets/javascripts/components/tabs/index.ts @@ -20,73 +20,6 @@ * IN THE SOFTWARE. */ -import { Observable, OperatorFunction, of, pipe } from "rxjs" -import { map, switchMap } from "rxjs/operators" - -import { - Header, - Viewport, - paintHideable, - watchViewportAt -} from "observables" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Tabs - */ -export interface Tabs { - hidden: boolean /* Whether the tabs are hidden */ -} - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - header$: Observable
    /* Header observable */ - viewport$: Observable /* Viewport observable */ - screen$: Observable /* Media screen observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount tabs from source observable - * - * @param options - Options - * - * @return Operator function - */ -export function mountTabs( - { header$, viewport$, screen$ }: MountOptions -): OperatorFunction { - return pipe( - switchMap(el => screen$ - .pipe( - switchMap(screen => { - - /* Mount tabs above screen breakpoint */ - if (screen) { - return watchViewportAt(el, { header$, viewport$ }) - .pipe( - paintHideable(el, 10), - map(hidden => ({ hidden })) - ) - - /* Mount tabs below screen breakpoint */ - } else { - return of({ hidden: true }) - } - }) - ) - ) - ) -} +export * from "./_" +export * from "./apply" +export * from "./paint" diff --git a/src/assets/javascripts/components/tabs/paint/index.ts b/src/assets/javascripts/components/tabs/paint/index.ts new file mode 100644 index 000000000..fa1b3ccb1 --- /dev/null +++ b/src/assets/javascripts/components/tabs/paint/index.ts @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { + MonoTypeOperatorFunction, + animationFrameScheduler, + pipe +} from "rxjs" +import { finalize, observeOn, tap } from "rxjs/operators" + +import { Tabs } from "../_" +import { + resetTabsHidden, + setTabsHidden +} from "../apply" + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Paint tabs + * + * @param el - Tabs element + * + * @return Operator function + */ +export function paintTabs( + el: HTMLElement +): MonoTypeOperatorFunction { + return pipe( + + /* Defer repaint to next animation frame */ + observeOn(animationFrameScheduler), + tap(({ hidden }) => { + setTabsHidden(el, hidden) + }), + + /* Reset on complete or error */ + finalize(() => { + resetTabsHidden(el) + }) + ) +} diff --git a/src/assets/javascripts/components/toc/_/index.ts b/src/assets/javascripts/components/toc/_/index.ts new file mode 100644 index 000000000..9a45b333d --- /dev/null +++ b/src/assets/javascripts/components/toc/_/index.ts @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { + Observable, + OperatorFunction, + combineLatest, + of, + pipe +} from "rxjs" +import { map, switchMap } from "rxjs/operators" + +import { Viewport, getElements } from "observables" + +import { Header } from "../../header" +import { Main } from "../../main" +import { + Sidebar, + paintSidebar, + watchSidebar +} from "../../shared" +import { + AnchorList, + paintAnchorList, + watchAnchorList +} from "../anchor" + +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Table of contents for [tablet -] + */ +interface TableOfContentsBelowTablet {} // tslint:disable-line + +/** + * Table of contents for [tablet +] + */ +interface TableOfContentsAboveTablet { + sidebar: Sidebar /* Sidebar */ + anchors: AnchorList /* Anchor list */ +} + +/* ------------------------------------------------------------------------- */ + +/** + * Table of contents + */ +export type TableOfContents = + | TableOfContentsBelowTablet + | TableOfContentsAboveTablet + +/* ---------------------------------------------------------------------------- + * Helper types + * ------------------------------------------------------------------------- */ + +/** + * Mount options + */ +interface MountOptions { + header$: Observable
    /* Header observable */ + main$: Observable
    /* Main area observable */ + viewport$: Observable /* Viewport observable */ + tablet$: Observable /* Tablet media observable */ +} + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Mount table of contents from source observable + * + * @param options - Options + * + * @return Operator function + */ +export function mountTableOfContents( + { header$, main$, viewport$, tablet$}: MountOptions +): OperatorFunction { + return pipe( + switchMap(el => tablet$ + .pipe( + switchMap(tablet => { + + /* [tablet +]: Mount table of contents in sidebar */ + if (tablet) { + const els = getElements(".md-nav__link", el) + + /* Watch and paint sidebar */ + const sidebar$ = watchSidebar(el, { main$, viewport$ }) + .pipe( + paintSidebar(el, { header$ }) + ) + + /* Watch and paint anchor list (scroll spy) */ + const anchors$ = watchAnchorList(els, { header$, viewport$ }) + .pipe( + paintAnchorList(els) + ) + + /* Combine into a single hot observable */ + return combineLatest([sidebar$, anchors$]) + .pipe( + map(([sidebar, anchors]) => ({ sidebar, anchors })) + ) + + /* [tablet -]: Unmount table of contents */ + } else { + return of({}) + } + }) + ) + ) + ) +} diff --git a/src/assets/javascripts/actions/index.ts b/src/assets/javascripts/components/toc/anchor/_/index.ts similarity index 76% rename from src/assets/javascripts/actions/index.ts rename to src/assets/javascripts/components/toc/anchor/_/index.ts index 196a57cf9..034428322 100644 --- a/src/assets/javascripts/actions/index.ts +++ b/src/assets/javascripts/components/toc/anchor/_/index.ts @@ -20,7 +20,14 @@ * IN THE SOFTWARE. */ -export * from "./anchor" -export * from "./header" -export * from "./main" -export * from "./search" +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ + +/** + * Anchor list + */ +export interface AnchorList { + prev: HTMLAnchorElement[][] /* Anchors (previous) */ + next: HTMLAnchorElement[][] /* Anchors (next) */ +} diff --git a/src/assets/javascripts/actions/anchor/index.ts b/src/assets/javascripts/components/toc/anchor/apply/index.ts similarity index 100% rename from src/assets/javascripts/actions/anchor/index.ts rename to src/assets/javascripts/components/toc/anchor/apply/index.ts diff --git a/src/assets/javascripts/actions/main/index.ts b/src/assets/javascripts/components/toc/anchor/index.ts similarity index 92% rename from src/assets/javascripts/actions/main/index.ts rename to src/assets/javascripts/components/toc/anchor/index.ts index e961f6e6b..9dca36fe0 100644 --- a/src/assets/javascripts/actions/main/index.ts +++ b/src/assets/javascripts/components/toc/anchor/index.ts @@ -20,6 +20,7 @@ * IN THE SOFTWARE. */ -export * from "./hideable" -export * from "./sidebar" -export * from "./scrollable" +export * from "./_" +export * from "./apply" +export * from "./paint" +export * from "./watch" diff --git a/src/assets/javascripts/components/toc/anchor/paint/index.ts b/src/assets/javascripts/components/toc/anchor/paint/index.ts new file mode 100644 index 000000000..dcdd14aad --- /dev/null +++ b/src/assets/javascripts/components/toc/anchor/paint/index.ts @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +import { + MonoTypeOperatorFunction, + animationFrameScheduler, + pipe +} from "rxjs" +import { finalize, observeOn, tap } from "rxjs/operators" + +import { AnchorList } from "../_" +import { + resetAnchorActive, + resetAnchorBlur, + setAnchorActive, + setAnchorBlur +} from "../apply" + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Paint anchor list + * + * @param els - Anchor elements + * + * @return Operator function + */ +export function paintAnchorList( + els: HTMLAnchorElement[] +): MonoTypeOperatorFunction { + return pipe( + + /* Defer repaint to next animation frame */ + observeOn(animationFrameScheduler), + tap(({ prev, next }) => { + + /* Look forward */ + for (const [el] of next) { + resetAnchorActive(el) + resetAnchorBlur(el) + } + + /* Look backward */ + for (const [index, [el]] of prev.entries()) { + setAnchorActive(el, index === prev.length - 1) + setAnchorBlur(el, true) + } + }), + + /* Reset on complete or error */ + finalize(() => { + for (const el of els) { + resetAnchorActive(el) + resetAnchorBlur(el) + } + }) + ) +} diff --git a/src/assets/javascripts/observables/anchor/index.ts b/src/assets/javascripts/components/toc/anchor/watch/index.ts similarity index 78% rename from src/assets/javascripts/observables/anchor/index.ts rename to src/assets/javascripts/components/toc/anchor/watch/index.ts index 196957a9d..2597e402d 100644 --- a/src/assets/javascripts/observables/anchor/index.ts +++ b/src/assets/javascripts/components/toc/anchor/watch/index.ts @@ -21,47 +21,21 @@ */ import { reverse } from "ramda" -import { - MonoTypeOperatorFunction, - Observable, - animationFrameScheduler, - combineLatest, - pipe -} from "rxjs" +import { Observable, combineLatest } from "rxjs" import { bufferCount, distinctUntilChanged, distinctUntilKeyChanged, - finalize, map, - observeOn, scan, startWith, - switchMap, - tap + switchMap } from "rxjs/operators" -import { - resetAnchorActive, - resetAnchorBlur, - setAnchorActive, - setAnchorBlur -} from "actions" +import { Viewport, getElement } from "observables" -import { Viewport, getElement } from "../agent" -import { Header } from "../header" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Anchor list - */ -export interface AnchorList { - prev: HTMLAnchorElement[][] /* Anchors (previous) */ - next: HTMLAnchorElement[][] /* Anchors (next) */ -} +import { Header } from "../../../header" +import { AnchorList } from "../_" /* ---------------------------------------------------------------------------- * Helper types @@ -215,44 +189,3 @@ export function watchAnchorList( }) ) } - -/* ------------------------------------------------------------------------- */ - -/** - * Paint anchor list - * - * @param els - Anchor elements - * - * @return Operator function - */ -export function paintAnchorList( - els: HTMLAnchorElement[] -): MonoTypeOperatorFunction { - return pipe( - - /* Defer repaint to next animation frame */ - observeOn(animationFrameScheduler), - tap(({ prev, next }) => { - - /* Look forward */ - for (const [el] of next) { - resetAnchorActive(el) - resetAnchorBlur(el) - } - - /* Look backward */ - for (const [index, [el]] of prev.entries()) { - setAnchorActive(el, index === prev.length - 1) - setAnchorBlur(el, true) - } - }), - - /* Reset on complete or error */ - finalize(() => { - for (const el of els) { - resetAnchorActive(el) - resetAnchorBlur(el) - } - }) - ) -} diff --git a/src/assets/javascripts/components/toc/index.ts b/src/assets/javascripts/components/toc/index.ts index faf81f814..4a74a3583 100644 --- a/src/assets/javascripts/components/toc/index.ts +++ b/src/assets/javascripts/components/toc/index.ts @@ -20,115 +20,5 @@ * IN THE SOFTWARE. */ -import { - Observable, - OperatorFunction, - combineLatest, - of, - pipe -} from "rxjs" -import { map, switchMap } from "rxjs/operators" - -import { - AnchorList, - Header, - Main, - Sidebar, - Viewport, - getElements, - paintAnchorList, - paintSidebar, - watchAnchorList, - watchSidebar -} from "observables" - -/* ---------------------------------------------------------------------------- - * Types - * ------------------------------------------------------------------------- */ - -/** - * Table of contents for [tablet -] - */ -export interface TableOfContentsBelowTablet {} // tslint:disable-line - -/** - * Table of contents for [tablet +] - */ -export interface TableOfContentsAboveTablet { - sidebar: Sidebar /* Sidebar */ - anchors: AnchorList /* Anchor list */ -} - -/* ------------------------------------------------------------------------- */ - -/** - * Table of contents - */ -export type TableOfContents = - | TableOfContentsBelowTablet - | TableOfContentsAboveTablet - -/* ---------------------------------------------------------------------------- - * Helper types - * ------------------------------------------------------------------------- */ - -/** - * Mount options - */ -interface MountOptions { - header$: Observable
    /* Header observable */ - main$: Observable
    /* Main area observable */ - viewport$: Observable /* Viewport observable */ - tablet$: Observable /* Tablet media observable */ -} - -/* ---------------------------------------------------------------------------- - * Functions - * ------------------------------------------------------------------------- */ - -/** - * Mount table of contents from source observable - * - * @param options - Options - * - * @return Operator function - */ -export function mountTableOfContents( - { header$, main$, viewport$, tablet$}: MountOptions -): OperatorFunction { - return pipe( - switchMap(el => tablet$ - .pipe( - switchMap(tablet => { - - /* [tablet +]: Mount table of contents in sidebar */ - if (tablet) { - const els = getElements(".md-nav__link", el) - - /* Watch and paint sidebar */ - const sidebar$ = watchSidebar(el, { main$, viewport$ }) - .pipe( - paintSidebar(el, { header$ }) - ) - - /* Watch and paint anchor list (scroll spy) */ - const anchors$ = watchAnchorList(els, { header$, viewport$ }) - .pipe( - paintAnchorList(els) - ) - - /* Combine into a single hot observable */ - return combineLatest([sidebar$, anchors$]) - .pipe( - map(([sidebar, anchors]) => ({ sidebar, anchors })) - ) - - /* [tablet -]: Unmount table of contents */ - } else { - return of({}) - } - }) - ) - ) - ) -} +export * from "./_" +export * from "./anchor" diff --git a/src/assets/javascripts/index.ts b/src/assets/javascripts/index.ts index e656f6fb7..8fa94542d 100644 --- a/src/assets/javascripts/index.ts +++ b/src/assets/javascripts/index.ts @@ -68,12 +68,10 @@ import { useToggle, getElement, setViewportOffset, - ViewportOffset, - getLocation + ViewportOffset } from "./observables" import { setupSearchWorker } from "./workers" -import { setScrollLock, resetScrollLock } from "actions" import { mountHeader, mountHero, @@ -84,7 +82,6 @@ import { mountTabs, useComponent, setupComponents, - mountHeaderTitle, mountSearchQuery, mountSearchReset, mountSearchResult @@ -110,6 +107,34 @@ document.documentElement.classList.add("js") if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) document.documentElement.classList.add("ios") +/** + * Set scroll lock + * + * @param el - Scrollable element + * @param value - Vertical offset + */ +export function setScrollLock( + el: HTMLElement, value: number +): void { + el.setAttribute("data-md-state", "lock") + el.style.top = `-${value}px` +} + +/** + * Reset scroll lock + * + * @param el - Scrollable element + */ +export function resetScrollLock( + el: HTMLElement +): void { + const value = -1 * parseInt(el.style.top, 10) + el.removeAttribute("data-md-state") + el.style.top = "" + if (value) + window.scrollTo(0, value) +} + /* ---------------------------------------------------------------------------- * Functions * ------------------------------------------------------------------------- */ @@ -235,12 +260,6 @@ export function initialize(config: unknown) { shareReplay(1) ) - const title$ = useComponent("header-title") - .pipe( - mountHeaderTitle({ header$, viewport$ }), - shareReplay(1) - ) - /* ----------------------------------------------------------------------- */ const keyboard$ = setupKeyboard() @@ -320,7 +339,8 @@ export function initialize(config: unknown) { function isInternalLink(el: HTMLAnchorElement | URL) { return el.host === location.host && ( - !el.pathname || /\/[\w-]+(?:\/?|\.html)$/i.test(el.pathname) + // TODO: Improve regex + !el.pathname || el.pathname === "/" || /\/[\w-]+(?:\/?|\.html)$/i.test(el.pathname) // TODO: provide some test cases ) } @@ -541,7 +561,7 @@ export function initialize(config: unknown) { toc$, tabs$, hero$, - title$ // TODO: header title + // title$ // TODO: header title } const { ...rest } = state diff --git a/src/assets/javascripts/integrations/dialog/index.ts b/src/assets/javascripts/integrations/dialog/index.ts index e4af66799..bd70a1ddc 100644 --- a/src/assets/javascripts/integrations/dialog/index.ts +++ b/src/assets/javascripts/integrations/dialog/index.ts @@ -26,12 +26,9 @@ import { map, observeOn, switchMap, - tap, - withLatestFrom + tap } from "rxjs/operators" -import { useComponent } from "components" - /* ---------------------------------------------------------------------------- * Types * ------------------------------------------------------------------------- */ diff --git a/src/assets/javascripts/integrations/keyboard/index.ts b/src/assets/javascripts/integrations/keyboard/index.ts index 768180474..25a5f098c 100644 --- a/src/assets/javascripts/integrations/keyboard/index.ts +++ b/src/assets/javascripts/integrations/keyboard/index.ts @@ -37,6 +37,7 @@ import { getElements, isSusceptibleToKeyboard, setElementFocus, + setElementSelection, setToggle, useToggle, watchKeyboard, @@ -177,7 +178,7 @@ export function setupKeyboard(): Observable { case "f": case "s": setElementFocus(query) - query.select() + setElementSelection(query) key.claim() break diff --git a/src/assets/javascripts/observables/agent/element/index.ts b/src/assets/javascripts/observables/agent/element/index.ts index 95e227fe2..bdee98ba6 100644 --- a/src/assets/javascripts/observables/agent/element/index.ts +++ b/src/assets/javascripts/observables/agent/element/index.ts @@ -23,3 +23,4 @@ export * from "./_" export * from "./focus" export * from "./offset" +export * from "./select" diff --git a/src/assets/javascripts/observables/agent/element/select/index.ts b/src/assets/javascripts/observables/agent/element/select/index.ts new file mode 100644 index 000000000..cca7be142 --- /dev/null +++ b/src/assets/javascripts/observables/agent/element/select/index.ts @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ + +/** + * Set element text selection + * + * @param el - Element + */ +export function setElementSelection( + el: HTMLElement +): void { + if (el instanceof HTMLInputElement) + el.select() + else + throw new Error("Not implemented") +} diff --git a/src/assets/javascripts/observables/agent/viewport/_/index.ts b/src/assets/javascripts/observables/agent/viewport/_/index.ts index fecffe617..9c65fa521 100644 --- a/src/assets/javascripts/observables/agent/viewport/_/index.ts +++ b/src/assets/javascripts/observables/agent/viewport/_/index.ts @@ -95,7 +95,7 @@ export function watchViewportAt( const offset$ = viewport$ .pipe( distinctUntilKeyChanged("size"), - map(() => ({ + map((): ViewportOffset => ({ x: el.offsetLeft, y: el.offsetTop })) diff --git a/src/assets/javascripts/observables/index.ts b/src/assets/javascripts/observables/index.ts index 7755669c8..c324afa5c 100644 --- a/src/assets/javascripts/observables/index.ts +++ b/src/assets/javascripts/observables/index.ts @@ -21,9 +21,4 @@ */ export * from "./agent" -export * from "./anchor" -export * from "./header" -export * from "./main" -export * from "./navigation" -export * from "./search" export * from "./toggle" diff --git a/src/assets/javascripts/observables/search/index.ts b/src/assets/javascripts/observables/search/index.ts deleted file mode 100644 index bfcee6ae7..000000000 --- a/src/assets/javascripts/observables/search/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2016-2020 Martin Donath - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -export * from "./query" -export * from "./reset" -export * from "./result" diff --git a/src/assets/javascripts/patches/details/index.ts b/src/assets/javascripts/patches/details/index.ts index b48b623d1..6fea85888 100644 --- a/src/assets/javascripts/patches/details/index.ts +++ b/src/assets/javascripts/patches/details/index.ts @@ -40,9 +40,9 @@ import { * ------------------------------------------------------------------------- */ /** - * Mount options + * Patch options */ -interface MountOptions { +interface PatchOptions { document$: Observable /* Document observable */ hash$: Observable /* Location hash observable */ } @@ -55,12 +55,12 @@ interface MountOptions { * Patch all `details` elements * * This function will ensure that all `details` tags are opened prior to - * printing, so the whole content of the page is included. + * printing, so the whole content of the page is included, and on anchor jumps. * * @param options - Options */ export function patchDetails( - { document$, hash$ }: MountOptions + { document$, hash$ }: PatchOptions ): void { const els$ = document$ .pipe( diff --git a/src/assets/javascripts/patches/script/index.ts b/src/assets/javascripts/patches/script/index.ts index c76391e11..5294fffb7 100644 --- a/src/assets/javascripts/patches/script/index.ts +++ b/src/assets/javascripts/patches/script/index.ts @@ -20,32 +20,20 @@ * IN THE SOFTWARE. */ -import { identity } from "ramda" -import { Observable, fromEvent, merge } from "rxjs" -import { - filter, - map, - skip, - switchMapTo, - tap, - withLatestFrom -} from "rxjs/operators" +import { Observable } from "rxjs" +import { map, skip, withLatestFrom } from "rxjs/operators" import { useComponent } from "components" -import { - getElement, - getElements, - watchMedia -} from "observables" +import { getElements } from "observables" /* ---------------------------------------------------------------------------- * Helper types * ------------------------------------------------------------------------- */ /** - * Mount options + * Patch options */ -interface MountOptions { +interface PatchOptions { document$: Observable /* Document observable */ } @@ -62,7 +50,7 @@ interface MountOptions { * @param options - Options */ export function patchScripts( - { document$ }: MountOptions + { document$ }: PatchOptions ): void { const els$ = document$ .pipe( diff --git a/src/assets/javascripts/patches/scrollfix/index.ts b/src/assets/javascripts/patches/scrollfix/index.ts index 10df10fac..204453b88 100644 --- a/src/assets/javascripts/patches/scrollfix/index.ts +++ b/src/assets/javascripts/patches/scrollfix/index.ts @@ -30,9 +30,9 @@ import { getElements } from "observables" * ------------------------------------------------------------------------- */ /** - * Mount options + * Patch options */ -interface MountOptions { +interface PatchOptions { document$: Observable /* Document observable */ } @@ -41,7 +41,7 @@ interface MountOptions { * ------------------------------------------------------------------------- */ /** - * Check whetehr the given device is an Apple device + * Check whether the given device is an Apple device * * @return Test result */ @@ -65,7 +65,7 @@ function isAppleDevice(): boolean { * @param options - Options */ export function patchScrollfix( - { document$ }: MountOptions + { document$ }: PatchOptions ): void { const els$ = document$ .pipe( diff --git a/src/assets/javascripts/patches/source/index.ts b/src/assets/javascripts/patches/source/index.ts index 09049e99c..3f81c1100 100644 --- a/src/assets/javascripts/patches/source/index.ts +++ b/src/assets/javascripts/patches/source/index.ts @@ -21,7 +21,7 @@ */ import { NEVER, Observable } from "rxjs" -import { catchError, map, switchMap, take } from "rxjs/operators" +import { catchError, map, switchMap } from "rxjs/operators" import { getElementOrThrow, getElements } from "observables" import { renderSource } from "templates" @@ -44,9 +44,9 @@ export type SourceFacts = string[] * ------------------------------------------------------------------------- */ /** - * Setup options + * Patch options */ -interface SetupOptions { +interface PatchOptions { document$: Observable /* Document observable */ } @@ -96,12 +96,11 @@ function fetchSourceFacts( * @param options - Options */ export function patchSource( - { document$ }: SetupOptions + { document$ }: PatchOptions ): void { document$ .pipe( map(() => getElementOrThrow(".md-source[href]")), - take(1), switchMap(({ href }) => ( cache(`${hash(href)}`, () => fetchSourceFacts(href)) )), @@ -109,8 +108,10 @@ export function patchSource( ) .subscribe(facts => { for (const el of getElements(".md-source__repository")) { - el.setAttribute("data-md-state", "done") - el.appendChild(renderSource(facts)) + if (!el.hasAttribute("data-md-state")) { + el.setAttribute("data-md-state", "done") + el.appendChild(renderSource(facts)) + } } }) } diff --git a/src/assets/stylesheets/layout/_tabs.scss b/src/assets/stylesheets/layout/_tabs.scss index 051e79301..4d790d22f 100644 --- a/src/assets/stylesheets/layout/_tabs.scss +++ b/src/assets/stylesheets/layout/_tabs.scss @@ -105,8 +105,8 @@ &[data-md-state="hidden"] { pointer-events: none; - // Hide tabs upon scrolling - disable transition to minimizes repaints whilte - // scrolling down, while scrolling up seems to be okay + // Hide tabs upon scrolling - disable transition to minimizes repaints + // while scrolling down, while scrolling up seems to be okay .md-tabs__link { transform: translateY(50%); transition: @@ -125,7 +125,7 @@ display: none; } - // We're on the 2nd+ level + // Active tab &--active ~ .md-main { // Adjust 1st level styles @@ -144,15 +144,10 @@ } } - // Hide 1st level normal items + // Hide 1st level items > .md-nav__list > .md-nav__item { display: none; - // Hide nested items - &--nested { - display: none; - } - // Show 1st level active nested items &--active { display: block; diff --git a/src/base.html b/src/base.html index 619ac8927..d27fd4dbc 100644 --- a/src/base.html +++ b/src/base.html @@ -370,6 +370,7 @@ {% block scripts %} + diff --git a/webpack.config.ts b/webpack.config.ts index 04ed476ba..c1f67177e 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -309,7 +309,20 @@ export default (_env: never, args: Configuration): Configuration[] => { } } }) - ] + ], + + /* Optimizations */ + optimization: { + splitChunks: { + cacheGroups: { + commons: { + test: /\/node_modules\//, + name: "assets/javascripts/vendor", + chunks: "all" + } + } + } + } }, /* Search worker */