diff --git a/index.html b/index.html new file mode 100644 index 0000000..13d2a1f --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/src.e6eed49f.js b/src.e6eed49f.js new file mode 100644 index 0000000..c4773a9 --- /dev/null +++ b/src.e6eed49f.js @@ -0,0 +1,127 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c=y},r=function(){},exports.unstable_forceFrameRate=function(e){0>e||125>>1,o=e[r];if(!(void 0!==o&&0T(l,n))void 0!==s&&0>T(s,l)?(e[r]=s,e[i]=n,r=i):(e[r]=l,e[a]=n,r=a);else{if(!(void 0!==s&&0>T(s,n)))break e;e[r]=s,e[i]=n,r=i}}}return t}return null}function T(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var g=[],P=[],F=1,I=null,M=3,C=!1,j=!1,A=!1;function L(e){for(var t=h(P);null!==t;){if(null===t.callback)k(P);else{if(!(t.startTime<=e))break;k(P),t.sortIndex=t.expirationTime,_(g,t)}t=h(P)}}function q(n){if(A=!1,L(n),!j)if(null!==h(g))j=!0,e(R);else{var r=h(P);null!==r&&t(q,r.startTime-n)}}function R(e,r){j=!1,A&&(A=!1,n()),C=!0;var o=M;try{for(L(r),I=h(g);null!==I&&(!(I.expirationTime>r)||e&&!exports.unstable_shouldYield());){var a=I.callback;if("function"==typeof a){I.callback=null,M=I.priorityLevel;var l=a(I.expirationTime<=r);r=exports.unstable_now(),"function"==typeof l?I.callback=l:I===h(g)&&k(g),L(r)}else k(g);I=h(g)}if(null!==I)var i=!0;else{var s=h(P);null!==s&&t(q,s.startTime-r),i=!1}return i}finally{I=null,M=o,C=!1}}var Y=r;exports.unstable_IdlePriority=5,exports.unstable_ImmediatePriority=1,exports.unstable_LowPriority=4,exports.unstable_NormalPriority=3,exports.unstable_Profiling=null,exports.unstable_UserBlockingPriority=2,exports.unstable_cancelCallback=function(e){e.callback=null},exports.unstable_continueExecution=function(){j||C||(j=!0,e(R))},exports.unstable_getCurrentPriorityLevel=function(){return M},exports.unstable_getFirstCallbackNode=function(){return h(g)},exports.unstable_next=function(e){switch(M){case 1:case 2:case 3:var t=3;break;default:t=M}var n=M;M=t;try{return e()}finally{M=n}},exports.unstable_pauseExecution=function(){},exports.unstable_requestPaint=Y,exports.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=M;M=e;try{return t()}finally{M=n}},exports.unstable_scheduleCallback=function(r,o,a){var l=exports.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0l?(r.sortIndex=a,_(P,r),null===h(g)&&r===h(P)&&(A?n():A=!0,t(q,a-l))):(r.sortIndex=i,_(g,r),j||C||(j=!0,e(R))),r},exports.unstable_wrapCallback=function(e){var t=M;return function(){var n=M;M=t;try{return e.apply(this,arguments)}finally{M=n}}}; +},{}],"IGIl":[function(require,module,exports) { +"use strict";module.exports=require("./cjs/scheduler.production.min.js"); +},{"./cjs/scheduler.production.min.js":"x9cO"}],"jF7N":[function(require,module,exports) { +"use strict";var e=require("react"),t=require("object-assign"),n=require("scheduler");function r(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}function g(e,t,n,r,l,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){v[e]=new g(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){v[e]=new g(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){v[e]=new g(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){v[e]=new g(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){v[e]=new g(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)});var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function w(e,t,n,r){var l=v.hasOwnProperty(t)?v[t]:null;(null!==l?0===l.type:!r&&(2--u||l[o]!==a[u])return"\n"+l[o].replace(" at new "," at ")}while(1<=o&&0<=u);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Q(e):""}function $(e){switch(e.tag){case 5:return Q(e.type);case 16:return Q("Lazy");case 13:return Q("Suspense");case 19:return Q("SuspenseList");case 0:case 2:case 15:return e=j(e.type,!1);case 11:return e=j(e.type.render,!1);case 22:return e=j(e.type._render,!1);case 1:return e=j(e.type,!0);default:return""}}function q(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case E:return"Portal";case _:return"Profiler";case C:return"StrictMode";case L:return"Suspense";case T:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case P:return(e.displayName||"Context")+".Consumer";case N:return(e._context.displayName||"Context")+".Provider";case z:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case M:return q(e.type);case R:return q(e._render);case O:t=e._payload,e=e._init;try{return q(e(t))}catch(n){}}return null}function K(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function X(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var l=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function G(e){e._valueTracker||(e._valueTracker=X(e))}function Z(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function J(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function ee(e,n){var r=n.checked;return t({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=r?r:e._wrapperState.initialChecked})}function te(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=K(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function ne(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function re(e,t){ne(e,t);var n=K(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,K(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function le(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&J(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(t){var n="";return e.Children.forEach(t,function(e){null!=e&&(n+=e)}),n}function ue(e,n){return e=t({children:void 0},n),(n=oe(n.children))&&(e.children=n),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l=n.length))throw Error(r(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:K(n)}}function fe(e,t){var n=K(t.value),r=K(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function de(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var pe={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function he(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?he(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ge,ve=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,l){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==pe.svg||"innerHTML"in e)e.innerHTML=t;else{for((ge=ge||document.createElement("div")).innerHTML=""+t.valueOf().toString()+"",t=ge.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ye(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},we=["Webkit","ms","Moz","O"];function ke(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function Se(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),l=ke(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}Object.keys(be).forEach(function(e){we.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]})});var Ee=t({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function xe(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(r(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(r(60));if(!("object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML))throw Error(r(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(r(62))}}function Ce(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ne=null,Pe=null,ze=null;function Le(e){if(e=Sl(e)){if("function"!=typeof Ne)throw Error(r(280));var t=e.stateNode;t&&(t=xl(t),Ne(e.stateNode,e.type,t))}}function Te(e){Pe?ze?ze.push(e):ze=[e]:Pe=e}function Me(){if(Pe){var e=Pe,t=ze;if(ze=Pe=null,Le(e),t)for(e=0;e(r=31-Gt(r))?0:1<n;n++)t.push(e);return t}function Xt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Gt(t)]=n}var Gt=Math.clz32?Math.clz32:en,Zt=Math.log,Jt=Math.LN2;function en(e){return 0===e?32:31-(Zt(e)/Jt|0)|0}var tn=n.unstable_UserBlockingPriority,nn=n.unstable_runWithPriority,rn=!0;function ln(e,t,n,r){Ie||De();var l=on,a=Ie;Ie=!0;try{Re(l,e,t,n,r)}finally{(Ie=a)||Ve()}}function an(e,t,n,r){nn(tn,on.bind(null,e,t,n,r))}function on(e,t,n,r){var l;if(rn)if((l=0==(4&t))&&0=Jn),nr=String.fromCharCode(32),rr=!1;function lr(e,t){switch(e){case"keyup":return-1!==Gn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ar(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var or=!1;function ur(e,t){switch(e){case"compositionend":return ar(t);case"keypress":return 32!==t.which?null:(rr=!0,nr);case"textInput":return(e=t.data)===nr&&rr?null:e;default:return null}}function ir(e,t){if(or)return"compositionend"===e||!Zn&&lr(e,t)?(e=dn(),fn=cn=sn=null,or=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Tr(r)}}function Or(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Or(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function Rr(){for(var e=window,t=J();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=J((e=t.contentWindow).document)}return t}function Dr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Fr=i&&"documentMode"in document&&11>=document.documentMode,Ir=null,Ur=null,Vr=null,Ar=!1;function Br(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;Ar||null==Ir||Ir!==J(r)||("selectionStart"in(r=Ir)&&Dr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},Vr&&Lr(Vr,r)||(Vr=r,0<(r=tl(Ur,"onSelect")).length&&(t=new kn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=Ir)))}Vt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Vt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Vt(Ut,2);for(var Wr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Qr=0;QrNl||(e.current=_l[Nl],_l[Nl]=null,Nl--)}function Ll(e,t){_l[++Nl]=e.current,e.current=t}var Tl={},Ml=Pl(Tl),Ol=Pl(!1),Rl=Tl;function Dl(e,t){var n=e.type.contextTypes;if(!n)return Tl;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l,a={};for(l in n)a[l]=t[l];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Fl(e){return null!=(e=e.childContextTypes)}function Il(){zl(Ol),zl(Ml)}function Ul(e,t,n){if(Ml.current!==Tl)throw Error(r(168));Ll(Ml,t),Ll(Ol,n)}function Vl(e,n,l){var a=e.stateNode;if(e=n.childContextTypes,"function"!=typeof a.getChildContext)return l;for(var o in a=a.getChildContext())if(!(o in e))throw Error(r(108,q(n)||"Unknown",o));return t({},l,a)}function Al(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Tl,Rl=Ml.current,Ll(Ml,e),Ll(Ol,Ol.current),!0}function Bl(e,t,n){var l=e.stateNode;if(!l)throw Error(r(169));n?(e=Vl(e,t,Rl),l.__reactInternalMemoizedMergedChildContext=e,zl(Ol),zl(Ml),Ll(Ml,e)):zl(Ol),Ll(Ol,n)}var Wl=null,Ql=null,Hl=n.unstable_runWithPriority,jl=n.unstable_scheduleCallback,$l=n.unstable_cancelCallback,ql=n.unstable_shouldYield,Kl=n.unstable_requestPaint,Yl=n.unstable_now,Xl=n.unstable_getCurrentPriorityLevel,Gl=n.unstable_ImmediatePriority,Zl=n.unstable_UserBlockingPriority,Jl=n.unstable_NormalPriority,ea=n.unstable_LowPriority,ta=n.unstable_IdlePriority,na={},ra=void 0!==Kl?Kl:function(){},la=null,aa=null,oa=!1,ua=Yl(),ia=1e4>ua?Yl:function(){return Yl()-ua};function sa(){switch(Xl()){case Gl:return 99;case Zl:return 98;case Jl:return 97;case ea:return 96;case ta:return 95;default:throw Error(r(332))}}function ca(e){switch(e){case 99:return Gl;case 98:return Zl;case 97:return Jl;case 96:return ea;case 95:return ta;default:throw Error(r(332))}}function fa(e,t){return e=ca(e),Hl(e,t)}function da(e,t,n){return e=ca(e),jl(e,t,n)}function pa(){if(null!==aa){var e=aa;aa=null,$l(e)}ha()}function ha(){if(!oa&&null!==la){oa=!0;var e=0;try{var t=la;fa(99,function(){for(;em?(g=f,f=null):g=f.sibling;var v=p(r,f,u[m],i);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&t(r,f),a=o(v,a,m),null===c?s=v:c.sibling=v,c=v,f=g}if(m===u.length)return n(r,f),s;if(null===f){for(;mg?(v=m,m=null):v=m.sibling;var b=p(a,m,y.value,s);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(a,m),u=o(b,u,g),null===f?c=b:f.sibling=b,f=b,m=v}if(y.done)return n(a,m),c;if(null===m){for(;!y.done;g++,y=i.next())null!==(y=d(a,y.value,s))&&(u=o(y,u,g),null===f?c=y:f.sibling=y,f=y);return c}for(m=l(a,m);!y.done;g++,y=i.next())null!==(y=h(m,a,g,y.value,s))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),u=o(y,u,g),null===f?c=y:f.sibling=y,f=y);return e&&m.forEach(function(e){return t(a,e)}),c}return function(e,l,o,i){var s="object"==typeof o&&null!==o&&o.type===x&&null===o.key;s&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case S:e:{for(c=o.key,s=l;null!==s;){if(s.key===c){switch(s.tag){case 7:if(o.type===x){n(e,s.sibling),(l=a(s,o.props.children)).return=e,e=l;break e}break;default:if(s.elementType===o.type){n(e,s.sibling),(l=a(s,o.props)).ref=Wa(e,s,o),l.return=e,e=l;break e}}n(e,s);break}t(e,s),s=s.sibling}o.type===x?((l=gs(o.props.children,e.mode,i,o.key)).return=e,e=l):((i=ms(o.type,o.key,o.props,null,e.mode,i)).ref=Wa(e,l,o),i.return=e,e=i)}return u(e);case E:e:{for(s=o.key;null!==l;){if(l.key===s){if(4===l.tag&&l.stateNode.containerInfo===o.containerInfo&&l.stateNode.implementation===o.implementation){n(e,l.sibling),(l=a(l,o.children||[])).return=e,e=l;break e}n(e,l);break}t(e,l),l=l.sibling}(l=bs(o,e.mode,i)).return=e,e=l}return u(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==l&&6===l.tag?(n(e,l.sibling),(l=a(l,o)).return=e,e=l):(n(e,l),(l=ys(o,e.mode,i)).return=e,e=l),u(e);if(Ba(o))return m(e,l,o,i);if(W(o))return g(e,l,o,i);if(c&&Qa(e,o),void 0===o&&!s)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(r(152,q(e.type)||"Component"))}return n(e,l)}}var ja=Ha(!0),$a=Ha(!1),qa={},Ka=Pl(qa),Ya=Pl(qa),Xa=Pl(qa);function Ga(e){if(e===qa)throw Error(r(174));return e}function Za(e,t){switch(Ll(Xa,t),Ll(Ya,e),Ll(Ka,qa),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:me(null,"");break;default:t=me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}zl(Ka),Ll(Ka,t)}function Ja(){zl(Ka),zl(Ya),zl(Xa)}function eo(e){Ga(Xa.current);var t=Ga(Ka.current),n=me(t,e.type);t!==n&&(Ll(Ya,e),Ll(Ka,n))}function to(e){Ya.current===e&&(zl(Ka),zl(Ya))}var no=Pl(0);function ro(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var lo=null,ao=null,oo=!1;function uo(e,t){var n=fs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function io(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function so(e){if(oo){var t=ao;if(t){var n=t;if(!io(e,t)){if(!(t=dl(n.nextSibling))||!io(e,t))return e.flags=-1025&e.flags|2,oo=!1,void(lo=e);uo(lo,n)}lo=e,ao=dl(t.firstChild)}else e.flags=-1025&e.flags|2,oo=!1,lo=e}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;lo=e}function fo(e){if(e!==lo)return!1;if(!oo)return co(e),oo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!il(t,e.memoizedProps))for(t=ao;t;)uo(e,t),t=dl(t.nextSibling);if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(r(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ao=dl(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ao=null}}else ao=lo?dl(e.stateNode.nextSibling):null;return!0}function po(){ao=lo=null,oo=!1}var ho=[];function mo(){for(var e=0;eo))throw Error(r(301));o+=1,ko=wo=null,t.updateQueue=null,go.current=eu,e=n(l,a)}while(Eo)}if(go.current=Go,t=null!==wo&&null!==wo.next,yo=0,ko=wo=bo=null,So=!1,t)throw Error(r(300));return e}function No(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ko?bo.memoizedState=ko=e:ko=ko.next=e,ko}function Po(){if(null===wo){var e=bo.alternate;e=null!==e?e.memoizedState:null}else e=wo.next;var t=null===ko?bo.memoizedState:ko.next;if(null!==t)ko=t,wo=e;else{if(null===e)throw Error(r(310));e={memoizedState:(wo=e).memoizedState,baseState:wo.baseState,baseQueue:wo.baseQueue,queue:wo.queue,next:null},null===ko?bo.memoizedState=ko=e:ko=ko.next=e}return ko}function zo(e,t){return"function"==typeof t?t(e):t}function Lo(e){var t=Po(),n=t.queue;if(null===n)throw Error(r(311));n.lastRenderedReducer=e;var l=wo,a=l.baseQueue,o=n.pending;if(null!==o){if(null!==a){var u=a.next;a.next=o.next,o.next=u}l.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,l=l.baseState;var i=u=o=null,s=a;do{var c=s.lane;if((yo&c)===c)null!==i&&(i=i.next={lane:0,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null}),l=s.eagerReducer===e?s.eagerState:e(l,s.action);else{var f={lane:c,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null};null===i?(u=i=f,o=l):i=i.next=f,bo.lanes|=c,ui|=c}s=s.next}while(null!==s&&s!==a);null===i?o=l:i.next=u,Pr(l,t.memoizedState)||(nu=!0),t.memoizedState=l,t.baseState=o,t.baseQueue=i,n.lastRenderedState=l}return[t.memoizedState,n.dispatch]}function To(e){var t=Po(),n=t.queue;if(null===n)throw Error(r(311));n.lastRenderedReducer=e;var l=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var u=a=a.next;do{o=e(o,u.action),u=u.next}while(u!==a);Pr(o,t.memoizedState)||(nu=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,l]}function Mo(e,t,n){var l=t._getVersion;l=l(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===l:(e=e.mutableReadLanes,(e=(yo&e)===e)&&(t._workInProgressVersionPrimary=l,ho.push(t))),e)return n(t._source);throw ho.push(t),Error(r(350))}function Oo(e,t,n,l){var a=Ju;if(null===a)throw Error(r(349));var o=t._getVersion,u=o(t._source),i=go.current,s=i.useState(function(){return Mo(a,t,n)}),c=s[1],f=s[0];s=ko;var d=e.memoizedState,p=d.refs,h=p.getSnapshot,m=d.source;d=d.subscribe;var g=bo;return e.memoizedState={refs:p,source:t,subscribe:l},i.useEffect(function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!Pr(u,e)){e=n(t._source),Pr(f,e)||(c(e),e=Oi(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,l=e;0n?98:n,function(){e(!0)}),fa(97<\/script>",e=e.removeChild(e.firstChild)):"string"==typeof o.is?e=s.createElement(l,{is:o.is}):(e=s.createElement(l),"select"===l&&(s=e,o.multiple?s.multiple=!0:o.size&&(s.size=o.size))):e=s.createElementNS(e,l),e[vl]=n,e[yl]=o,pu(e,n,!1,!1),n.stateNode=e,s=Ce(l,o),l){case"dialog":Kr("cancel",e),Kr("close",e),u=o;break;case"iframe":case"object":case"embed":Kr("load",e),u=o;break;case"video":case"audio":for(u=0;udi&&(n.flags|=64,i=!0,_u(o,!1),n.lanes=33554432)}else{if(!i)if(null!==(e=ro(s))){if(n.flags|=64,i=!0,null!==(l=e.updateQueue)&&(n.updateQueue=l,n.flags|=4),_u(o,!0),null===o.tail&&"hidden"===o.tailMode&&!s.alternate&&!oo)return null!==(n=n.lastEffect=o.lastEffect)&&(n.nextEffect=null),null}else 2*ia()-o.renderingStartTime>di&&1073741824!==l&&(n.flags|=64,i=!0,_u(o,!1),n.lanes=33554432);o.isBackwards?(s.sibling=n.child,n.child=s):(null!==(l=o.last)?l.sibling=s:n.child=s,o.last=s)}return null!==o.tail?(l=o.tail,o.rendering=l,o.tail=l.sibling,o.lastEffect=n.lastEffect,o.renderingStartTime=ia(),l.sibling=null,n=no.current,Ll(no,i?1&n|2:1&n),l):null;case 23:case 24:return Hi(),null!==e&&null!==e.memoizedState!=(null!==n.memoizedState)&&"unstable-defer-without-hiding"!==o.mode&&(n.flags|=4),null}throw Error(r(156,n.tag))}function Pu(e){switch(e.tag){case 1:Fl(e.type)&&Il();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ja(),zl(Ol),zl(Ml),mo(),0!=(64&(t=e.flags)))throw Error(r(285));return e.flags=-4097&t|64,e;case 5:return to(e),null;case 13:return zl(no),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return zl(no),null;case 4:return Ja(),null;case 10:return Sa(e),null;case 23:case 24:return Hi(),null;default:return null}}function zu(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var l=n}catch(a){l="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:l}}function Lu(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}pu=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},hu=function(){},mu=function(e,n,r,l){var o=e.memoizedProps;if(o!==l){e=n.stateNode,Ga(Ka.current);var u,i=null;switch(r){case"input":o=ee(e,o),l=ee(e,l),i=[];break;case"option":o=ue(e,o),l=ue(e,l),i=[];break;case"select":o=t({},o,{value:void 0}),l=t({},l,{value:void 0}),i=[];break;case"textarea":o=se(e,o),l=se(e,l),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof l.onClick&&(e.onclick=ll)}for(f in xe(r,l),r=null,o)if(!l.hasOwnProperty(f)&&o.hasOwnProperty(f)&&null!=o[f])if("style"===f){var s=o[f];for(u in s)s.hasOwnProperty(u)&&(r||(r={}),r[u]="")}else"dangerouslySetInnerHTML"!==f&&"children"!==f&&"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(a.hasOwnProperty(f)?i||(i=[]):(i=i||[]).push(f,null));for(f in l){var c=l[f];if(s=null!=o?o[f]:void 0,l.hasOwnProperty(f)&&c!==s&&(null!=c||null!=s))if("style"===f)if(s){for(u in s)!s.hasOwnProperty(u)||c&&c.hasOwnProperty(u)||(r||(r={}),r[u]="");for(u in c)c.hasOwnProperty(u)&&s[u]!==c[u]&&(r||(r={}),r[u]=c[u])}else r||(i||(i=[]),i.push(f,r)),r=c;else"dangerouslySetInnerHTML"===f?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(f,c)):"children"===f?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(f,""+c):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&(a.hasOwnProperty(f)?(null!=c&&"onScroll"===f&&Kr("scroll",e),i||s===c||(i=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(i=i||[]).push(f,c))}r&&(i=i||[]).push("style",r);var f=i;(n.updateQueue=f)&&(n.flags|=4)}},gu=function(e,t,n,r){n!==r&&(t.flags|=4)};var Tu="function"==typeof WeakMap?WeakMap:Map;function Mu(e,t,n){(n=za(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){gi||(gi=!0,vi=r),Lu(e,t)},n}function Ou(e,t,n){(n=za(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var l=t.value;n.payload=function(){return Lu(e,t),r(l)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===yi?yi=new Set([this]):yi.add(this),Lu(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var Ru="function"==typeof WeakSet?WeakSet:Set;function Du(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){us(e,n)}else t.current=null}function Fu(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,l=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:ga(t.type,n),l),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&fl(t.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(r(163))}function Iu(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var l=e.create;e.destroy=l()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;l=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(ls(n,e),rs(n,e)),e=l}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(l=n.elementType===n.type?t.memoizedProps:ga(n.type,t.memoizedProps),e.componentDidUpdate(l,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&Oa(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}Oa(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&ul(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&_t(n)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(r(163))}function Uu(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var l=n.memoizedProps.style;l=null!=l&&l.hasOwnProperty("display")?l.display:null,r.style.display=ke("display",l)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function Vu(e,t){if(Ql&&"function"==typeof Ql.onCommitFiberUnmount)try{Ql.onCommitFiberUnmount(Wl,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,l=r.destroy;if(r=r.tag,void 0!==l)if(0!=(4&r))ls(t,n);else{r=t;try{l()}catch(a){us(r,a)}}n=n.next}while(n!==e)}break;case 1:if(Du(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){us(t,a)}break;case 5:Du(t);break;case 4:ju(e,t)}}function Au(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function Bu(e){return 5===e.tag||3===e.tag||4===e.tag}function Wu(e){e:{for(var t=e.return;null!==t;){if(Bu(t))break e;t=t.return}throw Error(r(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var l=!1;break;case 3:case 4:t=t.containerInfo,l=!0;break;default:throw Error(r(161))}16&n.flags&&(ye(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||Bu(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}l?Qu(e,n,t):Hu(e,n,t)}function Qu(e,t,n){var r=e.tag,l=5===r||6===r;if(l)e=l?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=ll));else if(4!==r&&null!==(e=e.child))for(Qu(e,t,n),e=e.sibling;null!==e;)Qu(e,t,n),e=e.sibling}function Hu(e,t,n){var r=e.tag,l=5===r||6===r;if(l)e=l?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Hu(e,t,n),e=e.sibling;null!==e;)Hu(e,t,n),e=e.sibling}function ju(e,t){for(var n,l,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(r(160));switch(n=o.stateNode,o.tag){case 5:l=!1;break e;case 3:case 4:n=n.containerInfo,l=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var u=e,i=a,s=i;;)if(Vu(u,s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===i)break e;for(;null===s.sibling;){if(null===s.return||s.return===i)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}l?(u=n,i=a.stateNode,8===u.nodeType?u.parentNode.removeChild(i):u.removeChild(i)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,l=!0,a.child.return=a,a=a.child;continue}}else if(Vu(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function $u(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var l=n=n.next;do{3==(3&l.tag)&&(e=l.destroy,l.destroy=void 0,void 0!==e&&e()),l=l.next}while(l!==n)}return;case 1:return;case 5:if(null!=(n=t.stateNode)){l=t.memoizedProps;var a=null!==e?e.memoizedProps:l;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[yl]=l,"input"===e&&"radio"===l.type&&null!=l.name&&ne(n,l),Ce(e,a),t=Ce(e,l),a=0;aa&&(a=u),n&=~o}if(n=a,10<(n=(120>(n=ia()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Yu(n/1960))-n)){e.timeoutHandle=sl(Ji.bind(null,e),n);break}Ji(e);break;case 5:Ji(e);break;default:throw Error(r(329))}}return Fi(e,ia()),e.callbackNode===t?Ii.bind(null,e):null}function Ui(e,t){for(t&=~si,t&=~ii,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0 component higher in the tree to provide a loading indicator or placeholder to display.")}5!==li&&(li=2),i=zu(i,u),d=o;do{switch(d.tag){case 3:a=i,d.flags|=4096,t&=-t,d.lanes|=t,Ta(d,Mu(d,a,t));break e;case 1:a=i;var k=d.type,S=d.stateNode;if(0==(64&d.flags)&&("function"==typeof k.getDerivedStateFromError||null!==S&&"function"==typeof S.componentDidCatch&&(null===yi||!yi.has(S)))){d.flags|=4096,t&=-t,d.lanes|=t,Ta(d,Ou(d,a,t));break e}}d=d.return}while(null!==d)}Zi(n)}catch(E){t=E,ei===n&&null!==n&&(ei=n=n.return);continue}break}}function qi(){var e=Xu.current;return Xu.current=Go,null===e?Go:e}function Ki(e,t){var n=Zu;Zu|=16;var l=qi();for(Ju===e&&ti===t||ji(e,t);;)try{Yi();break}catch(a){$i(e,a)}if(ka(),Zu=n,Xu.current=l,null!==ei)throw Error(r(261));return Ju=null,ti=0,li}function Yi(){for(;null!==ei;)Gi(ei)}function Xi(){for(;null!==ei&&!ql();)Gi(ei)}function Gi(e){var t=hi(e.alternate,e,ni);e.memoizedProps=e.pendingProps,null===t?Zi(e):ei=t,Gu.current=null}function Zi(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=Nu(n,t,ni)))return void(ei=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&ni)||0==(4&n.mode)){for(var r=0,l=n.child;null!==l;)r|=l.lanes|l.childLanes,l=l.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1u&&(i=u,u=S,S=i),i=Mr(b,S),o=Mr(b,u),i&&o&&(1!==k.rangeCount||k.anchorNode!==i.node||k.anchorOffset!==i.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(i.node,i.offset),k.removeAllRanges(),S>u?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=b;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof b.focus&&b.focus(),b=0;bia()-fi?ji(e,0):si|=n),Fi(e,t)}function ss(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===sa()?1:2:(0===Pi&&(Pi=oi),0===(t=Kt(62914560&~Pi))&&(t=4194304))),n=Mi(),null!==(e=Di(e,t))&&(Xt(e,t,n),Fi(e,n))}function cs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function fs(e,t,n,r){return new cs(e,t,n,r)}function ds(e){return!(!(e=e.prototype)||!e.isReactComponent)}function ps(e){if("function"==typeof e)return ds(e)?1:0;if(null!=e){if((e=e.$$typeof)===z)return 11;if(e===M)return 14}return 2}function hs(e,t){var n=e.alternate;return null===n?((n=fs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ms(e,t,n,l,a,o){var u=2;if(l=e,"function"==typeof e)ds(e)&&(u=1);else if("string"==typeof e)u=5;else e:switch(e){case x:return gs(n.children,a,o,t);case F:u=8,a|=16;break;case C:u=8,a|=1;break;case _:return(e=fs(12,n,t,8|a)).elementType=_,e.type=_,e.lanes=o,e;case L:return(e=fs(13,n,t,a)).type=L,e.elementType=L,e.lanes=o,e;case T:return(e=fs(19,n,t,a)).elementType=T,e.lanes=o,e;case I:return vs(n,a,o,t);case U:return(e=fs(24,n,t,a)).elementType=U,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case N:u=10;break e;case P:u=9;break e;case z:u=11;break e;case M:u=14;break e;case O:u=16,l=null;break e;case R:u=22;break e}throw Error(r(130,null==e?e:typeof e,""))}return(t=fs(u,n,t,a)).elementType=e,t.type=l,t.lanes=o,t}function gs(e,t,n,r){return(e=fs(7,e,r,t)).lanes=n,e}function vs(e,t,n,r){return(e=fs(23,e,r,t)).elementType=I,e.lanes=n,e}function ys(e,t,n){return(e=fs(6,e,null,t)).lanes=n,e}function bs(e,t,n){return(t=fs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function ws(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Yt(0),this.expirationTimes=Yt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Yt(0),this.mutableSourceEagerHydrationData=null}function ks(e,t,n){var r=30){var e=new Uint8Array(this._pieces);n.useArrayBufferView||(e=e.buffer),this._parts.push(e),this._pieces=[]}},o.prototype.getBuffer=function(){if(this.flush(),n.useBlobBuilder){for(var e=new i,t=0,r=this._parts.length;t>23&255)-127;return(0==e>>31?1:-1)*(8388607&e|8388608)*Math.pow(2,t-23)},a.prototype.unpack_double=function(){var e=this.unpack_uint32(),t=this.unpack_uint32(),r=(e>>20&2047)-1023;return(0==e>>31?1:-1)*((1048575&e|1048576)*Math.pow(2,r-20)+t*Math.pow(2,r-52))},a.prototype.read=function(e){var t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw new Error("BinaryPackFailure: read index out of range")},s.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},s.prototype.pack=function(e){var t=typeof e;if("string"===t)this.pack_string(e);else if("number"===t)Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if("boolean"===t)!0===e?this.bufferBuilder.append(195):!1===e&&this.bufferBuilder.append(194);else if("undefined"===t)this.bufferBuilder.append(192);else{if("object"!==t)throw new Error('Type "'+t+'" not yet supported');if(null===e)this.bufferBuilder.append(192);else{var r=e.constructor;if(r==Array)this.pack_array(e);else if(r==Blob||r==File||e instanceof Blob||e instanceof File)this.pack_bin(e);else if(r==ArrayBuffer)i.useArrayBufferView?this.pack_bin(new Uint8Array(e)):this.pack_bin(e);else if("BYTES_PER_ELEMENT"in e)i.useArrayBufferView?this.pack_bin(new Uint8Array(e.buffer)):this.pack_bin(e.buffer);else if(r==Object||r.toString().startsWith("class"))this.pack_object(e);else if(r==Date)this.pack_string(e.toString());else{if("function"!=typeof e.toBinaryPack)throw new Error('Type "'+r.toString()+'" not yet supported');this.bufferBuilder.append(e.toBinaryPack())}}}this.bufferBuilder.flush()},s.prototype.pack_bin=function(e){var t=e.length||e.byteLength||e.size;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this.bufferBuilder.append(218),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(219),this.pack_uint32(t)}this.bufferBuilder.append(e)},s.prototype.pack_string=function(e){var t=function(e){return e.length>600?new Blob([e]).size:e.replace(/[^\u0000-\u007F]/g,c).length}(e);if(t<=15)this.pack_uint8(176+t);else if(t<=65535)this.bufferBuilder.append(216),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(217),this.pack_uint32(t)}this.bufferBuilder.append(e)},s.prototype.pack_array=function(e){var t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this.bufferBuilder.append(220),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(221),this.pack_uint32(t)}for(var r=0;r=-32&&e<=127)this.bufferBuilder.append(255&e);else if(e>=0&&e<=255)this.bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this.bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this.bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this.bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this.bufferBuilder.append(210),this.pack_int32(e);else if(e>=-0x8000000000000000&&e<=0x8000000000000000)this.bufferBuilder.append(211),this.pack_int64(e);else{if(!(e>=0&&e<=0x10000000000000000))throw new Error("Invalid integer");this.bufferBuilder.append(207),this.pack_uint64(e)}},s.prototype.pack_double=function(e){var t=0;e<0&&(t=1,e=-e);var r=Math.floor(Math.log(e)/Math.LN2),n=e/Math.pow(2,r)-1,i=Math.floor(n*Math.pow(2,52)),o=Math.pow(2,32),a=t<<31|r+1023<<20|i/o&1048575,s=i%o;this.bufferBuilder.append(203),this.pack_int32(a),this.pack_int32(s)},s.prototype.pack_object=function(e){var t=Object.keys(e).length;if(t<=15)this.pack_uint8(128+t);else if(t<=65535)this.bufferBuilder.append(222),this.pack_uint16(t);else{if(!(t<=4294967295))throw new Error("Invalid length");this.bufferBuilder.append(223),this.pack_uint32(t)}for(var r in e)e.hasOwnProperty(r)&&(this.pack(r),this.pack(e[r]))},s.prototype.pack_uint8=function(e){this.bufferBuilder.append(e)},s.prototype.pack_uint16=function(e){this.bufferBuilder.append(e>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_uint32=function(e){var t=4294967295&e;this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t)},s.prototype.pack_uint64=function(e){var t=e/Math.pow(2,32),r=e%Math.pow(2,32);this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t),this.bufferBuilder.append((4278190080&r)>>>24),this.bufferBuilder.append((16711680&r)>>>16),this.bufferBuilder.append((65280&r)>>>8),this.bufferBuilder.append(255&r)},s.prototype.pack_int8=function(e){this.bufferBuilder.append(255&e)},s.prototype.pack_int16=function(e){this.bufferBuilder.append((65280&e)>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_int32=function(e){this.bufferBuilder.append(e>>>24&255),this.bufferBuilder.append((16711680&e)>>>16),this.bufferBuilder.append((65280&e)>>>8),this.bufferBuilder.append(255&e)},s.prototype.pack_int64=function(e){var t=Math.floor(e/Math.pow(2,32)),r=e%Math.pow(2,32);this.bufferBuilder.append((4278190080&t)>>>24),this.bufferBuilder.append((16711680&t)>>>16),this.bufferBuilder.append((65280&t)>>>8),this.bufferBuilder.append(255&t),this.bufferBuilder.append((4278190080&r)>>>24),this.bufferBuilder.append((16711680&r)>>>16),this.bufferBuilder.append((65280&r)>>>8),this.bufferBuilder.append(255&r)}},{"./bufferbuilder":"EgBh"}],iSxC:[function(e,t,r){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(r,"__esModule",{value:!0}),r.extractVersion=a,r.wrapPeerConnectionEvent=function(e,t,r){if(e.RTCPeerConnection){var n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return i.apply(this,arguments);var o=function(e){var t=r(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,o),i.apply(this,[e,o])};var o=n.removeEventListener;n.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return o.apply(this,arguments);if(!this._eventMap[t].has(r))return o.apply(this,arguments);var n=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,o.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get:function(){return this["_on"+t]},set:function(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}},r.disableLog=function(e){return"boolean"!=typeof e?new Error("Argument type: "+n(e)+". Please use a boolean."):(i=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},r.disableWarnings=function(e){return"boolean"!=typeof e?new Error("Argument type: "+n(e)+". Please use a boolean."):(o=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))},r.log=function(){if("object"===("undefined"==typeof window?"undefined":n(window))){if(i)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}},r.deprecated=function(e,t){o&&console.warn(e+" is deprecated, please use "+t+" instead.")},r.detectBrowser=function(e){var t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;var{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=a(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=a(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=a(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=a(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t},r.compactObject=function e(t){return s(t)?Object.keys(t).reduce(function(r,n){var i=s(t[n]),o=i?e(t[n]):t[n],a=i&&!Object.keys(o).length;return void 0===o||a?r:Object.assign(r,function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},n,o))},{}):t},r.walkStats=c,r.filterStats=function(e,t,r){var n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;var o=[];return e.forEach(function(e){"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)}),o.forEach(function(t){e.forEach(function(r){r.type===n&&r.trackId===t.id&&c(e,r,i)})}),i};var i=!0,o=!0;function a(e,t,r){var n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function s(e){return"[object Object]"===Object.prototype.toString.call(e)}function c(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach(function(n){n.endsWith("Id")?c(e,e.get(t[n]),r):n.endsWith("Ids")&&t[n].forEach(function(t){c(e,e.get(t),r)})}))}},{}],s6SN:[function(e,t,r){"use strict";function n(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return n=function(){return e},e}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(r,"__esModule",{value:!0}),r.shimGetUserMedia=function(e,t){var r=e&&e.navigator;if(r.mediaDevices){var n=function(e){if("object"!==i(e)||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach(function(r){if("require"!==r&&"advanced"!==r&&"mediaSource"!==r){var n="object"===i(e[r])?e[r]:{ideal:e[r]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);var o=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];var a={};"number"==typeof n.ideal?(a[o("min",r)]=n.ideal,t.optional.push(a),(a={})[o("max",r)]=n.ideal,t.optional.push(a)):(a[o("",r)]=n.ideal,t.optional.push(a))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[o("",r)]=n.exact):["min","max"].forEach(function(e){void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[o(e,r)]=n[e])})}}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},a=function(e,a){if(t.version>=61)return a(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"===i(e.audio)){var s=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};s((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),s(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"===i(e.video)){var c=e.video.facingMode;c=c&&("object"===i(c)?c:{ideal:c});var p,u=t.version<66;if(c&&("user"===c.exact||"environment"===c.exact||"user"===c.ideal||"environment"===c.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||u)&&(delete e.video.facingMode,"environment"===c.exact||"environment"===c.ideal?p=["back","rear"]:"user"!==c.exact&&"user"!==c.ideal||(p=["front"]),p))return r.mediaDevices.enumerateDevices().then(function(t){var r=(t=t.filter(function(e){return"videoinput"===e.kind})).find(function(e){return p.some(function(t){return e.label.toLowerCase().includes(t)})});return!r&&t.length&&p.includes("back")&&(r=t[t.length-1]),r&&(e.video.deviceId=c.exact?{exact:r.deviceId}:{ideal:r.deviceId}),e.video=n(e.video),o("chrome: "+JSON.stringify(e)),a(e)});e.video=n(e.video)}return o("chrome: "+JSON.stringify(e)),a(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,n){a(e,function(e){r.webkitGetUserMedia(e,t,function(e){n&&n(s(e))})})}.bind(r),r.mediaDevices.getUserMedia){var c=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(e){return a(e,function(e){return c(e).then(function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach(function(e){e.stop()}),new DOMException("","NotFoundError");return t},function(e){return Promise.reject(s(e))})})}}}};var o=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n();if(t&&t.has(e))return t.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r}(e("../utils.js")).log},{"../utils.js":"iSxC"}],VHa8:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shimGetDisplayMedia=function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then(function(t){var n=r.video&&r.video.width,i=r.video&&r.video.height,o=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},n&&(r.video.mandatory.maxWidth=n),i&&(r.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(r)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}},{}],uI5X:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shimMediaStream=function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},r.shimOnTrack=function(e){if("object"!==c(e)||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype)n.wrapPeerConnectionEvent(e,"track",function(e){return e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e});else{Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var r=this;return this._ontrackpoly||(this._ontrackpoly=function(t){t.stream.addEventListener("addtrack",function(n){var i;i=e.RTCPeerConnection.prototype.getReceivers?r.getReceivers().find(function(e){return e.track&&e.track.id===n.track.id}):{track:n.track};var o=new Event("track");o.track=n.track,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],r.dispatchEvent(o)}),t.stream.getTracks().forEach(function(n){var i;i=e.RTCPeerConnection.prototype.getReceivers?r.getReceivers().find(function(e){return e.track&&e.track.id===n.id}):{track:n};var o=new Event("track");o.track=n,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],r.dispatchEvent(o)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}},r.shimGetSendersWithDtmf=function(e){if("object"===c(e)&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){var i=r.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};var n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);var t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var r=this;this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach(function(e){r._senders.push(t(r,e))})};var o=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;this._senders=this._senders||[],o.apply(this,[e]),e.getTracks().forEach(function(e){var r=t._senders.find(function(t){return t.track===e});r&&t._senders.splice(t._senders.indexOf(r),1)})}}else if("object"===c(e)&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){var a=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=a.apply(this,[]);return t.forEach(function(t){return t._pc=e}),t},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}},r.shimGetStats=function(e){if(e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var e=this,[r,n,i]=arguments;if(arguments.length>0&&"function"==typeof r)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof r))return t.apply(this,[]);var o=function(e){var t={};return e.result().forEach(function(e){var r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach(function(t){r[t]=e.stat(t)}),t[r.id]=r}),t},a=function(e){return new Map(Object.keys(e).map(function(t){return[t,e[t]]}))};return arguments.length>=2?t.apply(this,[function(e){n(a(o(e)))},r]):new Promise(function(r,n){t.apply(e,[function(e){r(a(o(e)))},n])}).then(n,i)}}},r.shimSenderReceiverGetStats=function(e){if("object"===c(e)&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver){if(!("getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,r=t.apply(this,[]);return r.forEach(function(t){return t._pc=e}),r});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){var e=this;return this._pc.getStats().then(function(t){return n.filterStats(t,e.track,!0)})}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var i=e.RTCPeerConnection.prototype.getReceivers;i&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,t=i.apply(this,[]);return t.forEach(function(t){return t._pc=e}),t}),n.wrapPeerConnectionEvent(e,"track",function(e){return e.receiver._pc=e.srcElement,e}),e.RTCRtpReceiver.prototype.getStats=function(){var e=this;return this._pc.getStats().then(function(t){return n.filterStats(t,e.track,!1)})}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var o=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var t,r,n,i=arguments[0];return this.getSenders().forEach(function(e){e.track===i&&(t?n=!0:t=e)}),this.getReceivers().forEach(function(e){return e.track===i&&(r?n=!0:r=e),e.track===i}),n||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return o.apply(this,arguments)}}}},r.shimAddTrackRemoveTrackWithNative=p,r.shimAddTrackRemoveTrack=function(e,t){if(e.RTCPeerConnection){if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return p(e);var r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this,t=r.apply(this);return this._reverseStreams=this._reverseStreams||{},t.map(function(t){return e._reverseStreams[t.id]})};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var r=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(function(e){if(r.getSenders().find(function(t){return t.track===e}))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[t.id]){var i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};var i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){var n=this;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find(function(e){return e===t}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(function(e){return e.track===t}))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var o=this._streams[r.id];if(o)o.addTrack(t),Promise.resolve().then(function(){n.dispatchEvent(new Event("negotiationneeded"))});else{var a=new e.MediaStream([t]);this._streams[r.id]=a,this._reverseStreams[a.id]=r,this.addStream(a)}return this.getSenders().find(function(e){return e.track===t})},["createOffer","createAnswer"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t],n=s({},t,function(){var e=this,t=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[function(r){var n=c(e,r);t[0].apply(null,[n])},function(e){t[1]&&t[1].apply(null,e)},arguments[2]]):r.apply(this,arguments).then(function(t){return c(e,t)})});e.RTCPeerConnection.prototype[t]=n[t]});var o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=(e=this,t=arguments[0],r=t.sdp,Object.keys(e._reverseStreams||[]).forEach(function(t){var n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(n.id,"g"),i.id)}),new RTCSessionDescription({type:t.type,sdp:r})),o.apply(this,arguments)):o.apply(this,arguments);var e,t,r};var a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=a.get.apply(this);return""===e.type?e:c(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){var t,r=this;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(e._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(function(n){r._streams[n].getTracks().find(function(t){return e.track===t})&&(t=r._streams[n])}),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function c(e,t){var r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(function(t){var n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(i.id,"g"),n.id)}),new RTCSessionDescription({type:t.type,sdp:r})}},r.shimPeerConnection=function(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t],n=s({},t,function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)});e.RTCPeerConnection.prototype[t]=n[t]})},r.fixNegotiationNeeded=function(e,t){n.wrapPeerConnectionEvent(e,"negotiationneeded",function(e){var r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e})},Object.defineProperty(r,"shimGetUserMedia",{enumerable:!0,get:function(){return i.shimGetUserMedia}}),Object.defineProperty(r,"shimGetDisplayMedia",{enumerable:!0,get:function(){return o.shimGetDisplayMedia}});var n=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}(e("../utils.js")),i=e("./getusermedia"),o=e("./getdisplaymedia");function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(t){return e._shimmedLocalStreams[t][0]})};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var n=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(n)&&this._shimmedLocalStreams[r.id].push(n):this._shimmedLocalStreams[r.id]=[r,n],n};var r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(function(e){if(t.getSenders().find(function(t){return t.track===e}))throw new DOMException("Track already exists.","InvalidAccessError")});var n=this.getSenders();r.apply(this,arguments);var i=this.getSenders().filter(function(e){return-1===n.indexOf(e)});this._shimmedLocalStreams[e.id]=[e].concat(i)};var n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(function(r){var n=t._shimmedLocalStreams[r].indexOf(e);-1!==n&&t._shimmedLocalStreams[r].splice(n,1),1===t._shimmedLocalStreams[r].length&&delete t._shimmedLocalStreams[r]}),i.apply(this,arguments)}}},{"../utils.js":"iSxC","./getusermedia":"s6SN","./getdisplaymedia":"VHa8"}],NZ1C:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.filterIceServers=function(e,t){var r=!1;return(e=JSON.parse(JSON.stringify(e))).filter(function(e){if(e&&(e.urls||e.url)){var t=e.urls||e.url;e.url&&!e.urls&&n.deprecated("RTCIceServer.url","RTCIceServer.urls");var i="string"==typeof t;return i&&(t=[t]),t=t.filter(function(e){if(0===e.indexOf("stun:"))return!1;var t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!r?(r=!0,!0):t&&!r}),delete e.url,e.urls=i?t[0]:t,!!t.length}})};var n=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=n?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r}(e("../utils"));function i(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return i=function(){return e},e}},{"../utils":"iSxC"}],YHvh:[function(e,t,r){"use strict";var n={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};n.localCName=n.generateIdentifier(),n.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})},n.splitSections=function(e){return e.split("\nm=").map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})},n.getDescription=function(e){var t=n.splitSections(e);return t&&t[0]},n.getMediaSections=function(e){var t=n.splitSections(e);return t.shift(),t},n.matchPrefix=function(e,t){return n.splitLines(e).filter(function(e){return 0===e.indexOf(t)})},n.parseCandidate=function(e){for(var t,r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},n=8;n0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},n.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},n.parseFmtp=function(e){for(var t,r={},n=e.substr(e.indexOf(" ")+1).split(";"),i=0;i-1?(r.attribute=e.substr(t+1,n-t-1),r.value=e.substr(n+1)):r.attribute=e.substr(t+1),r},n.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(function(e){return parseInt(e,10)})}},n.getMid=function(e){var t=n.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)},n.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},n.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:n.matchPrefix(e+t,"a=fingerprint:").map(n.parseFingerprint)}},n.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";return e.fingerprints.forEach(function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),r},n.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},n.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?n.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},n.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},n.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},n.getCryptoParameters=function(e,t){return n.matchPrefix(e+t,"a=crypto:").map(n.parseCryptoLine)},n.getIceParameters=function(e,t){var r=n.matchPrefix(e+t,"a=ice-ufrag:")[0],i=n.matchPrefix(e+t,"a=ice-pwd:")[0];return r&&i?{usernameFragment:r.substr(12),password:i.substr(10)}:null},n.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},n.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=n.splitLines(e)[0].split(" "),i=3;i0?"9":"0",r+=" UDP/TLS/RTP/SAVPF ",r+=t.codecs.map(function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType}).join(" ")+"\r\n",r+="c=IN IP4 0.0.0.0\r\n",r+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){r+=n.writeRtpMap(e),r+=n.writeFmtp(e),r+=n.writeRtcpFb(e)});var i=0;return t.codecs.forEach(function(e){e.maxptime>i&&(i=e.maxptime)}),i>0&&(r+="a=maxptime:"+i+"\r\n"),r+="a=rtcp-mux\r\n",t.headerExtensions&&t.headerExtensions.forEach(function(e){r+=n.writeExtmap(e)}),r},n.parseRtpEncodingParameters=function(e){var t,r=[],i=n.parseRtpParameters(e),o=-1!==i.fecMechanisms.indexOf("RED"),a=-1!==i.fecMechanisms.indexOf("ULPFEC"),s=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute}),c=s.length>0&&s[0].ssrc,p=n.matchPrefix(e,"a=ssrc-group:FID").map(function(e){return e.substr(17).split(" ").map(function(e){return parseInt(e,10)})});p.length>0&&p[0].length>1&&p[0][0]===c&&(t=p[0][1]),i.codecs.forEach(function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var n={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&t&&(n.rtx={ssrc:t}),r.push(n),o&&((n=JSON.parse(JSON.stringify(n))).fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},r.push(n))}}),0===r.length&&c&&r.push({ssrc:c});var u=n.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,r.forEach(function(e){e.maxBitrate=u})),r},n.parseRtcpParameters=function(e){var t={},r=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute})[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);var i=n.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=i.length>0,t.compound=0===i.length;var o=n.matchPrefix(e,"a=rtcp-mux");return t.mux=o.length>0,t},n.parseMsid=function(e){var t,r=n.matchPrefix(e,"a=msid:");if(1===r.length)return{stream:(t=r[0].substr(7).split(" "))[0],track:t[1]};var i=n.matchPrefix(e,"a=ssrc:").map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return"msid"===e.attribute});return i.length>0?{stream:(t=i[0].value.split(" "))[0],track:t[1]}:void 0},n.parseSctpDescription=function(e){var t,r=n.parseMLine(e),i=n.matchPrefix(e,"a=max-message-size:");i.length>0&&(t=parseInt(i[0].substr(19),10)),isNaN(t)&&(t=65536);var o=n.matchPrefix(e,"a=sctp-port:");if(o.length>0)return{port:parseInt(o[0].substr(12),10),protocol:r.fmt,maxMessageSize:t};if(n.matchPrefix(e,"a=sctpmap:").length>0){var a=n.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:t}}},n.writeSctpDescription=function(e,t){var r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},n.generateSessionId=function(){return Math.random().toString().substr(2,21)},n.writeSessionBoilerplate=function(e,t,r){var i=void 0!==t?t:2;return"v=0\r\no="+(r||"thisisadapterortc")+" "+(e||n.generateSessionId())+" "+i+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},n.writeMediaSection=function(e,t,r,i){var o=n.writeRtpDescription(e.kind,t);if(o+=n.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===r?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a="msid:"+i.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+n.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+n.localCName+"\r\n"),o},n.getDirection=function(e,t){for(var r=n.splitLines(e),i=0;i=14393&&-1===e.indexOf("?transport=udp"):(r=!0,!0)}),delete e.url,e.urls=i?n[0]:n,!!n.length}})}(r.iceServers||[],t),this._iceGatherers=[],r.iceCandidatePoolSize)for(var a=r.iceCandidatePoolSize;a>0;a--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=n.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(u.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(u.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),u.prototype.onicecandidate=null,u.prototype.onaddstream=null,u.prototype.ontrack=null,u.prototype.onremovestream=null,u.prototype.onsignalingstatechange=null,u.prototype.oniceconnectionstatechange=null,u.prototype.onconnectionstatechange=null,u.prototype.onicegatheringstatechange=null,u.prototype.onnegotiationneeded=null,u.prototype.ondatachannel=null,u.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},u.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},u.prototype.getConfiguration=function(){return this._config},u.prototype.getLocalStreams=function(){return this.localStreams},u.prototype.getRemoteStreams=function(){return this.remoteStreams},u.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&r)n.iceTransport=this.transceivers[0].iceTransport,n.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();n.iceTransport=i.iceTransport,n.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(n),n},u.prototype.addTrack=function(t,r){if(this._isClosed)throw c("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var n;if(this.transceivers.find(function(e){return e.track===t}))throw c("InvalidAccessError","Track already exists.");for(var i=0;i=15025)e.getTracks().forEach(function(t){r.addTrack(t,e)});else{var n=e.clone();e.getTracks().forEach(function(e,t){var r=n.getTracks()[t];e.addEventListener("enabled",function(e){r.enabled=e.enabled})}),n.getTracks().forEach(function(e){r.addTrack(e,n)})}},u.prototype.removeTrack=function(t){if(this._isClosed)throw c("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var r=this.transceivers.find(function(e){return e.rtpSender===t});if(!r)throw c("InvalidAccessError","Sender was not created by this connection.");var n=r.stream;r.rtpSender.stop(),r.rtpSender=null,r.track=null,r.stream=null,-1===this.transceivers.map(function(e){return e.stream}).indexOf(n)&&this.localStreams.indexOf(n)>-1&&this.localStreams.splice(this.localStreams.indexOf(n),1),this._maybeFireNegotiationNeeded()},u.prototype.removeStream=function(e){var t=this;e.getTracks().forEach(function(e){var r=t.getSenders().find(function(t){return t.track===e});r&&t.removeTrack(r)})},u.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})},u.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})},u.prototype._createIceGatherer=function(t,r){var n=this;if(r&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||0===Object.keys(e.candidate).length;i.state=r?"completed":"gathering",null!==n.transceivers[t].bufferedCandidateEvents&&n.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),i},u.prototype._gather=function(t,r){var i=this,o=this.transceivers[r].iceGatherer;if(!o.onlocalcandidate){var a=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,o.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),o.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var a=new Event("icecandidate");a.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate,c=!s||0===Object.keys(s).length;if(c)"new"!==o.state&&"gathering"!==o.state||(o.state="completed");else{"new"===o.state&&(o.state="gathering"),s.component=1,s.ufrag=o.getLocalParameters().usernameFragment;var p=n.writeCandidate(s);a.candidate=Object.assign(a.candidate,n.parseCandidate(p)),a.candidate.candidate=p,a.candidate.toJSON=function(){return{candidate:a.candidate.candidate,sdpMid:a.candidate.sdpMid,sdpMLineIndex:a.candidate.sdpMLineIndex,usernameFragment:a.candidate.usernameFragment}}}var u=n.getMediaSections(i._localDescription.sdp);u[a.candidate.sdpMLineIndex]+=c?"a=end-of-candidates\r\n":"a="+a.candidate.candidate+"\r\n",i._localDescription.sdp=n.getDescription(i._localDescription.sdp)+u.join("");var d=i.transceivers.every(function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state});"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),c||i._dispatchEvent("icecandidate",a),d&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout(function(){a.forEach(function(e){o.onlocalcandidate(e)})},0)}},u.prototype._createIceAndDtlsTransports=function(){var t=this,r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var n=new e.RTCDtlsTransport(r);return n.ondtlsstatechange=function(){t._updateConnectionState()},n.onerror=function(){Object.defineProperty(n,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:r,dtlsTransport:n}},u.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var n=this.transceivers[e].dtlsTransport;n&&(delete n.ondtlsstatechange,delete n.onerror,delete this.transceivers[e].dtlsTransport)},u.prototype._transceive=function(e,r,i){var a=o(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(a.encodings=e.sendEncodingParameters,a.rtcp={cname:n.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(a)),i&&e.rtpReceiver&&a.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach(function(e){delete e.rtx}),e.recvEncodingParameters.length?a.encodings=e.recvEncodingParameters:a.encodings=[{}],a.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(a.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(a))},u.prototype.setLocalDescription=function(e){var t,r,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject(c("TypeError",'Unsupported type "'+e.type+'"'));if(!a("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject(c("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=n.splitSections(e.sdp),r=t.shift(),t.forEach(function(e,t){var r=n.parseRtpParameters(e);i.transceivers[t].localCapabilities=r}),i.transceivers.forEach(function(e,t){i._gather(e.mid,t)});else if("answer"===e.type){t=n.splitSections(i._remoteDescription.sdp),r=t.shift();var s=n.matchPrefix(r,"a=ice-lite").length>0;t.forEach(function(e,t){var a=i.transceivers[t],c=a.iceGatherer,p=a.iceTransport,u=a.dtlsTransport,d=a.localCapabilities,l=a.remoteCapabilities;if(!(n.isRejected(e)&&0===n.matchPrefix(e,"a=bundle-only").length||a.rejected)){var f=n.getIceParameters(e,r),h=n.getDtlsParameters(e,r);s&&(h.role="server"),i.usingBundle&&0!==t||(i._gather(a.mid,t),"new"===p.state&&p.start(c,f,s?"controlling":"controlled"),"new"===u.state&&u.start(h));var v=o(d,l);i._transceive(a,v.codecs.length>0,!1)}})}return i._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},u.prototype.setRemoteDescription=function(i){var u=this;if(-1===["offer","answer"].indexOf(i.type))return Promise.reject(c("TypeError",'Unsupported type "'+i.type+'"'));if(!a("setRemoteDescription",i.type,u.signalingState)||u._isClosed)return Promise.reject(c("InvalidStateError","Can not set remote "+i.type+" in state "+u.signalingState));var d={};u.remoteStreams.forEach(function(e){d[e.id]=e});var l=[],f=n.splitSections(i.sdp),h=f.shift(),v=n.matchPrefix(h,"a=ice-lite").length>0,m=n.matchPrefix(h,"a=group:BUNDLE ").length>0;u.usingBundle=m;var y=n.matchPrefix(h,"a=ice-options:")[0];return u.canTrickleIceCandidates=!!y&&y.substr(14).split(" ").indexOf("trickle")>=0,f.forEach(function(a,c){var p=n.splitLines(a),f=n.getKind(a),y=n.isRejected(a)&&0===n.matchPrefix(a,"a=bundle-only").length,g=p[0].substr(2).split(" ")[2],_=n.getDirection(a,h),b=n.parseMsid(a),C=n.getMid(a)||n.generateIdentifier();if(y||"application"===f&&("DTLS/SCTP"===g||"UDP/DTLS/SCTP"===g))u.transceivers[c]={mid:C,kind:f,protocol:g,rejected:!0};else{var S,T,P,w,k,E,R,O,M;!y&&u.transceivers[c]&&u.transceivers[c].rejected&&(u.transceivers[c]=u._createTransceiver(f,!0));var D,x,j=n.parseRtpParameters(a);y||(D=n.getIceParameters(a,h),(x=n.getDtlsParameters(a,h)).role="client"),R=n.parseRtpEncodingParameters(a);var I=n.parseRtcpParameters(a),L=n.matchPrefix(a,"a=end-of-candidates",h).length>0,A=n.matchPrefix(a,"a=candidate:").map(function(e){return n.parseCandidate(e)}).filter(function(e){return 1===e.component});if(("offer"===i.type||"answer"===i.type)&&!y&&m&&c>0&&u.transceivers[c]&&(u._disposeIceAndDtlsTransports(c),u.transceivers[c].iceGatherer=u.transceivers[0].iceGatherer,u.transceivers[c].iceTransport=u.transceivers[0].iceTransport,u.transceivers[c].dtlsTransport=u.transceivers[0].dtlsTransport,u.transceivers[c].rtpSender&&u.transceivers[c].rtpSender.setTransport(u.transceivers[0].dtlsTransport),u.transceivers[c].rtpReceiver&&u.transceivers[c].rtpReceiver.setTransport(u.transceivers[0].dtlsTransport)),"offer"!==i.type||y)"answer"!==i.type||y||(T=(S=u.transceivers[c]).iceGatherer,P=S.iceTransport,w=S.dtlsTransport,k=S.rtpReceiver,E=S.sendEncodingParameters,O=S.localCapabilities,u.transceivers[c].recvEncodingParameters=R,u.transceivers[c].remoteCapabilities=j,u.transceivers[c].rtcpParameters=I,A.length&&"new"===P.state&&(!v&&!L||m&&0!==c?A.forEach(function(e){s(S.iceTransport,e)}):P.setRemoteCandidates(A)),m&&0!==c||("new"===P.state&&P.start(T,D,"controlling"),"new"===w.state&&w.start(x)),!o(S.localCapabilities,S.remoteCapabilities).codecs.filter(function(e){return"rtx"===e.name.toLowerCase()}).length&&S.sendEncodingParameters[0].rtx&&delete S.sendEncodingParameters[0].rtx,u._transceive(S,"sendrecv"===_||"recvonly"===_,"sendrecv"===_||"sendonly"===_),!k||"sendrecv"!==_&&"sendonly"!==_?delete S.rtpReceiver:(M=k.track,b?(d[b.stream]||(d[b.stream]=new e.MediaStream),r(M,d[b.stream]),l.push([M,k,d[b.stream]])):(d.default||(d.default=new e.MediaStream),r(M,d.default),l.push([M,k,d.default]))));else{(S=u.transceivers[c]||u._createTransceiver(f)).mid=C,S.iceGatherer||(S.iceGatherer=u._createIceGatherer(c,m)),A.length&&"new"===S.iceTransport.state&&(!L||m&&0!==c?A.forEach(function(e){s(S.iceTransport,e)}):S.iceTransport.setRemoteCandidates(A)),O=e.RTCRtpReceiver.getCapabilities(f),t<15019&&(O.codecs=O.codecs.filter(function(e){return"rtx"!==e.name})),E=S.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var B,N=!1;"sendrecv"===_||"sendonly"===_?(N=!S.rtpReceiver,k=S.rtpReceiver||new e.RTCRtpReceiver(S.dtlsTransport,f),N&&(M=k.track,b&&"-"===b.stream||(b?(d[b.stream]||(d[b.stream]=new e.MediaStream,Object.defineProperty(d[b.stream],"id",{get:function(){return b.stream}})),Object.defineProperty(M,"id",{get:function(){return b.track}}),B=d[b.stream]):(d.default||(d.default=new e.MediaStream),B=d.default)),B&&(r(M,B),S.associatedRemoteMediaStreams.push(B)),l.push([M,k,B]))):S.rtpReceiver&&S.rtpReceiver.track&&(S.associatedRemoteMediaStreams.forEach(function(t){var r,n,i=t.getTracks().find(function(e){return e.id===S.rtpReceiver.track.id});i&&(r=i,(n=t).removeTrack(r),n.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:r})))}),S.associatedRemoteMediaStreams=[]),S.localCapabilities=O,S.remoteCapabilities=j,S.rtpReceiver=k,S.rtcpParameters=I,S.sendEncodingParameters=E,S.recvEncodingParameters=R,u._transceive(u.transceivers[c],!1,N)}}}),void 0===u._dtlsRole&&(u._dtlsRole="offer"===i.type?"active":"passive"),u._remoteDescription={type:i.type,sdp:i.sdp},"offer"===i.type?u._updateSignalingState("have-remote-offer"):u._updateSignalingState("stable"),Object.keys(d).forEach(function(t){var r=d[t];if(r.getTracks().length){if(-1===u.remoteStreams.indexOf(r)){u.remoteStreams.push(r);var n=new Event("addstream");n.stream=r,e.setTimeout(function(){u._dispatchEvent("addstream",n)})}l.forEach(function(e){var t=e[0],n=e[1];r.id===e[2].id&&p(u,t,n,[r])})}}),l.forEach(function(e){e[2]||p(u,e[0],e[1],[])}),e.setTimeout(function(){u&&u.transceivers&&u.transceivers.forEach(function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},u.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},u.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},u.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout(function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}},0))},u.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++}),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},u.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)}),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},u.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject(c("InvalidStateError","Can not call createOffer after close"));var o=r.transceivers.filter(function(e){return"audio"===e.kind}).length,a=r.transceivers.filter(function(e){return"video"===e.kind}).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(o=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(a=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(r.transceivers.forEach(function(e){"audio"===e.kind?--o<0&&(e.wantReceive=!1):"video"===e.kind&&--a<0&&(e.wantReceive=!1)});o>0||a>0;)o>0&&(r._createTransceiver("audio"),o--),a>0&&(r._createTransceiver("video"),a--);var p=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach(function(i,o){var a=i.track,s=i.kind,c=i.mid||n.generateIdentifier();i.mid=c,i.iceGatherer||(i.iceGatherer=r._createIceGatherer(o,r.usingBundle));var p=e.RTCRtpSender.getCapabilities(s);t<15019&&(p.codecs=p.codecs.filter(function(e){return"rtx"!==e.name})),p.codecs.forEach(function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach(function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)})}),p.headerExtensions.forEach(function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach(function(t){e.uri===t.uri&&(e.id=t.id)})});var u=i.sendEncodingParameters||[{ssrc:1001*(2*o+1)}];a&&t>=15019&&"video"===s&&!u[0].rtx&&(u[0].rtx={ssrc:u[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=p,i.sendEncodingParameters=u}),"max-compat"!==r._config.bundlePolicy&&(p+="a=group:BUNDLE "+r.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"),p+="a=ice-options:trickle\r\n",r.transceivers.forEach(function(e,t){p+=i(e,e.localCapabilities,"offer",e.stream,r._dtlsRole),p+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===r.iceGatheringState||0!==t&&r.usingBundle||(e.iceGatherer.getLocalCandidates().forEach(function(e){e.component=1,p+="a="+n.writeCandidate(e)+"\r\n"}),"completed"===e.iceGatherer.state&&(p+="a=end-of-candidates\r\n"))});var u=new e.RTCSessionDescription({type:"offer",sdp:p});return Promise.resolve(u)},u.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject(c("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==r.signalingState&&"have-local-pranswer"!==r.signalingState)return Promise.reject(c("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState));var a=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(a+="a=group:BUNDLE "+r.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"),a+="a=ice-options:trickle\r\n";var s=n.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach(function(e,n){if(!(n+1>s)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?a+="m=application 0 DTLS/SCTP 5000\r\n":a+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?a+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(a+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(a+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var c;e.stream&&("audio"===e.kind?c=e.stream.getAudioTracks()[0]:"video"===e.kind&&(c=e.stream.getVideoTracks()[0]),c&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1}));var p=o(e.localCapabilities,e.remoteCapabilities);!p.codecs.filter(function(e){return"rtx"===e.name.toLowerCase()}).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,a+=i(e,p,"answer",e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(a+="a=rtcp-rsize\r\n")}});var p=new e.RTCSessionDescription({type:"answer",sdp:a});return Promise.resolve(p)},u.prototype.addIceCandidate=function(e){var t,r=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(i,o){if(!r._remoteDescription)return o(c("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var a=e.sdpMLineIndex;if(e.sdpMid)for(var p=0;p0?n.parseCandidate(e.candidate):{};if("tcp"===d.protocol&&(0===d.port||9===d.port))return i();if(d.component&&1!==d.component)return i();if((0===a||a>0&&u.iceTransport!==r.transceivers[0].iceTransport)&&!s(u.iceTransport,d))return o(c("OperationError","Can not add ICE candidate"));var l=e.candidate.trim();0===l.indexOf("a=")&&(l=l.substr(2)),(t=n.getMediaSections(r._remoteDescription.sdp))[a]+="a="+(d.type?l:"end-of-candidates")+"\r\n",r._remoteDescription.sdp=n.getDescription(r._remoteDescription.sdp)+t.join("")}else for(var f=0;f55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){var a=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},s=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(e){return"object"===o(e)&&"object"===o(e.audio)&&(e=JSON.parse(JSON.stringify(e)),a(e.audio,"autoGainControl","mozAutoGainControl"),a(e.audio,"noiseSuppression","mozNoiseSuppression")),s(e)},i&&i.prototype.getSettings){var c=i.prototype.getSettings;i.prototype.getSettings=function(){var e=c.apply(this,arguments);return a(e,"mozAutoGainControl","autoGainControl"),a(e,"mozNoiseSuppression","noiseSuppression"),e}}if(i&&i.prototype.applyConstraints){var p=i.prototype.applyConstraints;i.prototype.applyConstraints=function(e){return"audio"===this.kind&&"object"===o(e)&&(e=JSON.parse(JSON.stringify(e)),a(e,"autoGainControl","mozAutoGainControl"),a(e,"noiseSuppression","mozNoiseSuppression")),p.apply(this,[e])}}}};var n=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=n?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r}(e("../utils"));function i(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return i=function(){return e},e}function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}},{"../utils":"iSxC"}],UuGU:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shimGetDisplayMedia=function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){var n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})}},{}],Fzdr:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shimOnTrack=function(e){"object"===s(e)&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},r.shimPeerConnection=function(e,t){if("object"===s(e)&&(e.RTCPeerConnection||e.mozRTCPeerConnection)){!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=e.RTCPeerConnection.prototype[t],n=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},t,function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)});e.RTCPeerConnection.prototype[t]=n[t]});var r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var[e,i,o]=arguments;return n.apply(this,[e||null]).then(function(e){if(t.version<53&&!i)try{e.forEach(function(e){e.type=r[e.type]||e.type})}catch(n){if("TypeError"!==n.name)throw n;e.forEach(function(t,n){e.set(n,Object.assign({},t,{type:r[t.type]||t.type}))})}return e}).then(i,o)}}},r.shimSenderGetStats=function(e){if("object"===s(e)&&e.RTCPeerConnection&&e.RTCRtpSender&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,r=t.apply(this,[]);return r.forEach(function(t){return t._pc=e}),r});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}},r.shimReceiverGetStats=function(e){if("object"===s(e)&&e.RTCPeerConnection&&e.RTCRtpSender&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,r=t.apply(this,[]);return r.forEach(function(t){return t._pc=e}),r}),n.wrapPeerConnectionEvent(e,"track",function(e){return e.receiver._pc=e.srcElement,e}),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}},r.shimRemoveStream=function(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;n.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(r){r.track&&e.getTracks().includes(r.track)&&t.removeTrack(r)})})},r.shimRTCDataChannel=function(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)},r.shimAddTransceiver=function(e){if("object"===s(e)&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var e=arguments[1],r=e&&"sendEncodings"in e;r&&e.sendEncodings.forEach(function(e){if("rid"in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var n=t.apply(this,arguments);if(r){var{sender:i}=n,o=i.getParameters();"encodings"in o&&(1!==o.encodings.length||0!==Object.keys(o.encodings[0]).length)||(o.encodings=e.sendEncodings,i.sendEncodings=e.sendEncodings,this.setParametersPromises.push(i.setParameters(o).then(function(){delete i.sendEncodings}).catch(function(){delete i.sendEncodings})))}return n})}},r.shimGetParameters=function(e){if("object"===s(e)&&e.RTCRtpSender){var t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){var e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}},r.shimCreateOffer=function(e){if("object"===s(e)&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){var e=arguments,r=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(r,e)}).finally(function(){r.setParametersPromises=[]}):t.apply(this,arguments)}}},r.shimCreateAnswer=function(e){if("object"===s(e)&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){var e=arguments,r=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(r,e)}).finally(function(){r.setParametersPromises=[]}):t.apply(this,arguments)}}},Object.defineProperty(r,"shimGetUserMedia",{enumerable:!0,get:function(){return i.shimGetUserMedia}}),Object.defineProperty(r,"shimGetDisplayMedia",{enumerable:!0,get:function(){return o.shimGetDisplayMedia}});var n=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}(e("../utils")),i=e("./getusermedia"),o=e("./getdisplaymedia");function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}},{"../utils":"iSxC","./getusermedia":"GzSv","./getdisplaymedia":"UuGU"}],t1lL:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.shimLocalStreamsAPI=function(e){if("object"===o(e)&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){var r=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(function(n){return t.call(r,n,e)}),e.getVideoTracks().forEach(function(n){return t.call(r,n,e)})},e.RTCPeerConnection.prototype.addTrack=function(e){for(var r=this,n=arguments.length,i=new Array(n>1?n-1:0),o=1;o=0)){e._remoteStreams.push(t);var r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}})}),t.apply(e,arguments)}}},r.shimCallbacksAPI=function(e){if("object"===o(e)&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,s=t.addIceCandidate;t.createOffer=function(e,t){var n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){var r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i};var c=function(e,t,r){var n=i.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n};t.setLocalDescription=c,c=function(e,t,r){var n=a.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.setRemoteDescription=c,c=function(e,t,r){var n=s.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.addIceCandidate=c}},r.shimGetUserMedia=function(e){var t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){var r=t.mediaDevices,n=r.getUserMedia.bind(r);t.mediaDevices.getUserMedia=function(e){return n(a(e))}}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,n){t.mediaDevices.getUserMedia(e).then(r,n)}.bind(t))},r.shimConstraints=a,r.shimRTCIceServerUrls=function(e){if(e.RTCPeerConnection){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){for(var i=[],o=0;o=76){var{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get:function(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;var t=n.default.splitSections(e.sdp);return t.shift(),t.some(function(e){var t=n.default.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")})}(arguments[0])){var i,o=function(e){var t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;var r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),a=(p=o,u=65536,"firefox"===t.browser&&(u=t.version<57?-1===p?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),u),s=function(e,r){var i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);var o=n.default.matchPrefix(e.sdp,"a=max-message-size:");return o.length>0?i=parseInt(o[0].substr(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],o);i=0===a&&0===s?Number.POSITIVE_INFINITY:0===a||0===s?Math.max(a,s):Math.min(a,s);var c={};Object.defineProperty(c,"maxMessageSize",{get:function(){return i}}),this._sctp=c}var p,u;return r.apply(this,arguments)}}},r.shimSendThrowTypeError=function(e){if(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype){var t=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var e=t.apply(this,arguments);return r(e,this),e},i.wrapPeerConnectionEvent(e,"datachannel",function(e){return r(e.channel,e.target),e})}function r(e,t){var r=e.send;e.send=function(){var n=arguments[0],i=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}},r.shimConnectionState=function(e){if(e.RTCPeerConnection&&!("connectionState"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(e){var r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(e){var t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;var r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}})}},r.removeExtmapAllowMixed=function(e,t){if(e.RTCPeerConnection&&!("chrome"===t.browser&&t.version>=71||"safari"===t.browser&&t.version>=605)){var r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){var n=t.sdp.split("\n").filter(function(e){return"a=extmap-allow-mixed"!==e.trim()}).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return r.apply(this,arguments)}}},r.shimAddIceCandidateNullOrEmpty=function(e,t){if(e.RTCPeerConnection&&e.RTCPeerConnection.prototype){var r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}};var n=function(e){return e&&e.__esModule?e:{default:e}}(e("sdp")),i=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var a=n?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(r,i,a):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}(e("./utils"));function o(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}},{sdp:"YHvh","./utils":"iSxC"}],KtlG:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.adapterFactory=function(){var{window:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0},r=n.log,p=n.detectBrowser(e),u={browserDetails:p,commonShim:c,extractVersion:n.extractVersion,disableLog:n.disableLog,disableWarnings:n.disableWarnings};switch(p.browser){case"chrome":if(!i||!i.shimPeerConnection||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),u;if(null===p.version)return r("Chrome shim can not determine version, not shimming."),u;r("adapter.js shimming chrome."),u.browserShim=i,c.shimAddIceCandidateNullOrEmpty(e,p),i.shimGetUserMedia(e,p),i.shimMediaStream(e,p),i.shimPeerConnection(e,p),i.shimOnTrack(e,p),i.shimAddTrackRemoveTrack(e,p),i.shimGetSendersWithDtmf(e,p),i.shimGetStats(e,p),i.shimSenderReceiverGetStats(e,p),i.fixNegotiationNeeded(e,p),c.shimRTCIceCandidate(e,p),c.shimConnectionState(e,p),c.shimMaxMessageSize(e,p),c.shimSendThrowTypeError(e,p),c.removeExtmapAllowMixed(e,p);break;case"firefox":if(!a||!a.shimPeerConnection||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),u;r("adapter.js shimming firefox."),u.browserShim=a,c.shimAddIceCandidateNullOrEmpty(e,p),a.shimGetUserMedia(e,p),a.shimPeerConnection(e,p),a.shimOnTrack(e,p),a.shimRemoveStream(e,p),a.shimSenderGetStats(e,p),a.shimReceiverGetStats(e,p),a.shimRTCDataChannel(e,p),a.shimAddTransceiver(e,p),a.shimGetParameters(e,p),a.shimCreateOffer(e,p),a.shimCreateAnswer(e,p),c.shimRTCIceCandidate(e,p),c.shimConnectionState(e,p),c.shimMaxMessageSize(e,p),c.shimSendThrowTypeError(e,p);break;case"edge":if(!o||!o.shimPeerConnection||!t.shimEdge)return r("MS edge shim is not included in this adapter release."),u;r("adapter.js shimming edge."),u.browserShim=o,o.shimGetUserMedia(e,p),o.shimGetDisplayMedia(e,p),o.shimPeerConnection(e,p),o.shimReplaceTrack(e,p),c.shimMaxMessageSize(e,p),c.shimSendThrowTypeError(e,p);break;case"safari":if(!s||!t.shimSafari)return r("Safari shim is not included in this adapter release."),u;r("adapter.js shimming safari."),u.browserShim=s,c.shimAddIceCandidateNullOrEmpty(e,p),s.shimRTCIceServerUrls(e,p),s.shimCreateOfferLegacy(e,p),s.shimCallbacksAPI(e,p),s.shimLocalStreamsAPI(e,p),s.shimRemoteStreamsAPI(e,p),s.shimTrackEventTransceiver(e,p),s.shimGetUserMedia(e,p),s.shimAudioContext(e,p),c.shimRTCIceCandidate(e,p),c.shimMaxMessageSize(e,p),c.shimSendThrowTypeError(e,p),c.removeExtmapAllowMixed(e,p);break;default:r("Unsupported browser!")}return u};var n=u(e("./utils")),i=u(e("./chrome/chrome_shim")),o=u(e("./edge/edge_shim")),a=u(e("./firefox/firefox_shim")),s=u(e("./safari/safari_shim")),c=u(e("./common_shim"));function p(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return p=function(){return e},e}function u(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=p();if(t&&t.has(e))return t.get(e);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}},{"./utils":"iSxC","./chrome/chrome_shim":"uI5X","./edge/edge_shim":"XRic","./firefox/firefox_shim":"Fzdr","./safari/safari_shim":"t1lL","./common_shim":"GOQK"}],tI1X:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=(0,e("./adapter_factory.js").adapterFactory)({window:"undefined"==typeof window?void 0:window});r.default=n},{"./adapter_factory.js":"KtlG"}],sXtV:[function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.webRTCAdapter=void 0;var i=n(e("webrtc-adapter"));r.webRTCAdapter=i.default},{"webrtc-adapter":"tI1X"}],I31f:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Supports=void 0;var n=e("./adapter");r.Supports=new(function(){function e(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return e.prototype.isWebRTCSupported=function(){return"undefined"!=typeof RTCPeerConnection},e.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion();return!!this.supportedBrowsers.includes(e)&&("chrome"===e?t>=this.minChromeVersion:"firefox"===e?t>=this.minFirefoxVersion:"safari"===e&&!this.isIOS&&t>=this.minSafariVersion)},e.prototype.getBrowser=function(){return n.webRTCAdapter.browserDetails.browser},e.prototype.getVersion=function(){return n.webRTCAdapter.browserDetails.version||0},e.prototype.isUnifiedPlanSupported=function(){var e,t=this.getBrowser(),r=n.webRTCAdapter.browserDetails.version||0;if("chrome"===t&&r<72)return!1;if("firefox"===t&&r>=59)return!0;if(!(window.RTCRtpTransceiver&&"currentDirection"in RTCRtpTransceiver.prototype))return!1;var i=!1;try{(e=new RTCPeerConnection).addTransceiver("audio"),i=!0}catch(o){}finally{e&&e.close()}return i},e.prototype.toString=function(){return"Supports: \n browser:"+this.getBrowser()+" \n version:"+this.getVersion()+" \n isIOS:"+this.isIOS+" \n isWebRTCSupported:"+this.isWebRTCSupported()+" \n isBrowserSupported:"+this.isBrowserSupported()+" \n isUnifiedPlanSupported:"+this.isUnifiedPlanSupported()},e}())},{"./adapter":"sXtV"}],BHXf:[function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(r,"__esModule",{value:!0}),r.util=void 0;var a=o(e("peerjs-js-binarypack")),s=e("./supports"),c={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"turn:0.peerjs.com:3478",username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"};r.util=new(function(){function e(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=c,this.browser=s.Supports.getBrowser(),this.browserVersion=s.Supports.getVersion(),this.supports=function(){var e,t={browser:s.Supports.isBrowserSupported(),webRTC:s.Supports.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!t.webRTC)return t;try{e=new RTCPeerConnection(c),t.audioVideo=!0;var r=void 0;try{r=e.createDataChannel("_PEERJSTEST",{ordered:!0}),t.data=!0,t.reliable=!!r.ordered;try{r.binaryType="blob",t.binaryBlob=!s.Supports.isIOS}catch(a){}}catch(a){}finally{r&&r.close()}}catch(a){}finally{e&&e.close()}return t}(),this.pack=a.pack,this.unpack=a.unpack,this._dataCount=1}return e.prototype.noop=function(){},e.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},e.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/r.util.chunkedMTU),o=0,a=0;a0)&&!(n=o.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spreadArray||function(e,t){for(var r=0,n=t.length,i=e.length;r=o.All&&this._print.apply(this,i([o.All],n(e)))},e.prototype.warn=function(){for(var e=[],t=0;t=o.Warnings&&this._print.apply(this,i([o.Warnings],n(e)))},e.prototype.error=function(){for(var e=[],t=0;t=o.Errors&&this._print.apply(this,i([o.Errors],n(e)))},e.prototype.setLogFunction=function(e){this._print=e},e.prototype._print=function(e){for(var t=[],r=1;r=o.All?console.log.apply(console,i([],n(a))):e>=o.Warnings?console.warn.apply(console,i(["WARNING"],n(a))):e>=o.Errors&&console.error.apply(console,i(["ERROR"],n(a)))},e}();r.default=new a},{}],ZRYf:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ServerMessageType=r.SocketEventType=r.SerializationType=r.PeerErrorType=r.PeerEventType=r.ConnectionType=r.ConnectionEventType=void 0,function(e){e.Open="open",e.Stream="stream",e.Data="data",e.Close="close",e.Error="error",e.IceStateChanged="iceStateChanged"}(r.ConnectionEventType||(r.ConnectionEventType={})),function(e){e.Data="data",e.Media="media"}(r.ConnectionType||(r.ConnectionType={})),function(e){e.Open="open",e.Close="close",e.Connection="connection",e.Call="call",e.Disconnected="disconnected",e.Error="error"}(r.PeerEventType||(r.PeerEventType={})),function(e){e.BrowserIncompatible="browser-incompatible",e.Disconnected="disconnected",e.InvalidID="invalid-id",e.InvalidKey="invalid-key",e.Network="network",e.PeerUnavailable="peer-unavailable",e.SslUnavailable="ssl-unavailable",e.ServerError="server-error",e.SocketError="socket-error",e.SocketClosed="socket-closed",e.UnavailableID="unavailable-id",e.WebRTC="webrtc"}(r.PeerErrorType||(r.PeerErrorType={})),function(e){e.Binary="binary",e.BinaryUTF8="binary-utf8",e.JSON="json"}(r.SerializationType||(r.SerializationType={})),function(e){e.Message="message",e.Disconnected="disconnected",e.Error="error",e.Close="close"}(r.SocketEventType||(r.SocketEventType={})),function(e){e.Heartbeat="HEARTBEAT",e.Candidate="CANDIDATE",e.Offer="OFFER",e.Answer="ANSWER",e.Open="OPEN",e.Error="ERROR",e.IdTaken="ID-TAKEN",e.InvalidKey="INVALID-KEY",e.Leave="LEAVE",e.Expire="EXPIRE"}(r.ServerMessageType||(r.ServerMessageType={}))},{}],wJlv:[function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(u){i={error:u}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spreadArray||function(e,t){for(var r=0,n=t.length,i=e.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.Socket=void 0;var c=e("eventemitter3"),p=s(e("./logger")),u=e("./enums"),d=function(e){function t(t,r,n,i,o,a){void 0===a&&(a=5e3);var s=e.call(this)||this;s.pingInterval=a,s._disconnected=!0,s._messagesQueue=[];var c=t?"wss://":"ws://";return s._baseUrl=c+r+":"+n+i+"peerjs?key="+o,s}return n(t,e),t.prototype.start=function(e,t){var r=this;this._id=e;var n=this._baseUrl+"&id="+e+"&token="+t;!this._socket&&this._disconnected&&(this._socket=new WebSocket(n),this._disconnected=!1,this._socket.onmessage=function(e){var t;try{t=JSON.parse(e.data),p.default.log("Server message received:",t)}catch(n){return void p.default.log("Invalid server message",e.data)}r.emit(u.SocketEventType.Message,t)},this._socket.onclose=function(e){r._disconnected||(p.default.log("Socket closed.",e),r._cleanup(),r._disconnected=!0,r.emit(u.SocketEventType.Disconnected))},this._socket.onopen=function(){r._disconnected||(r._sendQueuedMessages(),p.default.log("Socket open"),r._scheduleHeartbeat())})},t.prototype._scheduleHeartbeat=function(){var e=this;this._wsPingTimer=setTimeout(function(){e._sendHeartbeat()},this.pingInterval)},t.prototype._sendHeartbeat=function(){if(this._wsOpen()){var e=JSON.stringify({type:u.ServerMessageType.Heartbeat});this._socket.send(e),this._scheduleHeartbeat()}else p.default.log("Cannot send heartbeat, because socket closed")},t.prototype._wsOpen=function(){return!!this._socket&&1===this._socket.readyState},t.prototype._sendQueuedMessages=function(){var e,t,r=o([],i(this._messagesQueue));this._messagesQueue=[];try{for(var n=a(r),s=n.next();!s.done;s=n.next()){var c=s.value;this.send(c)}}catch(p){e={error:p}}finally{try{s&&!s.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},t.prototype.send=function(e){if(!this._disconnected)if(this._id)if(e.type){if(this._wsOpen()){var t=JSON.stringify(e);this._socket.send(t)}}else this.emit(u.SocketEventType.Error,"Invalid message");else this._messagesQueue.push(e)},t.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},t.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},t}(c.EventEmitter);r.Socket=d},{eventemitter3:"JJlS","./logger":"WOs9","./enums":"ZRYf"}],HCdX:[function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.MediaConnection=void 0;var s=e("./util"),c=a(e("./logger")),p=e("./negotiator"),u=e("./enums"),d=function(e){function t(r,n,i){var o=e.call(this,r,n,i)||this;return o._localStream=o.options._stream,o.connectionId=o.options.connectionId||t.ID_PREFIX+s.util.randomToken(),o._negotiator=new p.Negotiator(o),o._localStream&&o._negotiator.startConnection({_stream:o._localStream,originator:!0}),o}return n(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return u.ConnectionType.Media},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),t.prototype.addStream=function(t){c.default.log("Receiving stream",t),this._remoteStream=t,e.prototype.emit.call(this,u.ConnectionEventType.Stream,t)},t.prototype.handleMessage=function(e){var t=e.type,r=e.payload;switch(e.type){case u.ServerMessageType.Answer:this._negotiator.handleSDP(t,r.sdp),this._open=!0;break;case u.ServerMessageType.Candidate:this._negotiator.handleCandidate(r.candidate);break;default:c.default.warn("Unrecognized message type:"+t+" from peer:"+this.peer)}},t.prototype.answer=function(e,t){var r,n;if(void 0===t&&(t={}),this._localStream)c.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");else{this._localStream=e,t&&t.sdpTransform&&(this.options.sdpTransform=t.sdpTransform),this._negotiator.startConnection(i(i({},this.options._payload),{_stream:e}));var a=this.provider._getMessages(this.connectionId);try{for(var s=o(a),p=s.next();!p.done;p=s.next()){var u=p.value;this.handleMessage(u)}}catch(d){r={error:d}}finally{try{p&&!p.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}this._open=!0}},t.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,e.prototype.emit.call(this,u.ConnectionEventType.Close))},t.ID_PREFIX="mc_",t}(e("./baseconnection").BaseConnection);r.MediaConnection=d},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK"}],GGp6:[function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.EncodingQueue=void 0;var o=e("eventemitter3"),a=i(e("./logger")),s=function(e){function t(){var t=e.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(e){t._processing=!1,e.target&&t.emit("done",e.target.result),t.doNextTask()},t.fileReader.onerror=function(e){a.default.error("EncodingQueue error:",e),t._processing=!1,t.destroy(),t.emit("error",e)},t}return n(t,e),Object.defineProperty(t.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),t.prototype.enque=function(e){this.queue.push(e),this.processing||this.doNextTask()},t.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},t.prototype.doNextTask=function(){0!==this.size&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},t}(o.EventEmitter);r.EncodingQueue=s},{eventemitter3:"JJlS","./logger":"WOs9"}],GBTQ:[function(e,t,r){"use strict";var n=this&&this.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.DataConnection=void 0;var a=e("./util"),s=o(e("./logger")),c=e("./negotiator"),p=e("./enums"),u=e("./baseconnection"),d=e("./encodingQueue"),l=function(e){function t(r,n,i){var o=e.call(this,r,n,i)||this;return o.stringify=JSON.stringify,o.parse=JSON.parse,o._buffer=[],o._bufferSize=0,o._buffering=!1,o._chunkedData={},o._encodingQueue=new d.EncodingQueue,o.connectionId=o.options.connectionId||t.ID_PREFIX+a.util.randomToken(),o.label=o.options.label||o.connectionId,o.serialization=o.options.serialization||p.SerializationType.Binary,o.reliable=!!o.options.reliable,o._encodingQueue.on("done",function(e){o._bufferedSend(e)}),o._encodingQueue.on("error",function(){s.default.error("DC#"+o.connectionId+": Error occured in encoding from blob to arraybuffer, close DC"),o.close()}),o._negotiator=new c.Negotiator(o),o._negotiator.startConnection(o.options._payload||{originator:!0}),o}return n(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return p.ConnectionType.Data},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),t.prototype.initialize=function(e){this._dc=e,this._configureDataChannel()},t.prototype._configureDataChannel=function(){var e=this;a.util.supports.binaryBlob&&!a.util.supports.reliable||(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){s.default.log("DC#"+e.connectionId+" dc connection success"),e._open=!0,e.emit(p.ConnectionEventType.Open)},this.dataChannel.onmessage=function(t){s.default.log("DC#"+e.connectionId+" dc onmessage:",t.data),e._handleDataMessage(t)},this.dataChannel.onclose=function(){s.default.log("DC#"+e.connectionId+" dc closed for:",e.peer),e.close()}},t.prototype._handleDataMessage=function(t){var r=this,n=t.data,i=n.constructor,o=n;if(this.serialization===p.SerializationType.Binary||this.serialization===p.SerializationType.BinaryUTF8){if(i===Blob)return void a.util.blobToArrayBuffer(n,function(e){var t=a.util.unpack(e);r.emit(p.ConnectionEventType.Data,t)});if(i===ArrayBuffer)o=a.util.unpack(n);else if(i===String){var s=a.util.binaryStringToArrayBuffer(n);o=a.util.unpack(s)}}else this.serialization===p.SerializationType.JSON&&(o=this.parse(n));o.__peerData?this._handleChunk(o):e.prototype.emit.call(this,p.ConnectionEventType.Data,o)},t.prototype._handleChunk=function(e){var t=e.__peerData,r=this._chunkedData[t]||{data:[],count:0,total:e.total};if(r.data[e.n]=e.data,r.count++,this._chunkedData[t]=r,r.total===r.count){delete this._chunkedData[t];var n=new Blob(r.data);this._handleDataMessage({data:n})}},t.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,e.prototype.emit.call(this,p.ConnectionEventType.Close))},t.prototype.send=function(t,r){if(this.open)if(this.serialization===p.SerializationType.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===p.SerializationType.Binary||this.serialization===p.SerializationType.BinaryUTF8){var n=a.util.pack(t);if(!r&&n.size>a.util.chunkedMTU)return void this._sendChunks(n);a.util.supports.binaryBlob?this._bufferedSend(n):this._encodingQueue.enque(n)}else this._bufferedSend(t);else e.prototype.emit.call(this,p.ConnectionEventType.Error,new Error("Connection is not open. You should listen for the `open` event before sending messages."))},t.prototype._bufferedSend=function(e){!this._buffering&&this._trySend(e)||(this._buffer.push(e),this._bufferSize=this._buffer.length)},t.prototype._trySend=function(r){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>t.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(r)}catch(e){return s.default.error("DC#:"+this.connectionId+" Error when sending:",e),this._buffering=!0,this.close(),!1}return!0},t.prototype._tryBuffer=function(){if(this.open&&0!==this._buffer.length){var e=this._buffer[0];this._trySend(e)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},t.prototype._sendChunks=function(e){var t,r,n=a.util.chunk(e);s.default.log("DC#"+this.connectionId+" Try to send "+n.length+" chunks...");try{for(var o=i(n),c=o.next();!c.done;c=o.next()){var p=c.value;this.send(p,!0)}}catch(u){t={error:u}}finally{try{c&&!c.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}},t.prototype.handleMessage=function(e){var t=e.payload;switch(e.type){case p.ServerMessageType.Answer:this._negotiator.handleSDP(e.type,t.sdp);break;case p.ServerMessageType.Candidate:this._negotiator.handleCandidate(t.candidate);break;default:s.default.warn("Unrecognized message type:",e.type,"from peer:",this.peer)}},t.ID_PREFIX="dc_",t.MAX_BUFFERED_AMOUNT=8388608,t}(u.BaseConnection);r.DataConnection=l},{"./util":"BHXf","./logger":"WOs9","./negotiator":"HCdX","./enums":"ZRYf","./baseconnection":"tQFK","./encodingQueue":"GGp6"}],in7L:[function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{c(n.next(e))}catch(t){o(t)}}function s(e){try{c(n.throw(e))}catch(t){o(t)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((n=n.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(u){i={error:u}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.Peer=void 0;var c=e("eventemitter3"),p=e("./util"),u=s(e("./logger")),d=e("./socket"),l=e("./mediaconnection"),f=e("./dataconnection"),h=e("./enums"),v=e("./api"),m=function(e){function t(r,n){var o,a=e.call(this)||this;return a._id=null,a._lastServerId=null,a._destroyed=!1,a._disconnected=!1,a._open=!1,a._connections=new Map,a._lostMessages=new Map,r&&r.constructor==Object?n=r:r&&(o=r.toString()),n=i({debug:0,host:p.util.CLOUD_HOST,port:p.util.CLOUD_PORT,path:"/",key:t.DEFAULT_KEY,token:p.util.randomToken(),config:p.util.defaultConfig},n),a._options=n,"/"===a._options.host&&(a._options.host=window.location.hostname),a._options.path&&("/"!==a._options.path[0]&&(a._options.path="/"+a._options.path),"/"!==a._options.path[a._options.path.length-1]&&(a._options.path+="/")),void 0===a._options.secure&&a._options.host!==p.util.CLOUD_HOST?a._options.secure=p.util.isSecure():a._options.host==p.util.CLOUD_HOST&&(a._options.secure=!0),a._options.logFunction&&u.default.setLogFunction(a._options.logFunction),u.default.logLevel=a._options.debug||0,a._api=new v.API(n),a._socket=a._createServerConnection(),p.util.supports.audioVideo||p.util.supports.data?o&&!p.util.validateId(o)?(a._delayedAbort(h.PeerErrorType.InvalidID,'ID "'+o+'" is invalid'),a):(o?a._initialize(o):a._api.retrieveId().then(function(e){return a._initialize(e)}).catch(function(e){return a._abort(h.PeerErrorType.ServerError,e)}),a):(a._delayedAbort(h.PeerErrorType.BrowserIncompatible,"The current browser does not support WebRTC"),a)}return n(t,e),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"connections",{get:function(){var e,t,r=Object.create(null);try{for(var n=o(this._connections),i=n.next();!i.done;i=n.next()){var s=a(i.value,2),c=s[0],p=s[1];r[c]=p}}catch(f){e={error:f}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return r},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),t.prototype._createServerConnection=function(){var e=this,t=new d.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return t.on(h.SocketEventType.Message,function(t){e._handleMessage(t)}),t.on(h.SocketEventType.Error,function(t){e._abort(h.PeerErrorType.SocketError,t)}),t.on(h.SocketEventType.Disconnected,function(){e.disconnected||(e.emitError(h.PeerErrorType.Network,"Lost connection to server."),e.disconnect())}),t.on(h.SocketEventType.Close,function(){e.disconnected||e._abort(h.PeerErrorType.SocketClosed,"Underlying socket is already closed.")}),t},t.prototype._initialize=function(e){this._id=e,this.socket.start(e,this._options.token)},t.prototype._handleMessage=function(e){var t,r,n=e.type,i=e.payload,a=e.src;switch(n){case h.ServerMessageType.Open:this._lastServerId=this.id,this._open=!0,this.emit(h.PeerEventType.Open,this.id);break;case h.ServerMessageType.Error:this._abort(h.PeerErrorType.ServerError,i.msg);break;case h.ServerMessageType.IdTaken:this._abort(h.PeerErrorType.UnavailableID,'ID "'+this.id+'" is taken');break;case h.ServerMessageType.InvalidKey:this._abort(h.PeerErrorType.InvalidKey,'API KEY "'+this._options.key+'" is invalid');break;case h.ServerMessageType.Leave:u.default.log("Received leave message from "+a),this._cleanupPeer(a),this._connections.delete(a);break;case h.ServerMessageType.Expire:this.emitError(h.PeerErrorType.PeerUnavailable,"Could not connect to peer "+a);break;case h.ServerMessageType.Offer:var s=i.connectionId;if((m=this.getConnection(a,s))&&(m.close(),u.default.warn("Offer received for existing Connection ID:"+s)),i.type===h.ConnectionType.Media)m=new l.MediaConnection(a,this,{connectionId:s,_payload:i,metadata:i.metadata}),this._addConnection(a,m),this.emit(h.PeerEventType.Call,m);else{if(i.type!==h.ConnectionType.Data)return void u.default.warn("Received malformed connection type:"+i.type);m=new f.DataConnection(a,this,{connectionId:s,_payload:i,metadata:i.metadata,label:i.label,serialization:i.serialization,reliable:i.reliable}),this._addConnection(a,m),this.emit(h.PeerEventType.Connection,m)}var c=this._getMessages(s);try{for(var p=o(c),d=p.next();!d.done;d=p.next()){var v=d.value;m.handleMessage(v)}}catch(y){t={error:y}}finally{try{d&&!d.done&&(r=p.return)&&r.call(p)}finally{if(t)throw t.error}}break;default:if(!i)return void u.default.warn("You received a malformed message from "+a+" of type "+n);var m;s=i.connectionId,(m=this.getConnection(a,s))&&m.peerConnection?m.handleMessage(e):s?this._storeMessage(s,e):u.default.warn("You received an unrecognized message:",e)}},t.prototype._storeMessage=function(e,t){this._lostMessages.has(e)||this._lostMessages.set(e,[]),this._lostMessages.get(e).push(t)},t.prototype._getMessages=function(e){var t=this._lostMessages.get(e);return t?(this._lostMessages.delete(e),t):[]},t.prototype.connect=function(e,t){if(void 0===t&&(t={}),this.disconnected)return u.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),void this.emitError(h.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");var r=new f.DataConnection(e,this,t);return this._addConnection(e,r),r},t.prototype.call=function(e,t,r){if(void 0===r&&(r={}),this.disconnected)return u.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),void this.emitError(h.PeerErrorType.Disconnected,"Cannot connect to new Peer after disconnecting from server.");if(t){r._stream=t;var n=new l.MediaConnection(e,this,r);return this._addConnection(e,n),n}u.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.")},t.prototype._addConnection=function(e,t){u.default.log("add connection "+t.type+":"+t.connectionId+" to peerId:"+e),this._connections.has(e)||this._connections.set(e,[]),this._connections.get(e).push(t)},t.prototype._removeConnection=function(e){var t=this._connections.get(e.peer);if(t){var r=t.indexOf(e);-1!==r&&t.splice(r,1)}this._lostMessages.delete(e.connectionId)},t.prototype.getConnection=function(e,t){var r,n,i=this._connections.get(e);if(!i)return null;try{for(var a=o(i),s=a.next();!s.done;s=a.next()){var c=s.value;if(c.connectionId===t)return c}}catch(l){r={error:l}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return null},t.prototype._delayedAbort=function(e,t){var r=this;setTimeout(function(){r._abort(e,t)},0)},t.prototype._abort=function(e,t){u.default.error("Aborting!"),this.emitError(e,t),this._lastServerId?this.disconnect():this.destroy()},t.prototype.emitError=function(e,t){var r;u.default.error("Error:",t),(r="string"==typeof t?new Error(t):t).type=e,this.emit(h.PeerEventType.Error,r)},t.prototype.destroy=function(){this.destroyed||(u.default.log("Destroy peer with ID:"+this.id),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit(h.PeerEventType.Close))},t.prototype._cleanup=function(){var e,t;try{for(var r=o(this._connections.keys()),n=r.next();!n.done;n=r.next()){var i=n.value;this._cleanupPeer(i),this._connections.delete(i)}}catch(p){e={error:p}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.socket.removeAllListeners()},t.prototype._cleanupPeer=function(e){var t,r,n=this._connections.get(e);if(n)try{for(var i=o(n),a=i.next();!a.done;a=i.next())a.value.close()}catch(u){t={error:u}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}},t.prototype.disconnect=function(){if(!this.disconnected){var e=this.id;u.default.log("Disconnect peer with ID:"+e),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=e,this._id=null,this.emit(h.PeerEventType.Disconnected,e)}},t.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)u.default.log("Attempting reconnection to server with ID "+this._lastServerId),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(this.disconnected||this.open)throw new Error("Peer "+this.id+" cannot reconnect because it is not disconnected from the server!");u.default.error("In a hurry? We're still trying to make the initial connection!")}},t.prototype.listAllPeers=function(e){var t=this;void 0===e&&(e=function(e){}),this._api.listAllPeers().then(function(t){return e(t)}).catch(function(e){return t._abort(h.PeerErrorType.ServerError,e)})},t.DEFAULT_KEY="peerjs",t}(c.EventEmitter);r.Peer=m},{eventemitter3:"JJlS","./util":"BHXf","./logger":"WOs9","./socket":"wJlv","./mediaconnection":"dbHP","./dataconnection":"GBTQ","./enums":"ZRYf","./api":"in7L"}],iTK6:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.peerjs=void 0;var n=e("./util"),i=e("./peer");r.peerjs={Peer:i.Peer,util:n.util},r.default=i.Peer,window.peerjs=r.peerjs,window.Peer=i.Peer},{"./util":"BHXf","./peer":"Hxpd"}]},{},["iTK6"]); +},{}],"n29C":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.urlAlphabet=void 0;let e="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW";exports.urlAlphabet=e; +},{}],"iDyL":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"urlAlphabet",{enumerable:!0,get:function(){return e.urlAlphabet}}),exports.random=exports.customRandom=exports.customAlphabet=exports.nanoid=void 0;var e=require("./url-alphabet/index.js");let t=e=>crypto.getRandomValues(new Uint8Array(e));exports.random=t;let r=(e,t,r)=>{let o=(2<{let l="";for(;;){let a=r(n),p=n;for(;p--;)if((l+=e[a[p]&o]||"").length===t)return l}}};exports.customRandom=r;let o=(e,o)=>r(e,o,t);exports.customAlphabet=o;let n=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e));for(;e--;){let o=63&r[e];t+=o<36?o.toString(36):o<62?(o-26).toString(36).toUpperCase():o<63?"_":"-"}return t};exports.nanoid=n; +},{"./url-alphabet/index.js":"n29C"}],"wKEE":[function(require,module,exports) { +"use strict";function e(e,t){const n=Math.ceil(e.length/t),r=new Array(n);for(let o=0,a=0;obtoa(String.fromCharCode.apply(null,e)),n=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(null)),r=new TextEncoder,o=new TextDecoder,a=e=>window.crypto.subtle.importKey("raw",r.encode(e),"PBKDF2",!1,["deriveKey"]),c=(e,t,n)=>window.crypto.subtle.deriveKey({name:"PBKDF2",salt:t,iterations:5e4,hash:"SHA-256"},e,{name:"AES-GCM",length:256},!1,n);async function i(t,n){const o=e(t,1e6),i=window.crypto.getRandomValues(new Uint8Array(16)),s=await a(n);return await Promise.all(o.map(async e=>{const t=window.crypto.getRandomValues(new Uint8Array(12)),n=await c(s,i,["encrypt"]),o=await window.crypto.subtle.encrypt({name:"AES-GCM",iv:t},n,r.encode(e)),a=new Uint8Array(o);let y=new Uint8Array(i.byteLength+t.byteLength+a.byteLength);return y.set(i,0),y.set(t,i.byteLength),y.set(a,i.byteLength+t.byteLength),y}))}async function s(e,t){try{const r=await a(t),i=await Promise.all(e.map(async e=>{const t=e,n=t.slice(0,16),a=t.slice(16,28),i=t.slice(28),s=await c(r,n,["decrypt"]),y=await window.crypto.subtle.decrypt({name:"AES-GCM",iv:a},s,i);return o.decode(y)}));return JSON.parse(i.join(""))}catch(n){return console.log(`Error - ${n}`),""}}exports.encrypt=i,exports.decrypt=s; +},{}],"RC5X":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("react"),r=require("../utils/crypto"),t=t=>{return{encrypt:e.useCallback(async e=>{const c=JSON.stringify(e);return await r.encrypt(c,t)},[t]),decrypt:e.useCallback(async e=>r.decrypt(e,t),[t])}};exports.default=t; +},{"react":"HdMw","../utils/crypto":"wKEE"}],"d4le":[function(require,module,exports) { +"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(n){if(n&&n.__esModule)return n;var o={};if(null!=n)for(var r in n)"default"!==r&&Object.prototype.hasOwnProperty.call(n,r)&&e(o,n,r);return t(o,n),o},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConnectionProvider=exports.States=void 0;const r=n(require("react")),c=o(require("peerjs")),s=require("nanoid"),a=o(require("../hooks/useCrypto"));var i;function u(e){for(var t=e.split(",")[0].split(":")[1].split(";")[0],n=atob(e.split(",")[1]),o=[],r=0;r{const[t,n]=r.useState(s.nanoid()),{encrypt:o,decrypt:l}=a.default(t),f=r.useMemo(()=>s.nanoid(),[]),p=r.useMemo(()=>new c.default(f),[f]),[C,N]=r.useState(void 0),[b,y]=r.useState([]),[v,O]=r.useState(i.WAITING),h=r.useMemo(()=>({id:f,secret:t}),[f]),E=r.useCallback(async e=>{C&&(y(t=>[...t,{...e,body:u(e.body)}]),C.send(await o(e)))},[C,o]),_=r.useCallback(async e=>{O(i.CONNECTING);const t=p.connect(e.id);t.on("open",()=>{n(e.secret),O(i.CONNECTED),N(t),console.log("connected",t)})},[p]);return r.useEffect(()=>{const e=e=>{O(i.CONNECTED),N(e),console.log("connected",e)};return p.on("connection",e),()=>{p.off("connection",e)}},[p]),r.useEffect(()=>{if(!C)return;const e=async e=>{const t=await l(e);y(e=>[...e,{...t,body:u(t.body)}])};return C.on("data",e),()=>{C.off("data",e)}},[C,l]),r.default.createElement(d.Provider,{value:{clientInfo:h,state:v,messages:b,send:E,connect:_}},e)};exports.ConnectionProvider=l,exports.default=d; +},{"react":"HdMw","peerjs":"rWP2","nanoid":"iDyL","../hooks/useCrypto":"RC5X"}],"Q1fA":[function(require,module,exports) { +module.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}; +},{}],"GDhJ":[function(require,module,exports) { +var t=require("./mode");function e(e){this.mode=t.MODE_8BIT_BYTE,this.data=e}e.prototype={getLength:function(t){return this.data.length},write:function(t){for(var e=0;e>>7-t%8&1)},put:function(t,h){for(var n=0;n>>h-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var h=Math.floor(this.length/8);this.buffer.length<=h&&this.buffer.push(0),t&&(this.buffer[h]|=128>>>this.length%8),this.length++}},module.exports=t; +},{}],"B3gk":[function(require,module,exports) { +for(var E={glog:function(r){if(r<1)throw new Error("glog("+r+")");return E.LOG_TABLE[r]},gexp:function(r){for(;r<0;)r+=255;for(;r>=256;)r-=255;return E.EXP_TABLE[r]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},r=0;r<8;r++)E.EXP_TABLE[r]=1<=0;)e^=i.G15<=0;)e^=i.G18<>>=1;return e},getPatternPosition:function(r){return i.PATTERN_POSITION_TABLE[r-1]},getMask:function(r,e,t){switch(r){case a.PATTERN000:return(e+t)%2==0;case a.PATTERN001:return e%2==0;case a.PATTERN010:return t%3==0;case a.PATTERN011:return(e+t)%3==0;case a.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2==0;case a.PATTERN101:return e*t%2+e*t%3==0;case a.PATTERN110:return(e*t%2+e*t%3)%2==0;case a.PATTERN111:return(e*t%3+(e+t)%2)%2==0;default:throw new Error("bad maskPattern:"+r)}},getErrorCorrectPolynomial:function(r){for(var a=new e([1],0),i=0;i5&&(t+=3+n-5)}for(a=0;a=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=n.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},s.setupPositionProbePattern=function(t,e){for(var o=-1;o<=7;o++)if(!(t+o<=-1||this.moduleCount<=t+o))for(var r=-1;r<=7;r++)e+r<=-1||this.moduleCount<=e+r||(this.modules[t+o][e+r]=0<=o&&o<=6&&(0==r||6==r)||0<=r&&r<=6&&(0==o||6==o)||2<=o&&o<=4&&2<=r&&r<=4)},s.getBestMaskPattern=function(){for(var t=0,e=0,o=0;o<8;o++){this.makeImpl(!0,o);var i=r.getLostPoint(this);(0==o||t>i)&&(t=i,e=o)}return e},s.createMovieClip=function(t,e,o){var r=t.createEmptyMovieClip(e,o);this.make();for(var i=0;i>o&1);this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=i}for(o=0;o<18;o++){i=!t&&1==(e>>o&1);this.modules[o%3+this.moduleCount-8-3][Math.floor(o/3)]=i}},s.setupTypeInfo=function(t,e){for(var o=this.errorCorrectLevel<<3|e,i=r.getBCHTypeInfo(o),n=0;n<15;n++){var s=!t&&1==(i>>n&1);n<6?this.modules[n][8]=s:n<8?this.modules[n+1][8]=s:this.modules[this.moduleCount-15+n][8]=s}for(n=0;n<15;n++){s=!t&&1==(i>>n&1);n<8?this.modules[8][this.moduleCount-n-1]=s:n<9?this.modules[8][15-n-1+1]=s:this.modules[8][15-n-1]=s}this.modules[this.moduleCount-8][8]=!t},s.mapData=function(t,e){for(var o=-1,i=this.moduleCount-1,n=7,s=0,u=this.moduleCount-1;u>0;u-=2)for(6==u&&u--;;){for(var h=0;h<2;h++)if(null==this.modules[i][u-h]){var a=!1;s>>n&1)),r.getMask(e,i,u-h)&&(a=!a),this.modules[i][u-h]=a,-1==--n&&(s++,n=7)}if((i+=o)<0||this.moduleCount<=i){i-=o,o=-o;break}}},n.PAD0=236,n.PAD1=17,n.createData=function(t,i,s){for(var u=e.getRSBlocks(t,i),h=new o,a=0;a8*m)throw new Error("code length overflow. ("+h.getLengthInBits()+">"+8*m+")");for(h.getLengthInBits()+4<=8*m&&h.put(0,4);h.getLengthInBits()%8!=0;)h.putBit(!1);for(;!(h.getLengthInBits()>=8*m||(h.put(n.PAD0,8),h.getLengthInBits()>=8*m));)h.put(n.PAD1,8);return n.createBytes(h,u)},n.createBytes=function(t,e){for(var o=0,n=0,s=0,u=new Array(e.length),h=new Array(e.length),a=0;a=0?g.get(v):0}}var p=0;for(d=0;d=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}var i={children:t.default.array.isRequired,size:t.default.number.isRequired,style:t.default.object,xmlns:t.default.string},u={style:void 0,xmlns:"http://www.w3.org/2000/svg"},o=function(r){var t=r.children,n=r.size,l=r.style,i=r.xmlns,u=a(r,["children","size","style","xmlns"]);return s.default.createElement("svg",e({},u,{height:n,style:l,width:n,xmlns:i}),t)};o.propTypes=i,o.defaultProps=u,exports.default=o; +},{"prop-types":"Iix9","react":"HdMw"}],"iQ9p":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=Object.assign||function(e){for(var r=1;r=0||Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}var g={bgColor:u.default.string,fgColor:u.default.string,level:u.default.oneOf(["L","M","Q","H"]),size:u.default.number,value:u.default.string.isRequired},h={bgColor:"#FFFFFF",fgColor:"#000000",level:"L",size:256},m=function(r){var o=r.bgColor,a=r.fgColor,u=r.level,n=r.size,i=r.value,d=v(r,["bgColor","fgColor","level","size","value"]),p=new t.default(-1,l.default[u]);p.addData(i),p.make();var g=p.modules,h=n/g.length;return f.default.createElement(c.default,e({},d,{size:n,style:{height:n,width:n}}),g.map(function(e,r){return e.map(function(e,t){var l=e?a:o,u=Math.ceil((t+1)*h)-Math.floor(t*h),n=Math.ceil((r+1)*h)-Math.floor(r*h),i="M 0 0 L "+u+" 0 L "+u+" "+n+" L 0 "+n+" Z",d=Math.round(t*h),c=Math.round(r*h);return f.default.createElement(s.default,{key:"rectangle-"+r+"-"+t,d:i,fill:l,transformX:d,transformY:c})})}))};m.propTypes=g,m.defaultProps=h,exports.default=(0,n.memo)(m); +},{"qr.js/lib/QRCode":"rNQq","qr.js/lib/ErrorCorrectLevel":"c8Uw","prop-types":"Iix9","react":"HdMw","./components/QRCodeCell":"O8YZ","./components/QRCodeSurface":"JXgL"}],"pHS2":[function(require,module,exports) { +"use strict";function e(){this.name="NoVideoInputDevicesError",this.message="No video input devices found"}e.prototype=new Error,module.exports={NoVideoInputDevicesError:e}; +},{}],"eYSS":[function(require,module,exports) { +"use strict";var e=require("./errors"),n=e.NoVideoInputDevicesError;function r(e,n,r){return e.length>0?e[0].deviceId:1==n.length||"user"==r?n[0].deviceId:n[1].deviceId}var t=function(e){return"environment"==e?/rear|back|environment/gi:/front|user|face/gi};function i(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r;return new Promise(function(r,o){var c=void 0;try{c=navigator.mediaDevices.enumerateDevices()}catch(u){o(new n)}c.then(function(c){var u=c.filter(function(e){return"videoinput"==e.kind});if(u.length<1)o(new n);else{var v=t(e),a=u.filter(function(e){var n=e.label;return v.test(n)});r(i(a,u,e))}})})}module.exports={getDeviceId:i,getFacingModePattern:t}; +},{"./errors":"pHS2"}],"kwuj":[function(require,module,exports) { +"use strict";module.exports=function(r,t,u){var n=[];return u.forEach(function(u){r[u]!=t[u]&&n.push(u)}),n}; +},{}],"vMHJ":[function(require,module,exports) { +"use strict";module.exports=function(e,o){e=e||[],o=o||{};try{return new Blob(e,o)}catch(t){if("TypeError"!==t.name)throw t;for(var r=new(window.BlobBuilder||window.MSBlobBuilder||window.MozBlobBuilder||window.WebKitBlobBuilder),n=0;n=n&&parseInt(r[n],10)}function r(e,t,n){if(!e.RTCPeerConnection)return;const r=e.RTCPeerConnection.prototype,o=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return o.apply(this,arguments);const s=e=>{const t=n(e);t&&(r.handleEvent?r.handleEvent(t):r(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(r,s),o.apply(this,[e,s])};const s=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(n))return s.apply(this,arguments);const r=this._eventMap[t].get(n);return this._eventMap[t].delete(n),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function o(t){return"boolean"!=typeof t?new Error("Argument type: "+typeof t+". Please use a boolean."):(e=t,t?"adapter.js logging disabled":"adapter.js logging enabled")}function s(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(t=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function i(){if("object"==typeof window){if(e)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function a(e,n){t&&console.warn(e+" is deprecated, please use "+n+" instead.")}function p(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=n(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=n(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=n(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=n(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}function c(e){return"[object Object]"===Object.prototype.toString.call(e)}function d(e){return c(e)?Object.keys(e).reduce(function(t,n){const r=c(e[n]),o=r?d(e[n]):e[n],s=r&&!Object.keys(o).length;return void 0===o||s?t:Object.assign(t,{[n]:o})},{}):e}function u(e,t,n){t&&!n.has(t.id)&&(n.set(t.id,t),Object.keys(t).forEach(r=>{r.endsWith("Id")?u(e,e.get(t[r]),n):r.endsWith("Ids")&&t[r].forEach(t=>{u(e,e.get(t),n)})}))}function l(e,t,n){const r=n?"outbound-rtp":"inbound-rtp",o=new Map;if(null===t)return o;const s=[];return e.forEach(e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)}),s.forEach(t=>{e.forEach(n=>{n.type===r&&n.trackId===t.id&&u(e,n,o)})}),o} +},{}],"RmTL":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetUserMedia=i;var e=t(require("../utils.js"));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(r=function(e){return e?o:t})(e)}function t(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=r(t);if(o&&o.has(e))return o.get(e);var i={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var d=n?Object.getOwnPropertyDescriptor(e,a):null;d&&(d.get||d.set)?Object.defineProperty(i,a,d):i[a]=e[a]}return i.default=e,o&&o.set(e,i),i}const o=e.log;function i(e,r){const t=e&&e.navigator;if(!t.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const r={};return Object.keys(e).forEach(t=>{if("require"===t||"advanced"===t||"mediaSource"===t)return;const o="object"==typeof e[t]?e[t]:{ideal:e[t]};void 0!==o.exact&&"number"==typeof o.exact&&(o.min=o.max=o.exact);const i=function(e,r){return e?e+r.charAt(0).toUpperCase()+r.slice(1):"deviceId"===r?"sourceId":r};if(void 0!==o.ideal){r.optional=r.optional||[];let e={};"number"==typeof o.ideal?(e[i("min",t)]=o.ideal,r.optional.push(e),(e={})[i("max",t)]=o.ideal,r.optional.push(e)):(e[i("",t)]=o.ideal,r.optional.push(e))}void 0!==o.exact&&"number"!=typeof o.exact?(r.mandatory=r.mandatory||{},r.mandatory[i("",t)]=o.exact):["min","max"].forEach(e=>{void 0!==o[e]&&(r.mandatory=r.mandatory||{},r.mandatory[i(e,t)]=o[e])})}),e.advanced&&(r.optional=(r.optional||[]).concat(e.advanced)),r},n=function(e,n){if(r.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const r=function(e,r,t){r in e&&!(t in e)&&(e[t]=e[r],delete e[r])};r((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),r(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let a=e.video.facingMode;a=a&&("object"==typeof a?a:{ideal:a});const d=r.version<66;if(a&&("user"===a.exact||"environment"===a.exact||"user"===a.ideal||"environment"===a.ideal)&&(!t.mediaDevices.getSupportedConstraints||!t.mediaDevices.getSupportedConstraints().facingMode||d)){let r;if(delete e.video.facingMode,"environment"===a.exact||"environment"===a.ideal?r=["back","rear"]:"user"!==a.exact&&"user"!==a.ideal||(r=["front"]),r)return t.mediaDevices.enumerateDevices().then(t=>{let d=(t=t.filter(e=>"videoinput"===e.kind)).find(e=>r.some(r=>e.label.toLowerCase().includes(r)));return!d&&t.length&&r.includes("back")&&(d=t[t.length-1]),d&&(e.video.deviceId=a.exact?{exact:d.deviceId}:{ideal:d.deviceId}),e.video=i(e.video),o("chrome: "+JSON.stringify(e)),n(e)})}e.video=i(e.video)}return o("chrome: "+JSON.stringify(e)),n(e)},a=function(e){return r.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(t.getUserMedia=function(e,r,o){n(e,e=>{t.webkitGetUserMedia(e,r,e=>{o&&o(a(e))})})}.bind(t),t.mediaDevices.getUserMedia){const e=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(r){return n(r,r=>e(r).then(e=>{if(r.audio&&!e.getAudioTracks().length||r.video&&!e.getVideoTracks().length)throw e.getTracks().forEach(e=>{e.stop()}),new DOMException("","NotFoundError");return e},e=>Promise.reject(a(e))))}}} +},{"../utils.js":"RsyN"}],"yjjI":[function(require,module,exports) { +"use strict";function e(e,i){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof i?e.navigator.mediaDevices.getDisplayMedia=function(a){return i(a).then(i=>{const t=a.video&&a.video.width,o=a.video&&a.video.height,d=a.video&&a.video.frameRate;return a.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:d||3}},t&&(a.video.mandatory.maxWidth=t),o&&(a.video.mandatory.maxHeight=o),e.navigator.mediaDevices.getUserMedia(a)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetDisplayMedia=e; +},{}],"RNlo":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimMediaStream=i,exports.shimOnTrack=s,exports.shimGetSendersWithDtmf=c,exports.shimGetStats=a,exports.shimSenderReceiverGetStats=p,exports.shimAddTrackRemoveTrackWithNative=d,exports.shimAddTrackRemoveTrack=h,exports.shimPeerConnection=m,exports.fixNegotiationNeeded=C,Object.defineProperty(exports,"shimGetUserMedia",{enumerable:!0,get:function(){return t.shimGetUserMedia}}),Object.defineProperty(exports,"shimGetDisplayMedia",{enumerable:!0,get:function(){return r.shimGetDisplayMedia}});var e=o(require("../utils.js")),t=require("./getusermedia"),r=require("./getdisplaymedia");function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var c=i?Object.getOwnPropertyDescriptor(e,s):null;c&&(c.get||c.set)?Object.defineProperty(o,s,c):o[s]=e[s]}return o.default=e,r&&r.set(e,o),o}function i(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function s(t){if("object"!=typeof t||!t.RTCPeerConnection||"ontrack"in t.RTCPeerConnection.prototype)e.wrapPeerConnectionEvent(t,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e));else{Object.defineProperty(t.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const e=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=(e=>{e.stream.addEventListener("addtrack",r=>{let n;n=t.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===r.track.id):{track:r.track};const o=new Event("track");o.track=r.track,o.receiver=n,o.transceiver={receiver:n},o.streams=[e.stream],this.dispatchEvent(o)}),e.stream.getTracks().forEach(r=>{let n;n=t.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===r.id):{track:r};const o=new Event("track");o.track=r,o.receiver=n,o.transceiver={receiver:n},o.streams=[e.stream],this.dispatchEvent(o)})}),this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}}function c(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let o=r.apply(this,arguments);return o||(o=t(this,e),this._senders.push(o)),o};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach(e=>{this._senders.push(t(this,e))})};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{const t=this._senders.find(t=>t.track===e);t&&this._senders.splice(this._senders.indexOf(t),1)})}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function a(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const o=function(e){const t={};return e.result().forEach(e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach(t=>{r[t]=e.stat(t)}),t[r.id]=r}),t},i=function(e){return new Map(Object.keys(e).map(t=>[t,e[t]]))};if(arguments.length>=2){const n=function(e){r(i(o(e)))};return t.apply(this,[n,e])}return new Promise((e,r)=>{t.apply(this,[function(t){e(i(o(t)))},r])}).then(r,n)}}function p(t){if(!("object"==typeof t&&t.RTCPeerConnection&&t.RTCRtpSender&&t.RTCRtpReceiver))return;if(!("getStats"in t.RTCRtpSender.prototype)){const r=t.RTCPeerConnection.prototype.getSenders;r&&(t.RTCPeerConnection.prototype.getSenders=function(){const e=r.apply(this,[]);return e.forEach(e=>e._pc=this),e});const n=t.RTCPeerConnection.prototype.addTrack;n&&(t.RTCPeerConnection.prototype.addTrack=function(){const e=n.apply(this,arguments);return e._pc=this,e}),t.RTCRtpSender.prototype.getStats=function(){const t=this;return this._pc.getStats().then(r=>e.filterStats(r,t.track,!0))}}if(!("getStats"in t.RTCRtpReceiver.prototype)){const r=t.RTCPeerConnection.prototype.getReceivers;r&&(t.RTCPeerConnection.prototype.getReceivers=function(){const e=r.apply(this,[]);return e.forEach(e=>e._pc=this),e}),e.wrapPeerConnectionEvent(t,"track",e=>(e.receiver._pc=e.srcElement,e)),t.RTCRtpReceiver.prototype.getStats=function(){const t=this;return this._pc.getStats().then(r=>e.filterStats(r,t.track,!1))}}if(!("getStats"in t.RTCRtpSender.prototype&&"getStats"in t.RTCRtpReceiver.prototype))return;const r=t.RTCPeerConnection.prototype.getStats;t.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof t.MediaStreamTrack){const e=arguments[0];let t,r,n;return this.getSenders().forEach(r=>{r.track===e&&(t?n=!0:t=r)}),this.getReceivers().forEach(t=>(t.track===e&&(r?n=!0:r=t),t.track===e)),n||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return r.apply(this,arguments)}}function d(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(n)&&this._shimmedLocalStreams[r.id].push(n):this._shimmedLocalStreams[r.id]=[r,n],n};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException("Track already exists.","InvalidAccessError")});const t=this.getSenders();r.apply(this,arguments);const n=this.getSenders().filter(e=>-1===t.indexOf(e));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const o=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]}),o.apply(this,arguments)}}function h(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return d(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}n.apply(this,[t])};const o=e.RTCPeerConnection.prototype.removeStream;function i(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{const n=e._reverseStreams[t],o=e._streams[n.id];r=r.replace(new RegExp(o.id,"g"),n.id)}),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},o.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find(e=>e===t))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(e=>e.track===t))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const o=this._streams[r.id];if(o)o.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const n=new e.MediaStream([t]);this._streams[r.id]=n,this._reverseStreams[n.id]=r,this.addStream(n)}return this.getSenders().find(e=>e.track===t)},["createOffer","createAnswer"].forEach(function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=i(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then(e=>i(this,e))}};e.RTCPeerConnection.prototype[t]=n[t]});const s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{const n=e._reverseStreams[t],o=e._streams[n.id];r=r.replace(new RegExp(n.id,"g"),o.id)}),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),s.apply(this,arguments)):s.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:i(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach(r=>{this._streams[r].getTracks().find(t=>e.track===t)&&(t=this._streams[r])}),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function m(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]})}function C(t,r){e.wrapPeerConnectionEvent(t,"negotiationneeded",e=>{const t=e.target;if(!(r.version<72||t.getConfiguration&&"plan-b"===t.getConfiguration().sdpSemantics)||"stable"===t.signalingState)return e})} +},{"../utils.js":"RsyN","./getusermedia":"RmTL","./getdisplaymedia":"yjjI"}],"uuCd":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.filterIceServers=n;var e=t(require("../utils"));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}function t(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=l?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(u,i,s):u[i]=e[i]}return u.default=e,n&&n.set(e,u),u}function n(r,t){let n=!1;return(r=JSON.parse(JSON.stringify(r))).filter(r=>{if(r&&(r.urls||r.url)){let t=r.urls||r.url;r.url&&!r.urls&&e.deprecated("RTCIceServer.url","RTCIceServer.urls");const u="string"==typeof t;return u&&(t=[t]),t=t.filter(e=>{if(0===e.indexOf("stun:"))return!1;const r=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return r&&!n?(n=!0,!0):r&&!n}),delete r.url,r.urls=u?t[0]:t,!!t.length}})} +},{"../utils":"RsyN"}],"jIWI":[function(require,module,exports) { +"use strict";var r={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};r.localCName=r.generateIdentifier(),r.splitLines=function(r){return r.trim().split("\n").map(function(r){return r.trim()})},r.splitSections=function(r){return r.split("\nm=").map(function(r,e){return(e>0?"m="+r:r).trim()+"\r\n"})},r.getDescription=function(e){var t=r.splitSections(e);return t&&t[0]},r.getMediaSections=function(e){var t=r.splitSections(e);return t.shift(),t},r.matchPrefix=function(e,t){return r.splitLines(e).filter(function(r){return 0===r.indexOf(t)})},r.parseCandidate=function(r){for(var e,t={foundation:(e=0===r.indexOf("a=candidate:")?r.substring(12).split(" "):r.substring(10).split(" "))[0],component:parseInt(e[1],10),protocol:e[2].toLowerCase(),priority:parseInt(e[3],10),ip:e[4],address:e[4],port:parseInt(e[5],10),type:e[7]},a=8;a0?e[0].split("/")[1]:"sendrecv",uri:e[1]}},r.writeExtmap=function(r){return"a=extmap:"+(r.id||r.preferredId)+(r.direction&&"sendrecv"!==r.direction?"/"+r.direction:"")+" "+r.uri+"\r\n"},r.parseFmtp=function(r){for(var e,t={},a=r.substr(r.indexOf(" ")+1).split(";"),n=0;n-1?(t.attribute=r.substr(e+1,a-e-1),t.value=r.substr(a+1)):t.attribute=r.substr(e+1),t},r.parseSsrcGroup=function(r){var e=r.substr(13).split(" ");return{semantics:e.shift(),ssrcs:e.map(function(r){return parseInt(r,10)})}},r.getMid=function(e){var t=r.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)},r.parseFingerprint=function(r){var e=r.substr(14).split(" ");return{algorithm:e[0].toLowerCase(),value:e[1]}},r.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:r.matchPrefix(e+t,"a=fingerprint:").map(r.parseFingerprint)}},r.writeDtlsParameters=function(r,e){var t="a=setup:"+e+"\r\n";return r.fingerprints.forEach(function(r){t+="a=fingerprint:"+r.algorithm+" "+r.value+"\r\n"}),t},r.parseCryptoLine=function(r){var e=r.substr(9).split(" ");return{tag:parseInt(e[0],10),cryptoSuite:e[1],keyParams:e[2],sessionParams:e.slice(3)}},r.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?r.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},r.parseCryptoKeyParams=function(r){if(0!==r.indexOf("inline:"))return null;var e=r.substr(7).split("|");return{keyMethod:"inline",keySalt:e[0],lifeTime:e[1],mkiValue:e[2]?e[2].split(":")[0]:void 0,mkiLength:e[2]?e[2].split(":")[1]:void 0}},r.writeCryptoKeyParams=function(r){return r.keyMethod+":"+r.keySalt+(r.lifeTime?"|"+r.lifeTime:"")+(r.mkiValue&&r.mkiLength?"|"+r.mkiValue+":"+r.mkiLength:"")},r.getCryptoParameters=function(e,t){return r.matchPrefix(e+t,"a=crypto:").map(r.parseCryptoLine)},r.getIceParameters=function(e,t){var a=r.matchPrefix(e+t,"a=ice-ufrag:")[0],n=r.matchPrefix(e+t,"a=ice-pwd:")[0];return a&&n?{usernameFragment:a.substr(12),password:n.substr(10)}:null},r.writeIceParameters=function(r){return"a=ice-ufrag:"+r.usernameFragment+"\r\na=ice-pwd:"+r.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},a=r.splitLines(e)[0].split(" "),n=3;n0?"9":"0",a+=" UDP/TLS/RTP/SAVPF ",a+=t.codecs.map(function(r){return void 0!==r.preferredPayloadType?r.preferredPayloadType:r.payloadType}).join(" ")+"\r\n",a+="c=IN IP4 0.0.0.0\r\n",a+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){a+=r.writeRtpMap(e),a+=r.writeFmtp(e),a+=r.writeRtcpFb(e)});var n=0;return t.codecs.forEach(function(r){r.maxptime>n&&(n=r.maxptime)}),n>0&&(a+="a=maxptime:"+n+"\r\n"),a+="a=rtcp-mux\r\n",t.headerExtensions&&t.headerExtensions.forEach(function(e){a+=r.writeExtmap(e)}),a},r.parseRtpEncodingParameters=function(e){var t,a=[],n=r.parseRtpParameters(e),s=-1!==n.fecMechanisms.indexOf("RED"),i=-1!==n.fecMechanisms.indexOf("ULPFEC"),p=r.matchPrefix(e,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(r){return"cname"===r.attribute}),c=p.length>0&&p[0].ssrc,o=r.matchPrefix(e,"a=ssrc-group:FID").map(function(r){return r.substr(17).split(" ").map(function(r){return parseInt(r,10)})});o.length>0&&o[0].length>1&&o[0][0]===c&&(t=o[0][1]),n.codecs.forEach(function(r){if("RTX"===r.name.toUpperCase()&&r.parameters.apt){var e={ssrc:c,codecPayloadType:parseInt(r.parameters.apt,10)};c&&t&&(e.rtx={ssrc:t}),a.push(e),s&&((e=JSON.parse(JSON.stringify(e))).fec={ssrc:c,mechanism:i?"red+ulpfec":"red"},a.push(e))}}),0===a.length&&c&&a.push({ssrc:c});var u=r.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,a.forEach(function(r){r.maxBitrate=u})),a},r.parseRtcpParameters=function(e){var t={},a=r.matchPrefix(e,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(r){return"cname"===r.attribute})[0];a&&(t.cname=a.value,t.ssrc=a.ssrc);var n=r.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=n.length>0,t.compound=0===n.length;var s=r.matchPrefix(e,"a=rtcp-mux");return t.mux=s.length>0,t},r.parseMsid=function(e){var t,a=r.matchPrefix(e,"a=msid:");if(1===a.length)return{stream:(t=a[0].substr(7).split(" "))[0],track:t[1]};var n=r.matchPrefix(e,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(r){return"msid"===r.attribute});return n.length>0?{stream:(t=n[0].value.split(" "))[0],track:t[1]}:void 0},r.parseSctpDescription=function(e){var t,a=r.parseMLine(e),n=r.matchPrefix(e,"a=max-message-size:");n.length>0&&(t=parseInt(n[0].substr(19),10)),isNaN(t)&&(t=65536);var s=r.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:a.fmt,maxMessageSize:t};if(r.matchPrefix(e,"a=sctpmap:").length>0){var i=r.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(i[0],10),protocol:i[1],maxMessageSize:t}}},r.writeSctpDescription=function(r,e){var t=[];return t="DTLS/SCTP"!==r.protocol?["m="+r.kind+" 9 "+r.protocol+" "+e.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+e.port+"\r\n"]:["m="+r.kind+" 9 "+r.protocol+" "+e.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+e.port+" "+e.protocol+" 65535\r\n"],void 0!==e.maxMessageSize&&t.push("a=max-message-size:"+e.maxMessageSize+"\r\n"),t.join("")},r.generateSessionId=function(){return Math.random().toString().substr(2,21)},r.writeSessionBoilerplate=function(e,t,a){var n=void 0!==t?t:2;return"v=0\r\no="+(a||"thisisadapterortc")+" "+(e||r.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,a,n){var s=r.writeRtpDescription(e.kind,t);if(s+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===a?"actpass":"active"),s+="a=mid:"+e.mid+"\r\n",e.direction?s+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var i="msid:"+n.id+" "+e.rtpSender.track.id+"\r\n";s+="a="+i,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+i,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+i,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),s},r.getDirection=function(e,t){for(var a=r.splitLines(e),n=0;n=14393&&-1===e.indexOf("?transport=udp")}),delete e.url,e.urls=a?n[0]:n,!!n.length}})}function a(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]},n=function(e,t){e=parseInt(e,10);for(var r=0;r0;i--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:t.iceServers,gatherPolicy:t.iceTransportPolicy}));else t.iceCandidatePoolSize=0;this._config=t,this.transceivers=[],this._sdpSessionId=e.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(f.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(f.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),f.prototype.onicecandidate=null,f.prototype.onaddstream=null,f.prototype.ontrack=null,f.prototype.onremovestream=null,f.prototype.onsignalingstatechange=null,f.prototype.oniceconnectionstatechange=null,f.prototype.onconnectionstatechange=null,f.prototype.onicegatheringstatechange=null,f.prototype.onnegotiationneeded=null,f.prototype.ondatachannel=null,f.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},f.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},f.prototype.getConfiguration=function(){return this._config},f.prototype.getLocalStreams=function(){return this.localStreams},f.prototype.getRemoteStreams=function(){return this.remoteStreams},f.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&r)n.iceTransport=this.transceivers[0].iceTransport,n.dtlsTransport=this.transceivers[0].dtlsTransport;else{var a=this._createIceAndDtlsTransports();n.iceTransport=a.iceTransport,n.dtlsTransport=a.dtlsTransport}return t||this.transceivers.push(n),n},f.prototype.addTrack=function(e,t){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var r;if(this.transceivers.find(function(t){return t.track===e}))throw o("InvalidAccessError","Track already exists.");for(var n=0;n=15025)e.getTracks().forEach(function(r){t.addTrack(r,e)});else{var r=e.clone();e.getTracks().forEach(function(e,t){var n=r.getTracks()[t];e.addEventListener("enabled",function(e){n.enabled=e.enabled})}),r.getTracks().forEach(function(e){t.addTrack(e,r)})}},f.prototype.removeTrack=function(e){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(e instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var t=this.transceivers.find(function(t){return t.rtpSender===e});if(!t)throw o("InvalidAccessError","Sender was not created by this connection.");var r=t.stream;t.rtpSender.stop(),t.rtpSender=null,t.track=null,t.stream=null,-1===this.transceivers.map(function(e){return e.stream}).indexOf(r)&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},f.prototype.removeStream=function(e){var t=this;e.getTracks().forEach(function(e){var r=t.getSenders().find(function(t){return t.track===e});r&&t.removeTrack(r)})},f.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})},f.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})},f.prototype._createIceGatherer=function(e,t){var r=this;if(t&&e>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var n=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(n,"state",{value:"new",writable:!0}),this.transceivers[e].bufferedCandidateEvents=[],this.transceivers[e].bufferCandidates=function(t){var a=!t.candidate||0===Object.keys(t.candidate).length;n.state=a?"completed":"gathering",null!==r.transceivers[e].bufferedCandidateEvents&&r.transceivers[e].bufferedCandidateEvents.push(t)},n.addEventListener("localcandidate",this.transceivers[e].bufferCandidates),n},f.prototype._gather=function(t,r){var n=this,a=this.transceivers[r].iceGatherer;if(!a.onlocalcandidate){var i=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,a.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),a.onlocalcandidate=function(i){if(!(n.usingBundle&&r>0)){var s=new Event("icecandidate");s.candidate={sdpMid:t,sdpMLineIndex:r};var o=i.candidate,c=!o||0===Object.keys(o).length;if(c)"new"!==a.state&&"gathering"!==a.state||(a.state="completed");else{"new"===a.state&&(a.state="gathering"),o.component=1,o.ufrag=a.getLocalParameters().usernameFragment;var d=e.writeCandidate(o);s.candidate=Object.assign(s.candidate,e.parseCandidate(d)),s.candidate.candidate=d,s.candidate.toJSON=function(){return{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex,usernameFragment:s.candidate.usernameFragment}}}var p=e.getMediaSections(n._localDescription.sdp);p[s.candidate.sdpMLineIndex]+=c?"a=end-of-candidates\r\n":"a="+s.candidate.candidate+"\r\n",n._localDescription.sdp=e.getDescription(n._localDescription.sdp)+p.join("");var l=n.transceivers.every(function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state});"gathering"!==n.iceGatheringState&&(n.iceGatheringState="gathering",n._emitGatheringStateChange()),c||n._dispatchEvent("icecandidate",s),l&&(n._dispatchEvent("icecandidate",new Event("icecandidate")),n.iceGatheringState="complete",n._emitGatheringStateChange())}},c.setTimeout(function(){i.forEach(function(e){a.onlocalcandidate(e)})},0)}},f.prototype._createIceAndDtlsTransports=function(){var e=this,t=new c.RTCIceTransport(null);t.onicestatechange=function(){e._updateIceConnectionState(),e._updateConnectionState()};var r=new c.RTCDtlsTransport(t);return r.ondtlsstatechange=function(){e._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,"state",{value:"failed",writable:!0}),e._updateConnectionState()},{iceTransport:t,dtlsTransport:r}},f.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var n=this.transceivers[e].dtlsTransport;n&&(delete n.ondtlsstatechange,delete n.onerror,delete this.transceivers[e].dtlsTransport)},f.prototype._transceive=function(t,r,n){var i=a(t.localCapabilities,t.remoteCapabilities);r&&t.rtpSender&&(i.encodings=t.sendEncodingParameters,i.rtcp={cname:e.localCName,compound:t.rtcpParameters.compound},t.recvEncodingParameters.length&&(i.rtcp.ssrc=t.recvEncodingParameters[0].ssrc),t.rtpSender.send(i)),n&&t.rtpReceiver&&i.codecs.length>0&&("video"===t.kind&&t.recvEncodingParameters&&d<15019&&t.recvEncodingParameters.forEach(function(e){delete e.rtx}),t.recvEncodingParameters.length?i.encodings=t.recvEncodingParameters:i.encodings=[{}],i.rtcp={compound:t.rtcpParameters.compound},t.rtcpParameters.cname&&(i.rtcp.cname=t.rtcpParameters.cname),t.sendEncodingParameters.length&&(i.rtcp.ssrc=t.sendEncodingParameters[0].ssrc),t.rtpReceiver.receive(i))},f.prototype.setLocalDescription=function(t){var r,n,s=this;if(-1===["offer","answer"].indexOf(t.type))return Promise.reject(o("TypeError",'Unsupported type "'+t.type+'"'));if(!i("setLocalDescription",t.type,s.signalingState)||s._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+t.type+" in state "+s.signalingState));if("offer"===t.type)r=e.splitSections(t.sdp),n=r.shift(),r.forEach(function(t,r){var n=e.parseRtpParameters(t);s.transceivers[r].localCapabilities=n}),s.transceivers.forEach(function(e,t){s._gather(e.mid,t)});else if("answer"===t.type){r=e.splitSections(s._remoteDescription.sdp),n=r.shift();var c=e.matchPrefix(n,"a=ice-lite").length>0;r.forEach(function(t,r){var i=s.transceivers[r],o=i.iceGatherer,d=i.iceTransport,p=i.dtlsTransport,l=i.localCapabilities,f=i.remoteCapabilities;if(!(e.isRejected(t)&&0===e.matchPrefix(t,"a=bundle-only").length)&&!i.rejected){var u=e.getIceParameters(t,n),v=e.getDtlsParameters(t,n);c&&(v.role="server"),s.usingBundle&&0!==r||(s._gather(i.mid,r),"new"===d.state&&d.start(o,u,c?"controlling":"controlled"),"new"===p.state&&p.start(v));var h=a(l,f);s._transceive(i,h.codecs.length>0,!1)}})}return s._localDescription={type:t.type,sdp:t.sdp},"offer"===t.type?s._updateSignalingState("have-local-offer"):s._updateSignalingState("stable"),Promise.resolve()},f.prototype.setRemoteDescription=function(t){var r=this;if(-1===["offer","answer"].indexOf(t.type))return Promise.reject(o("TypeError",'Unsupported type "'+t.type+'"'));if(!i("setRemoteDescription",t.type,r.signalingState)||r._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+t.type+" in state "+r.signalingState));var n={};r.remoteStreams.forEach(function(e){n[e.id]=e});var f=[],u=e.splitSections(t.sdp),v=u.shift(),h=e.matchPrefix(v,"a=ice-lite").length>0,m=e.matchPrefix(v,"a=group:BUNDLE ").length>0;r.usingBundle=m;var g=e.matchPrefix(v,"a=ice-options:")[0];return r.canTrickleIceCandidates=!!g&&g.substr(14).split(" ").indexOf("trickle")>=0,u.forEach(function(i,o){var l=e.splitLines(i),u=e.getKind(i),g=e.isRejected(i)&&0===e.matchPrefix(i,"a=bundle-only").length,y=l[0].substr(2).split(" ")[2],S=e.getDirection(i,v),T=e.parseMsid(i),E=e.getMid(i)||e.generateIdentifier();if(g||"application"===u&&("DTLS/SCTP"===y||"UDP/DTLS/SCTP"===y))r.transceivers[o]={mid:E,kind:u,protocol:y,rejected:!0};else{var C,P,w,R,_,k,b,x,D;!g&&r.transceivers[o]&&r.transceivers[o].rejected&&(r.transceivers[o]=r._createTransceiver(u,!0));var I,L,M=e.parseRtpParameters(i);g||(I=e.getIceParameters(i,v),(L=e.getDtlsParameters(i,v)).role="client"),b=e.parseRtpEncodingParameters(i);var O=e.parseRtcpParameters(i),G=e.matchPrefix(i,"a=end-of-candidates",v).length>0,j=e.matchPrefix(i,"a=candidate:").map(function(t){return e.parseCandidate(t)}).filter(function(e){return 1===e.component});if(("offer"===t.type||"answer"===t.type)&&!g&&m&&o>0&&r.transceivers[o]&&(r._disposeIceAndDtlsTransports(o),r.transceivers[o].iceGatherer=r.transceivers[0].iceGatherer,r.transceivers[o].iceTransport=r.transceivers[0].iceTransport,r.transceivers[o].dtlsTransport=r.transceivers[0].dtlsTransport,r.transceivers[o].rtpSender&&r.transceivers[o].rtpSender.setTransport(r.transceivers[0].dtlsTransport),r.transceivers[o].rtpReceiver&&r.transceivers[o].rtpReceiver.setTransport(r.transceivers[0].dtlsTransport)),"offer"!==t.type||g){if("answer"===t.type&&!g){P=(C=r.transceivers[o]).iceGatherer,w=C.iceTransport,R=C.dtlsTransport,_=C.rtpReceiver,k=C.sendEncodingParameters,x=C.localCapabilities,r.transceivers[o].recvEncodingParameters=b,r.transceivers[o].remoteCapabilities=M,r.transceivers[o].rtcpParameters=O,j.length&&"new"===w.state&&(!h&&!G||m&&0!==o?j.forEach(function(e){s(C.iceTransport,e)}):w.setRemoteCandidates(j)),m&&0!==o||("new"===w.state&&w.start(P,I,"controlling"),"new"===R.state&&R.start(L)),!a(C.localCapabilities,C.remoteCapabilities).codecs.filter(function(e){return"rtx"===e.name.toLowerCase()}).length&&C.sendEncodingParameters[0].rtx&&delete C.sendEncodingParameters[0].rtx,r._transceive(C,"sendrecv"===S||"recvonly"===S,"sendrecv"===S||"sendonly"===S),!_||"sendrecv"!==S&&"sendonly"!==S?delete C.rtpReceiver:(D=_.track,T?(n[T.stream]||(n[T.stream]=new c.MediaStream),p(D,n[T.stream]),f.push([D,_,n[T.stream]])):(n.default||(n.default=new c.MediaStream),p(D,n.default),f.push([D,_,n.default])))}}else{(C=r.transceivers[o]||r._createTransceiver(u)).mid=E,C.iceGatherer||(C.iceGatherer=r._createIceGatherer(o,m)),j.length&&"new"===C.iceTransport.state&&(!G||m&&0!==o?j.forEach(function(e){s(C.iceTransport,e)}):C.iceTransport.setRemoteCandidates(j)),x=c.RTCRtpReceiver.getCapabilities(u),d<15019&&(x.codecs=x.codecs.filter(function(e){return"rtx"!==e.name})),k=C.sendEncodingParameters||[{ssrc:1001*(2*o+2)}];var N,A=!1;if("sendrecv"===S||"sendonly"===S){if(A=!C.rtpReceiver,_=C.rtpReceiver||new c.RTCRtpReceiver(C.dtlsTransport,u),A)D=_.track,T&&"-"===T.stream||(T?(n[T.stream]||(n[T.stream]=new c.MediaStream,Object.defineProperty(n[T.stream],"id",{get:function(){return T.stream}})),Object.defineProperty(D,"id",{get:function(){return T.track}}),N=n[T.stream]):(n.default||(n.default=new c.MediaStream),N=n.default)),N&&(p(D,N),C.associatedRemoteMediaStreams.push(N)),f.push([D,_,N])}else C.rtpReceiver&&C.rtpReceiver.track&&(C.associatedRemoteMediaStreams.forEach(function(e){var t,r,n=e.getTracks().find(function(e){return e.id===C.rtpReceiver.track.id});n&&(t=n,(r=e).removeTrack(t),r.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:t})))}),C.associatedRemoteMediaStreams=[]);C.localCapabilities=x,C.remoteCapabilities=M,C.rtpReceiver=_,C.rtcpParameters=O,C.sendEncodingParameters=k,C.recvEncodingParameters=b,r._transceive(r.transceivers[o],!1,A)}}}),void 0===r._dtlsRole&&(r._dtlsRole="offer"===t.type?"active":"passive"),r._remoteDescription={type:t.type,sdp:t.sdp},"offer"===t.type?r._updateSignalingState("have-remote-offer"):r._updateSignalingState("stable"),Object.keys(n).forEach(function(e){var t=n[e];if(t.getTracks().length){if(-1===r.remoteStreams.indexOf(t)){r.remoteStreams.push(t);var a=new Event("addstream");a.stream=t,c.setTimeout(function(){r._dispatchEvent("addstream",a)})}f.forEach(function(e){var n=e[0],a=e[1];t.id===e[2].id&&l(r,n,a,[t])})}}),f.forEach(function(e){e[2]||l(r,e[0],e[1],[])}),c.setTimeout(function(){r&&r.transceivers&&r.transceivers.forEach(function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},f.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},f.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},f.prototype._maybeFireNegotiationNeeded=function(){var e=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,c.setTimeout(function(){if(e.needNegotiation){e.needNegotiation=!1;var t=new Event("negotiationneeded");e._dispatchEvent("negotiationneeded",t)}},0))},f.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++}),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},f.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)}),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},f.prototype.createOffer=function(){var t=this;if(t._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var n=t.transceivers.filter(function(e){return"audio"===e.kind}).length,a=t.transceivers.filter(function(e){return"video"===e.kind}).length,i=arguments[0];if(i){if(i.mandatory||i.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==i.offerToReceiveAudio&&(n=!0===i.offerToReceiveAudio?1:!1===i.offerToReceiveAudio?0:i.offerToReceiveAudio),void 0!==i.offerToReceiveVideo&&(a=!0===i.offerToReceiveVideo?1:!1===i.offerToReceiveVideo?0:i.offerToReceiveVideo)}for(t.transceivers.forEach(function(e){"audio"===e.kind?--n<0&&(e.wantReceive=!1):"video"===e.kind&&--a<0&&(e.wantReceive=!1)});n>0||a>0;)n>0&&(t._createTransceiver("audio"),n--),a>0&&(t._createTransceiver("video"),a--);var s=e.writeSessionBoilerplate(t._sdpSessionId,t._sdpSessionVersion++);t.transceivers.forEach(function(r,n){var a=r.track,i=r.kind,s=r.mid||e.generateIdentifier();r.mid=s,r.iceGatherer||(r.iceGatherer=t._createIceGatherer(n,t.usingBundle));var o=c.RTCRtpSender.getCapabilities(i);d<15019&&(o.codecs=o.codecs.filter(function(e){return"rtx"!==e.name})),o.codecs.forEach(function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),r.remoteCapabilities&&r.remoteCapabilities.codecs&&r.remoteCapabilities.codecs.forEach(function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)})}),o.headerExtensions.forEach(function(e){(r.remoteCapabilities&&r.remoteCapabilities.headerExtensions||[]).forEach(function(t){e.uri===t.uri&&(e.id=t.id)})});var p=r.sendEncodingParameters||[{ssrc:1001*(2*n+1)}];a&&d>=15019&&"video"===i&&!p[0].rtx&&(p[0].rtx={ssrc:p[0].ssrc+1}),r.wantReceive&&(r.rtpReceiver=new c.RTCRtpReceiver(r.dtlsTransport,i)),r.localCapabilities=o,r.sendEncodingParameters=p}),"max-compat"!==t._config.bundlePolicy&&(s+="a=group:BUNDLE "+t.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"),s+="a=ice-options:trickle\r\n",t.transceivers.forEach(function(n,a){s+=r(n,n.localCapabilities,"offer",n.stream,t._dtlsRole),s+="a=rtcp-rsize\r\n",!n.iceGatherer||"new"===t.iceGatheringState||0!==a&&t.usingBundle||(n.iceGatherer.getLocalCandidates().forEach(function(t){t.component=1,s+="a="+e.writeCandidate(t)+"\r\n"}),"completed"===n.iceGatherer.state&&(s+="a=end-of-candidates\r\n"))});var p=new c.RTCSessionDescription({type:"offer",sdp:s});return Promise.resolve(p)},f.prototype.createAnswer=function(){var t=this;if(t._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==t.signalingState&&"have-local-pranswer"!==t.signalingState)return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+t.signalingState));var n=e.writeSessionBoilerplate(t._sdpSessionId,t._sdpSessionVersion++);t.usingBundle&&(n+="a=group:BUNDLE "+t.transceivers.map(function(e){return e.mid}).join(" ")+"\r\n"),n+="a=ice-options:trickle\r\n";var i=e.getMediaSections(t._remoteDescription.sdp).length;t.transceivers.forEach(function(e,s){if(!(s+1>i)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?n+="m=application 0 DTLS/SCTP 5000\r\n":n+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?n+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(n+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(n+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var o;if(e.stream)"audio"===e.kind?o=e.stream.getAudioTracks()[0]:"video"===e.kind&&(o=e.stream.getVideoTracks()[0]),o&&d>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var c=a(e.localCapabilities,e.remoteCapabilities);!c.codecs.filter(function(e){return"rtx"===e.name.toLowerCase()}).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,n+=r(e,c,"answer",e.stream,t._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(n+="a=rtcp-rsize\r\n")}});var s=new c.RTCSessionDescription({type:"answer",sdp:n});return Promise.resolve(s)},f.prototype.addIceCandidate=function(t){var r,n=this;return t&&void 0===t.sdpMLineIndex&&!t.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(a,i){if(!n._remoteDescription)return i(o("InvalidStateError","Can not add ICE candidate without a remote description"));if(t&&""!==t.candidate){var c=t.sdpMLineIndex;if(t.sdpMid)for(var d=0;d0?e.parseCandidate(t.candidate):{};if("tcp"===l.protocol&&(0===l.port||9===l.port))return a();if(l.component&&1!==l.component)return a();if((0===c||c>0&&p.iceTransport!==n.transceivers[0].iceTransport)&&!s(p.iceTransport,l))return i(o("OperationError","Can not add ICE candidate"));var f=t.candidate.trim();0===f.indexOf("a=")&&(f=f.substr(2)),(r=e.getMediaSections(n._remoteDescription.sdp))[c]+="a="+(l.type?f:"end-of-candidates")+"\r\n",n._remoteDescription.sdp=e.getDescription(n._remoteDescription.sdp)+r.join("")}else for(var u=0;uPromise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e)))}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetUserMedia=e; +},{}],"zgJ4":[function(require,module,exports) { +"use strict";function e(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetDisplayMedia=e; +},{}],"F7IB":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimPeerConnection=p,exports.shimReplaceTrack=a,Object.defineProperty(exports,"shimGetUserMedia",{enumerable:!0,get:function(){return n.shimGetUserMedia}}),Object.defineProperty(exports,"shimGetDisplayMedia",{enumerable:!0,get:function(){return i.shimGetDisplayMedia}});var e=c(require("../utils")),t=require("./filtericeservers"),r=o(require("rtcpeerconnection-shim")),n=require("./getusermedia"),i=require("./getdisplaymedia");function o(e){return e&&e.__esModule?e:{default:e}}function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}function c(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var c=i?Object.getOwnPropertyDescriptor(e,o):null;c&&(c.get||c.set)?Object.defineProperty(n,o,c):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function p(n,i){if(n.RTCIceGatherer&&(n.RTCIceCandidate||(n.RTCIceCandidate=function(e){return e}),n.RTCSessionDescription||(n.RTCSessionDescription=function(e){return e}),i.version<15025)){const e=Object.getOwnPropertyDescriptor(n.MediaStreamTrack.prototype,"enabled");Object.defineProperty(n.MediaStreamTrack.prototype,"enabled",{set(t){e.set.call(this,t);const r=new Event("enabled");r.enabled=t,this.dispatchEvent(r)}})}!n.RTCRtpSender||"dtmf"in n.RTCRtpSender.prototype||Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new n.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),n.RTCDtmfSender&&!n.RTCDTMFSender&&(n.RTCDTMFSender=n.RTCDtmfSender);const o=(0,r.default)(n,i.version);n.RTCPeerConnection=function(r){return r&&r.iceServers&&(r.iceServers=(0,t.filterIceServers)(r.iceServers,i.version),e.log("ICE servers after filtering:",r.iceServers)),new o(r)},n.RTCPeerConnection.prototype=o.prototype}function a(e){!e.RTCRtpSender||"replaceTrack"in e.RTCRtpSender.prototype||(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)} +},{"../utils":"RsyN","./filtericeservers":"uuCd","rtcpeerconnection-shim":"heG5","./getusermedia":"uWR5","./getdisplaymedia":"zgJ4"}],"OQLX":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetUserMedia=i;var e=o(require("../utils"));function t(e){if("function"!=typeof WeakMap)return null;var o=new WeakMap,i=new WeakMap;return(t=function(e){return e?i:o})(e)}function o(e,o){if(!o&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=t(o);if(i&&i.has(e))return i.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var a=r?Object.getOwnPropertyDescriptor(e,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=e[s]}return n.default=e,i&&i.set(e,n),n}function i(t,o){const i=t&&t.navigator,n=t&&t.MediaStreamTrack;if(i.getUserMedia=function(t,o,n){e.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(t).then(o,n)},!(o.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){const e=function(e,t,o){t in e&&!(o in e)&&(e[o]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(o){return"object"==typeof o&&"object"==typeof o.audio&&(o=JSON.parse(JSON.stringify(o)),e(o.audio,"autoGainControl","mozAutoGainControl"),e(o.audio,"noiseSuppression","mozNoiseSuppression")),t(o)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const o=t.apply(this,arguments);return e(o,"mozAutoGainControl","autoGainControl"),e(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return"audio"===this.kind&&"object"==typeof o&&(o=JSON.parse(JSON.stringify(o)),e(o,"autoGainControl","mozAutoGainControl"),e(o,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[o])}}}} +},{"../utils":"RsyN"}],"Hsc4":[function(require,module,exports) { +"use strict";function e(e,i){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(a){if(!a||!a.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===a.video?a.video={mediaSource:i}:a.video.mediaSource=i,e.navigator.mediaDevices.getUserMedia(a)})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimGetDisplayMedia=e; +},{}],"vPl0":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimOnTrack=i,exports.shimPeerConnection=s,exports.shimSenderGetStats=a,exports.shimReceiverGetStats=c,exports.shimRemoveStream=p,exports.shimRTCDataChannel=d,exports.shimAddTransceiver=u,exports.shimGetParameters=C,exports.shimCreateOffer=f,exports.shimCreateAnswer=h,Object.defineProperty(exports,"shimGetUserMedia",{enumerable:!0,get:function(){return t.shimGetUserMedia}}),Object.defineProperty(exports,"shimGetDisplayMedia",{enumerable:!0,get:function(){return n.shimGetDisplayMedia}});var e=o(require("../utils")),t=require("./getusermedia"),n=require("./getdisplaymedia");function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var a=i?Object.getOwnPropertyDescriptor(e,s):null;a&&(a.get||a.set)?Object.defineProperty(o,s,a):o[s]=e[s]}return o.default=e,n&&n.set(e,o),o}function i(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function s(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]});const n={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,o,i]=arguments;return r.apply(this,[e||null]).then(e=>{if(t.version<53&&!o)try{e.forEach(e=>{e.type=n[e.type]||e.type})}catch(r){if("TypeError"!==r.name)throw r;e.forEach((t,r)=>{e.set(r,Object.assign({},t,{type:n[t.type]||t.type}))})}return e}).then(o,i)}}function a(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});const n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function c(t){if("object"!=typeof t||!t.RTCPeerConnection||!t.RTCRtpSender)return;if(t.RTCRtpSender&&"getStats"in t.RTCRtpReceiver.prototype)return;const n=t.RTCPeerConnection.prototype.getReceivers;n&&(t.RTCPeerConnection.prototype.getReceivers=function(){const e=n.apply(this,[]);return e.forEach(e=>e._pc=this),e}),e.wrapPeerConnectionEvent(t,"track",e=>(e.receiver._pc=e.srcElement,e)),t.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function p(t){!t.RTCPeerConnection||"removeStream"in t.RTCPeerConnection.prototype||(t.RTCPeerConnection.prototype.removeStream=function(t){e.deprecated("removeStream","removeTrack"),this.getSenders().forEach(e=>{e.track&&t.getTracks().includes(e.track)&&this.removeTrack(e)})})}function d(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function u(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],n=e&&"sendEncodings"in e;n&&e.sendEncodings.forEach(e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const r=t.apply(this,arguments);if(n){const{sender:t}=r,n=t.getParameters();"encodings"in n&&(1!==n.encodings.length||0!==Object.keys(n.encodings[0]).length)||(n.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(n).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return r})}function C(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function f(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function h(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}} +},{"../utils":"RsyN","./getusermedia":"OQLX","./getdisplaymedia":"Hsc4"}],"aXmZ":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimLocalStreamsAPI=o,exports.shimRemoteStreamsAPI=n,exports.shimCallbacksAPI=i,exports.shimGetUserMedia=s,exports.shimConstraints=c,exports.shimRTCIceServerUrls=a,exports.shimTrackEventTransceiver=d,exports.shimCreateOfferLegacy=p,exports.shimAudioContext=f;var e=r(require("../utils"));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,o=new WeakMap;return(t=function(e){return e?o:r})(e)}function r(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=t(r);if(o&&o.has(e))return o.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var c=i?Object.getOwnPropertyDescriptor(e,s):null;c&&(c.get||c.set)?Object.defineProperty(n,s,c):n[s]=e[s]}return n.default=e,o&&o.set(e,n),n}function o(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(r=>t.call(this,r,e)),e.getVideoTracks().forEach(r=>t.call(this,r,e))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach(e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]}),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach(e=>{r.includes(e.track)&&this.removeTrack(e)})})}}function n(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=(e=>{e.streams.forEach(e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)})}))}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach(t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)})}),t.apply(e,arguments)}}}function i(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,o=t.createAnswer,n=t.setLocalDescription,i=t.setRemoteDescription,s=t.addIceCandidate;t.createOffer=function(e,t){const o=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[o]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=o.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let c=function(e,t,r){const o=n.apply(this,[e]);return r?(o.then(t,r),Promise.resolve()):o};t.setLocalDescription=c,c=function(e,t,r){const o=i.apply(this,[e]);return r?(o.then(t,r),Promise.resolve()):o},t.setRemoteDescription=c,c=function(e,t,r){const o=s.apply(this,[e]);return r?(o.then(t,r),Promise.resolve()):o},t.addIceCandidate=c}function s(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=(e=>r(c(e)))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,o){t.mediaDevices.getUserMedia(e).then(r,o)}.bind(t))}function c(t){return t&&void 0!==t.video?Object.assign({},t,{video:e.compactObject(t.video)}):t}function a(t){if(!t.RTCPeerConnection)return;const r=t.RTCPeerConnection;t.RTCPeerConnection=function(t,o){if(t&&t.iceServers){const r=[];for(let o=0;or.generateCertificate})}function d(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function p(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find(e=>"audio"===e.receiver.track.kind);!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find(e=>"video"===e.receiver.track.kind);!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video")}return t.apply(this,arguments)}}function f(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)} +},{"../utils":"RsyN"}],"WlzA":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.shimRTCIceCandidate=r,exports.shimMaxMessageSize=c,exports.shimSendThrowTypeError=a,exports.shimConnectionState=s,exports.removeExtmapAllowMixed=p,exports.shimAddIceCandidateNullOrEmpty=d;var e=i(require("sdp")),t=o(require("./utils"));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(n=function(e){return e?o:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=n(t);if(o&&o.has(e))return o.get(e);var i={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&Object.prototype.hasOwnProperty.call(e,c)){var a=r?Object.getOwnPropertyDescriptor(e,c):null;a&&(a.get||a.set)?Object.defineProperty(i,c,a):i[c]=e[c]}return i.default=e,o&&o.set(e,i),i}function i(e){return e&&e.__esModule?e:{default:e}}function r(n){if(!n.RTCIceCandidate||n.RTCIceCandidate&&"foundation"in n.RTCIceCandidate.prototype)return;const o=n.RTCIceCandidate;n.RTCIceCandidate=function(t){if("object"==typeof t&&t.candidate&&0===t.candidate.indexOf("a=")&&((t=JSON.parse(JSON.stringify(t))).candidate=t.candidate.substr(2)),t.candidate&&t.candidate.length){const n=new o(t),i=e.default.parseCandidate(t.candidate),r=Object.assign(n,i);return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new o(t)},n.RTCIceCandidate.prototype=o.prototype,t.wrapPeerConnectionEvent(n,"icecandidate",e=>(e.candidate&&Object.defineProperty(e,"candidate",{value:new n.RTCIceCandidate(e.candidate),writable:"false"}),e))}function c(t,n){if(!t.RTCPeerConnection)return;"sctp"in t.RTCPeerConnection.prototype||Object.defineProperty(t.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const o=t.RTCPeerConnection.prototype.setRemoteDescription;t.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===n.browser&&n.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(t){if(!t||!t.sdp)return!1;const n=e.default.splitSections(t.sdp);return n.shift(),n.some(t=>{const n=e.default.parseMLine(t);return n&&"application"===n.kind&&-1!==n.protocol.indexOf("SCTP")})}(arguments[0])){const t=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const n=parseInt(t[1],10);return n!=n?-1:n}(arguments[0]),o=function(e){let t=65536;return"firefox"===n.browser&&(t=n.version<57?-1===e?16384:2147483637:n.version<60?57===n.version?65535:65536:2147483637),t}(t),i=function(t,o){let i=65536;"firefox"===n.browser&&57===n.version&&(i=65535);const r=e.default.matchPrefix(t.sdp,"a=max-message-size:");return r.length>0?i=parseInt(r[0].substr(19),10):"firefox"===n.browser&&-1!==o&&(i=2147483637),i}(arguments[0],t);let r;r=0===o&&0===i?Number.POSITIVE_INFINITY:0===o||0===i?Math.max(o,i):Math.min(o,i);const c={};Object.defineProperty(c,"maxMessageSize",{get:()=>r}),this._sctp=c}return o.apply(this,arguments)}}function a(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype))return;function n(e,t){const n=e.send;e.send=function(){const o=arguments[0],i=o.length||o.size||o.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return n.apply(e,arguments)}}const o=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=o.apply(this,arguments);return n(e,this),e},t.wrapPeerConnectionEvent(e,"datachannel",e=>(n(e.channel,e.target),e))}function s(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(e=>{const n=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=(e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const n=new Event("connectionstatechange",e);t.dispatchEvent(n)}return e}),this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function p(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const n=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const n=t.sdp.split("\n").filter(e=>"a=extmap-allow-mixed"!==e.trim()).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return n.apply(this,arguments)}}function d(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const n=e.RTCPeerConnection.prototype.addIceCandidate;n&&0!==n.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})} +},{"sdp":"jIWI","./utils":"RsyN"}],"elb5":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.adapterFactory=o;var e=m(require("./utils")),i=m(require("./chrome/chrome_shim")),r=m(require("./edge/edge_shim")),s=m(require("./firefox/firefox_shim")),t=m(require("./safari/safari_shim")),a=m(require("./common_shim"));function n(e){if("function"!=typeof WeakMap)return null;var i=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:i})(e)}function m(e,i){if(!i&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(i);if(r&&r.has(e))return r.get(e);var s={},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var m=t?Object.getOwnPropertyDescriptor(e,a):null;m&&(m.get||m.set)?Object.defineProperty(s,a,m):s[a]=e[a]}return s.default=e,r&&r.set(e,s),s}function o({window:n}={},m={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const o=e.log,h=e.detectBrowser(n),d={browserDetails:h,commonShim:a,extractVersion:e.extractVersion,disableLog:e.disableLog,disableWarnings:e.disableWarnings};switch(h.browser){case"chrome":if(!i||!i.shimPeerConnection||!m.shimChrome)return o("Chrome shim is not included in this adapter release."),d;if(null===h.version)return o("Chrome shim can not determine version, not shimming."),d;o("adapter.js shimming chrome."),d.browserShim=i,a.shimAddIceCandidateNullOrEmpty(n,h),i.shimGetUserMedia(n,h),i.shimMediaStream(n,h),i.shimPeerConnection(n,h),i.shimOnTrack(n,h),i.shimAddTrackRemoveTrack(n,h),i.shimGetSendersWithDtmf(n,h),i.shimGetStats(n,h),i.shimSenderReceiverGetStats(n,h),i.fixNegotiationNeeded(n,h),a.shimRTCIceCandidate(n,h),a.shimConnectionState(n,h),a.shimMaxMessageSize(n,h),a.shimSendThrowTypeError(n,h),a.removeExtmapAllowMixed(n,h);break;case"firefox":if(!s||!s.shimPeerConnection||!m.shimFirefox)return o("Firefox shim is not included in this adapter release."),d;o("adapter.js shimming firefox."),d.browserShim=s,a.shimAddIceCandidateNullOrEmpty(n,h),s.shimGetUserMedia(n,h),s.shimPeerConnection(n,h),s.shimOnTrack(n,h),s.shimRemoveStream(n,h),s.shimSenderGetStats(n,h),s.shimReceiverGetStats(n,h),s.shimRTCDataChannel(n,h),s.shimAddTransceiver(n,h),s.shimGetParameters(n,h),s.shimCreateOffer(n,h),s.shimCreateAnswer(n,h),a.shimRTCIceCandidate(n,h),a.shimConnectionState(n,h),a.shimMaxMessageSize(n,h),a.shimSendThrowTypeError(n,h);break;case"edge":if(!r||!r.shimPeerConnection||!m.shimEdge)return o("MS edge shim is not included in this adapter release."),d;o("adapter.js shimming edge."),d.browserShim=r,r.shimGetUserMedia(n,h),r.shimGetDisplayMedia(n,h),r.shimPeerConnection(n,h),r.shimReplaceTrack(n,h),a.shimMaxMessageSize(n,h),a.shimSendThrowTypeError(n,h);break;case"safari":if(!t||!m.shimSafari)return o("Safari shim is not included in this adapter release."),d;o("adapter.js shimming safari."),d.browserShim=t,a.shimAddIceCandidateNullOrEmpty(n,h),t.shimRTCIceServerUrls(n,h),t.shimCreateOfferLegacy(n,h),t.shimCallbacksAPI(n,h),t.shimLocalStreamsAPI(n,h),t.shimRemoteStreamsAPI(n,h),t.shimTrackEventTransceiver(n,h),t.shimGetUserMedia(n,h),t.shimAudioContext(n,h),a.shimRTCIceCandidate(n,h),a.shimMaxMessageSize(n,h),a.shimSendThrowTypeError(n,h),a.removeExtmapAllowMixed(n,h);break;default:o("Unsupported browser!")}return d} +},{"./utils":"RsyN","./chrome/chrome_shim":"RNlo","./edge/edge_shim":"F7IB","./firefox/firefox_shim":"vPl0","./safari/safari_shim":"aXmZ","./common_shim":"WlzA"}],"WzOL":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./adapter_factory.js");const t=(0,e.adapterFactory)({window:"undefined"==typeof window?void 0:window});var o=t;exports.default=o; +},{"./adapter_factory.js":"elb5"}],"eeXo":[function(require,module,exports) { +"use strict";var e,o,r=Object.assign||function(e){for(var o=1;o=this.width||e<0||e>=this.height)&&!!this.data[e*this.width+o]},o.prototype.set=function(o,e,r){this.data[e*this.width+o]=r?1:0},o.prototype.setRegion=function(o,e,r,t,c){for(var s=e;s=this.size&&(t=(t^this.primitive)&this.size-1);for(var s=0;s1&&0===e[0]){for(var t=1;tc.length&&(n=[c,r],r=n[0],c=n[1]);for(var s=new Uint8ClampedArray(c.length),a=c.length-r.length,d=0;dr?r:o}function c(o,e,r,c){if(o.length!==e*r*4)throw new Error("Malformed data passed to binarizer.");for(var l=new n(e,r),i=0;i0&&v>0)){var x=(w.get(v,P-1)+2*w.get(v-1,P)+w.get(v-1,P-1))/4;p6&&(r.setRegion(e-11,0,3,6,!0),r.setRegion(0,e-11,6,3,!0)),r}function a(o,e,r){for(var t=w[r.dataMask],a=o.height,d=s(e),n=[],l=0,i=0,B=!0,k=a-1;k>0;k-=2){6===k&&k--;for(var u=0;u=0;a--)for(var d=e-9;d>=e-11;d--)s=c(o.get(d,a),s);for(var n=0,d=5;d>=0;d--)for(var a=e-9;a>=e-11;a--)n=c(o.get(d,a),n);for(var l,i=1/0,B=0,k=m.VERSIONS;B=0;s--)6!==s&&(e=c(o.get(8,s),e));for(var a=o.height,d=0,s=a-1;s>=a-7;s--)d=c(o.get(8,s),d);for(var r=a-8;r1)for(var B=t.ecBlocks[0].numBlocks,k=t.ecBlocks[1].numBlocks,d=0;d0;)for(var u=0,C=c;u=3;){var a=o.readBits(10);if(a>=1e3)throw new Error("Invalid numeric value above 999");var d=Math.floor(a/100),n=Math.floor(a/10)%10,l=a%10;r.push(48+d,48+n,48+l),t+=d.toString()+n.toString()+l.toString(),s-=3}if(2===s){var a=o.readBits(7);if(a>=100)throw new Error("Invalid numeric value above 99");var d=Math.floor(a/10),n=a%10;r.push(48+d,48+n),t+=d.toString()+n.toString()}else if(1===s){var a=o.readBits(4);if(a>=10)throw new Error("Invalid numeric value above 9");r.push(48+a),t+=a.toString()}return{bytes:r,text:t}}function c(o,e){for(var r=[],t="",c=[9,11,13][e],s=o.readBits(c);s>=2;){var a=o.readBits(11),d=Math.floor(a/45),n=a%45;r.push(k[d].charCodeAt(0),k[n].charCodeAt(0)),t+=k[d]+k[n],s-=2}if(1===s){var d=o.readBits(6);r.push(k[d].charCodeAt(0)),t+=k[d]}return{bytes:r,text:t}}function s(o,e){for(var r=[],t="",c=[8,16,16][e],s=o.readBits(c),a=0;a>8,255&n),t+=String.fromCharCode(i.shiftJISTable[n])}return{bytes:r,text:t}}function d(o,e){for(var r=new l.BitStream(o),d=e<=9?0:e<=26?1:2,i={text:"",bytes:[],chunks:[]};r.available()>=4;){var k=r.readBits(4);if(k===B.Terminator)return i;if(k===B.ECI)0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(7)}):0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(14)}):0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(21)}):i.chunks.push({type:n.ECI,assignmentNumber:-1});else if(k===B.Numeric){var u=t(r,d);i.text+=u.text,(w=i.bytes).push.apply(w,u.bytes),i.chunks.push({type:n.Numeric,text:u.text})}else if(k===B.Alphanumeric){var C=c(r,d);i.text+=C.text,(P=i.bytes).push.apply(P,C.bytes),i.chunks.push({type:n.Alphanumeric,text:C.text})}else if(k===B.Byte){var m=s(r,d);i.text+=m.text,(v=i.bytes).push.apply(v,m.bytes),i.chunks.push({type:n.Byte,bytes:m.bytes,text:m.text})}else if(k===B.Kanji){var f=a(r,d);i.text+=f.text,(h=i.bytes).push.apply(h,f.bytes),i.chunks.push({type:n.Kanji,bytes:f.bytes,text:f.text})}}var w,P,v,h}Object.defineProperty(e,"__esModule",{value:!0});var n,l=r(7),i=r(8);!function(o){o.Numeric="numeric",o.Alphanumeric="alphanumeric",o.Byte="byte",o.Kanji="kanji",o.ECI="eci"}(n=e.Mode||(e.Mode={}));var B;!function(o){o[o.Terminator=0]="Terminator",o[o.Numeric=1]="Numeric",o[o.Alphanumeric=2]="Alphanumeric",o[o.Byte=4]="Byte",o[o.Kanji=8]="Kanji",o[o.ECI=7]="ECI"}(B||(B={}));var k=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];e.decode=d},function(o,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=function(){function o(o){this.byteOffset=0,this.bitOffset=0,this.bytes=o}return o.prototype.readBits=function(o){if(o<1||o>32||o>this.available())throw new Error("Cannot read "+o.toString()+" bits");var e=0;if(this.bitOffset>0){var r=8-this.bitOffset,t=o>8-t<>c,o-=t,this.bitOffset+=t,8===this.bitOffset&&(this.bitOffset=0,this.byteOffset++)}if(o>0){for(;o>=8;)e=e<<8|255&this.bytes[this.byteOffset],this.byteOffset++,o-=8;if(o>0){var c=8-o,s=255>>c<>c,this.bitOffset+=o}}return e},o.prototype.available=function(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset},o}();e.BitStream=t},function(o,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.shiftJISTable={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:165,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:8254,33088:12288,33089:12289,33090:12290,33091:65292,33092:65294,33093:12539,33094:65306,33095:65307,33096:65311,33097:65281,33098:12443,33099:12444,33100:180,33101:65344,33102:168,33103:65342,33104:65507,33105:65343,33106:12541,33107:12542,33108:12445,33109:12446,33110:12291,33111:20189,33112:12293,33113:12294,33114:12295,33115:12540,33116:8213,33117:8208,33118:65295,33119:92,33120:12316,33121:8214,33122:65372,33123:8230,33124:8229,33125:8216,33126:8217,33127:8220,33128:8221,33129:65288,33130:65289,33131:12308,33132:12309,33133:65339,33134:65341,33135:65371,33136:65373,33137:12296,33138:12297,33139:12298,33140:12299,33141:12300,33142:12301,33143:12302,33144:12303,33145:12304,33146:12305,33147:65291,33148:8722,33149:177,33150:215,33152:247,33153:65309,33154:8800,33155:65308,33156:65310,33157:8806,33158:8807,33159:8734,33160:8756,33161:9794,33162:9792,33163:176,33164:8242,33165:8243,33166:8451,33167:65509,33168:65284,33169:162,33170:163,33171:65285,33172:65283,33173:65286,33174:65290,33175:65312,33176:167,33177:9734,33178:9733,33179:9675,33180:9679,33181:9678,33182:9671,33183:9670,33184:9633,33185:9632,33186:9651,33187:9650,33188:9661,33189:9660,33190:8251,33191:12306,33192:8594,33193:8592,33194:8593,33195:8595,33196:12307,33208:8712,33209:8715,33210:8838,33211:8839,33212:8834,33213:8835,33214:8746,33215:8745,33224:8743,33225:8744,33226:172,33227:8658,33228:8660,33229:8704,33230:8707,33242:8736,33243:8869,33244:8978,33245:8706,33246:8711,33247:8801,33248:8786,33249:8810,33250:8811,33251:8730,33252:8765,33253:8733,33254:8757,33255:8747,33256:8748,33264:8491,33265:8240,33266:9839,33267:9837,33268:9834,33269:8224,33270:8225,33271:182,33276:9711,33359:65296,33360:65297,33361:65298,33362:65299,33363:65300,33364:65301,33365:65302,33366:65303,33367:65304,33368:65305,33376:65313,33377:65314,33378:65315,33379:65316,33380:65317,33381:65318,33382:65319,33383:65320,33384:65321,33385:65322,33386:65323,33387:65324,33388:65325,33389:65326,33390:65327,33391:65328,33392:65329,33393:65330,33394:65331,33395:65332,33396:65333,33397:65334,33398:65335,33399:65336,33400:65337,33401:65338,33409:65345,33410:65346,33411:65347,33412:65348,33413:65349,33414:65350,33415:65351,33416:65352,33417:65353,33418:65354,33419:65355,33420:65356,33421:65357,33422:65358,33423:65359,33424:65360,33425:65361,33426:65362,33427:65363,33428:65364,33429:65365,33430:65366,33431:65367,33432:65368,33433:65369,33434:65370,33439:12353,33440:12354,33441:12355,33442:12356,33443:12357,33444:12358,33445:12359,33446:12360,33447:12361,33448:12362,33449:12363,33450:12364,33451:12365,33452:12366,33453:12367,33454:12368,33455:12369,33456:12370,33457:12371,33458:12372,33459:12373,33460:12374,33461:12375,33462:12376,33463:12377,33464:12378,33465:12379,33466:12380,33467:12381,33468:12382,33469:12383,33470:12384,33471:12385,33472:12386,33473:12387,33474:12388,33475:12389,33476:12390,33477:12391,33478:12392,33479:12393,33480:12394,33481:12395,33482:12396,33483:12397,33484:12398,33485:12399,33486:12400,33487:12401,33488:12402,33489:12403,33490:12404,33491:12405,33492:12406,33493:12407,33494:12408,33495:12409,33496:12410,33497:12411,33498:12412,33499:12413,33500:12414,33501:12415,33502:12416,33503:12417,33504:12418,33505:12419,33506:12420,33507:12421,33508:12422,33509:12423,33510:12424,33511:12425,33512:12426,33513:12427,33514:12428,33515:12429,33516:12430,33517:12431,33518:12432,33519:12433,33520:12434,33521:12435,33600:12449,33601:12450,33602:12451,33603:12452,33604:12453,33605:12454,33606:12455,33607:12456,33608:12457,33609:12458,33610:12459,33611:12460,33612:12461,33613:12462,33614:12463,33615:12464,33616:12465,33617:12466,33618:12467,33619:12468,33620:12469,33621:12470,33622:12471,33623:12472,33624:12473,33625:12474,33626:12475,33627:12476,33628:12477,33629:12478,33630:12479,33631:12480,33632:12481,33633:12482,33634:12483,33635:12484,33636:12485,33637:12486,33638:12487,33639:12488,33640:12489,33641:12490,33642:12491,33643:12492,33644:12493,33645:12494,33646:12495,33647:12496,33648:12497,33649:12498,33650:12499,33651:12500,33652:12501,33653:12502,33654:12503,33655:12504,33656:12505,33657:12506,33658:12507,33659:12508,33660:12509,33661:12510,33662:12511,33664:12512,33665:12513,33666:12514,33667:12515,33668:12516,33669:12517,33670:12518,33671:12519,33672:12520,33673:12521,33674:12522,33675:12523,33676:12524,33677:12525,33678:12526,33679:12527,33680:12528,33681:12529,33682:12530,33683:12531,33684:12532,33685:12533,33686:12534,33695:913,33696:914,33697:915,33698:916,33699:917,33700:918,33701:919,33702:920,33703:921,33704:922,33705:923,33706:924,33707:925,33708:926,33709:927,33710:928,33711:929,33712:931,33713:932,33714:933,33715:934,33716:935,33717:936,33718:937,33727:945,33728:946,33729:947,33730:948,33731:949,33732:950,33733:951,33734:952,33735:953,33736:954,33737:955,33738:956,33739:957,33740:958,33741:959,33742:960,33743:961,33744:963,33745:964,33746:965,33747:966,33748:967,33749:968,33750:969,33856:1040,33857:1041,33858:1042,33859:1043,33860:1044,33861:1045,33862:1025,33863:1046,33864:1047,33865:1048,33866:1049,33867:1050,33868:1051,33869:1052,33870:1053,33871:1054,33872:1055,33873:1056,33874:1057,33875:1058,33876:1059,33877:1060,33878:1061,33879:1062,33880:1063,33881:1064,33882:1065,33883:1066,33884:1067,33885:1068,33886:1069,33887:1070,33888:1071,33904:1072,33905:1073,33906:1074,33907:1075,33908:1076,33909:1077,33910:1105,33911:1078,33912:1079,33913:1080,33914:1081,33915:1082,33916:1083,33917:1084,33918:1085,33920:1086,33921:1087,33922:1088,33923:1089,33924:1090,33925:1091,33926:1092,33927:1093,33928:1094,33929:1095,33930:1096,33931:1097,33932:1098,33933:1099,33934:1100,33935:1101,33936:1102,33937:1103,33951:9472,33952:9474,33953:9484,33954:9488,33955:9496,33956:9492,33957:9500,33958:9516,33959:9508,33960:9524,33961:9532,33962:9473,33963:9475,33964:9487,33965:9491,33966:9499,33967:9495,33968:9507,33969:9523,33970:9515,33971:9531,33972:9547,33973:9504,33974:9519,33975:9512,33976:9527,33977:9535,33978:9501,33979:9520,33980:9509,33981:9528,33982:9538,34975:20124,34976:21782,34977:23043,34978:38463,34979:21696,34980:24859,34981:25384,34982:23030,34983:36898,34984:33909,34985:33564,34986:31312,34987:24746,34988:25569,34989:28197,34990:26093,34991:33894,34992:33446,34993:39925,34994:26771,34995:22311,34996:26017,34997:25201,34998:23451,34999:22992,35e3:34427,35001:39156,35002:32098,35003:32190,35004:39822,35005:25110,35006:31903,35007:34999,35008:23433,35009:24245,35010:25353,35011:26263,35012:26696,35013:38343,35014:38797,35015:26447,35016:20197,35017:20234,35018:20301,35019:20381,35020:20553,35021:22258,35022:22839,35023:22996,35024:23041,35025:23561,35026:24799,35027:24847,35028:24944,35029:26131,35030:26885,35031:28858,35032:30031,35033:30064,35034:31227,35035:32173,35036:32239,35037:32963,35038:33806,35039:34915,35040:35586,35041:36949,35042:36986,35043:21307,35044:20117,35045:20133,35046:22495,35047:32946,35048:37057,35049:30959,35050:19968,35051:22769,35052:28322,35053:36920,35054:31282,35055:33576,35056:33419,35057:39983,35058:20801,35059:21360,35060:21693,35061:21729,35062:22240,35063:23035,35064:24341,35065:39154,35066:28139,35067:32996,35068:34093,35136:38498,35137:38512,35138:38560,35139:38907,35140:21515,35141:21491,35142:23431,35143:28879,35144:32701,35145:36802,35146:38632,35147:21359,35148:40284,35149:31418,35150:19985,35151:30867,35152:33276,35153:28198,35154:22040,35155:21764,35156:27421,35157:34074,35158:39995,35159:23013,35160:21417,35161:28006,35162:29916,35163:38287,35164:22082,35165:20113,35166:36939,35167:38642,35168:33615,35169:39180,35170:21473,35171:21942,35172:23344,35173:24433,35174:26144,35175:26355,35176:26628,35177:27704,35178:27891,35179:27945,35180:29787,35181:30408,35182:31310,35183:38964,35184:33521,35185:34907,35186:35424,35187:37613,35188:28082,35189:30123,35190:30410,35191:39365,35192:24742,35193:35585,35194:36234,35195:38322,35196:27022,35197:21421,35198:20870,35200:22290,35201:22576,35202:22852,35203:23476,35204:24310,35205:24616,35206:25513,35207:25588,35208:27839,35209:28436,35210:28814,35211:28948,35212:29017,35213:29141,35214:29503,35215:32257,35216:33398,35217:33489,35218:34199,35219:36960,35220:37467,35221:40219,35222:22633,35223:26044,35224:27738,35225:29989,35226:20985,35227:22830,35228:22885,35229:24448,35230:24540,35231:25276,35232:26106,35233:27178,35234:27431,35235:27572,35236:29579,35237:32705,35238:35158,35239:40236,35240:40206,35241:40644,35242:23713,35243:27798,35244:33659,35245:20740,35246:23627,35247:25014,35248:33222,35249:26742,35250:29281,35251:20057,35252:20474,35253:21368,35254:24681,35255:28201,35256:31311,35257:38899,35258:19979,35259:21270,35260:20206,35261:20309,35262:20285,35263:20385,35264:20339,35265:21152,35266:21487,35267:22025,35268:22799,35269:23233,35270:23478,35271:23521,35272:31185,35273:26247,35274:26524,35275:26550,35276:27468,35277:27827,35278:28779,35279:29634,35280:31117,35281:31166,35282:31292,35283:31623,35284:33457,35285:33499,35286:33540,35287:33655,35288:33775,35289:33747,35290:34662,35291:35506,35292:22057,35293:36008,35294:36838,35295:36942,35296:38686,35297:34442,35298:20420,35299:23784,35300:25105,35301:29273,35302:30011,35303:33253,35304:33469,35305:34558,35306:36032,35307:38597,35308:39187,35309:39381,35310:20171,35311:20250,35312:35299,35313:22238,35314:22602,35315:22730,35316:24315,35317:24555,35318:24618,35319:24724,35320:24674,35321:25040,35322:25106,35323:25296,35324:25913,35392:39745,35393:26214,35394:26800,35395:28023,35396:28784,35397:30028,35398:30342,35399:32117,35400:33445,35401:34809,35402:38283,35403:38542,35404:35997,35405:20977,35406:21182,35407:22806,35408:21683,35409:23475,35410:23830,35411:24936,35412:27010,35413:28079,35414:30861,35415:33995,35416:34903,35417:35442,35418:37799,35419:39608,35420:28012,35421:39336,35422:34521,35423:22435,35424:26623,35425:34510,35426:37390,35427:21123,35428:22151,35429:21508,35430:24275,35431:25313,35432:25785,35433:26684,35434:26680,35435:27579,35436:29554,35437:30906,35438:31339,35439:35226,35440:35282,35441:36203,35442:36611,35443:37101,35444:38307,35445:38548,35446:38761,35447:23398,35448:23731,35449:27005,35450:38989,35451:38990,35452:25499,35453:31520,35454:27179,35456:27263,35457:26806,35458:39949,35459:28511,35460:21106,35461:21917,35462:24688,35463:25324,35464:27963,35465:28167,35466:28369,35467:33883,35468:35088,35469:36676,35470:19988,35471:39993,35472:21494,35473:26907,35474:27194,35475:38788,35476:26666,35477:20828,35478:31427,35479:33970,35480:37340,35481:37772,35482:22107,35483:40232,35484:26658,35485:33541,35486:33841,35487:31909,35488:21e3,35489:33477,35490:29926,35491:20094,35492:20355,35493:20896,35494:23506,35495:21002,35496:21208,35497:21223,35498:24059,35499:21914,35500:22570,35501:23014,35502:23436,35503:23448,35504:23515,35505:24178,35506:24185,35507:24739,35508:24863,35509:24931,35510:25022,35511:25563,35512:25954,35513:26577,35514:26707,35515:26874,35516:27454,35517:27475,35518:27735,35519:28450,35520:28567,35521:28485,35522:29872,35523:29976,35524:30435,35525:30475,35526:31487,35527:31649,35528:31777,35529:32233,35530:32566,35531:32752,35532:32925,35533:33382,35534:33694,35535:35251,35536:35532,35537:36011,35538:36996,35539:37969,35540:38291,35541:38289,35542:38306,35543:38501,35544:38867,35545:39208,35546:33304,35547:20024,35548:21547,35549:23736,35550:24012,35551:29609,35552:30284,35553:30524,35554:23721,35555:32747,35556:36107,35557:38593,35558:38929,35559:38996,35560:39e3,35561:20225,35562:20238,35563:21361,35564:21916,35565:22120,35566:22522,35567:22855,35568:23305,35569:23492,35570:23696,35571:24076,35572:24190,35573:24524,35574:25582,35575:26426,35576:26071,35577:26082,35578:26399,35579:26827,35580:26820,35648:27231,35649:24112,35650:27589,35651:27671,35652:27773,35653:30079,35654:31048,35655:23395,35656:31232,35657:32e3,35658:24509,35659:35215,35660:35352,35661:36020,35662:36215,35663:36556,35664:36637,35665:39138,35666:39438,35667:39740,35668:20096,35669:20605,35670:20736,35671:22931,35672:23452,35673:25135,35674:25216,35675:25836,35676:27450,35677:29344,35678:30097,35679:31047,35680:32681,35681:34811,35682:35516,35683:35696,35684:25516,35685:33738,35686:38816,35687:21513,35688:21507,35689:21931,35690:26708,35691:27224,35692:35440,35693:30759,35694:26485,35695:40653,35696:21364,35697:23458,35698:33050,35699:34384,35700:36870,35701:19992,35702:20037,35703:20167,35704:20241,35705:21450,35706:21560,35707:23470,35708:24339,35709:24613,35710:25937,35712:26429,35713:27714,35714:27762,35715:27875,35716:28792,35717:29699,35718:31350,35719:31406,35720:31496,35721:32026,35722:31998,35723:32102,35724:26087,35725:29275,35726:21435,35727:23621,35728:24040,35729:25298,35730:25312,35731:25369,35732:28192,35733:34394,35734:35377,35735:36317,35736:37624,35737:28417,35738:31142,35739:39770,35740:20136,35741:20139,35742:20140,35743:20379,35744:20384,35745:20689,35746:20807,35747:31478,35748:20849,35749:20982,35750:21332,35751:21281,35752:21375,35753:21483,35754:21932,35755:22659,35756:23777,35757:24375,35758:24394,35759:24623,35760:24656,35761:24685,35762:25375,35763:25945,35764:27211,35765:27841,35766:29378,35767:29421,35768:30703,35769:33016,35770:33029,35771:33288,35772:34126,35773:37111,35774:37857,35775:38911,35776:39255,35777:39514,35778:20208,35779:20957,35780:23597,35781:26241,35782:26989,35783:23616,35784:26354,35785:26997,35786:29577,35787:26704,35788:31873,35789:20677,35790:21220,35791:22343,35792:24062,35793:37670,35794:26020,35795:27427,35796:27453,35797:29748,35798:31105,35799:31165,35800:31563,35801:32202,35802:33465,35803:33740,35804:34943,35805:35167,35806:35641,35807:36817,35808:37329,35809:21535,35810:37504,35811:20061,35812:20534,35813:21477,35814:21306,35815:29399,35816:29590,35817:30697,35818:33510,35819:36527,35820:39366,35821:39368,35822:39378,35823:20855,35824:24858,35825:34398,35826:21936,35827:31354,35828:20598,35829:23507,35830:36935,35831:38533,35832:20018,35833:27355,35834:37351,35835:23633,35836:23624,35904:25496,35905:31391,35906:27795,35907:38772,35908:36705,35909:31402,35910:29066,35911:38536,35912:31874,35913:26647,35914:32368,35915:26705,35916:37740,35917:21234,35918:21531,35919:34219,35920:35347,35921:32676,35922:36557,35923:37089,35924:21350,35925:34952,35926:31041,35927:20418,35928:20670,35929:21009,35930:20804,35931:21843,35932:22317,35933:29674,35934:22411,35935:22865,35936:24418,35937:24452,35938:24693,35939:24950,35940:24935,35941:25001,35942:25522,35943:25658,35944:25964,35945:26223,35946:26690,35947:28179,35948:30054,35949:31293,35950:31995,35951:32076,35952:32153,35953:32331,35954:32619,35955:33550,35956:33610,35957:34509,35958:35336,35959:35427,35960:35686,35961:36605,35962:38938,35963:40335,35964:33464,35965:36814,35966:39912,35968:21127,35969:25119,35970:25731,35971:28608,35972:38553,35973:26689,35974:20625,35975:27424,35976:27770,35977:28500,35978:31348,35979:32080,35980:34880,35981:35363,35982:26376,35983:20214,35984:20537,35985:20518,35986:20581,35987:20860,35988:21048,35989:21091,35990:21927,35991:22287,35992:22533,35993:23244,35994:24314,35995:25010,35996:25080,35997:25331,35998:25458,35999:26908,36e3:27177,36001:29309,36002:29356,36003:29486,36004:30740,36005:30831,36006:32121,36007:30476,36008:32937,36009:35211,36010:35609,36011:36066,\n36012:36562,36013:36963,36014:37749,36015:38522,36016:38997,36017:39443,36018:40568,36019:20803,36020:21407,36021:21427,36022:24187,36023:24358,36024:28187,36025:28304,36026:29572,36027:29694,36028:32067,36029:33335,36030:35328,36031:35578,36032:38480,36033:20046,36034:20491,36035:21476,36036:21628,36037:22266,36038:22993,36039:23396,36040:24049,36041:24235,36042:24359,36043:25144,36044:25925,36045:26543,36046:28246,36047:29392,36048:31946,36049:34996,36050:32929,36051:32993,36052:33776,36053:34382,36054:35463,36055:36328,36056:37431,36057:38599,36058:39015,36059:40723,36060:20116,36061:20114,36062:20237,36063:21320,36064:21577,36065:21566,36066:23087,36067:24460,36068:24481,36069:24735,36070:26791,36071:27278,36072:29786,36073:30849,36074:35486,36075:35492,36076:35703,36077:37264,36078:20062,36079:39881,36080:20132,36081:20348,36082:20399,36083:20505,36084:20502,36085:20809,36086:20844,36087:21151,36088:21177,36089:21246,36090:21402,36091:21475,36092:21521,36160:21518,36161:21897,36162:22353,36163:22434,36164:22909,36165:23380,36166:23389,36167:23439,36168:24037,36169:24039,36170:24055,36171:24184,36172:24195,36173:24218,36174:24247,36175:24344,36176:24658,36177:24908,36178:25239,36179:25304,36180:25511,36181:25915,36182:26114,36183:26179,36184:26356,36185:26477,36186:26657,36187:26775,36188:27083,36189:27743,36190:27946,36191:28009,36192:28207,36193:28317,36194:30002,36195:30343,36196:30828,36197:31295,36198:31968,36199:32005,36200:32024,36201:32094,36202:32177,36203:32789,36204:32771,36205:32943,36206:32945,36207:33108,36208:33167,36209:33322,36210:33618,36211:34892,36212:34913,36213:35611,36214:36002,36215:36092,36216:37066,36217:37237,36218:37489,36219:30783,36220:37628,36221:38308,36222:38477,36224:38917,36225:39321,36226:39640,36227:40251,36228:21083,36229:21163,36230:21495,36231:21512,36232:22741,36233:25335,36234:28640,36235:35946,36236:36703,36237:40633,36238:20811,36239:21051,36240:21578,36241:22269,36242:31296,36243:37239,36244:40288,36245:40658,36246:29508,36247:28425,36248:33136,36249:29969,36250:24573,36251:24794,36252:39592,36253:29403,36254:36796,36255:27492,36256:38915,36257:20170,36258:22256,36259:22372,36260:22718,36261:23130,36262:24680,36263:25031,36264:26127,36265:26118,36266:26681,36267:26801,36268:28151,36269:30165,36270:32058,36271:33390,36272:39746,36273:20123,36274:20304,36275:21449,36276:21766,36277:23919,36278:24038,36279:24046,36280:26619,36281:27801,36282:29811,36283:30722,36284:35408,36285:37782,36286:35039,36287:22352,36288:24231,36289:25387,36290:20661,36291:20652,36292:20877,36293:26368,36294:21705,36295:22622,36296:22971,36297:23472,36298:24425,36299:25165,36300:25505,36301:26685,36302:27507,36303:28168,36304:28797,36305:37319,36306:29312,36307:30741,36308:30758,36309:31085,36310:25998,36311:32048,36312:33756,36313:35009,36314:36617,36315:38555,36316:21092,36317:22312,36318:26448,36319:32618,36320:36001,36321:20916,36322:22338,36323:38442,36324:22586,36325:27018,36326:32948,36327:21682,36328:23822,36329:22524,36330:30869,36331:40442,36332:20316,36333:21066,36334:21643,36335:25662,36336:26152,36337:26388,36338:26613,36339:31364,36340:31574,36341:32034,36342:37679,36343:26716,36344:39853,36345:31545,36346:21273,36347:20874,36348:21047,36416:23519,36417:25334,36418:25774,36419:25830,36420:26413,36421:27578,36422:34217,36423:38609,36424:30352,36425:39894,36426:25420,36427:37638,36428:39851,36429:30399,36430:26194,36431:19977,36432:20632,36433:21442,36434:23665,36435:24808,36436:25746,36437:25955,36438:26719,36439:29158,36440:29642,36441:29987,36442:31639,36443:32386,36444:34453,36445:35715,36446:36059,36447:37240,36448:39184,36449:26028,36450:26283,36451:27531,36452:20181,36453:20180,36454:20282,36455:20351,36456:21050,36457:21496,36458:21490,36459:21987,36460:22235,36461:22763,36462:22987,36463:22985,36464:23039,36465:23376,36466:23629,36467:24066,36468:24107,36469:24535,36470:24605,36471:25351,36472:25903,36473:23388,36474:26031,36475:26045,36476:26088,36477:26525,36478:27490,36480:27515,36481:27663,36482:29509,36483:31049,36484:31169,36485:31992,36486:32025,36487:32043,36488:32930,36489:33026,36490:33267,36491:35222,36492:35422,36493:35433,36494:35430,36495:35468,36496:35566,36497:36039,36498:36060,36499:38604,36500:39164,36501:27503,36502:20107,36503:20284,36504:20365,36505:20816,36506:23383,36507:23546,36508:24904,36509:25345,36510:26178,36511:27425,36512:28363,36513:27835,36514:29246,36515:29885,36516:30164,36517:30913,36518:31034,36519:32780,36520:32819,36521:33258,36522:33940,36523:36766,36524:27728,36525:40575,36526:24335,36527:35672,36528:40235,36529:31482,36530:36600,36531:23437,36532:38635,36533:19971,36534:21489,36535:22519,36536:22833,36537:23241,36538:23460,36539:24713,36540:28287,36541:28422,36542:30142,36543:36074,36544:23455,36545:34048,36546:31712,36547:20594,36548:26612,36549:33437,36550:23649,36551:34122,36552:32286,36553:33294,36554:20889,36555:23556,36556:25448,36557:36198,36558:26012,36559:29038,36560:31038,36561:32023,36562:32773,36563:35613,36564:36554,36565:36974,36566:34503,36567:37034,36568:20511,36569:21242,36570:23610,36571:26451,36572:28796,36573:29237,36574:37196,36575:37320,36576:37675,36577:33509,36578:23490,36579:24369,36580:24825,36581:20027,36582:21462,36583:23432,36584:25163,36585:26417,36586:27530,36587:29417,36588:29664,36589:31278,36590:33131,36591:36259,36592:37202,36593:39318,36594:20754,36595:21463,36596:21610,36597:23551,36598:25480,36599:27193,36600:32172,36601:38656,36602:22234,36603:21454,36604:21608,36672:23447,36673:23601,36674:24030,36675:20462,36676:24833,36677:25342,36678:27954,36679:31168,36680:31179,36681:32066,36682:32333,36683:32722,36684:33261,36685:33311,36686:33936,36687:34886,36688:35186,36689:35728,36690:36468,36691:36655,36692:36913,36693:37195,36694:37228,36695:38598,36696:37276,36697:20160,36698:20303,36699:20805,36700:21313,36701:24467,36702:25102,36703:26580,36704:27713,36705:28171,36706:29539,36707:32294,36708:37325,36709:37507,36710:21460,36711:22809,36712:23487,36713:28113,36714:31069,36715:32302,36716:31899,36717:22654,36718:29087,36719:20986,36720:34899,36721:36848,36722:20426,36723:23803,36724:26149,36725:30636,36726:31459,36727:33308,36728:39423,36729:20934,36730:24490,36731:26092,36732:26991,36733:27529,36734:28147,36736:28310,36737:28516,36738:30462,36739:32020,36740:24033,36741:36981,36742:37255,36743:38918,36744:20966,36745:21021,36746:25152,36747:26257,36748:26329,36749:28186,36750:24246,36751:32210,36752:32626,36753:26360,36754:34223,36755:34295,36756:35576,36757:21161,36758:21465,36759:22899,36760:24207,36761:24464,36762:24661,36763:37604,36764:38500,36765:20663,36766:20767,36767:21213,36768:21280,36769:21319,36770:21484,36771:21736,36772:21830,36773:21809,36774:22039,36775:22888,36776:22974,36777:23100,36778:23477,36779:23558,36780:23567,36781:23569,36782:23578,36783:24196,36784:24202,36785:24288,36786:24432,36787:25215,36788:25220,36789:25307,36790:25484,36791:25463,36792:26119,36793:26124,36794:26157,36795:26230,36796:26494,36797:26786,36798:27167,36799:27189,36800:27836,36801:28040,36802:28169,36803:28248,36804:28988,36805:28966,36806:29031,36807:30151,36808:30465,36809:30813,36810:30977,36811:31077,36812:31216,36813:31456,36814:31505,36815:31911,36816:32057,36817:32918,36818:33750,36819:33931,36820:34121,36821:34909,36822:35059,36823:35359,36824:35388,36825:35412,36826:35443,36827:35937,36828:36062,36829:37284,36830:37478,36831:37758,36832:37912,36833:38556,36834:38808,36835:19978,36836:19976,36837:19998,36838:20055,36839:20887,36840:21104,36841:22478,36842:22580,36843:22732,36844:23330,36845:24120,36846:24773,36847:25854,36848:26465,36849:26454,36850:27972,36851:29366,36852:30067,36853:31331,36854:33976,36855:35698,36856:37304,36857:37664,36858:22065,36859:22516,36860:39166,36928:25325,36929:26893,36930:27542,36931:29165,36932:32340,36933:32887,36934:33394,36935:35302,36936:39135,36937:34645,36938:36785,36939:23611,36940:20280,36941:20449,36942:20405,36943:21767,36944:23072,36945:23517,36946:23529,36947:24515,36948:24910,36949:25391,36950:26032,36951:26187,36952:26862,36953:27035,36954:28024,36955:28145,36956:30003,36957:30137,36958:30495,36959:31070,36960:31206,36961:32051,36962:33251,36963:33455,36964:34218,36965:35242,36966:35386,36967:36523,36968:36763,36969:36914,36970:37341,36971:38663,36972:20154,36973:20161,36974:20995,36975:22645,36976:22764,36977:23563,36978:29978,36979:23613,36980:33102,36981:35338,36982:36805,36983:38499,36984:38765,36985:31525,36986:35535,36987:38920,36988:37218,36989:22259,36990:21416,36992:36887,36993:21561,36994:22402,36995:24101,36996:25512,36997:27700,36998:28810,36999:30561,37e3:31883,37001:32736,37002:34928,37003:36930,37004:37204,37005:37648,37006:37656,37007:38543,37008:29790,37009:39620,37010:23815,37011:23913,37012:25968,37013:26530,37014:36264,37015:38619,37016:25454,37017:26441,37018:26905,37019:33733,37020:38935,37021:38592,37022:35070,37023:28548,37024:25722,37025:23544,37026:19990,37027:28716,37028:30045,37029:26159,37030:20932,37031:21046,37032:21218,37033:22995,37034:24449,37035:24615,37036:25104,37037:25919,37038:25972,37039:26143,37040:26228,37041:26866,37042:26646,37043:27491,37044:28165,37045:29298,37046:29983,37047:30427,37048:31934,37049:32854,37050:22768,37051:35069,37052:35199,37053:35488,37054:35475,37055:35531,37056:36893,37057:37266,37058:38738,37059:38745,37060:25993,37061:31246,37062:33030,37063:38587,37064:24109,37065:24796,37066:25114,37067:26021,37068:26132,37069:26512,37070:30707,37071:31309,37072:31821,37073:32318,37074:33034,37075:36012,37076:36196,37077:36321,37078:36447,37079:30889,37080:20999,37081:25305,37082:25509,37083:25666,37084:25240,37085:35373,37086:31363,37087:31680,37088:35500,37089:38634,37090:32118,37091:33292,37092:34633,37093:20185,37094:20808,37095:21315,37096:21344,37097:23459,37098:23554,37099:23574,37100:24029,37101:25126,37102:25159,37103:25776,37104:26643,37105:26676,37106:27849,37107:27973,37108:27927,37109:26579,37110:28508,37111:29006,37112:29053,37113:26059,37114:31359,37115:31661,37116:32218,37184:32330,37185:32680,37186:33146,37187:33307,37188:33337,37189:34214,37190:35438,37191:36046,37192:36341,37193:36984,37194:36983,37195:37549,37196:37521,37197:38275,37198:39854,37199:21069,37200:21892,37201:28472,37202:28982,37203:20840,37204:31109,37205:32341,37206:33203,37207:31950,37208:22092,37209:22609,37210:23720,37211:25514,37212:26366,37213:26365,37214:26970,37215:29401,37216:30095,37217:30094,37218:30990,37219:31062,37220:31199,37221:31895,37222:32032,37223:32068,37224:34311,37225:35380,37226:38459,37227:36961,37228:40736,37229:20711,37230:21109,37231:21452,37232:21474,37233:20489,37234:21930,37235:22766,37236:22863,37237:29245,37238:23435,37239:23652,37240:21277,37241:24803,37242:24819,37243:25436,37244:25475,37245:25407,37246:25531,37248:25805,37249:26089,37250:26361,37251:24035,37252:27085,37253:27133,37254:28437,37255:29157,37256:20105,37257:30185,37258:30456,37259:31379,37260:31967,37261:32207,37262:32156,37263:32865,37264:33609,37265:33624,37266:33900,37267:33980,37268:34299,37269:35013,37270:36208,37271:36865,37272:36973,37273:37783,37274:38684,37275:39442,37276:20687,37277:22679,37278:24974,37279:33235,37280:34101,37281:36104,37282:36896,37283:20419,37284:20596,37285:21063,37286:21363,37287:24687,37288:25417,37289:26463,37290:28204,37291:36275,37292:36895,37293:20439,37294:23646,37295:36042,37296:26063,37297:32154,37298:21330,37299:34966,37300:20854,37301:25539,37302:23384,37303:23403,37304:23562,37305:25613,37306:26449,37307:36956,37308:20182,37309:22810,37310:22826,37311:27760,37312:35409,37313:21822,37314:22549,37315:22949,37316:24816,37317:25171,37318:26561,37319:33333,37320:26965,37321:38464,37322:39364,37323:39464,37324:20307,37325:22534,37326:23550,37327:32784,37328:23729,37329:24111,37330:24453,37331:24608,37332:24907,37333:25140,37334:26367,37335:27888,37336:28382,37337:32974,37338:33151,37339:33492,37340:34955,37341:36024,37342:36864,37343:36910,37344:38538,37345:40667,37346:39899,37347:20195,37348:21488,37349:22823,37350:31532,37351:37261,37352:38988,37353:40441,37354:28381,37355:28711,37356:21331,37357:21828,37358:23429,37359:25176,37360:25246,37361:25299,37362:27810,37363:28655,37364:29730,37365:35351,37366:37944,37367:28609,37368:35582,37369:33592,37370:20967,37371:34552,37372:21482,37440:21481,37441:20294,37442:36948,37443:36784,37444:22890,37445:33073,37446:24061,37447:31466,37448:36799,37449:26842,37450:35895,37451:29432,37452:40008,37453:27197,37454:35504,37455:20025,37456:21336,37457:22022,37458:22374,37459:25285,37460:25506,37461:26086,37462:27470,37463:28129,37464:28251,37465:28845,37466:30701,37467:31471,37468:31658,37469:32187,37470:32829,37471:32966,37472:34507,37473:35477,37474:37723,37475:22243,37476:22727,37477:24382,37478:26029,37479:26262,37480:27264,37481:27573,37482:30007,37483:35527,37484:20516,37485:30693,37486:22320,37487:24347,37488:24677,37489:26234,37490:27744,37491:30196,37492:31258,37493:32622,37494:33268,37495:34584,37496:36933,37497:39347,37498:31689,37499:30044,37500:31481,37501:31569,37502:33988,37504:36880,37505:31209,37506:31378,37507:33590,37508:23265,37509:30528,37510:20013,37511:20210,37512:23449,37513:24544,37514:25277,37515:26172,37516:26609,37517:27880,37518:34411,37519:34935,37520:35387,37521:37198,37522:37619,37523:39376,37524:27159,37525:28710,37526:29482,37527:33511,37528:33879,37529:36015,37530:19969,37531:20806,37532:20939,37533:21899,37534:23541,37535:24086,37536:24115,37537:24193,37538:24340,37539:24373,37540:24427,37541:24500,37542:25074,37543:25361,37544:26274,37545:26397,37546:28526,37547:29266,37548:30010,37549:30522,37550:32884,37551:33081,37552:33144,37553:34678,37554:35519,37555:35548,37556:36229,37557:36339,37558:37530,37559:38263,37560:38914,37561:40165,37562:21189,37563:25431,37564:30452,37565:26389,37566:27784,37567:29645,37568:36035,37569:37806,37570:38515,37571:27941,37572:22684,37573:26894,37574:27084,37575:36861,37576:37786,37577:30171,37578:36890,37579:22618,37580:26626,37581:25524,37582:27131,37583:20291,37584:28460,37585:26584,37586:36795,37587:34086,37588:32180,37589:37716,37590:26943,37591:28528,37592:22378,37593:22775,37594:23340,37595:32044,37596:29226,37597:21514,37598:37347,37599:40372,37600:20141,37601:20302,37602:20572,37603:20597,37604:21059,37605:35998,37606:21576,37607:22564,37608:23450,37609:24093,37610:24213,37611:24237,37612:24311,37613:24351,37614:24716,37615:25269,37616:25402,37617:25552,37618:26799,37619:27712,37620:30855,37621:31118,37622:31243,37623:32224,37624:33351,37625:35330,37626:35558,37627:36420,37628:36883,37696:37048,37697:37165,37698:37336,37699:40718,37700:27877,37701:25688,37702:25826,37703:25973,37704:28404,37705:30340,37706:31515,37707:36969,37708:37841,37709:28346,37710:21746,37711:24505,37712:25764,37713:36685,37714:36845,37715:37444,37716:20856,37717:22635,37718:22825,37719:23637,37720:24215,37721:28155,37722:32399,37723:29980,37724:36028,37725:36578,37726:39003,37727:28857,37728:20253,37729:27583,37730:28593,37731:3e4,37732:38651,37733:20814,37734:21520,37735:22581,37736:22615,37737:22956,37738:23648,37739:24466,37740:26007,37741:26460,37742:28193,37743:30331,37744:33759,37745:36077,37746:36884,37747:37117,37748:37709,37749:30757,37750:30778,37751:21162,37752:24230,37753:22303,37754:22900,37755:24594,37756:20498,37757:20826,37758:20908,37760:20941,37761:20992,37762:21776,37763:22612,37764:22616,37765:22871,37766:23445,37767:23798,37768:23947,37769:24764,37770:25237,37771:25645,37772:26481,37773:26691,37774:26812,37775:26847,37776:30423,37777:28120,37778:28271,37779:28059,37780:28783,37781:29128,37782:24403,37783:30168,37784:31095,37785:31561,37786:31572,37787:31570,37788:31958,37789:32113,37790:21040,37791:33891,37792:34153,37793:34276,37794:35342,37795:35588,37796:35910,37797:36367,37798:36867,37799:36879,37800:37913,37801:38518,37802:38957,37803:39472,37804:38360,37805:20685,37806:21205,37807:21516,37808:22530,37809:23566,37810:24999,37811:25758,37812:27934,37813:30643,37814:31461,37815:33012,37816:33796,37817:36947,37818:37509,37819:23776,37820:40199,37821:21311,37822:24471,37823:24499,37824:28060,37825:29305,37826:30563,37827:31167,37828:31716,37829:27602,37830:29420,37831:35501,37832:26627,37833:27233,37834:20984,37835:31361,37836:26932,37837:23626,37838:40182,37839:33515,37840:23493,37841:37193,37842:28702,37843:22136,37844:23663,37845:24775,37846:25958,37847:27788,37848:35930,37849:36929,37850:38931,37851:21585,37852:26311,37853:37389,37854:22856,37855:37027,37856:20869,37857:20045,37858:20970,37859:34201,37860:35598,37861:28760,37862:25466,37863:37707,37864:26978,37865:39348,37866:32260,37867:30071,37868:21335,37869:26976,37870:36575,37871:38627,37872:27741,37873:20108,37874:23612,37875:24336,37876:36841,37877:21250,37878:36049,37879:32905,37880:34425,37881:24319,37882:26085,37883:20083,37884:20837,37952:22914,37953:23615,37954:38894,37955:20219,37956:22922,37957:24525,37958:35469,37959:28641,37960:31152,37961:31074,37962:23527,37963:33905,37964:29483,37965:29105,37966:24180,37967:24565,37968:25467,37969:25754,37970:29123,37971:31896,37972:20035,37973:24316,37974:20043,37975:22492,37976:22178,37977:24745,37978:28611,37979:32013,37980:33021,37981:33075,37982:33215,37983:36786,37984:35223,37985:34468,37986:24052,37987:25226,37988:25773,37989:35207,37990:26487,37991:27874,37992:27966,37993:29750,37994:30772,37995:23110,37996:32629,37997:33453,37998:39340,37999:20467,38e3:24259,38001:25309,38002:25490,38003:25943,38004:26479,38005:30403,38006:29260,38007:32972,38008:32954,38009:36649,38010:37197,38011:20493,38012:22521,38013:23186,38014:26757,38016:26995,38017:29028,38018:29437,38019:36023,38020:22770,38021:36064,38022:38506,38023:36889,38024:34687,38025:31204,38026:30695,38027:33833,38028:20271,38029:21093,38030:21338,38031:25293,38032:26575,38033:27850,38034:30333,38035:31636,38036:31893,38037:33334,38038:34180,38039:36843,38040:26333,38041:28448,38042:29190,38043:32283,38044:33707,38045:39361,38046:40614,38047:20989,38048:31665,38049:30834,38050:31672,38051:32903,38052:31560,38053:27368,38054:24161,38055:32908,38056:30033,38057:30048,38058:20843,38059:37474,38060:28300,38061:30330,38062:37271,38063:39658,38064:20240,38065:32624,38066:25244,38067:31567,38068:38309,38069:40169,38070:22138,38071:22617,38072:34532,38073:38588,38074:20276,38075:21028,38076:21322,38077:21453,38078:21467,38079:24070,38080:25644,38081:26001,38082:26495,38083:27710,38084:27726,38085:29256,38086:29359,38087:29677,38088:30036,38089:32321,38090:33324,38091:34281,38092:36009,38093:31684,38094:37318,38095:29033,38096:38930,38097:39151,38098:25405,38099:26217,38100:30058,38101:30436,38102:30928,38103:34115,38104:34542,38105:21290,38106:21329,38107:21542,38108:22915,38109:24199,38110:24444,38111:24754,38112:25161,38113:25209,38114:25259,38115:26e3,38116:27604,38117:27852,38118:30130,38119:30382,38120:30865,38121:31192,38122:32203,38123:32631,38124:32933,38125:34987,38126:35513,38127:36027,38128:36991,38129:38750,38130:39131,38131:27147,38132:31800,38133:20633,38134:23614,38135:24494,38136:26503,38137:27608,38138:29749,38139:30473,38140:32654,38208:40763,38209:26570,38210:31255,38211:21305,38212:30091,38213:39661,38214:24422,38215:33181,38216:33777,38217:32920,38218:24380,38219:24517,38220:30050,38221:31558,38222:36924,38223:26727,38224:23019,38225:23195,38226:32016,38227:30334,38228:35628,38229:20469,38230:24426,38231:27161,38232:27703,38233:28418,38234:29922,38235:31080,38236:34920,38237:35413,38238:35961,38239:24287,38240:25551,38241:30149,38242:31186,38243:33495,38244:37672,38245:37618,38246:33948,38247:34541,38248:39981,38249:21697,38250:24428,38251:25996,38252:27996,38253:28693,38254:36007,38255:36051,38256:38971,38257:25935,38258:29942,38259:19981,38260:20184,38261:22496,38262:22827,38263:23142,38264:23500,38265:20904,38266:24067,38267:24220,38268:24598,38269:25206,38270:25975,38272:26023,38273:26222,38274:28014,38275:29238,38276:31526,38277:33104,38278:33178,38279:33433,38280:35676,38281:36e3,38282:36070,38283:36212,38284:38428,38285:38468,38286:20398,38287:25771,38288:27494,38289:33310,38290:33889,38291:34154,38292:37096,38293:23553,38294:26963,38295:39080,38296:33914,38297:34135,38298:20239,38299:21103,38300:24489,38301:24133,38302:26381,38303:31119,38304:33145,38305:35079,38306:35206,38307:28149,38308:24343,38309:25173,38310:27832,38311:20175,38312:29289,38313:39826,38314:20998,38315:21563,38316:22132,38317:22707,38318:24996,38319:25198,38320:28954,38321:22894,38322:31881,38323:31966,38324:32027,38325:38640,38326:25991,38327:32862,38328:19993,38329:20341,38330:20853,38331:22592,38332:24163,38333:24179,38334:24330,38335:26564,38336:20006,38337:34109,38338:38281,38339:38491,38340:31859,38341:38913,38342:20731,38343:22721,38344:30294,38345:30887,38346:21029,38347:30629,38348:34065,38349:31622,38350:20559,38351:22793,38352:29255,38353:31687,38354:32232,38355:36794,38356:36820,38357:36941,38358:20415,38359:21193,38360:23081,38361:24321,38362:38829,38363:20445,38364:33303,38365:37610,38366:22275,38367:25429,38368:27497,38369:29995,38370:35036,38371:36628,38372:31298,38373:21215,38374:22675,38375:24917,38376:25098,38377:26286,38378:27597,38379:31807,38380:33769,38381:20515,38382:20472,38383:21253,38384:21574,38385:22577,38386:22857,38387:23453,38388:23792,38389:23791,38390:23849,38391:24214,38392:25265,38393:25447,38394:25918,38395:26041,38396:26379,38464:27861,38465:27873,38466:28921,38467:30770,38468:32299,38469:32990,38470:33459,38471:33804,38472:34028,38473:34562,38474:35090,38475:35370,38476:35914,38477:37030,38478:37586,38479:39165,38480:40179,38481:40300,38482:20047,38483:20129,38484:20621,38485:21078,38486:22346,38487:22952,38488:24125,38489:24536,38490:24537,38491:25151,38492:26292,38493:26395,38494:26576,38495:26834,38496:20882,38497:32033,38498:32938,38499:33192,38500:35584,38501:35980,38502:36031,38503:37502,38504:38450,38505:21536,38506:38956,38507:21271,38508:20693,38509:21340,38510:22696,38511:25778,38512:26420,38513:29287,38514:30566,38515:31302,38516:37350,38517:21187,38518:27809,38519:27526,38520:22528,38521:24140,38522:22868,38523:26412,38524:32763,38525:20961,38526:30406,38528:25705,38529:30952,38530:39764,38531:40635,38532:22475,38533:22969,38534:26151,38535:26522,38536:27598,38537:21737,38538:27097,38539:24149,38540:33180,38541:26517,38542:39850,38543:26622,38544:40018,38545:26717,38546:20134,38547:20451,38548:21448,38549:25273,38550:26411,38551:27819,38552:36804,38553:20397,38554:32365,38555:40639,38556:19975,38557:24930,38558:28288,38559:28459,38560:34067,38561:21619,38562:26410,38563:39749,38564:24051,38565:31637,38566:23724,38567:23494,38568:34588,38569:28234,38570:34001,38571:31252,38572:33032,38573:22937,38574:31885,38575:27665,38576:30496,38577:21209,38578:22818,38579:28961,38580:29279,38581:30683,38582:38695,38583:40289,38584:26891,38585:23167,38586:23064,38587:20901,38588:21517,38589:21629,38590:26126,38591:30431,38592:36855,38593:37528,38594:40180,38595:23018,38596:29277,38597:28357,38598:20813,38599:26825,38600:32191,38601:32236,38602:38754,38603:40634,38604:25720,38605:27169,38606:33538,38607:22916,38608:23391,38609:27611,38610:29467,38611:30450,38612:32178,38613:32791,38614:33945,38615:20786,38616:26408,38617:40665,38618:30446,38619:26466,38620:21247,38621:39173,38622:23588,38623:25147,38624:31870,38625:36016,38626:21839,38627:24758,38628:32011,38629:38272,38630:21249,38631:20063,38632:20918,38633:22812,38634:29242,38635:32822,38636:37326,38637:24357,38638:30690,38639:21380,38640:24441,38641:32004,38642:34220,38643:35379,38644:36493,38645:38742,38646:26611,38647:34222,38648:37971,38649:24841,38650:24840,38651:27833,38652:30290,38720:35565,38721:36664,38722:21807,38723:20305,38724:20778,38725:21191,38726:21451,38727:23461,38728:24189,38729:24736,38730:24962,38731:25558,38732:26377,38733:26586,38734:28263,38735:28044,38736:29494,38737:29495,38738:30001,38739:31056,38740:35029,38741:35480,38742:36938,38743:37009,38744:37109,38745:38596,38746:34701,38747:22805,38748:20104,38749:20313,38750:19982,38751:35465,38752:36671,38753:38928,38754:20653,38755:24188,38756:22934,38757:23481,38758:24248,38759:25562,38760:25594,38761:25793,38762:26332,38763:26954,38764:27096,38765:27915,38766:28342,38767:29076,38768:29992,38769:31407,38770:32650,38771:32768,38772:33865,38773:33993,38774:35201,38775:35617,38776:36362,38777:36965,38778:38525,38779:39178,38780:24958,38781:25233,38782:27442,38784:27779,38785:28020,38786:32716,38787:32764,38788:28096,38789:32645,38790:34746,38791:35064,38792:26469,38793:33713,38794:38972,38795:38647,38796:27931,38797:32097,38798:33853,38799:37226,38800:20081,38801:21365,38802:23888,38803:27396,38804:28651,38805:34253,38806:34349,38807:35239,38808:21033,38809:21519,38810:23653,38811:26446,38812:26792,38813:29702,38814:29827,38815:30178,38816:35023,38817:35041,38818:37324,38819:38626,38820:38520,38821:24459,38822:29575,38823:31435,38824:33870,38825:25504,38826:30053,38827:21129,38828:27969,38829:28316,38830:29705,38831:30041,38832:30827,38833:31890,38834:38534,38835:31452,38836:40845,38837:20406,38838:24942,38839:26053,38840:34396,38841:20102,38842:20142,38843:20698,38844:20001,38845:20940,38846:23534,38847:26009,38848:26753,38849:28092,38850:29471,38851:30274,38852:30637,38853:31260,38854:31975,38855:33391,38856:35538,38857:36988,38858:37327,38859:38517,38860:38936,38861:21147,38862:32209,38863:20523,38864:21400,38865:26519,38866:28107,38867:29136,38868:29747,38869:33256,38870:36650,38871:38563,38872:40023,38873:40607,38874:29792,38875:22593,38876:28057,38877:32047,38878:39006,38879:20196,38880:20278,38881:20363,38882:20919,38883:21169,38884:23994,38885:24604,38886:29618,38887:31036,38888:33491,38889:37428,38890:38583,38891:38646,38892:38666,38893:40599,38894:40802,38895:26278,38896:27508,38897:21015,38898:21155,38899:28872,38900:35010,38901:24265,38902:24651,38903:24976,38904:28451,38905:29001,38906:31806,38907:32244,38908:32879,38976:34030,38977:36899,38978:37676,38979:21570,38980:39791,38981:27347,38982:28809,38983:36034,38984:36335,38985:38706,38986:21172,38987:23105,38988:24266,38989:24324,38990:26391,38991:27004,38992:27028,38993:28010,38994:28431,38995:29282,38996:29436,38997:31725,38998:32769,38999:32894,39e3:34635,39001:37070,39002:20845,39003:40595,39004:31108,39005:32907,39006:37682,39007:35542,39008:20525,39009:21644,39010:35441,39011:27498,39012:36036,39013:33031,39014:24785,39015:26528,39016:40434,39017:20121,39018:20120,39019:39952,39020:35435,39021:34241,39022:34152,39023:26880,39024:28286,39025:30871,39026:33109,39071:24332,39072:19984,39073:19989,39074:20010,39075:20017,39076:20022,39077:20028,39078:20031,39079:20034,39080:20054,39081:20056,39082:20098,39083:20101,39084:35947,39085:20106,39086:33298,39087:24333,39088:20110,39089:20126,39090:20127,39091:20128,39092:20130,39093:20144,39094:20147,39095:20150,39096:20174,39097:20173,39098:20164,39099:20166,39100:20162,39101:20183,39102:20190,39103:20205,39104:20191,39105:20215,39106:20233,39107:20314,39108:20272,39109:20315,39110:20317,39111:20311,39112:20295,39113:20342,39114:20360,39115:20367,39116:20376,39117:20347,39118:20329,39119:20336,39120:20369,39121:20335,39122:20358,39123:20374,39124:20760,39125:20436,39126:20447,39127:20430,39128:20440,39129:20443,39130:20433,39131:20442,39132:20432,39133:20452,39134:20453,39135:20506,39136:20520,39137:20500,39138:20522,39139:20517,39140:20485,39141:20252,39142:20470,39143:20513,39144:20521,39145:20524,39146:20478,39147:20463,39148:20497,39149:20486,39150:20547,39151:20551,39152:26371,39153:20565,39154:20560,39155:20552,39156:20570,39157:20566,39158:20588,39159:20600,39160:20608,39161:20634,39162:20613,39163:20660,39164:20658,39232:20681,39233:20682,39234:20659,39235:20674,39236:20694,39237:20702,39238:20709,39239:20717,39240:20707,39241:20718,39242:20729,39243:20725,39244:20745,39245:20737,39246:20738,39247:20758,39248:20757,39249:20756,39250:20762,39251:20769,39252:20794,39253:20791,39254:20796,39255:20795,39256:20799,39257:20800,39258:20818,39259:20812,39260:20820,39261:20834,39262:31480,39263:20841,39264:20842,39265:20846,39266:20864,39267:20866,39268:22232,39269:20876,39270:20873,39271:20879,39272:20881,39273:20883,39274:20885,39275:20886,39276:20900,39277:20902,39278:20898,39279:20905,39280:20906,39281:20907,39282:20915,39283:20913,39284:20914,39285:20912,39286:20917,39287:20925,39288:20933,39289:20937,39290:20955,39291:20960,39292:34389,39293:20969,39294:20973,39296:20976,39297:20981,39298:20990,39299:20996,39300:21003,39301:21012,39302:21006,39303:21031,39304:21034,39305:21038,39306:21043,39307:21049,39308:21071,39309:21060,39310:21067,39311:21068,39312:21086,39313:21076,39314:21098,39315:21108,39316:21097,39317:21107,39318:21119,39319:21117,39320:21133,39321:21140,39322:21138,39323:21105,39324:21128,39325:21137,39326:36776,39327:36775,39328:21164,39329:21165,39330:21180,39331:21173,39332:21185,39333:21197,39334:21207,39335:21214,39336:21219,39337:21222,39338:39149,39339:21216,39340:21235,39341:21237,39342:21240,39343:21241,39344:21254,39345:21256,39346:30008,39347:21261,39348:21264,39349:21263,39350:21269,39351:21274,39352:21283,39353:21295,39354:21297,39355:21299,39356:21304,39357:21312,39358:21318,39359:21317,39360:19991,39361:21321,39362:21325,39363:20950,39364:21342,39365:21353,39366:21358,39367:22808,39368:21371,39369:21367,39370:21378,39371:21398,39372:21408,39373:21414,39374:21413,39375:21422,39376:21424,39377:21430,39378:21443,39379:31762,39380:38617,39381:21471,39382:26364,39383:29166,39384:21486,39385:21480,39386:21485,39387:21498,39388:21505,39389:21565,39390:21568,39391:21548,39392:21549,39393:21564,39394:21550,39395:21558,39396:21545,39397:21533,39398:21582,39399:21647,39400:21621,39401:21646,39402:21599,39403:21617,39404:21623,39405:21616,39406:21650,39407:21627,39408:21632,39409:21622,39410:21636,39411:21648,39412:21638,39413:21703,39414:21666,39415:21688,39416:21669,39417:21676,39418:21700,39419:21704,39420:21672,39488:21675,39489:21698,39490:21668,39491:21694,39492:21692,39493:21720,39494:21733,39495:21734,39496:21775,39497:21780,39498:21757,39499:21742,39500:21741,39501:21754,39502:21730,39503:21817,39504:21824,39505:21859,39506:21836,39507:21806,39508:21852,39509:21829,39510:21846,39511:21847,39512:21816,39513:21811,39514:21853,39515:21913,39516:21888,39517:21679,39518:21898,39519:21919,39520:21883,39521:21886,39522:21912,39523:21918,39524:21934,39525:21884,39526:21891,39527:21929,39528:21895,39529:21928,39530:21978,39531:21957,39532:21983,39533:21956,39534:21980,39535:21988,39536:21972,39537:22036,39538:22007,39539:22038,39540:22014,39541:22013,39542:22043,39543:22009,39544:22094,39545:22096,39546:29151,39547:22068,39548:22070,39549:22066,39550:22072,39552:22123,39553:22116,39554:22063,39555:22124,39556:22122,39557:22150,39558:22144,39559:22154,39560:22176,39561:22164,39562:22159,39563:22181,39564:22190,39565:22198,39566:22196,39567:22210,39568:22204,39569:22209,39570:22211,39571:22208,39572:22216,39573:22222,39574:22225,39575:22227,39576:22231,39577:22254,39578:22265,39579:22272,39580:22271,39581:22276,39582:22281,39583:22280,39584:22283,39585:22285,39586:22291,39587:22296,39588:22294,39589:21959,39590:22300,39591:22310,39592:22327,39593:22328,39594:22350,39595:22331,39596:22336,39597:22351,39598:22377,39599:22464,39600:22408,39601:22369,39602:22399,39603:22409,39604:22419,39605:22432,39606:22451,39607:22436,39608:22442,39609:22448,39610:22467,39611:22470,39612:22484,39613:22482,39614:22483,39615:22538,39616:22486,39617:22499,39618:22539,39619:22553,39620:22557,39621:22642,39622:22561,39623:22626,39624:22603,39625:22640,39626:27584,39627:22610,39628:22589,39629:22649,39630:22661,39631:22713,39632:22687,39633:22699,39634:22714,39635:22750,39636:22715,39637:22712,39638:22702,39639:22725,39640:22739,39641:22737,39642:22743,39643:22745,39644:22744,39645:22757,39646:22748,39647:22756,39648:22751,39649:22767,39650:22778,39651:22777,39652:22779,39653:22780,39654:22781,39655:22786,39656:22794,39657:22800,39658:22811,39659:26790,39660:22821,39661:22828,39662:22829,39663:22834,39664:22840,39665:22846,39666:31442,39667:22869,39668:22864,39669:22862,39670:22874,39671:22872,39672:22882,39673:22880,\n39674:22887,39675:22892,39676:22889,39744:22904,39745:22913,39746:22941,39747:20318,39748:20395,39749:22947,39750:22962,39751:22982,39752:23016,39753:23004,39754:22925,39755:23001,39756:23002,39757:23077,39758:23071,39759:23057,39760:23068,39761:23049,39762:23066,39763:23104,39764:23148,39765:23113,39766:23093,39767:23094,39768:23138,39769:23146,39770:23194,39771:23228,39772:23230,39773:23243,39774:23234,39775:23229,39776:23267,39777:23255,39778:23270,39779:23273,39780:23254,39781:23290,39782:23291,39783:23308,39784:23307,39785:23318,39786:23346,39787:23248,39788:23338,39789:23350,39790:23358,39791:23363,39792:23365,39793:23360,39794:23377,39795:23381,39796:23386,39797:23387,39798:23397,39799:23401,39800:23408,39801:23411,39802:23413,39803:23416,39804:25992,39805:23418,39806:23424,39808:23427,39809:23462,39810:23480,39811:23491,39812:23495,39813:23497,39814:23508,39815:23504,39816:23524,39817:23526,39818:23522,39819:23518,39820:23525,39821:23531,39822:23536,39823:23542,39824:23539,39825:23557,39826:23559,39827:23560,39828:23565,39829:23571,39830:23584,39831:23586,39832:23592,39833:23608,39834:23609,39835:23617,39836:23622,39837:23630,39838:23635,39839:23632,39840:23631,39841:23409,39842:23660,39843:23662,39844:20066,39845:23670,39846:23673,39847:23692,39848:23697,39849:23700,39850:22939,39851:23723,39852:23739,39853:23734,39854:23740,39855:23735,39856:23749,39857:23742,39858:23751,39859:23769,39860:23785,39861:23805,39862:23802,39863:23789,39864:23948,39865:23786,39866:23819,39867:23829,39868:23831,39869:23900,39870:23839,39871:23835,39872:23825,39873:23828,39874:23842,39875:23834,39876:23833,39877:23832,39878:23884,39879:23890,39880:23886,39881:23883,39882:23916,39883:23923,39884:23926,39885:23943,39886:23940,39887:23938,39888:23970,39889:23965,39890:23980,39891:23982,39892:23997,39893:23952,39894:23991,39895:23996,39896:24009,39897:24013,39898:24019,39899:24018,39900:24022,39901:24027,39902:24043,39903:24050,39904:24053,39905:24075,39906:24090,39907:24089,39908:24081,39909:24091,39910:24118,39911:24119,39912:24132,39913:24131,39914:24128,39915:24142,39916:24151,39917:24148,39918:24159,39919:24162,39920:24164,39921:24135,39922:24181,39923:24182,39924:24186,39925:40636,39926:24191,39927:24224,39928:24257,39929:24258,39930:24264,39931:24272,39932:24271,4e4:24278,40001:24291,40002:24285,40003:24282,40004:24283,40005:24290,40006:24289,40007:24296,40008:24297,40009:24300,40010:24305,40011:24307,40012:24304,40013:24308,40014:24312,40015:24318,40016:24323,40017:24329,40018:24413,40019:24412,40020:24331,40021:24337,40022:24342,40023:24361,40024:24365,40025:24376,40026:24385,40027:24392,40028:24396,40029:24398,40030:24367,40031:24401,40032:24406,40033:24407,40034:24409,40035:24417,40036:24429,40037:24435,40038:24439,40039:24451,40040:24450,40041:24447,40042:24458,40043:24456,40044:24465,40045:24455,40046:24478,40047:24473,40048:24472,40049:24480,40050:24488,40051:24493,40052:24508,40053:24534,40054:24571,40055:24548,40056:24568,40057:24561,40058:24541,40059:24755,40060:24575,40061:24609,40062:24672,40064:24601,40065:24592,40066:24617,40067:24590,40068:24625,40069:24603,40070:24597,40071:24619,40072:24614,40073:24591,40074:24634,40075:24666,40076:24641,40077:24682,40078:24695,40079:24671,40080:24650,40081:24646,40082:24653,40083:24675,40084:24643,40085:24676,40086:24642,40087:24684,40088:24683,40089:24665,40090:24705,40091:24717,40092:24807,40093:24707,40094:24730,40095:24708,40096:24731,40097:24726,40098:24727,40099:24722,40100:24743,40101:24715,40102:24801,40103:24760,40104:24800,40105:24787,40106:24756,40107:24560,40108:24765,40109:24774,40110:24757,40111:24792,40112:24909,40113:24853,40114:24838,40115:24822,40116:24823,40117:24832,40118:24820,40119:24826,40120:24835,40121:24865,40122:24827,40123:24817,40124:24845,40125:24846,40126:24903,40127:24894,40128:24872,40129:24871,40130:24906,40131:24895,40132:24892,40133:24876,40134:24884,40135:24893,40136:24898,40137:24900,40138:24947,40139:24951,40140:24920,40141:24921,40142:24922,40143:24939,40144:24948,40145:24943,40146:24933,40147:24945,40148:24927,40149:24925,40150:24915,40151:24949,40152:24985,40153:24982,40154:24967,40155:25004,40156:24980,40157:24986,40158:24970,40159:24977,40160:25003,40161:25006,40162:25036,40163:25034,40164:25033,40165:25079,40166:25032,40167:25027,40168:25030,40169:25018,40170:25035,40171:32633,40172:25037,40173:25062,40174:25059,40175:25078,40176:25082,40177:25076,40178:25087,40179:25085,40180:25084,40181:25086,40182:25088,40183:25096,40184:25097,40185:25101,40186:25100,40187:25108,40188:25115,40256:25118,40257:25121,40258:25130,40259:25134,40260:25136,40261:25138,40262:25139,40263:25153,40264:25166,40265:25182,40266:25187,40267:25179,40268:25184,40269:25192,40270:25212,40271:25218,40272:25225,40273:25214,40274:25234,40275:25235,40276:25238,40277:25300,40278:25219,40279:25236,40280:25303,40281:25297,40282:25275,40283:25295,40284:25343,40285:25286,40286:25812,40287:25288,40288:25308,40289:25292,40290:25290,40291:25282,40292:25287,40293:25243,40294:25289,40295:25356,40296:25326,40297:25329,40298:25383,40299:25346,40300:25352,40301:25327,40302:25333,40303:25424,40304:25406,40305:25421,40306:25628,40307:25423,40308:25494,40309:25486,40310:25472,40311:25515,40312:25462,40313:25507,40314:25487,40315:25481,40316:25503,40317:25525,40318:25451,40320:25449,40321:25534,40322:25577,40323:25536,40324:25542,40325:25571,40326:25545,40327:25554,40328:25590,40329:25540,40330:25622,40331:25652,40332:25606,40333:25619,40334:25638,40335:25654,40336:25885,40337:25623,40338:25640,40339:25615,40340:25703,40341:25711,40342:25718,40343:25678,40344:25898,40345:25749,40346:25747,40347:25765,40348:25769,40349:25736,40350:25788,40351:25818,40352:25810,40353:25797,40354:25799,40355:25787,40356:25816,40357:25794,40358:25841,40359:25831,40360:33289,40361:25824,40362:25825,40363:25260,40364:25827,40365:25839,40366:25900,40367:25846,40368:25844,40369:25842,40370:25850,40371:25856,40372:25853,40373:25880,40374:25884,40375:25861,40376:25892,40377:25891,40378:25899,40379:25908,40380:25909,40381:25911,40382:25910,40383:25912,40384:30027,40385:25928,40386:25942,40387:25941,40388:25933,40389:25944,40390:25950,40391:25949,40392:25970,40393:25976,40394:25986,40395:25987,40396:35722,40397:26011,40398:26015,40399:26027,40400:26039,40401:26051,40402:26054,40403:26049,40404:26052,40405:26060,40406:26066,40407:26075,40408:26073,40409:26080,40410:26081,40411:26097,40412:26482,40413:26122,40414:26115,40415:26107,40416:26483,40417:26165,40418:26166,40419:26164,40420:26140,40421:26191,40422:26180,40423:26185,40424:26177,40425:26206,40426:26205,40427:26212,40428:26215,40429:26216,40430:26207,40431:26210,40432:26224,40433:26243,40434:26248,40435:26254,40436:26249,40437:26244,40438:26264,40439:26269,40440:26305,40441:26297,40442:26313,40443:26302,40444:26300,40512:26308,40513:26296,40514:26326,40515:26330,40516:26336,40517:26175,40518:26342,40519:26345,40520:26352,40521:26357,40522:26359,40523:26383,40524:26390,40525:26398,40526:26406,40527:26407,40528:38712,40529:26414,40530:26431,40531:26422,40532:26433,40533:26424,40534:26423,40535:26438,40536:26462,40537:26464,40538:26457,40539:26467,40540:26468,40541:26505,40542:26480,40543:26537,40544:26492,40545:26474,40546:26508,40547:26507,40548:26534,40549:26529,40550:26501,40551:26551,40552:26607,40553:26548,40554:26604,40555:26547,40556:26601,40557:26552,40558:26596,40559:26590,40560:26589,40561:26594,40562:26606,40563:26553,40564:26574,40565:26566,40566:26599,40567:27292,40568:26654,40569:26694,40570:26665,40571:26688,40572:26701,40573:26674,40574:26702,40576:26803,40577:26667,40578:26713,40579:26723,40580:26743,40581:26751,40582:26783,40583:26767,40584:26797,40585:26772,40586:26781,40587:26779,40588:26755,40589:27310,40590:26809,40591:26740,40592:26805,40593:26784,40594:26810,40595:26895,40596:26765,40597:26750,40598:26881,40599:26826,40600:26888,40601:26840,40602:26914,40603:26918,40604:26849,40605:26892,40606:26829,40607:26836,40608:26855,40609:26837,40610:26934,40611:26898,40612:26884,40613:26839,40614:26851,40615:26917,40616:26873,40617:26848,40618:26863,40619:26920,40620:26922,40621:26906,40622:26915,40623:26913,40624:26822,40625:27001,40626:26999,40627:26972,40628:27e3,40629:26987,40630:26964,40631:27006,40632:26990,40633:26937,40634:26996,40635:26941,40636:26969,40637:26928,40638:26977,40639:26974,40640:26973,40641:27009,40642:26986,40643:27058,40644:27054,40645:27088,40646:27071,40647:27073,40648:27091,40649:27070,40650:27086,40651:23528,40652:27082,40653:27101,40654:27067,40655:27075,40656:27047,40657:27182,40658:27025,40659:27040,40660:27036,40661:27029,40662:27060,40663:27102,40664:27112,40665:27138,40666:27163,40667:27135,40668:27402,40669:27129,40670:27122,40671:27111,40672:27141,40673:27057,40674:27166,40675:27117,40676:27156,40677:27115,40678:27146,40679:27154,40680:27329,40681:27171,40682:27155,40683:27204,40684:27148,40685:27250,40686:27190,40687:27256,40688:27207,40689:27234,40690:27225,40691:27238,40692:27208,40693:27192,40694:27170,40695:27280,40696:27277,40697:27296,40698:27268,40699:27298,40700:27299,40768:27287,40769:34327,40770:27323,40771:27331,40772:27330,40773:27320,40774:27315,40775:27308,40776:27358,40777:27345,40778:27359,40779:27306,40780:27354,40781:27370,40782:27387,40783:27397,40784:34326,40785:27386,40786:27410,40787:27414,40788:39729,40789:27423,40790:27448,40791:27447,40792:30428,40793:27449,40794:39150,40795:27463,40796:27459,40797:27465,40798:27472,40799:27481,40800:27476,40801:27483,40802:27487,40803:27489,40804:27512,40805:27513,40806:27519,40807:27520,40808:27524,40809:27523,40810:27533,40811:27544,40812:27541,40813:27550,40814:27556,40815:27562,40816:27563,40817:27567,40818:27570,40819:27569,40820:27571,40821:27575,40822:27580,40823:27590,40824:27595,40825:27603,40826:27615,40827:27628,40828:27627,40829:27635,40830:27631,40832:40638,40833:27656,40834:27667,40835:27668,40836:27675,40837:27684,40838:27683,40839:27742,40840:27733,40841:27746,40842:27754,40843:27778,40844:27789,40845:27802,40846:27777,40847:27803,40848:27774,40849:27752,40850:27763,40851:27794,40852:27792,40853:27844,40854:27889,40855:27859,40856:27837,40857:27863,40858:27845,40859:27869,40860:27822,40861:27825,40862:27838,40863:27834,40864:27867,40865:27887,40866:27865,40867:27882,40868:27935,40869:34893,40870:27958,40871:27947,40872:27965,40873:27960,40874:27929,40875:27957,40876:27955,40877:27922,40878:27916,40879:28003,40880:28051,40881:28004,40882:27994,40883:28025,40884:27993,40885:28046,40886:28053,40887:28644,40888:28037,40889:28153,40890:28181,40891:28170,40892:28085,40893:28103,40894:28134,40895:28088,40896:28102,40897:28140,40898:28126,40899:28108,40900:28136,40901:28114,40902:28101,40903:28154,40904:28121,40905:28132,40906:28117,40907:28138,40908:28142,40909:28205,40910:28270,40911:28206,40912:28185,40913:28274,40914:28255,40915:28222,40916:28195,40917:28267,40918:28203,40919:28278,40920:28237,40921:28191,40922:28227,40923:28218,40924:28238,40925:28196,40926:28415,40927:28189,40928:28216,40929:28290,40930:28330,40931:28312,40932:28361,40933:28343,40934:28371,40935:28349,40936:28335,40937:28356,40938:28338,40939:28372,40940:28373,40941:28303,40942:28325,40943:28354,40944:28319,40945:28481,40946:28433,40947:28748,40948:28396,40949:28408,40950:28414,40951:28479,40952:28402,40953:28465,40954:28399,40955:28466,40956:28364,161:65377,162:65378,163:65379,164:65380,165:65381,166:65382,167:65383,168:65384,169:65385,170:65386,171:65387,172:65388,173:65389,174:65390,175:65391,176:65392,177:65393,178:65394,179:65395,180:65396,181:65397,182:65398,183:65399,184:65400,185:65401,186:65402,187:65403,188:65404,189:65405,190:65406,191:65407,192:65408,193:65409,194:65410,195:65411,196:65412,197:65413,198:65414,199:65415,200:65416,201:65417,202:65418,203:65419,204:65420,205:65421,206:65422,207:65423,208:65424,209:65425,210:65426,211:65427,212:65428,213:65429,214:65430,215:65431,216:65432,217:65433,218:65434,219:65435,220:65436,221:65437,222:65438,223:65439,57408:28478,57409:28435,57410:28407,57411:28550,57412:28538,57413:28536,57414:28545,57415:28544,57416:28527,57417:28507,57418:28659,57419:28525,57420:28546,57421:28540,57422:28504,57423:28558,57424:28561,57425:28610,57426:28518,57427:28595,57428:28579,57429:28577,57430:28580,57431:28601,57432:28614,57433:28586,57434:28639,57435:28629,57436:28652,57437:28628,57438:28632,57439:28657,57440:28654,57441:28635,57442:28681,57443:28683,57444:28666,57445:28689,57446:28673,57447:28687,57448:28670,57449:28699,57450:28698,57451:28532,57452:28701,57453:28696,57454:28703,57455:28720,57456:28734,57457:28722,57458:28753,57459:28771,57460:28825,57461:28818,57462:28847,57463:28913,57464:28844,57465:28856,57466:28851,57467:28846,57468:28895,57469:28875,57470:28893,57472:28889,57473:28937,57474:28925,57475:28956,57476:28953,57477:29029,57478:29013,57479:29064,57480:29030,57481:29026,57482:29004,57483:29014,57484:29036,57485:29071,57486:29179,57487:29060,57488:29077,57489:29096,57490:29100,57491:29143,57492:29113,57493:29118,57494:29138,57495:29129,57496:29140,57497:29134,57498:29152,57499:29164,57500:29159,57501:29173,57502:29180,57503:29177,57504:29183,57505:29197,57506:29200,57507:29211,57508:29224,57509:29229,57510:29228,57511:29232,57512:29234,57513:29243,57514:29244,57515:29247,57516:29248,57517:29254,57518:29259,57519:29272,57520:29300,57521:29310,57522:29314,57523:29313,57524:29319,57525:29330,57526:29334,57527:29346,57528:29351,57529:29369,57530:29362,57531:29379,57532:29382,57533:29380,57534:29390,57535:29394,57536:29410,57537:29408,57538:29409,57539:29433,57540:29431,57541:20495,57542:29463,57543:29450,57544:29468,57545:29462,57546:29469,57547:29492,57548:29487,57549:29481,57550:29477,57551:29502,57552:29518,57553:29519,57554:40664,57555:29527,57556:29546,57557:29544,57558:29552,57559:29560,57560:29557,57561:29563,57562:29562,57563:29640,57564:29619,57565:29646,57566:29627,57567:29632,57568:29669,57569:29678,57570:29662,57571:29858,57572:29701,57573:29807,57574:29733,57575:29688,57576:29746,57577:29754,57578:29781,57579:29759,57580:29791,57581:29785,57582:29761,57583:29788,57584:29801,57585:29808,57586:29795,57587:29802,57588:29814,57589:29822,57590:29835,57591:29854,57592:29863,57593:29898,57594:29903,57595:29908,57596:29681,57664:29920,57665:29923,57666:29927,57667:29929,57668:29934,57669:29938,57670:29936,57671:29937,57672:29944,57673:29943,57674:29956,57675:29955,57676:29957,57677:29964,57678:29966,57679:29965,57680:29973,57681:29971,57682:29982,57683:29990,57684:29996,57685:30012,57686:30020,57687:30029,57688:30026,57689:30025,57690:30043,57691:30022,57692:30042,57693:30057,57694:30052,57695:30055,57696:30059,57697:30061,57698:30072,57699:30070,57700:30086,57701:30087,57702:30068,57703:30090,57704:30089,57705:30082,57706:30100,57707:30106,57708:30109,57709:30117,57710:30115,57711:30146,57712:30131,57713:30147,57714:30133,57715:30141,57716:30136,57717:30140,57718:30129,57719:30157,57720:30154,57721:30162,57722:30169,57723:30179,57724:30174,57725:30206,57726:30207,57728:30204,57729:30209,57730:30192,57731:30202,57732:30194,57733:30195,57734:30219,57735:30221,57736:30217,57737:30239,57738:30247,57739:30240,57740:30241,57741:30242,57742:30244,57743:30260,57744:30256,57745:30267,57746:30279,57747:30280,57748:30278,57749:30300,57750:30296,57751:30305,57752:30306,57753:30312,57754:30313,57755:30314,57756:30311,57757:30316,57758:30320,57759:30322,57760:30326,57761:30328,57762:30332,57763:30336,57764:30339,57765:30344,57766:30347,57767:30350,57768:30358,57769:30355,57770:30361,57771:30362,57772:30384,57773:30388,57774:30392,57775:30393,57776:30394,57777:30402,57778:30413,57779:30422,57780:30418,57781:30430,57782:30433,57783:30437,57784:30439,57785:30442,57786:34351,57787:30459,57788:30472,57789:30471,57790:30468,57791:30505,57792:30500,57793:30494,57794:30501,57795:30502,57796:30491,57797:30519,57798:30520,57799:30535,57800:30554,57801:30568,57802:30571,57803:30555,57804:30565,57805:30591,57806:30590,57807:30585,57808:30606,57809:30603,57810:30609,57811:30624,57812:30622,57813:30640,57814:30646,57815:30649,57816:30655,57817:30652,57818:30653,57819:30651,57820:30663,57821:30669,57822:30679,57823:30682,57824:30684,57825:30691,57826:30702,57827:30716,57828:30732,57829:30738,57830:31014,57831:30752,57832:31018,57833:30789,57834:30862,57835:30836,57836:30854,57837:30844,57838:30874,57839:30860,57840:30883,57841:30901,57842:30890,57843:30895,57844:30929,57845:30918,57846:30923,57847:30932,57848:30910,57849:30908,57850:30917,57851:30922,57852:30956,57920:30951,57921:30938,57922:30973,57923:30964,57924:30983,57925:30994,57926:30993,57927:31001,57928:31020,57929:31019,57930:31040,57931:31072,57932:31063,57933:31071,57934:31066,57935:31061,57936:31059,57937:31098,57938:31103,57939:31114,57940:31133,57941:31143,57942:40779,57943:31146,57944:31150,57945:31155,57946:31161,57947:31162,57948:31177,57949:31189,57950:31207,57951:31212,57952:31201,57953:31203,57954:31240,57955:31245,57956:31256,57957:31257,57958:31264,57959:31263,57960:31104,57961:31281,57962:31291,57963:31294,57964:31287,57965:31299,57966:31319,57967:31305,57968:31329,57969:31330,57970:31337,57971:40861,57972:31344,57973:31353,57974:31357,57975:31368,57976:31383,57977:31381,57978:31384,57979:31382,57980:31401,57981:31432,57982:31408,57984:31414,57985:31429,57986:31428,57987:31423,57988:36995,57989:31431,57990:31434,57991:31437,57992:31439,57993:31445,57994:31443,57995:31449,57996:31450,57997:31453,57998:31457,57999:31458,58e3:31462,58001:31469,58002:31472,58003:31490,58004:31503,58005:31498,58006:31494,58007:31539,58008:31512,58009:31513,58010:31518,58011:31541,58012:31528,58013:31542,58014:31568,58015:31610,58016:31492,58017:31565,58018:31499,58019:31564,58020:31557,58021:31605,58022:31589,58023:31604,58024:31591,58025:31600,58026:31601,58027:31596,58028:31598,58029:31645,58030:31640,58031:31647,58032:31629,58033:31644,58034:31642,58035:31627,58036:31634,58037:31631,58038:31581,58039:31641,58040:31691,58041:31681,58042:31692,58043:31695,58044:31668,58045:31686,58046:31709,58047:31721,58048:31761,58049:31764,58050:31718,58051:31717,58052:31840,58053:31744,58054:31751,58055:31763,58056:31731,58057:31735,58058:31767,58059:31757,58060:31734,58061:31779,58062:31783,58063:31786,58064:31775,58065:31799,58066:31787,58067:31805,58068:31820,58069:31811,58070:31828,58071:31823,58072:31808,58073:31824,58074:31832,58075:31839,58076:31844,58077:31830,58078:31845,58079:31852,58080:31861,58081:31875,58082:31888,58083:31908,58084:31917,58085:31906,58086:31915,58087:31905,58088:31912,58089:31923,58090:31922,58091:31921,58092:31918,58093:31929,58094:31933,58095:31936,58096:31941,58097:31938,58098:31960,58099:31954,58100:31964,58101:31970,58102:39739,58103:31983,58104:31986,58105:31988,58106:31990,58107:31994,58108:32006,58176:32002,58177:32028,58178:32021,58179:32010,58180:32069,58181:32075,58182:32046,58183:32050,58184:32063,58185:32053,58186:32070,58187:32115,58188:32086,58189:32078,58190:32114,58191:32104,58192:32110,58193:32079,58194:32099,58195:32147,58196:32137,58197:32091,58198:32143,58199:32125,58200:32155,58201:32186,58202:32174,58203:32163,58204:32181,58205:32199,58206:32189,58207:32171,58208:32317,58209:32162,58210:32175,58211:32220,58212:32184,58213:32159,58214:32176,58215:32216,58216:32221,58217:32228,58218:32222,58219:32251,58220:32242,58221:32225,58222:32261,58223:32266,58224:32291,58225:32289,58226:32274,58227:32305,58228:32287,58229:32265,58230:32267,58231:32290,58232:32326,58233:32358,58234:32315,58235:32309,58236:32313,58237:32323,58238:32311,58240:32306,58241:32314,58242:32359,58243:32349,58244:32342,58245:32350,58246:32345,58247:32346,58248:32377,58249:32362,58250:32361,58251:32380,58252:32379,58253:32387,58254:32213,58255:32381,58256:36782,58257:32383,58258:32392,58259:32393,58260:32396,58261:32402,58262:32400,58263:32403,58264:32404,58265:32406,58266:32398,58267:32411,58268:32412,58269:32568,58270:32570,58271:32581,58272:32588,58273:32589,58274:32590,58275:32592,58276:32593,58277:32597,58278:32596,58279:32600,58280:32607,58281:32608,58282:32616,58283:32617,58284:32615,58285:32632,58286:32642,58287:32646,58288:32643,58289:32648,58290:32647,58291:32652,58292:32660,58293:32670,58294:32669,58295:32666,58296:32675,58297:32687,58298:32690,58299:32697,58300:32686,58301:32694,58302:32696,58303:35697,58304:32709,58305:32710,58306:32714,58307:32725,58308:32724,58309:32737,58310:32742,58311:32745,58312:32755,58313:32761,58314:39132,58315:32774,58316:32772,58317:32779,58318:32786,58319:32792,58320:32793,58321:32796,58322:32801,58323:32808,58324:32831,58325:32827,58326:32842,58327:32838,58328:32850,58329:32856,58330:32858,58331:32863,58332:32866,58333:32872,58334:32883,58335:32882,58336:32880,58337:32886,58338:32889,58339:32893,58340:32895,58341:32900,58342:32902,58343:32901,58344:32923,58345:32915,58346:32922,58347:32941,58348:20880,58349:32940,58350:32987,58351:32997,58352:32985,58353:32989,58354:32964,58355:32986,58356:32982,58357:33033,58358:33007,58359:33009,58360:33051,58361:33065,58362:33059,58363:33071,58364:33099,58432:38539,58433:33094,58434:33086,58435:33107,58436:33105,58437:33020,58438:33137,58439:33134,58440:33125,58441:33126,58442:33140,58443:33155,58444:33160,58445:33162,58446:33152,58447:33154,58448:33184,58449:33173,58450:33188,58451:33187,58452:33119,58453:33171,58454:33193,58455:33200,58456:33205,58457:33214,58458:33208,58459:33213,58460:33216,58461:33218,58462:33210,58463:33225,58464:33229,58465:33233,58466:33241,58467:33240,58468:33224,58469:33242,58470:33247,58471:33248,58472:33255,58473:33274,58474:33275,58475:33278,58476:33281,58477:33282,58478:33285,58479:33287,58480:33290,58481:33293,58482:33296,58483:33302,58484:33321,58485:33323,58486:33336,58487:33331,58488:33344,58489:33369,58490:33368,58491:33373,58492:33370,58493:33375,58494:33380,58496:33378,58497:33384,58498:33386,58499:33387,58500:33326,58501:33393,58502:33399,58503:33400,58504:33406,58505:33421,58506:33426,58507:33451,58508:33439,58509:33467,58510:33452,58511:33505,58512:33507,58513:33503,58514:33490,58515:33524,58516:33523,58517:33530,58518:33683,58519:33539,58520:33531,58521:33529,58522:33502,58523:33542,58524:33500,58525:33545,58526:33497,58527:33589,58528:33588,58529:33558,58530:33586,58531:33585,58532:33600,58533:33593,58534:33616,58535:33605,58536:33583,58537:33579,58538:33559,58539:33560,58540:33669,58541:33690,58542:33706,58543:33695,58544:33698,58545:33686,58546:33571,58547:33678,58548:33671,58549:33674,58550:33660,58551:33717,58552:33651,58553:33653,58554:33696,58555:33673,58556:33704,58557:33780,58558:33811,58559:33771,58560:33742,58561:33789,58562:33795,58563:33752,58564:33803,58565:33729,58566:33783,58567:33799,58568:33760,58569:33778,58570:33805,58571:33826,58572:33824,58573:33725,58574:33848,58575:34054,58576:33787,58577:33901,58578:33834,58579:33852,58580:34138,58581:33924,58582:33911,58583:33899,58584:33965,58585:33902,58586:33922,58587:33897,58588:33862,58589:33836,58590:33903,58591:33913,58592:33845,58593:33994,58594:33890,58595:33977,58596:33983,58597:33951,58598:34009,58599:33997,58600:33979,58601:34010,58602:34e3,58603:33985,58604:33990,58605:34006,58606:33953,58607:34081,58608:34047,58609:34036,58610:34071,58611:34072,58612:34092,58613:34079,58614:34069,58615:34068,58616:34044,58617:34112,58618:34147,58619:34136,58620:34120,58688:34113,58689:34306,58690:34123,58691:34133,58692:34176,58693:34212,58694:34184,58695:34193,58696:34186,58697:34216,58698:34157,58699:34196,58700:34203,58701:34282,58702:34183,58703:34204,58704:34167,58705:34174,58706:34192,58707:34249,58708:34234,58709:34255,58710:34233,58711:34256,58712:34261,58713:34269,58714:34277,58715:34268,58716:34297,58717:34314,58718:34323,58719:34315,58720:34302,58721:34298,58722:34310,58723:34338,58724:34330,58725:34352,58726:34367,58727:34381,58728:20053,58729:34388,58730:34399,58731:34407,58732:34417,58733:34451,58734:34467,58735:34473,58736:34474,58737:34443,58738:34444,58739:34486,58740:34479,58741:34500,58742:34502,58743:34480,58744:34505,58745:34851,58746:34475,58747:34516,58748:34526,58749:34537,58750:34540,58752:34527,58753:34523,58754:34543,58755:34578,58756:34566,58757:34568,58758:34560,58759:34563,58760:34555,58761:34577,58762:34569,58763:34573,58764:34553,58765:34570,58766:34612,58767:34623,58768:34615,58769:34619,58770:34597,58771:34601,58772:34586,58773:34656,58774:34655,58775:34680,58776:34636,58777:34638,58778:34676,58779:34647,58780:34664,58781:34670,58782:34649,58783:34643,58784:34659,58785:34666,58786:34821,58787:34722,58788:34719,58789:34690,58790:34735,58791:34763,58792:34749,58793:34752,58794:34768,58795:38614,58796:34731,58797:34756,58798:34739,58799:34759,58800:34758,58801:34747,58802:34799,58803:34802,58804:34784,58805:34831,58806:34829,58807:34814,58808:34806,58809:34807,58810:34830,58811:34770,58812:34833,58813:34838,58814:34837,58815:34850,58816:34849,58817:34865,58818:34870,58819:34873,58820:34855,58821:34875,58822:34884,58823:34882,58824:34898,58825:34905,58826:34910,58827:34914,58828:34923,58829:34945,58830:34942,58831:34974,58832:34933,58833:34941,58834:34997,58835:34930,58836:34946,58837:34967,58838:34962,58839:34990,58840:34969,58841:34978,58842:34957,58843:34980,58844:34992,58845:35007,58846:34993,58847:35011,58848:35012,58849:35028,58850:35032,58851:35033,58852:35037,58853:35065,58854:35074,58855:35068,58856:35060,58857:35048,58858:35058,58859:35076,58860:35084,58861:35082,58862:35091,58863:35139,58864:35102,58865:35109,58866:35114,58867:35115,58868:35137,58869:35140,58870:35131,58871:35126,58872:35128,58873:35148,58874:35101,58875:35168,58876:35166,58944:35174,58945:35172,58946:35181,58947:35178,58948:35183,58949:35188,58950:35191,58951:35198,58952:35203,58953:35208,58954:35210,58955:35219,58956:35224,58957:35233,58958:35241,58959:35238,58960:35244,58961:35247,58962:35250,58963:35258,58964:35261,58965:35263,58966:35264,58967:35290,58968:35292,58969:35293,58970:35303,58971:35316,58972:35320,58973:35331,58974:35350,58975:35344,58976:35340,58977:35355,58978:35357,58979:35365,58980:35382,58981:35393,58982:35419,58983:35410,58984:35398,58985:35400,58986:35452,58987:35437,58988:35436,58989:35426,58990:35461,58991:35458,58992:35460,58993:35496,58994:35489,58995:35473,58996:35493,58997:35494,58998:35482,58999:35491,59e3:35524,59001:35533,59002:35522,59003:35546,59004:35563,59005:35571,59006:35559,59008:35556,59009:35569,59010:35604,59011:35552,59012:35554,59013:35575,59014:35550,59015:35547,59016:35596,59017:35591,59018:35610,59019:35553,59020:35606,59021:35600,59022:35607,59023:35616,59024:35635,59025:38827,59026:35622,59027:35627,59028:35646,59029:35624,59030:35649,59031:35660,59032:35663,59033:35662,59034:35657,59035:35670,59036:35675,59037:35674,59038:35691,59039:35679,59040:35692,59041:35695,59042:35700,59043:35709,59044:35712,59045:35724,59046:35726,59047:35730,59048:35731,59049:35734,59050:35737,59051:35738,59052:35898,59053:35905,59054:35903,59055:35912,59056:35916,59057:35918,59058:35920,59059:35925,59060:35938,59061:35948,59062:35960,59063:35962,59064:35970,59065:35977,59066:35973,59067:35978,59068:35981,59069:35982,59070:35988,59071:35964,59072:35992,59073:25117,59074:36013,59075:36010,59076:36029,59077:36018,59078:36019,59079:36014,59080:36022,59081:36040,59082:36033,59083:36068,59084:36067,59085:36058,59086:36093,59087:36090,59088:36091,59089:36100,59090:36101,59091:36106,59092:36103,59093:36111,59094:36109,59095:36112,59096:40782,59097:36115,59098:36045,59099:36116,59100:36118,59101:36199,59102:36205,59103:36209,59104:36211,59105:36225,59106:36249,59107:36290,59108:36286,59109:36282,59110:36303,59111:36314,59112:36310,59113:36300,59114:36315,59115:36299,59116:36330,59117:36331,59118:36319,59119:36323,59120:36348,59121:36360,59122:36361,59123:36351,59124:36381,59125:36382,59126:36368,59127:36383,59128:36418,59129:36405,59130:36400,59131:36404,59132:36426,59200:36423,59201:36425,59202:36428,59203:36432,59204:36424,59205:36441,59206:36452,59207:36448,59208:36394,59209:36451,59210:36437,59211:36470,59212:36466,59213:36476,59214:36481,59215:36487,59216:36485,59217:36484,59218:36491,59219:36490,59220:36499,59221:36497,59222:36500,59223:36505,59224:36522,59225:36513,59226:36524,59227:36528,59228:36550,59229:36529,59230:36542,59231:36549,59232:36552,59233:36555,59234:36571,59235:36579,59236:36604,59237:36603,59238:36587,59239:36606,59240:36618,59241:36613,59242:36629,59243:36626,59244:36633,59245:36627,59246:36636,59247:36639,59248:36635,59249:36620,59250:36646,59251:36659,59252:36667,59253:36665,59254:36677,59255:36674,59256:36670,59257:36684,59258:36681,59259:36678,59260:36686,59261:36695,59262:36700,59264:36706,59265:36707,59266:36708,59267:36764,59268:36767,59269:36771,59270:36781,59271:36783,59272:36791,59273:36826,59274:36837,59275:36834,59276:36842,59277:36847,59278:36999,59279:36852,59280:36869,59281:36857,59282:36858,59283:36881,59284:36885,59285:36897,59286:36877,59287:36894,59288:36886,59289:36875,59290:36903,59291:36918,59292:36917,59293:36921,59294:36856,59295:36943,59296:36944,59297:36945,59298:36946,59299:36878,59300:36937,59301:36926,59302:36950,59303:36952,59304:36958,59305:36968,59306:36975,59307:36982,59308:38568,59309:36978,59310:36994,59311:36989,59312:36993,59313:36992,59314:37002,59315:37001,59316:37007,59317:37032,59318:37039,59319:37041,59320:37045,59321:37090,59322:37092,59323:25160,59324:37083,59325:37122,59326:37138,59327:37145,59328:37170,59329:37168,59330:37194,59331:37206,59332:37208,59333:37219,59334:37221,59335:37225,59336:37235,59337:37234,59338:37259,59339:37257,59340:37250,59341:37282,59342:37291,59343:37295,59344:37290,59345:37301,59346:37300,59347:37306,59348:37312,59349:37313,59350:37321,59351:37323,59352:37328,59353:37334,59354:37343,59355:37345,59356:37339,59357:37372,59358:37365,59359:37366,59360:37406,59361:37375,59362:37396,59363:37420,59364:37397,59365:37393,59366:37470,59367:37463,59368:37445,59369:37449,59370:37476,59371:37448,59372:37525,59373:37439,59374:37451,59375:37456,59376:37532,59377:37526,59378:37523,59379:37531,59380:37466,59381:37583,59382:37561,59383:37559,59384:37609,59385:37647,59386:37626,59387:37700,59388:37678,59456:37657,59457:37666,59458:37658,59459:37667,59460:37690,59461:37685,59462:37691,59463:37724,59464:37728,59465:37756,59466:37742,59467:37718,59468:37808,59469:37804,59470:37805,59471:37780,59472:37817,59473:37846,59474:37847,59475:37864,59476:37861,59477:37848,59478:37827,59479:37853,59480:37840,59481:37832,59482:37860,59483:37914,59484:37908,59485:37907,59486:37891,59487:37895,59488:37904,59489:37942,59490:37931,59491:37941,59492:37921,59493:37946,59494:37953,59495:37970,59496:37956,59497:37979,59498:37984,59499:37986,59500:37982,59501:37994,59502:37417,59503:38e3,59504:38005,59505:38007,59506:38013,59507:37978,59508:38012,59509:38014,59510:38017,59511:38015,59512:38274,59513:38279,59514:38282,59515:38292,59516:38294,59517:38296,59518:38297,59520:38304,59521:38312,59522:38311,59523:38317,59524:38332,59525:38331,59526:38329,59527:38334,59528:38346,59529:28662,59530:38339,59531:38349,59532:38348,59533:38357,59534:38356,59535:38358,59536:38364,59537:38369,59538:38373,59539:38370,59540:38433,59541:38440,59542:38446,59543:38447,59544:38466,59545:38476,59546:38479,59547:38475,59548:38519,59549:38492,59550:38494,59551:38493,59552:38495,59553:38502,59554:38514,59555:38508,59556:38541,59557:38552,59558:38549,59559:38551,59560:38570,59561:38567,59562:38577,59563:38578,59564:38576,59565:38580,59566:38582,59567:38584,59568:38585,59569:38606,59570:38603,59571:38601,59572:38605,59573:35149,59574:38620,59575:38669,59576:38613,59577:38649,59578:38660,59579:38662,59580:38664,59581:38675,59582:38670,59583:38673,59584:38671,59585:38678,59586:38681,59587:38692,59588:38698,59589:38704,59590:38713,59591:38717,59592:38718,59593:38724,59594:38726,59595:38728,59596:38722,59597:38729,59598:38748,59599:38752,59600:38756,59601:38758,59602:38760,59603:21202,59604:38763,59605:38769,59606:38777,59607:38789,59608:38780,59609:38785,59610:38778,59611:38790,59612:38795,59613:38799,59614:38800,59615:38812,59616:38824,59617:38822,59618:38819,59619:38835,59620:38836,59621:38851,59622:38854,59623:38856,\n59624:38859,59625:38876,59626:38893,59627:40783,59628:38898,59629:31455,59630:38902,59631:38901,59632:38927,59633:38924,59634:38968,59635:38948,59636:38945,59637:38967,59638:38973,59639:38982,59640:38991,59641:38987,59642:39019,59643:39023,59644:39024,59712:39025,59713:39028,59714:39027,59715:39082,59716:39087,59717:39089,59718:39094,59719:39108,59720:39107,59721:39110,59722:39145,59723:39147,59724:39171,59725:39177,59726:39186,59727:39188,59728:39192,59729:39201,59730:39197,59731:39198,59732:39204,59733:39200,59734:39212,59735:39214,59736:39229,59737:39230,59738:39234,59739:39241,59740:39237,59741:39248,59742:39243,59743:39249,59744:39250,59745:39244,59746:39253,59747:39319,59748:39320,59749:39333,59750:39341,59751:39342,59752:39356,59753:39391,59754:39387,59755:39389,59756:39384,59757:39377,59758:39405,59759:39406,59760:39409,59761:39410,59762:39419,59763:39416,59764:39425,59765:39439,59766:39429,59767:39394,59768:39449,59769:39467,59770:39479,59771:39493,59772:39490,59773:39488,59774:39491,59776:39486,59777:39509,59778:39501,59779:39515,59780:39511,59781:39519,59782:39522,59783:39525,59784:39524,59785:39529,59786:39531,59787:39530,59788:39597,59789:39600,59790:39612,59791:39616,59792:39631,59793:39633,59794:39635,59795:39636,59796:39646,59797:39647,59798:39650,59799:39651,59800:39654,59801:39663,59802:39659,59803:39662,59804:39668,59805:39665,59806:39671,59807:39675,59808:39686,59809:39704,59810:39706,59811:39711,59812:39714,59813:39715,59814:39717,59815:39719,59816:39720,59817:39721,59818:39722,59819:39726,59820:39727,59821:39730,59822:39748,59823:39747,59824:39759,59825:39757,59826:39758,59827:39761,59828:39768,59829:39796,59830:39827,59831:39811,59832:39825,59833:39830,59834:39831,59835:39839,59836:39840,59837:39848,59838:39860,59839:39872,59840:39882,59841:39865,59842:39878,59843:39887,59844:39889,59845:39890,59846:39907,59847:39906,59848:39908,59849:39892,59850:39905,59851:39994,59852:39922,59853:39921,59854:39920,59855:39957,59856:39956,59857:39945,59858:39955,59859:39948,59860:39942,59861:39944,59862:39954,59863:39946,59864:39940,59865:39982,59866:39963,59867:39973,59868:39972,59869:39969,59870:39984,59871:40007,59872:39986,59873:40006,59874:39998,59875:40026,59876:40032,59877:40039,59878:40054,59879:40056,59880:40167,59881:40172,59882:40176,59883:40201,59884:40200,59885:40171,59886:40195,59887:40198,59888:40234,59889:40230,59890:40367,59891:40227,59892:40223,59893:40260,59894:40213,59895:40210,59896:40257,59897:40255,59898:40254,59899:40262,59900:40264,59968:40285,59969:40286,59970:40292,59971:40273,59972:40272,59973:40281,59974:40306,59975:40329,59976:40327,59977:40363,59978:40303,59979:40314,59980:40346,59981:40356,59982:40361,59983:40370,59984:40388,59985:40385,59986:40379,59987:40376,59988:40378,59989:40390,59990:40399,59991:40386,59992:40409,59993:40403,59994:40440,59995:40422,59996:40429,59997:40431,59998:40445,59999:40474,6e4:40475,60001:40478,60002:40565,60003:40569,60004:40573,60005:40577,60006:40584,60007:40587,60008:40588,60009:40594,60010:40597,60011:40593,60012:40605,60013:40613,60014:40617,60015:40632,60016:40618,60017:40621,60018:38753,60019:40652,60020:40654,60021:40655,60022:40656,60023:40660,60024:40668,60025:40670,60026:40669,60027:40672,60028:40677,60029:40680,60030:40687,60032:40692,60033:40694,60034:40695,60035:40697,60036:40699,60037:40700,60038:40701,60039:40711,60040:40712,60041:30391,60042:40725,60043:40737,60044:40748,60045:40766,60046:40778,60047:40786,60048:40788,60049:40803,60050:40799,60051:40800,60052:40801,60053:40806,60054:40807,60055:40812,60056:40810,60057:40823,60058:40818,60059:40822,60060:40853,60061:40860,60062:40864,60063:22575,60064:27079,60065:36953,60066:29796,60067:20956,60068:29081}},function(o,e,r){"use strict";function t(o,e,r,t){e.degree()=t/2;){var n=c,l=a;if(c=s,a=d,c.isZero())return null;s=n;for(var i=o.zero,B=c.getCoefficient(c.degree()),k=o.inverse(B);s.degree()>=c.degree()&&!s.isZero();){var u=s.degree()-c.degree(),C=o.multiply(s.getCoefficient(s.degree()),k);i=i.addOrSubtract(o.buildMonomial(u,C)),s=s.addOrSubtract(c.multiplyByMonomial(u,C))}if(d=i.multiplyPoly(a).addOrSubtract(l),s.degree()>=c.degree())return null}var m=d.getCoefficient(0);if(0===m)return null;var f=o.inverse(m);return[d.multiply(f),s.multiply(f)];var w}function c(o,e){var r=e.degree();if(1===r)return[e.getCoefficient(1)];for(var t=new Array(r),c=0,s=1;s=a&&d>=n?(l=[e,o,r],t=l[0],c=l[1],s=l[2]):n>=d&&n>=a?(i=[o,e,r],t=i[0],c=i[1],s=i[2]):(B=[o,r,e],t=B[0],c=B[1],s=B[2]),(s.x-c.x)*(t.y-c.y)-(s.y-c.y)*(t.x-c.x)<0&&(k=[s,t],t=k[0],s=k[1]),{bottomLeft:t,topLeft:c,topRight:s};var l,i,B,k}function s(o,e,r,c){var s=(t(d(o,r,c,5))/7+t(d(o,e,c,5))/7+t(d(r,o,c,5))/7+t(d(e,o,c,5))/7)/4;if(s<1)throw new Error("Invalid module size");var a=Math.round(C(o,e)/s),n=Math.round(C(o,r)/s),l=Math.floor((a+n)/2)+7;switch(l%4){case 0:l++;break;case 2:l--}return{dimension:l,moduleSize:s}}function a(o,e,r,t){var c,s,a,d,n=[{x:Math.floor(o.x),y:Math.floor(o.y)}],l=Math.abs(e.y-o.y)>Math.abs(e.x-o.x);l?(c=Math.floor(o.y),s=Math.floor(o.x),a=Math.floor(e.y),d=Math.floor(e.x)):(c=Math.floor(o.x),s=Math.floor(o.y),a=Math.floor(e.x),d=Math.floor(e.y));for(var i=Math.abs(a-c),B=Math.abs(d-s),k=Math.floor(-i/2),u=c0){if(P===d)break;P+=m,k-=i}}for(var p=[],y=0;y=o.bottom.startX&&w<=o.bottom.endX||f>=o.bottom.startX&&w<=o.bottom.endX||w<=o.bottom.startX&&f>=o.bottom.endX&&l[2]/(o.bottom.endX-o.bottom.startX)k});v.length>0?v[0].bottom=P:r.push({top:P,bottom:P})}if(m){var h=e-l[4],p=h-l[3],P={startX:p,y:c,endX:h},v=d.filter(function(o){return p>=o.bottom.startX&&p<=o.bottom.endX||h>=o.bottom.startX&&p<=o.bottom.endX||p<=o.bottom.startX&&h>=o.bottom.endX&&l[2]/(o.bottom.endX-o.bottom.startX)k});v.length>0?v[0].bottom=P:d.push({top:P,bottom:P})}}}(i);e.push.apply(e,r.filter(function(o){return o.bottom.y!==c&&o.bottom.y-o.top.y>=2})),r=r.filter(function(o){return o.bottom.y===c}),a.push.apply(a,d.filter(function(o){return o.bottom.y!==c})),d=d.filter(function(o){return o.bottom.y===c})}(n);e.push.apply(e,r.filter(function(o){return o.bottom.y-o.top.y>=2})),a.push.apply(a,d);var i=e.filter(function(o){return o.bottom.y-o.top.y>=2}).map(function(e){var r=(e.top.startX+e.top.endX+e.bottom.startX+e.bottom.endX)/4,c=(e.top.y+e.bottom.y+1)/2;if(o.get(Math.round(r),Math.round(c))){\nvar s=[e.top.endX-e.top.startX,e.bottom.endX-e.bottom.startX,e.bottom.y-e.top.y+1],a=t(s)/s.length;return{score:l({x:Math.round(r),y:Math.round(c)},[1,1,3,1,1],o),x:r,y:c,size:a}}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score}).map(function(o,e,r){if(e>B)return null;var t=r.filter(function(o,r){return e!==r}).map(function(e){return{x:e.x,y:e.y,score:e.score+Math.pow(e.size-o.size,2)/o.size,size:e.size}}).sort(function(o,e){return o.score-e.score});if(t.length<2)return null;var c=o.score+t[0].score+t[1].score;return{points:[o].concat(t.slice(0,2)),score:c}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score});if(0===i.length)return null;var m,f,w=c(i[0].points[0],i[0].points[1],i[0].points[2]),P=w.topRight,v=w.topLeft,h=w.bottomLeft;try{L=s(v,P,h,o),m=L.dimension,f=L.moduleSize}catch(o){return null}var p={x:P.x-v.x+h.x,y:P.y-v.y+h.y},y=(C(v,h)+C(v,P))/2/f,b=1-3/y,g={x:v.x+b*(p.x-v.x),y:v.y+b*(p.y-v.y)},x=a.map(function(e){var r=(e.top.startX+e.top.endX+e.bottom.startX+e.bottom.endX)/4,c=(e.top.y+e.bottom.y+1)/2;if(o.get(Math.floor(r),Math.floor(c))){var s=[e.top.endX-e.top.startX,e.bottom.endX-e.bottom.startX,e.bottom.y-e.top.y+1];t(s);return{x:r,y:c,score:l({x:Math.floor(r),y:Math.floor(c)},[1,1,1],o)+C({x:r,y:c},g)}}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score}),M=y>=15&&x.length?x[0]:g;return{alignmentPattern:{x:M.x,y:M.y},bottomLeft:{x:h.x,y:h.y},dimension:m,topLeft:{x:v.x,y:v.y},topRight:{x:P.x,y:P.y}};var L}Object.defineProperty(e,"__esModule",{value:!0});var B=4,k=.5,u=1.5,C=function(o,e){return Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2))};e.locate=i}]).default}),self.addEventListener("message",function(o){var e=jsQR(o.data.data,o.data.width,o.data.height);e?postMessage(e.data):postMessage(null)});'],{type:"application/javascript"}),C=["delay","legacyMode","facingMode"];module.exports=(o=e=function(e){function o(e){s(this,o);var r=a(this,(o.__proto__||Object.getPrototypeOf(o)).call(this,e));return r.els={},r.state={mirrorVideo:!1},r.initiate=r.initiate.bind(r),r.initiateLegacyMode=r.initiateLegacyMode.bind(r),r.check=r.check.bind(r),r.handleVideo=r.handleVideo.bind(r),r.handleLoadStart=r.handleLoadStart.bind(r),r.handleInputChange=r.handleInputChange.bind(r),r.clearComponent=r.clearComponent.bind(r),r.handleReaderLoad=r.handleReaderLoad.bind(r),r.openImageDialog=r.openImageDialog.bind(r),r.handleWorkerMessage=r.handleWorkerMessage.bind(r),r.setRefFactory=r.setRefFactory.bind(r),r}return c(o,d),t(o,[{key:"componentDidMount",value:function(){this.worker=new Worker(URL.createObjectURL(m)),this.worker.onmessage=this.handleWorkerMessage,this.props.legacyMode?this.initiateLegacyMode():this.initiate()}},{key:"componentWillReceiveProps",value:function(e){var o=u(this.props,e,C),r=!0,t=!1,s=void 0;try{for(var a,c=o[Symbol.iterator]();!(r=(a=c.next()).done);r=!0){var n=a.value;if("facingMode"==n){this.clearComponent(),this.initiate(e);break}if("delay"==n)0!=this.props.delay||e.legacyMode||(this.timeout=setTimeout(this.check,e.delay)),0==e.delay&&clearTimeout(this.timeout);else if("legacyMode"==n){this.props.legacyMode&&!e.legacyMode?(this.clearComponent(),this.initiate(e)):(this.clearComponent(),this.componentDidUpdate=this.initiateLegacyMode);break}}}catch(d){t=!0,s=d}finally{try{!r&&c.return&&c.return()}finally{if(t)throw s}}}},{key:"shouldComponentUpdate",value:function(e,o){return o!==this.state||u(this.props,e,C).length>0}},{key:"componentWillUnmount",value:function(){this.worker&&(this.worker.terminate(),this.worker=void 0),this.clearComponent()}},{key:"clearComponent",value:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0),this.stopCamera&&this.stopCamera(),this.reader&&this.reader.removeEventListener("load",this.handleReaderLoad),this.els.img&&this.els.img.removeEventListener("load",this.check)}},{key:"initiate",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,o=e.onError,r=e.facingMode,t=/firefox/i.test(navigator.userAgent),s={};navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getSupportedConstraints&&(s=navigator.mediaDevices.getSupportedConstraints());var a={};s.facingMode&&(a.facingMode={ideal:r}),s.frameRate&&(a.frameRate={ideal:25,min:10}),(s.facingMode||t?Promise.resolve(e.constraints||a):k(r).then(function(o){return Object.assign({},{deviceId:o},e.constraints)})).then(function(e){return navigator.mediaDevices.getUserMedia({video:e})}).then(this.handleVideo).catch(o)}},{key:"handleVideo",value:function(e){var o=this.els.preview,r=this.props.facingMode;if(!o)return setTimeout(this.handleVideo,200,e);void 0!==(o||{}).srcObject?o.srcObject=e:void 0!==o.mozSrcObject?o.mozSrcObject=e:window.URL.createObjectURL?o.src=window.URL.createObjectURL(e):window.webkitURL?o.src=window.webkitURL.createObjectURL(e):o.src=e,o.playsInline=!0;var t=e.getTracks()[0];this.stopCamera=t.stop.bind(t),o.addEventListener("loadstart",this.handleLoadStart),this.setState({mirrorVideo:"user"==r,streamLabel:t.label})}},{key:"handleLoadStart",value:function(){var e=this.props,o=e.delay,r=e.onLoad,t=this.state,s=t.mirrorVideo,a=t.streamLabel,c=this.els.preview;c.play(),"function"==typeof r&&r({mirrorVideo:s,streamLabel:a}),"number"==typeof o&&(this.timeout=setTimeout(this.check,o)),c.removeEventListener("loadstart",this.handleLoadStart)}},{key:"check",value:function(){var e=this.props,o=e.legacyMode,r=e.resolution,t=e.delay,s=this.els,a=s.preview,c=s.canvas,n=s.img,d=Math.floor(o?n.naturalWidth:a.videoWidth),l=Math.floor(o?n.naturalHeight:a.videoHeight),i=0,k=0;if(o){var B=r/(d>l?d:l);l*=B,d*=B,c.width=d,c.height=l}else{var u=r/(d{return r.useContext(o.default)};exports.ConnectionStates=o.States,exports.default=i; +},{"react":"HdMw","../contexts/ConnectionContext":"d4le"}],"iwrI":[function(require,module,exports) { +"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var o in r)"default"!==o&&Object.prototype.hasOwnProperty.call(r,o)&&e(n,r,o);return t(n,r),n},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const o=r(require("react")),a=n(require("react-qr-code")),i=n(require("react-qr-reader")),l=n(require("../hooks/useConnection")),u=()=>{const{connect:e,clientInfo:t}=l.default(),r=o.useCallback(t=>{t&&e(JSON.parse(t))},[]);return o.useEffect(()=>{const t=window.location.hash;if(t){const r=t.substring(1),n=JSON.parse(atob(r));e(n)}console.log(t)},[]),o.default.createElement(o.default.Fragment,null,o.default.createElement("div",null,location.protocol,"//",location.host,location.pathname,"#",btoa(JSON.stringify(t))),o.default.createElement(a.default,{value:JSON.stringify(t),size:300}),o.default.createElement(i.default,{delay:300,onScan:r,onError:e=>{console.error(e)},style:{width:"300px",height:"300px"}}))};exports.default=u; +},{"react":"HdMw","react-qr-code":"iQ9p","react-qr-reader":"eeXo","../hooks/useConnection":"oCkq"}],"CvJj":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.__extends=e,exports.__rest=n,exports.__decorate=o,exports.__param=a,exports.__metadata=i,exports.__awaiter=c,exports.__generator=u,exports.__exportStar=l,exports.__values=s,exports.__read=p,exports.__spread=y,exports.__spreadArrays=h,exports.__spreadArray=d,exports.__await=_,exports.__asyncGenerator=v,exports.__asyncDelegator=b,exports.__asyncValues=w,exports.__makeTemplateObject=x,exports.__importStar=O,exports.__importDefault=g,exports.__classPrivateFieldGet=j,exports.__classPrivateFieldSet=P,exports.__createBinding=exports.__assign=void 0;var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};function e(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}var r=function(){return exports.__assign=r=Object.assign||function(t){for(var e,r=1,n=arguments.length;r=0;c--)(o=t[c])&&(i=(a<3?o(i):a>3?o(e,r,i):o(e,r))||i);return a>3&&i&&Object.defineProperty(e,r,i),i}function a(t,e){return function(r,n){e(r,n,t)}}function i(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function c(t,e,r,n){return new(r||(r=Promise))(function(o,a){function i(t){try{u(n.next(t))}catch(e){a(e)}}function c(t){try{u(n.throw(t))}catch(e){a(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r(function(t){t(e)})).then(i,c)}u((n=n.apply(t,e||[])).next())})}function u(t,e){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function p(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,a=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(c){o={error:c}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function y(){for(var t=[],e=0;e1||c(t,e)})})}function c(t,e){try{(r=o[t](e)).value instanceof _?Promise.resolve(r.value.v).then(u,f):l(a[0][2],r)}catch(n){l(a[0][3],n)}var r}function u(t){c("next",t)}function f(t){c("throw",t)}function l(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}}function b(t){var e,r;return e={},n("next"),n("throw",function(t){throw t}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,o){e[n]=t[n]?function(e){return(r=!r)?{value:_(t[n](e)),done:"return"===n}:o?o(e):e}:o}}function w(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t="function"==typeof s?s(t):t[Symbol.iterator](),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise(function(n,o){(function(t,e,r,n){Promise.resolve(n).then(function(e){t({value:e,done:r})},e)})(n,o,(e=t[r](e)).done,e.value)})}}}function x(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}exports.__createBinding=f;var m=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};function O(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&f(e,t,r);return m(e,t),e}function g(t){return t&&t.__esModule?t:{default:t}}function j(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)}function P(t,e,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(t,r):o?o.value=r:e.set(t,r),r} +},{}],"ZLzX":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.toFileWithPath=i,exports.COMMON_MIME_TYPES=void 0;var e=new Map([["avi","video/avi"],["gif","image/gif"],["ico","image/x-icon"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["mkv","video/x-matroska"],["mov","video/quicktime"],["mp4","video/mp4"],["pdf","application/pdf"],["png","image/png"],["zip","application/zip"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"]]);function i(e,i){var a=t(e);if("string"!=typeof a.path){var o=e.webkitRelativePath;Object.defineProperty(a,"path",{value:"string"==typeof i?i:"string"==typeof o&&o.length>0?o:e.name,writable:!1,configurable:!1,enumerable:!0})}return a}function t(i){var t=i.name;if(t&&-1!==t.lastIndexOf(".")&&!i.type){var a=t.split(".").pop().toLowerCase(),o=e.get(a);o&&Object.defineProperty(i,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return i}exports.COMMON_MIME_TYPES=e; +},{}],"oeLM":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromEvent=n;var r=require("tslib"),t=require("./file"),e=[".DS_Store","Thumbs.db"];function n(t){return(0,r.__awaiter)(this,void 0,void 0,function(){return(0,r.__generator)(this,function(r){return[2,i(t)&&t.dataTransfer?a(t.dataTransfer,t.type):u(t)]})})}function i(r){return!!r.dataTransfer}function u(r){return(o(r.target)&&r.target.files?f(r.target.files):[]).map(function(r){return(0,t.toFileWithPath)(r)})}function o(r){return null!==r}function a(e,n){return(0,r.__awaiter)(this,void 0,void 0,function(){var i;return(0,r.__generator)(this,function(r){switch(r.label){case 0:return e.items?(i=f(e.items).filter(function(r){return"file"===r.kind}),"drop"!==n?[2,i]:[4,Promise.all(i.map(c))]):[3,2];case 1:return[2,s(l(r.sent()))];case 2:return[2,s(f(e.files).map(function(r){return(0,t.toFileWithPath)(r)}))]}})})}function s(r){return r.filter(function(r){return-1===e.indexOf(r.name)})}function f(r){for(var t=[],e=0;ee.length)&&(t=e.length);for(var r=0,n=new Array(t);rr)return[!1,d(r)];if(e.sizer)return[!1,d(r)]}return[!0,null]}function E(e){return null!=e}function b(e){var t=e.files,r=e.accept,o=e.minSize,i=e.maxSize,a=e.multiple,l=e.maxFiles;return!(!a&&t.length>1||a&&l>=1&&t.length>l)&&t.every(function(e){var t=n(g(e,r),1)[0],a=n(x(e,o,i),1)[0];return t&&a})}function O(e){return"function"==typeof e.isPropagationStopped?e.isPropagationStopped():void 0!==e.cancelBubble&&e.cancelBubble}function A(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(e){return"Files"===e||"application/x-moz-file"===e}):!!e.target&&!!e.target.files}function S(e){return"object"===r(e)&&null!==e&&"file"===e.kind}function _(e){e.preventDefault()}function I(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}function T(e){return-1!==e.indexOf("Edge/")}function L(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return I(e)||T(e)}function h(){for(var e=arguments.length,t=new Array(e),r=0;r1?r-1:0),o=1;oe.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function h(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}var F=(0,e.forwardRef)(function(t,r){var n=t.children,o=C(O(t,["children"])),i=o.open,a=O(o,["open"]);return(0,e.useImperativeHandle)(r,function(){return{open:i}},[i]),e.default.createElement(e.Fragment,null,n(m(m({},a),{},{open:i})))});F.displayName="Dropzone";var E={disabled:!1,getFilesFromEvent:r.fromEvent,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null};F.defaultProps=E,F.propTypes={children:t.default.func,accept:t.default.oneOfType([t.default.string,t.default.arrayOf(t.default.string)]),multiple:t.default.bool,preventDropOnDocument:t.default.bool,noClick:t.default.bool,noKeyboard:t.default.bool,noDrag:t.default.bool,noDragEventsBubbling:t.default.bool,minSize:t.default.number,maxSize:t.default.number,maxFiles:t.default.number,disabled:t.default.bool,getFilesFromEvent:t.default.func,onFileDialogCancel:t.default.func,onDragEnter:t.default.func,onDragLeave:t.default.func,onDragOver:t.default.func,onDrop:t.default.func,onDropAccepted:t.default.func,onDropRejected:t.default.func,validator:t.default.func};var j=F;exports.default=j;var w={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,draggedFiles:[],acceptedFiles:[],fileRejections:[]};function C(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=m(m({},E),t),o=r.accept,i=r.disabled,a=r.getFilesFromEvent,u=r.maxSize,c=r.minSize,s=r.multiple,p=r.maxFiles,d=r.onDragEnter,g=r.onDragLeave,v=r.onDragOver,y=r.onDrop,b=r.onDropAccepted,h=r.onDropRejected,F=r.onFileDialogCancel,j=r.preventDropOnDocument,C=r.noClick,A=r.noKeyboard,P=r.noDrag,S=r.noDragEventsBubbling,x=r.validator,R=(0,e.useRef)(null),I=(0,e.useRef)(null),L=f((0,e.useReducer)(k,w),2),z=L[0],H=L[1],M=z.isFocused,K=z.isFileDialogActive,T=z.draggedFiles,_=(0,e.useCallback)(function(){I.current&&(H({type:"openDialog"}),I.current.value=null,I.current.click())},[H]),W=function(){K&&setTimeout(function(){I.current&&(I.current.files.length||(H({type:"closeDialog"}),"function"==typeof F&&F()))},300)};(0,e.useEffect)(function(){return window.addEventListener("focus",W,!1),function(){window.removeEventListener("focus",W,!1)}},[I,K,F]);var B=(0,e.useCallback)(function(e){R.current&&R.current.isEqualNode(e.target)&&(32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),_()))},[R,I]),q=(0,e.useCallback)(function(){H({type:"focus"})},[]),N=(0,e.useCallback)(function(){H({type:"blur"})},[]),J=(0,e.useCallback)(function(){C||((0,n.isIeOrEdge)()?setTimeout(_,0):_())},[I,C]),U=(0,e.useRef)([]),Y=function(e){R.current&&R.current.contains(e.target)||(e.preventDefault(),U.current=[])};(0,e.useEffect)(function(){return j&&(document.addEventListener("dragover",n.onDocumentDragOver,!1),document.addEventListener("drop",Y,!1)),function(){j&&(document.removeEventListener("dragover",n.onDocumentDragOver),document.removeEventListener("drop",Y))}},[R,j]);var $=(0,e.useCallback)(function(e){e.preventDefault(),e.persist(),te(e),U.current=[].concat(l(U.current),[e.target]),(0,n.isEvtWithFiles)(e)&&Promise.resolve(a(e)).then(function(t){(0,n.isPropagationStopped)(e)&&!S||(H({draggedFiles:t,isDragActive:!0,type:"setDraggedFiles"}),d&&d(e))})},[a,d,S]),G=(0,e.useCallback)(function(e){e.preventDefault(),e.persist(),te(e);var t=(0,n.isEvtWithFiles)(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect="copy"}catch(r){}return t&&v&&v(e),!1},[v,S]),Q=(0,e.useCallback)(function(e){e.preventDefault(),e.persist(),te(e);var t=U.current.filter(function(e){return R.current&&R.current.contains(e)}),r=t.indexOf(e.target);-1!==r&&t.splice(r,1),U.current=t,t.length>0||(H({isDragActive:!1,type:"setDraggedFiles",draggedFiles:[]}),(0,n.isEvtWithFiles)(e)&&g&&g(e))},[R,g,S]),V=(0,e.useCallback)(function(e){e.preventDefault(),e.persist(),te(e),U.current=[],(0,n.isEvtWithFiles)(e)&&Promise.resolve(a(e)).then(function(t){if(!(0,n.isPropagationStopped)(e)||S){var r=[],i=[];t.forEach(function(e){var t=f((0,n.fileAccepted)(e,o),2),a=t[0],l=t[1],s=f((0,n.fileMatchSize)(e,c,u),2),p=s[0],d=s[1],g=x?x(e):null;if(a&&p&&!g)r.push(e);else{var v=[l,d];g&&(v=v.concat(g)),i.push({file:e,errors:v.filter(function(e){return e})})}}),(!s&&r.length>1||s&&p>=1&&r.length>p)&&(r.forEach(function(e){i.push({file:e,errors:[n.TOO_MANY_FILES_REJECTION]})}),r.splice(0)),H({acceptedFiles:r,fileRejections:i,type:"setFiles"}),y&&y(r,i,e),i.length>0&&h&&h(i,e),r.length>0&&b&&b(r,e)}}),H({type:"reset"})},[s,o,c,u,p,a,y,b,h,S]),X=function(e){return i?null:e},Z=function(e){return A?null:X(e)},ee=function(e){return P?null:X(e)},te=function(e){S&&e.stopPropagation()},re=(0,e.useMemo)(function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,r=void 0===t?"ref":t,o=e.onKeyDown,a=e.onFocus,l=e.onBlur,u=e.onClick,c=e.onDragEnter,s=e.onDragOver,f=e.onDragLeave,p=e.onDrop,d=O(e,["refKey","onKeyDown","onFocus","onBlur","onClick","onDragEnter","onDragOver","onDragLeave","onDrop"]);return m(m(D({onKeyDown:Z((0,n.composeEventHandlers)(o,B)),onFocus:Z((0,n.composeEventHandlers)(a,q)),onBlur:Z((0,n.composeEventHandlers)(l,N)),onClick:X((0,n.composeEventHandlers)(u,J)),onDragEnter:ee((0,n.composeEventHandlers)(c,$)),onDragOver:ee((0,n.composeEventHandlers)(s,G)),onDragLeave:ee((0,n.composeEventHandlers)(f,Q)),onDrop:ee((0,n.composeEventHandlers)(p,V))},r,R),i||A?{}:{tabIndex:0}),d)}},[R,B,q,N,J,$,G,Q,V,A,P,i]),ne=(0,e.useCallback)(function(e){e.stopPropagation()},[]),oe=(0,e.useMemo)(function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,r=void 0===t?"ref":t,i=e.onChange,a=e.onClick,l=O(e,["refKey","onChange","onClick"]);return m(m({},D({accept:o,multiple:s,type:"file",style:{display:"none"},onChange:X((0,n.composeEventHandlers)(i,V)),onClick:X((0,n.composeEventHandlers)(a,ne)),autoComplete:"off",tabIndex:-1},r,I)),l)}},[I,o,s,V,i]),ie=T.length,ae=ie>0&&(0,n.allFilesAccepted)({files:T,accept:o,minSize:c,maxSize:u,multiple:s,maxFiles:p}),le=ie>0&&!ae;return m(m({},z),{},{isDragAccept:ae,isDragReject:le,isFocused:M&&!i,getRootProps:re,getInputProps:oe,rootRef:R,inputRef:I,open:X(_)})}function k(e,t){switch(t.type){case"focus":return m(m({},e),{},{isFocused:!0});case"blur":return m(m({},e),{},{isFocused:!1});case"openDialog":return m(m({},e),{},{isFileDialogActive:!0});case"closeDialog":return m(m({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":var r=t.isDragActive,n=t.draggedFiles;return m(m({},e),{},{draggedFiles:n,isDragActive:r});case"setFiles":return m(m({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return m(m({},e),{},{isFileDialogActive:!1,isDragActive:!1,draggedFiles:[],acceptedFiles:[],fileRejections:[]});default:return e}} +},{"react":"HdMw","prop-types":"Iix9","file-selector":"nsd6","./utils/index":"lTzG"}],"B5Fk":[function(require,module,exports) { +"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var a in r)"default"!==a&&Object.prototype.hasOwnProperty.call(r,a)&&e(n,r,a);return t(n,r),n},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const a=r(require("react")),l=require("react-dropzone"),o=n(require("../hooks/useConnection")),u=e=>new Promise((t,r)=>{const n=new FileReader;n.onload=(()=>{t({name:e.name,type:e.type,body:n.result})}),n.onerror=(e=>{r(e)}),n.readAsDataURL(e)}),i=()=>{const{send:e,messages:t}=o.default(),r=a.useCallback(async t=>{(await Promise.all(t.map(u))).forEach(e)},[e]),{getRootProps:n,getInputProps:i,isDragActive:s}=l.useDropzone({onDrop:r});return a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{...n()},a.default.createElement("input",{...i()}),s?a.default.createElement("p",null,"Drop the files here ..."):a.default.createElement("p",null,"Drag 'n' drop some files here, or click to select files")),t.map(e=>a.default.createElement("div",null,e.name,"-",e.body.length,a.default.createElement("img",{style:{width:300,height:300},src:e.body}))))};exports.default=i; +},{"react":"HdMw","react-dropzone":"w4q2","../hooks/useConnection":"oCkq"}],"Ru8j":[function(require,module,exports) { +"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(n){if(n&&n.__esModule)return n;var r={};if(null!=n)for(var u in n)"default"!==u&&Object.prototype.hasOwnProperty.call(n,u)&&e(r,n,u);return t(r,n),r},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const u=r(require("react")),o=r(require("./containers/Welcome")),i=r(require("./containers/Connected")),a=n(require("./hooks/useConnection")),l=()=>{const{state:e}=a.default();return e===a.ConnectionStates.WAITING?u.default.createElement(o.default,null):e===a.ConnectionStates.CONNECTED?u.default.createElement(i.default,null):u.default.createElement("div",null,"Connected")};exports.default=l; +},{"react":"HdMw","./containers/Welcome":"iwrI","./containers/Connected":"B5Fk","./hooks/useConnection":"oCkq"}],"OGgv":[function(require,module,exports) { +"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const t=e(require("react")),r=require("react-dom"),n=require("./contexts/ConnectionContext"),o=e(require("./App")),u=document.getElementById("root"),l=t.default.createElement(n.ConnectionProvider,null,t.default.createElement(o.default,null));r.render(l,u); +},{"react":"HdMw","react-dom":"X9zx","./contexts/ConnectionContext":"d4le","./App":"Ru8j"}]},{},["OGgv"], null) +//# sourceMappingURL=/src.e6eed49f.js.map \ No newline at end of file diff --git a/src.e6eed49f.js.map b/src.e6eed49f.js.map new file mode 100644 index 0000000..5a91904 --- /dev/null +++ b/src.e6eed49f.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/object-assign/index.js","node_modules/react/cjs/react.production.min.js","node_modules/react/index.js","node_modules/scheduler/cjs/scheduler.production.min.js","node_modules/scheduler/index.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/react-dom/index.js","exports.ts","../node_modules/peerjs-js-binarypack/lib/bufferbuilder.js","../node_modules/peerjs-js-binarypack/lib/binarypack.js","../node_modules/webrtc-adapter/src/js/utils.js","../node_modules/webrtc-adapter/src/js/chrome/getusermedia.js","../node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js","../node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js","../node_modules/webrtc-adapter/src/js/edge/filtericeservers.js","../node_modules/sdp/sdp.js","../node_modules/rtcpeerconnection-shim/rtcpeerconnection.js","../node_modules/webrtc-adapter/src/js/edge/getusermedia.js","../node_modules/webrtc-adapter/src/js/edge/getdisplaymedia.js","../node_modules/webrtc-adapter/src/js/edge/edge_shim.js","../node_modules/webrtc-adapter/src/js/firefox/getusermedia.js","../node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js","../node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js","../node_modules/webrtc-adapter/src/js/safari/safari_shim.js","../node_modules/webrtc-adapter/src/js/common_shim.js","../node_modules/webrtc-adapter/src/js/adapter_factory.js","../node_modules/webrtc-adapter/src/js/adapter_core.js","adapter.ts","supports.ts","util.ts","../node_modules/eventemitter3/index.js","logger.ts","enums.ts","socket.ts","negotiator.ts","baseconnection.ts","mediaconnection.ts","encodingQueue.ts","dataconnection.ts","api.ts","peer.ts","node_modules/nanoid/url-alphabet/index.js","node_modules/nanoid/index.browser.js","src/utils/crypto.ts","src/hooks/useCrypto.ts","src/contexts/ConnectionContext.tsx","node_modules/qr.js/lib/mode.js","node_modules/qr.js/lib/8BitByte.js","node_modules/qr.js/lib/ErrorCorrectLevel.js","node_modules/qr.js/lib/RSBlock.js","node_modules/qr.js/lib/BitBuffer.js","node_modules/qr.js/lib/math.js","node_modules/qr.js/lib/Polynomial.js","node_modules/qr.js/lib/util.js","node_modules/qr.js/lib/QRCode.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/prop-types/index.js","node_modules/react-qr-code/lib/components/QRCodeCell/index.js","node_modules/react-qr-code/lib/components/QRCodeSurface/index.js","node_modules/react-qr-code/lib/index.js","node_modules/react-qr-reader/lib/errors.js","node_modules/react-qr-reader/lib/getDeviceId.js","node_modules/react-qr-reader/lib/havePropsChanged.js","node_modules/react-qr-reader/lib/createBlob.js","node_modules/webrtc-adapter/src/js/utils.js","node_modules/webrtc-adapter/src/js/chrome/getusermedia.js","node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js","node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js","node_modules/webrtc-adapter/src/js/edge/filtericeservers.js","node_modules/sdp/sdp.js","node_modules/rtcpeerconnection-shim/rtcpeerconnection.js","node_modules/webrtc-adapter/src/js/edge/getusermedia.js","node_modules/webrtc-adapter/src/js/edge/getdisplaymedia.js","node_modules/webrtc-adapter/src/js/edge/edge_shim.js","node_modules/webrtc-adapter/src/js/firefox/getusermedia.js","node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js","node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js","node_modules/webrtc-adapter/src/js/safari/safari_shim.js","node_modules/webrtc-adapter/src/js/common_shim.js","node_modules/webrtc-adapter/src/js/adapter_factory.js","node_modules/webrtc-adapter/src/js/adapter_core.js","node_modules/react-qr-reader/lib/index.js","src/hooks/useConnection.ts","src/containers/Welcome.tsx","node_modules/tslib/tslib.es6.js","../../src/file.ts","../../src/file-selector.ts","../../src/index.ts","node_modules/attr-accept/dist/es/index.js","node_modules/react-dropzone/dist/es/utils/index.js","node_modules/react-dropzone/dist/es/index.js","src/containers/Connected.tsx","src/App.tsx","src/index.tsx"],"names":["getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","n","join","test3","split","forEach","letter","keys","err","module","exports","target","source","from","symbols","to","s","arguments","length","key","call","l","require","p","Fragment","StrictMode","Profiler","q","r","t","Suspense","u","v","Symbol","for","w","x","iterator","y","a","z","b","c","encodeURIComponent","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","B","C","props","context","refs","updater","D","E","isReactComponent","setState","Error","forceUpdate","F","constructor","isPureReactComponent","G","current","H","I","ref","__self","__source","J","e","d","k","h","g","children","f","Array","m","defaultProps","$$typeof","type","_owner","K","L","escape","replace","M","N","toString","O","isArray","push","next","done","value","P","Q","_status","_result","then","default","R","S","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","Children","apply","count","toArray","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createElement","createFactory","bind","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","console","error","window","eventNameToWrap","wrapper","RTCPeerConnection","proto","nativeAddEventListener","addEventListener","nativeEventName","cb","wrappedCallback","modifiedEvent","handleEvent","_eventMap","Map","set","nativeRemoveEventListener","removeEventListener","has","unwrappedCb","get","delete","size","defineProperty","enumerable","configurable","bool","logDisabled_","deprecationWarnings_","log","oldMethod","newMethod","warn","result","browser","navigator","mozGetUserMedia","extractVersion","userAgent","webkitGetUserMedia","isSecureContext","webkitRTCPeerConnection","RTCIceGatherer","mediaDevices","match","supportsUnifiedPlan","RTCRtpTransceiver","compactObject","data","isObject","reduce","accumulator","isObj","isEmptyObject","undefined","track","outbound","streamStatsType","filteredResult","trackStats","trackIdentifier","id","trackStat","stats","trackId","walkStats","uastring","expr","pos","parseInt","base","resultSet","name","endsWith","browserDetails","constraintsToChrome_","mandatory","optional","cc","ideal","exact","min","max","oldname_","prefix","charAt","toUpperCase","slice","oc","mix","advanced","concat","shimConstraints_","constraints","func","JSON","parse","stringify","audio","remap","obj","video","face","facingMode","getSupportedFacingModeLies","matches","getSupportedConstraints","enumerateDevices","devices","dev","filter","kind","find","some","label","toLowerCase","includes","deviceId","logging","shimError_","PermissionDeniedError","PermissionDismissedError","InvalidStateError","DevicesNotFoundError","ConstraintNotSatisfiedError","TrackStartError","MediaDeviceFailedDueToShutdown","MediaDeviceKillSwitchOn","TabCaptureError","ScreenCaptureError","DeviceCaptureError","message","constraint","constraintName","getUserMedia","onSuccess","onError","origGetUserMedia","cs","stream","getAudioTracks","getVideoTracks","getTracks","stop","DOMException","Promise","reject","getSourceId","getDisplayMedia","sourceId","widthSpecified","width","heightSpecified","height","frameRateSpecified","frameRate","chromeMediaSource","chromeMediaSourceId","maxFrameRate","maxWidth","maxHeight","MediaStream","webkitMediaStream","utils","wrapPeerConnectionEvent","transceiver","receiver","_ontrack","origSetRemoteDescription","setRemoteDescription","_ontrackpoly","te","getReceivers","event","Event","streams","dispatchEvent","shimSenderWithDtmf","pc","dtmf","_dtmf","createDTMFSender","_pc","getSenders","_senders","origAddTrack","addTrack","sender","origRemoveTrack","removeTrack","idx","indexOf","splice","origAddStream","addStream","origRemoveStream","removeStream","RTCRtpSender","origGetSenders","senders","origGetStats","getStats","selector","onSucc","onErr","fixChromeStats_","response","standardReport","report","standardStats","timestamp","localcandidate","remotecandidate","names","stat","makeMapStats","resolve","RTCRtpReceiver","filterStats","origGetReceivers","receivers","srcElement","MediaStreamTrack","shimAddTrackRemoveTrackWithNative","origGetLocalStreams","getLocalStreams","nativeStreams","_reverseStreams","_streams","alreadyExists","newStream","signalingState","oldStream","method","nativeMethod","methodObj","args","isLegacyCall","description","desc","replaceInternalStreamId","origSetLocalDescription","setLocalDescription","sdp","internalId","externalStream","internalStream","RegExp","RTCSessionDescription","replaceExternalStreamId","origLocalDescription","getOwnPropertyDescriptor","streamid","RTCIceCandidate","getConfiguration","sdpSemantics","_shimmedLocalStreams","streamId","existingSenders","newSenders","newSender","iceServers","edgeVersion","hasTurn","server","urls","url","deprecated","isString","validTurn","startsWith","SDPUtils","writeMediaSection","caps","dtlsRole","writeRtpDescription","writeIceParameters","iceGatherer","getLocalParameters","writeDtlsParameters","dtlsTransport","mid","rtpSender","rtpReceiver","_initialTrackId","msid","sendEncodingParameters","ssrc","rtx","localCName","getCommonCapabilities","localCapabilities","remoteCapabilities","commonCapabilities","codecs","headerExtensions","fecMechanisms","findCodecByPayloadType","pt","payloadType","preferredPayloadType","rtxCapabilityMatches","lRtx","rRtx","lCodecs","rCodecs","lCodec","parameters","apt","rCodec","clockRate","numChannels","Math","rtcpFeedback","fb","j","parameter","lHeaderExtension","rHeaderExtension","uri","isActionAllowedInSignalingState","action","offer","answer","maybeAddCandidate","iceTransport","candidate","alreadyAdded","getRemoteCandidates","remoteCandidate","foundation","ip","port","priority","protocol","addRemoteCandidate","makeError","code","NotSupportedError","InvalidAccessError","OperationError","addTrackToStreamAndFireEvent","MediaStreamTrackEvent","fireAddTrack","trackEvent","setTimeout","_dispatchEvent","config","_eventTarget","document","createDocumentFragment","canTrickleIceCandidates","needNegotiation","localStreams","remoteStreams","_localDescription","_remoteDescription","iceConnectionState","connectionState","iceGatheringState","usingBundle","bundlePolicy","rtcpMuxPolicy","iceTransportPolicy","filterIceServers","_iceGatherers","iceCandidatePoolSize","gatherPolicy","_config","transceivers","_sdpSessionId","generateSessionId","_sdpSessionVersion","_dtlsRole","_isClosed","onicecandidate","onaddstream","ontrack","onremovestream","onsignalingstatechange","oniceconnectionstatechange","onconnectionstatechange","onicegatheringstatechange","onnegotiationneeded","ondatachannel","_emitGatheringStateChange","getRemoteStreams","_createTransceiver","doNotAdd","hasBundleTransport","recvEncodingParameters","associatedRemoteMediaStreams","wantReceive","transports","_createIceAndDtlsTransports","_maybeFireNegotiationNeeded","clonedStream","clone","clonedTrack","enabled","_createIceGatherer","sdpMLineIndex","shift","writable","bufferedCandidateEvents","bufferCandidates","end","state","_gather","onlocalcandidate","evt","sdpMid","cand","component","ufrag","usernameFragment","serializedCandidate","writeCandidate","parseCandidate","toJSON","sections","getMediaSections","getDescription","complete","every","RTCIceTransport","onicestatechange","_updateIceConnectionState","_updateConnectionState","RTCDtlsTransport","ondtlsstatechange","onerror","_disposeIceAndDtlsTransports","_transceive","send","recv","params","encodings","rtcp","cname","compound","rtcpParameters","receive","sessionpart","splitSections","mediaSection","parseRtpParameters","isIceLite","matchPrefix","isRejected","rejected","remoteIceParameters","getIceParameters","remoteDtlsParameters","getDtlsParameters","role","start","_updateSignalingState","receiverList","iceOptions","substr","lines","splitLines","getKind","direction","getDirection","remoteMsid","parseMsid","getMid","generateIdentifier","parseRtpEncodingParameters","parseRtcpParameters","isComplete","cands","setTransport","setRemoteCandidates","getCapabilities","codec","isNewTrack","nativeTrack","sid","item","close","newState","states","closed","checking","connected","completed","disconnected","failed","new","connecting","createOffer","numAudioTracks","numVideoTracks","offerOptions","offerToReceiveAudio","offerToReceiveVideo","writeSessionBoilerplate","remoteCodec","hdrExt","rHdrExt","getLocalCandidates","createAnswer","mediaSectionsInOffer","localTrack","reducedSize","addIceCandidate","candidateString","trim","senderOrReceiver","promises","all","allStats","results","ortcObjectName","nativeGetstats","nativeStats","mapStats","inboundrtp","outboundrtp","candidatepair","fixStatsType","methods","catch","origMSTEnabled","ev","RTCDtmfSender","RTCDTMFSender","RTCPeerConnectionShim","replaceTrack","setTrack","nativeGetUserMedia","getSettings","nativeGetSettings","applyConstraints","nativeApplyConstraints","preferredMediaSource","mediaSource","RTCTrackEvent","mozRTCPeerConnection","modernStatsTypes","nativeGetStats","DataChannel","RTCDataChannel","origAddTransceiver","addTransceiver","setParametersPromises","initParameters","shouldPerformCheck","sendEncodings","encodingParam","test","rid","parseFloat","scaleResolutionDownBy","RangeError","maxFramerate","getParameters","setParameters","origGetParameters","origCreateOffer","finally","origCreateAnswer","_localStreams","_addTrack","index","tracks","_remoteStreams","_onaddstream","_onaddstreampoly","successCallback","failureCallback","options","promise","withCallback","_getUserMedia","shimConstraints","errcb","OrigPeerConnection","pcConfig","pcConstraints","newIceServers","generateCertificate","audioTransceiver","getTransceivers","setDirection","videoTransceiver","AudioContext","webkitAudioContext","NativeRTCIceCandidate","nativeCandidate","parsedCandidate","augmentedCandidate","_sctp","sctpInDescription","mLine","parseMLine","isFirefox","maxMessageSize","canSendMMS","remoteIsFirefox","canSendMaxMessageSize","remoteMMS","Number","POSITIVE_INFINITY","sctp","origCreateDataChannel","createDataChannel","dataChannel","wrapDcSend","channel","dc","origDataChannelSend","byteLength","readyState","_onconnectionstatechange","origMethod","_connectionstatechangepoly","_lastConnectionState","newEvent","nativeSRD","line","nativeAddIceCandidate","shimChrome","shimFirefox","shimEdge","shimSafari","detectBrowser","adapter","commonShim","disableLog","disableWarnings","chromeShim","shimPeerConnection","browserShim","shimAddIceCandidateNullOrEmpty","shimGetUserMedia","shimMediaStream","shimOnTrack","shimAddTrackRemoveTrack","shimGetSendersWithDtmf","shimGetStats","shimSenderReceiverGetStats","fixNegotiationNeeded","shimRTCIceCandidate","shimConnectionState","shimMaxMessageSize","shimSendThrowTypeError","removeExtmapAllowMixed","firefoxShim","shimRemoveStream","shimSenderGetStats","shimReceiverGetStats","shimRTCDataChannel","shimAddTransceiver","shimGetParameters","shimCreateOffer","shimCreateAnswer","edgeShim","shimGetDisplayMedia","shimReplaceTrack","safariShim","shimRTCIceServerUrls","shimCreateOfferLegacy","shimCallbacksAPI","shimLocalStreamsAPI","shimRemoteStreamsAPI","shimTrackEventTransceiver","shimAudioContext","urlAlphabet","random","bytes","crypto","getRandomValues","Uint8Array","customRandom","alphabet","getRandom","mask","LN2","step","customAlphabet","nanoid","byte","ReactIs","throwOnDirectAccess","successCallbackWrapper_","getRemoteFirefoxVersion","getCanSendMaxMessageSize","getMaxMessageSize","adapterFactory","extendStatics","setPrototypeOf","__proto__","__extends","__","create","__assign","__rest","__decorate","decorators","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","generator","fulfilled","adopt","__generator","body","_","sent","trys","ops","verb","op","pop","__createBinding","o","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","jl","__spreadArray","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__esModule","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","file","acceptedFiles","acceptedFilesArray","fileName","mimeType","baseMimeType","validType","_typeof","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_e","_s","_i","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","accept","messageSuffix","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isDefined","allFilesAccepted","_ref","files","multiple","maxFiles","_fileAccepted","accepted","sizeMatch","isPropagationStopped","cancelBubble","isEvtWithFiles","dataTransfer","types","isKindFile","onDocumentDragOver","preventDefault","isIe","isEdge","isIeOrEdge","composeEventHandlers","_len","fns","_key","_len2","_key2","fn","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","ownKeys","object","enumerableOnly","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","Dropzone","_useDropzone","useDropzone","open","React","displayName","disabled","getFilesFromEvent","fromEvent","Infinity","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","validator","propTypes","PropTypes","oneOfType","string","arrayOf","number","onFileDialogCancel","onDragEnter","onDragLeave","onDragOver","onDrop","onDropAccepted","onDropRejected","initialState","isFocused","isFileDialogActive","isDragActive","isDragAccept","isDragReject","draggedFiles","fileRejections","_defaultProps$options","rootRef","inputRef","_useReducer2","reducer","dispatch","openFileDialog","click","onWindowFocus","onKeyDownCb","isEqualNode","keyCode","onFocusCb","onBlurCb","onClickCb","dragTargetsRef","onDocumentDrop","contains","onDragEnterCb","persist","stopPropagation","onDragOverCb","hasFiles","dropEffect","_unused","onDragLeaveCb","targets","targetIdx","onDropCb","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","customErrors","errors","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2","_ref2$refKey","refKey","onKeyDown","onFocus","onBlur","onClick","rest","tabIndex","onInputElementClick","getInputProps","_ref3","_ref3$refKey","onChange","style","display","autoComplete","fileCount"],"mappings":"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,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,GAAA,EAAA,IAAA,IACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,GAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,EAAA,IAAA,IAAA,GAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAGA,CAAA,GAAA,IAAA,IAAA,EAAA,IAAA,KACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IACA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAGA,EAAA,YAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,gBAAA,EAAA,GAEA,GAAA,MAAA,EACA,MAAA,IAAA,MAAA,6BAAA,EAAA,sBAAA,GAOA,IAJA,IAAA,EAAA,EAAA,OAAA,EAEA,EAAA,IAAA,MAEA,EAAA,EAAA,EAAA,EAAA,IAMA,IAJA,IAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAAA,IAAA,EAAA,EAAA,IAIA,OAAA,GAGA,EAAA,gBAAA,SAAA,EAAA,GAEA,OAAA,GACA,KAAA,EAAA,EACA,OAAA,EAAA,eAAA,GAAA,EAAA,GAAA,GACA,KAAA,EAAA,EACA,OAAA,EAAA,eAAA,GAAA,EAAA,GAAA,GACA,KAAA,EAAA,EACA,OAAA,EAAA,eAAA,GAAA,EAAA,GAAA,GACA,KAAA,EAAA,EACA,OAAA,EAAA,eAAA,GAAA,EAAA,GAAA,GACA,QACA,SAIA,OAAA,QAAA;;AC1SA,SAAA,IACA,KAAA,OAAA,IAAA,MACA,KAAA,OAAA,EAGA,EAAA,UAAA,CAEA,IAAA,SAAA,GACA,IAAA,EAAA,KAAA,MAAA,EAAA,GACA,OAAA,IAAA,KAAA,OAAA,KAAA,EAAA,EAAA,EAAA,IAGA,IAAA,SAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,KAAA,OAAA,IAAA,IAAA,EAAA,EAAA,EAAA,KAIA,gBAAA,WACA,OAAA,KAAA,QAGA,OAAA,SAAA,GAEA,IAAA,EAAA,KAAA,MAAA,KAAA,OAAA,GACA,KAAA,OAAA,QAAA,GACA,KAAA,OAAA,KAAA,GAGA,IACA,KAAA,OAAA,IAAA,MAAA,KAAA,OAAA,GAGA,KAAA,WAIA,OAAA,QAAA;;ACPA,IA9BA,IAAA,EAAA,CAEA,KAAA,SAAA,GAEA,GAAA,EAAA,EACA,MAAA,IAAA,MAAA,QAAA,EAAA,KAGA,OAAA,EAAA,UAAA,IAGA,KAAA,SAAA,GAEA,KAAA,EAAA,GACA,GAAA,IAGA,KAAA,GAAA,KACA,GAAA,IAGA,OAAA,EAAA,UAAA,IAGA,UAAA,IAAA,MAAA,KAEA,UAAA,IAAA,MAAA,MAIA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,UAAA,GAAA,GAAA,EAEA,IAAA,EAAA,EAAA,EAAA,IAAA,IACA,EAAA,UAAA,GAAA,EAAA,UAAA,EAAA,GACA,EAAA,UAAA,EAAA,GACA,EAAA,UAAA,EAAA,GACA,EAAA,UAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,IAAA,IACA,EAAA,UAAA,EAAA,UAAA,IAAA,EAGA,OAAA,QAAA;;AC3CA,IAAA,EAAA,QAAA,UAEA,SAAA,EAAA,EAAA,GAEA,GAAA,MAAA,EAAA,OACA,MAAA,IAAA,MAAA,EAAA,OAAA,IAAA,GAKA,IAFA,IAAA,EAAA,EAEA,EAAA,EAAA,QAAA,GAAA,EAAA,IACA,IAGA,KAAA,IAAA,IAAA,MAAA,EAAA,OAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,IACA,KAAA,IAAA,GAAA,EAAA,EAAA,GAIA,EAAA,UAAA,CAEA,IAAA,SAAA,GACA,OAAA,KAAA,IAAA,IAGA,UAAA,WACA,OAAA,KAAA,IAAA,QAGA,SAAA,SAAA,GAIA,IAFA,IAAA,EAAA,IAAA,MAAA,KAAA,YAAA,EAAA,YAAA,GAEA,EAAA,EAAA,EAAA,KAAA,YAAA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,YAAA,IACA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,KAAA,IAAA,IAAA,EAAA,KAAA,EAAA,IAAA,KAIA,OAAA,IAAA,EAAA,EAAA,IAGA,IAAA,SAAA,GAEA,GAAA,KAAA,YAAA,EAAA,YAAA,EACA,OAAA,KAOA,IAJA,IAAA,EAAA,EAAA,KAAA,KAAA,IAAA,IAAA,EAAA,KAAA,EAAA,IAAA,IAEA,EAAA,IAAA,MAAA,KAAA,aAEA,EAAA,EAAA,EAAA,KAAA,YAAA,IACA,EAAA,GAAA,KAAA,IAAA,GAGA,IAAA,EAAA,EAAA,EAAA,EAAA,YAAA,IACA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,IAAA,GAIA,OAAA,IAAA,EAAA,EAAA,GAAA,IAAA,KAIA,OAAA,QAAA;;AClEA,IAAA,EAAA,QAAA,UACA,EAAA,QAAA,gBACA,EAAA,QAAA,UAEA,EAAA,CACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,GAGA,EAAA,CAEA,uBAAA,CACA,GACA,CAAA,EAAA,IACA,CAAA,EAAA,IACA,CAAA,EAAA,IACA,CAAA,EAAA,IACA,CAAA,EAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,IACA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,GAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,KACA,CAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,MAGA,IAAA,KACA,IAAA,KACA,SAAA,MAEA,eAAA,SAAA,GAEA,IADA,IAAA,EAAA,GAAA,GACA,EAAA,YAAA,GAAA,EAAA,YAAA,EAAA,MAAA,GACA,GAAA,EAAA,KAAA,EAAA,YAAA,GAAA,EAAA,YAAA,EAAA,KAEA,OAAA,GAAA,GAAA,GAAA,EAAA,UAGA,iBAAA,SAAA,GAEA,IADA,IAAA,EAAA,GAAA,GACA,EAAA,YAAA,GAAA,EAAA,YAAA,EAAA,MAAA,GACA,GAAA,EAAA,KAAA,EAAA,YAAA,GAAA,EAAA,YAAA,EAAA,KAEA,OAAA,GAAA,GAAA,GAGA,YAAA,SAAA,GAIA,IAFA,IAAA,EAAA,EAEA,GAAA,GACA,IACA,KAAA,EAGA,OAAA,GAGA,mBAAA,SAAA,GACA,OAAA,EAAA,uBAAA,EAAA,IAGA,QAAA,SAAA,EAAA,EAAA,GAEA,OAAA,GAEA,KAAA,EAAA,WAAA,OAAA,EAAA,GAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,GAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,KAAA,MAAA,EAAA,GAAA,KAAA,MAAA,EAAA,IAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EACA,KAAA,EAAA,WAAA,OAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAEA,QACA,MAAA,IAAA,MAAA,mBAAA,KAIA,0BAAA,SAAA,GAIA,IAFA,IAAA,EAAA,IAAA,EAAA,CAAA,GAAA,GAEA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,SAAA,IAAA,EAAA,CAAA,EAAA,EAAA,KAAA,IAAA,IAGA,OAAA,GAGA,gBAAA,SAAA,EAAA,GAEA,GAAA,GAAA,GAAA,EAAA,GAIA,OAAA,GACA,KAAA,EAAA,YAAA,OAAA,GACA,KAAA,EAAA,eAAA,OAAA,EACA,KAAA,EAAA,eACA,KAAA,EAAA,WAAA,OAAA,EACA,QACA,MAAA,IAAA,MAAA,QAAA,QAGA,GAAA,EAAA,GAIA,OAAA,GACA,KAAA,EAAA,YAAA,OAAA,GACA,KAAA,EAAA,eAAA,OAAA,GACA,KAAA,EAAA,eAAA,OAAA,GACA,KAAA,EAAA,WAAA,OAAA,GACA,QACA,MAAA,IAAA,MAAA,QAAA,OAGA,CAAA,KAAA,EAAA,IAcA,MAAA,IAAA,MAAA,QAAA,GAVA,OAAA,GACA,KAAA,EAAA,YAAA,OAAA,GACA,KAAA,EAAA,eAAA,OAAA,GACA,KAAA,EAAA,eAAA,OAAA,GACA,KAAA,EAAA,WAAA,OAAA,GACA,QACA,MAAA,IAAA,MAAA,QAAA,MAQA,aAAA,SAAA,GAQA,IANA,IAAA,EAAA,EAAA,iBAEA,EAAA,EAIA,EAAA,EAAA,EAAA,EAAA,IAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAKA,IAHA,IAAA,EAAA,EACA,EAAA,EAAA,OAAA,EAAA,GAEA,GAAA,EAAA,GAAA,EAAA,IAEA,KAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAIA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAEA,EAAA,EAAA,GAAA,GAAA,EAAA,GAIA,GAAA,GAAA,GAAA,GAIA,GAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IACA,IAKA,EAAA,IACA,GAAA,EAAA,EAAA,GAOA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EACA,EAAA,OAAA,EAAA,IAAA,IACA,EAAA,OAAA,EAAA,EAAA,IAAA,IACA,EAAA,OAAA,EAAA,EAAA,IAAA,IACA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,IACA,GAAA,GAAA,GAAA,IACA,GAAA,GAOA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,KACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,KACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,KACA,GAAA,IAKA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,KACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,KACA,EAAA,OAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,EAAA,KACA,GAAA,IAOA,IAAA,EAAA,EAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,OAAA,EAAA,IACA,IAQA,OAFA,GAAA,IADA,KAAA,IAAA,IAAA,EAAA,EAAA,EAAA,IAAA,KAOA,OAAA,QAAA;;ACtRA,IAAA,EAAA,QAAA,cACA,EAAA,QAAA,aACA,EAAA,QAAA,eACA,EAAA,QAAA,UACA,EAAA,QAAA,gBAEA,SAAA,EAAA,EAAA,GACA,KAAA,WAAA,EACA,KAAA,kBAAA,EACA,KAAA,QAAA,KACA,KAAA,YAAA,EACA,KAAA,UAAA,KACA,KAAA,SAAA,GAIA,IAAA,EAAA,EAAA,UAEA,EAAA,QAAA,SAAA,GACA,IAAA,EAAA,IAAA,EAAA,GACA,KAAA,SAAA,KAAA,GACA,KAAA,UAAA,MAGA,EAAA,OAAA,SAAA,EAAA,GACA,GAAA,EAAA,GAAA,KAAA,aAAA,GAAA,EAAA,GAAA,KAAA,aAAA,EACA,MAAA,IAAA,MAAA,EAAA,IAAA,GAEA,OAAA,KAAA,QAAA,GAAA,IAGA,EAAA,eAAA,WACA,OAAA,KAAA,aAGA,EAAA,KAAA,WAEA,GAAA,KAAA,WAAA,EAAA,CACA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,CAKA,IAJA,IAAA,EAAA,EAAA,YAAA,EAAA,KAAA,mBAEA,EAAA,IAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,GAAA,UAGA,IAAA,EAAA,EAAA,EAAA,KAAA,SAAA,OAAA,IAAA,CACA,IAAA,EAAA,KAAA,SAAA,GACA,EAAA,IAAA,EAAA,KAAA,GACA,EAAA,IAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,IACA,EAAA,MAAA,GAEA,GAAA,EAAA,mBAAA,EAAA,EACA,MAEA,KAAA,WAAA,EAEA,KAAA,UAAA,EAAA,KAAA,uBAGA,EAAA,SAAA,SAAA,EAAA,GAEA,KAAA,YAAA,EAAA,KAAA,WAAA,GACA,KAAA,QAAA,IAAA,MAAA,KAAA,aAEA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,YAAA,IAAA,CAEA,KAAA,QAAA,GAAA,IAAA,MAAA,KAAA,aAEA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,YAAA,IACA,KAAA,QAAA,GAAA,GAAA,KAIA,KAAA,0BAAA,EAAA,GACA,KAAA,0BAAA,KAAA,YAAA,EAAA,GACA,KAAA,0BAAA,EAAA,KAAA,YAAA,GACA,KAAA,6BACA,KAAA,qBACA,KAAA,cAAA,EAAA,GAEA,KAAA,YAAA,GACA,KAAA,gBAAA,GAGA,MAAA,KAAA,YACA,KAAA,UAAA,EAAA,WAAA,KAAA,WAAA,KAAA,kBAAA,KAAA,WAGA,KAAA,QAAA,KAAA,UAAA,IAGA,EAAA,0BAAA,SAAA,EAAA,GAEA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAEA,KAAA,EAAA,IAAA,GAAA,KAAA,aAAA,EAAA,GAEA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAEA,EAAA,IAAA,GAAA,KAAA,aAAA,EAAA,IAKA,KAAA,QAAA,EAAA,GAAA,EAAA,GAHA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IACA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IACA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IASA,EAAA,mBAAA,WAKA,IAHA,IAAA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,IAAA,CAEA,KAAA,UAAA,EAAA,GAEA,IAAA,EAAA,EAAA,aAAA,OAEA,GAAA,GAAA,EAAA,KACA,EAAA,EACA,EAAA,GAIA,OAAA,GAGA,EAAA,gBAAA,SAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,qBAAA,EAAA,GAGA,KAAA,OAEA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,QAAA,OAAA,IAIA,IAFA,IAAA,EANA,EAMA,EAEA,EAAA,EAAA,EAAA,KAAA,QAAA,GAAA,OAAA,IAAA,CAEA,IAAA,EAVA,EAUA,EACA,KAAA,QAAA,GAAA,KAGA,EAAA,UAAA,EAAA,KACA,EAAA,OAAA,EAAA,GACA,EAAA,OAAA,EAhBA,EAgBA,GACA,EAAA,OAAA,EAjBA,EAiBA,EAjBA,GAkBA,EAAA,OAAA,EAAA,EAlBA,GAmBA,EAAA,WAKA,OAAA,GAGA,EAAA,mBAAA,WAEA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,YAAA,EAAA,IACA,MAAA,KAAA,QAAA,GAAA,KAGA,KAAA,QAAA,GAAA,GAAA,EAAA,GAAA,GAGA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,YAAA,EAAA,IACA,MAAA,KAAA,QAAA,GAAA,KAGA,KAAA,QAAA,GAAA,GAAA,EAAA,GAAA,IAIA,EAAA,2BAAA,WAIA,IAFA,IAAA,EAAA,EAAA,mBAAA,KAAA,YAEA,EAAA,EAAA,EAAA,EAAA,OAAA,IAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CAEA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,GAEA,GAAA,MAAA,KAAA,QAAA,GAAA,GAIA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAEA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAIA,KAAA,QAAA,EAAA,GAAA,EAAA,IAFA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,GAAA,IAWA,EAAA,gBAAA,SAAA,GAIA,IAFA,IAAA,EAAA,EAAA,iBAAA,KAAA,YAEA,EAAA,EAAA,EAAA,GAAA,IAAA,CACA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GACA,KAAA,QAAA,KAAA,MAAA,EAAA,IAAA,EAAA,EAAA,KAAA,YAAA,EAAA,GAAA,EAGA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,CACA,GAAA,GAAA,IAAA,GAAA,EAAA,GACA,KAAA,QAAA,EAAA,EAAA,KAAA,YAAA,EAAA,GAAA,KAAA,MAAA,EAAA,IAAA,IAIA,EAAA,cAAA,SAAA,EAAA,GAMA,IAJA,IAAA,EAAA,KAAA,mBAAA,EAAA,EACA,EAAA,EAAA,eAAA,GAGA,EAAA,EAAA,EAAA,GAAA,IAAA,CAEA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAEA,EAAA,EACA,KAAA,QAAA,GAAA,GAAA,EACA,EAAA,EACA,KAAA,QAAA,EAAA,GAAA,GAAA,EAEA,KAAA,QAAA,KAAA,YAAA,GAAA,GAAA,GAAA,EAKA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,CAEA,GAAA,GAAA,IAAA,GAAA,EAAA,GAEA,EAAA,EACA,KAAA,QAAA,GAAA,KAAA,YAAA,EAAA,GAAA,EACA,EAAA,EACA,KAAA,QAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAEA,KAAA,QAAA,GAAA,GAAA,EAAA,GAAA,EAKA,KAAA,QAAA,KAAA,YAAA,GAAA,IAAA,GAGA,EAAA,QAAA,SAAA,EAAA,GAOA,IALA,IAAA,GAAA,EACA,EAAA,KAAA,YAAA,EACA,EAAA,EACA,EAAA,EAEA,EAAA,KAAA,YAAA,EAAA,EAAA,EAAA,GAAA,EAIA,IAFA,GAAA,GAAA,MAEA,CAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAEA,GAAA,MAAA,KAAA,QAAA,GAAA,EAAA,GAAA,CAEA,IAAA,GAAA,EAEA,EAAA,EAAA,SACA,EAAA,IAAA,EAAA,KAAA,EAAA,IAGA,EAAA,QAAA,EAAA,EAAA,EAAA,KAGA,GAAA,GAGA,KAAA,QAAA,GAAA,EAAA,GAAA,GAGA,KAFA,IAGA,IACA,EAAA,GAOA,IAFA,GAAA,GAEA,GAAA,KAAA,aAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,SAMA,EAAA,KAAA,IACA,EAAA,KAAA,GAEA,EAAA,WAAA,SAAA,EAAA,EAAA,GAMA,IAJA,IAAA,EAAA,EAAA,YAAA,EAAA,GAEA,EAAA,IAAA,EAEA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,IAAA,EAAA,KAAA,GACA,EAAA,IAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,IACA,EAAA,MAAA,GAIA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,GAAA,UAGA,GAAA,EAAA,kBAAA,EAAA,EACA,MAAA,IAAA,MAAA,0BACA,EAAA,kBACA,IACA,EAAA,EACA,KASA,IALA,EAAA,kBAAA,GAAA,EAAA,GACA,EAAA,IAAA,EAAA,GAIA,EAAA,kBAAA,GAAA,GACA,EAAA,QAAA,GAIA,OAEA,EAAA,mBAAA,EAAA,IAGA,EAAA,IAAA,EAAA,KAAA,GAEA,EAAA,mBAAA,EAAA,KAGA,EAAA,IAAA,EAAA,KAAA,GAGA,OAAA,EAAA,YAAA,EAAA,IAGA,EAAA,YAAA,SAAA,EAAA,GAUA,IARA,IAAA,EAAA,EAEA,EAAA,EACA,EAAA,EAEA,EAAA,IAAA,MAAA,EAAA,QACA,EAAA,IAAA,MAAA,EAAA,QAEA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CAEA,IAAA,EAAA,EAAA,GAAA,UACA,EAAA,EAAA,GAAA,WAAA,EAEA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,GAEA,EAAA,GAAA,IAAA,MAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,OAAA,IACA,EAAA,GAAA,GAAA,IAAA,EAAA,OAAA,EAAA,GAEA,GAAA,EAEA,IAAA,EAAA,EAAA,0BAAA,GAGA,EAFA,IAAA,EAAA,EAAA,GAAA,EAAA,YAAA,GAEA,IAAA,GACA,EAAA,GAAA,IAAA,MAAA,EAAA,YAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,GAAA,OACA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,IAAA,GAAA,GAKA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,GAAA,WAGA,IAAA,EAAA,IAAA,MAAA,GACA,EAAA,EAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,GAAA,SACA,EAAA,KAAA,EAAA,GAAA,IAKA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,GAAA,SACA,EAAA,KAAA,EAAA,GAAA,IAKA,OAAA,GAGA,OAAA,QAAA;;AC7aA,aAEA,IAAA,EAAA,+CAEA,OAAA,QAAA;;ACJA,aAEA,IAAA,EAAA,QAAA,8BAEA,SAAA,KACA,SAAA,KACA,EAAA,kBAAA,EAEA,OAAA,QAAA,WACA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,IAAA,EAAA,CAIA,IAAA,EAAA,IAAA,MACA,mLAKA,MADA,EAAA,KAAA,sBACA,GAGA,SAAA,IACA,OAAA,EAFA,EAAA,WAAA,EAMA,IAAA,EAAA,CACA,MAAA,EACA,KAAA,EACA,KAAA,EACA,OAAA,EACA,OAAA,EACA,OAAA,EACA,OAAA,EAEA,IAAA,EACA,QAAA,EACA,QAAA,EACA,YAAA,EACA,WAAA,EACA,KAAA,EACA,SAAA,EACA,MAAA,EACA,UAAA,EACA,MAAA,EACA,MAAA,EAEA,eAAA,EACA,kBAAA,GAKA,OAFA,EAAA,UAAA,EAEA;;ACtDMinB,IAAAA,EAIAC,EAKJj0B,OAAOC,QAAUY,QAAQ,6BAARA;;ACjBnB,aAEA,OAAA,eAAA,QAAA,aAAA,CACA,OAAA,IAGA,IAAA,EAAA,QAAA,cAEA,EAAA,EAAA,GAEA,EAAA,QAAA,SAEA,EAAA,EAAA,GAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAEA,IAAA,EAAA,CACA,EAAA,EAAA,QAAA,OAAA,WACA,KAAA,EAAA,QAAA,OAAA,WACA,WAAA,EAAA,QAAA,OAAA,WACA,WAAA,EAAA,QAAA,OAAA,YAGA,EAAA,GAEA,EAAA,SAAA,GACA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,KACA,EAAA,EAAA,WACA,EAAA,EAAA,WACA,OAAA,EAAA,QAAA,cAAA,OAAA,CACA,EAAA,EACA,KAAA,EACA,UAAA,UAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,OAIA,EAAA,UAAA,EACA,EAAA,aAAA,EAEA,QAAA,QAAA;;ACxCA,aAEA,OAAA,eAAA,QAAA,aAAA,CACA,OAAA,IAGA,IAAA,EAAA,OAAA,QAAA,SAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,CAAA,IAAA,EAAA,UAAA,GAAA,IAAA,IAAA,KAAA,EAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,GAEA,EAAA,QAAA,cAEA,EAAA,EAAA,GAEA,EAAA,QAAA,SAEA,EAAA,EAAA,GAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAEA,SAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,KAAA,EAAA,EAAA,QAAA,IAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,EAEA,IAAA,EAAA,CACA,SAAA,EAAA,QAAA,MAAA,WACA,KAAA,EAAA,QAAA,OAAA,WACA,MAAA,EAAA,QAAA,OACA,MAAA,EAAA,QAAA,QAGA,EAAA,CACA,WAAA,EACA,MAAA,8BAGA,EAAA,SAAA,GACA,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,KACA,EAAA,EAAA,MACA,EAAA,EAAA,MACA,EAAA,EAAA,EAAA,CAAA,WAAA,OAAA,QAAA,UAEA,OAAA,EAAA,QAAA,cACA,MACA,EAAA,GAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,IACA,IAIA,EAAA,UAAA,EACA,EAAA,aAAA,EAEA,QAAA,QAAA;;ACjDA,aAEA,OAAA,eAAA,QAAA,aAAA,CACA,OAAA,IAGA,IAAA,EAAA,OAAA,QAAA,SAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,CAAA,IAAA,EAAA,UAAA,GAAA,IAAA,IAAA,KAAA,EAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,GAEA,EAAA,QAAA,oBAEA,EAAA,EAAA,GAEA,EAAA,QAAA,+BAEA,EAAA,EAAA,GAEA,EAAA,QAAA,cAEA,EAAA,EAAA,GAEA,EAAA,QAAA,SAEA,EAAA,EAAA,GAEA,EAAA,QAAA,2BAEA,EAAA,EAAA,GAEA,EAAA,QAAA,8BAEA,EAAA,EAAA,GAEA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAEA,SAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,KAAA,EAAA,EAAA,QAAA,IAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,EAGA,IAAA,EAAA,CACA,QAAA,EAAA,QAAA,OACA,QAAA,EAAA,QAAA,OACA,MAAA,EAAA,QAAA,MAAA,CAAA,IAAA,IAAA,IAAA,MACA,KAAA,EAAA,QAAA,OACA,MAAA,EAAA,QAAA,OAAA,YAGA,EAAA,CACA,QAAA,UACA,QAAA,UACA,MAAA,IACA,KAAA,KAGA,EAAA,SAAA,GACA,IAAA,EAAA,EAAA,QACA,EAAA,EAAA,QACA,EAAA,EAAA,MACA,EAAA,EAAA,KACA,EAAA,EAAA,MACA,EAAA,EAAA,EAAA,CAAA,UAAA,UAAA,QAAA,OAAA,UAGA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,QAAA,IACA,EAAA,QAAA,GACA,EAAA,OACA,IAAA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,OACA,OAAA,EAAA,QAAA,cACA,EAAA,QACA,EAAA,GAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,OAAA,EAAA,MAAA,KACA,EAAA,IAAA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EACA,EAAA,KAAA,MAAA,EAAA,GAAA,GAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GAAA,GAAA,KAAA,MAAA,EAAA,GACA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KACA,EAAA,KAAA,MAAA,EAAA,GACA,EAAA,KAAA,MAAA,EAAA,GACA,OAAA,EAAA,QAAA,cAAA,EAAA,QAEA,CAAA,IAAA,aAAA,EAAA,IAAA,EAEA,EAAA,EACA,KAAA,EACA,WAAA,EACA,WAAA,UAOA,EAAA,UAAA,EACA,EAAA,aAAA,EAEA,QAAA,SAAA,EAAA,EAAA,MAAA;;AC9FA,aAEA,SAAA,IACA,KAAA,KAAA,2BACA,KAAA,QAAA,+BAEA,EAAA,UAAA,IAAA,MAEA,OAAA,QAAA,CACA,yBAAA;;ACTA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,EAAA,yBAEA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,OAAA,EACA,EAAA,GAAA,SAEA,GAAA,EAAA,QAAA,QAAA,EACA,EAAA,GAAA,SAEA,EAAA,GAAA,SAGA,IAAA,EAAA,SAAA,GACA,MAAA,eAAA,EAAA,0BAAA,qBAGA,SAAA,EAAA,GACA,IAAA,EAAA,UAAA,OAAA,QAAA,IAAA,UAAA,GAAA,UAAA,GAAA,EAGA,OAAA,IAAA,QAAA,SAAA,EAAA,GACA,IAAA,OAAA,EACA,IACA,EAAA,UAAA,aAAA,mBACA,MAAA,GACA,EAAA,IAAA,GAEA,EAAA,KAAA,SAAA,GAEA,IAAA,EAAA,EAAA,OAAA,SAAA,GACA,MAAA,cAAA,EAAA,OAGA,GAAA,EAAA,OAAA,EACA,EAAA,IAAA,OADA,CAKA,IAAA,EAAA,EAAA,GAGA,EAAA,EAAA,OAAA,SAAA,GACA,IAAA,EAAA,EAAA,MACA,OAAA,EAAA,KAAA,KAGA,EAAA,EAAA,EAAA,EAAA,SAKA,OAAA,QAAA,CAAA,YAAA,EAAA,qBAAA;;ACtDA,aAEA,OAAA,QAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,GAMA,OALA,EAAA,QAAA,SAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,KAAA,KAGA;;ACTA,aAKA,OAAA,QAAA,SAAA,EAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,IACA,OAAA,IAAA,KAAA,EAAA,GACA,MAAA,GACA,GAAA,cAAA,EAAA,KACA,MAAA,EAIA,IAFA,IACA,EAAA,IADA,OAAA,aAAA,OAAA,eAAA,OAAA,gBAAA,OAAA,mBAEA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,EAAA,OAAA,EAAA,IAEA,OAAA,EAAA,QAAA,EAAA;;ACXA,aAkQC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,eAAA,EAAA,QAAA,wBAAA,EAAA,QAAA,WAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,cAAA,EAAA,QAAA,cAAA,EAAA,QAAA,UAAA,EAAA,QAAA,YAAA,EAhQD,IAAIgK,GAAe,EACfC,GAAuB,EAUpB,SAASS,EAAe6B,EAAUC,EAAMC,GACvCxB,MAAAA,EAAQsB,EAAStB,MAAMuB,GACtBvB,OAAAA,GAASA,EAAMrL,QAAU6M,GAAOC,SAASzB,EAAMwB,GAAM,IAMvD,SAASgG,EAAwBnK,EAAQC,EAAiBC,GAC3D,IAACF,EAAOG,kBACV,OAEIC,MAAAA,EAAQJ,EAAOG,kBAAkB9K,UACjCgL,EAAyBD,EAAME,iBACrCF,EAAME,iBAAmB,SAASC,EAAiBC,GAC7CD,GAAAA,IAAoBN,EACfI,OAAAA,EAAuBhD,MAAM,KAAMhG,WAEtCoJ,MAAAA,EAAmB7F,IACjB8F,MAAAA,EAAgBR,EAAQtF,GAC1B8F,IACEF,EAAGG,YACLH,EAAGG,YAAYD,GAEfF,EAAGE,KASFL,OALFO,KAAAA,UAAY,KAAKA,WAAa,GAC9B,KAAKA,UAAUX,KACbW,KAAAA,UAAUX,GAAmB,IAAIY,KAEnCD,KAAAA,UAAUX,GAAiBa,IAAIN,EAAIC,GACjCJ,EAAuBhD,MAAM,KAAM,CAACkD,EACzCE,KAGEM,MAAAA,EAA4BX,EAAMY,oBACxCZ,EAAMY,oBAAsB,SAAST,EAAiBC,GAChDD,GAAAA,IAAoBN,IAAoB,KAAKW,YACzC,KAAKA,UAAUX,GACdc,OAAAA,EAA0B1D,MAAM,KAAMhG,WAE3C,IAAC,KAAKuJ,UAAUX,GAAiBgB,IAAIT,GAChCO,OAAAA,EAA0B1D,MAAM,KAAMhG,WAEzC6J,MAAAA,EAAc,KAAKN,UAAUX,GAAiBkB,IAAIX,GAQjDO,OAPFH,KAAAA,UAAUX,GAAiBmB,OAAOZ,GACM,IAAzC,KAAKI,UAAUX,GAAiBoB,aAC3B,KAAKT,UAAUX,GAEmB,IAAvC9K,OAAOwB,KAAK,KAAKiK,WAAWtJ,eACvB,KAAKsJ,UAEPG,EAA0B1D,MAAM,KAAM,CAACkD,EAC5CW,KAGJ/L,OAAOmM,eAAelB,EAAO,KAAOH,EAAiB,CACnDkB,MACS,OAAA,KAAK,MAAQlB,IAEtBa,IAAIN,GACE,KAAK,MAAQP,KACVe,KAAAA,oBAAoBf,EACrB,KAAK,MAAQA,WACV,KAAK,MAAQA,IAElBO,GACGF,KAAAA,iBAAiBL,EAClB,KAAK,MAAQA,GAAmBO,IAGxCe,YAAY,EACZC,cAAc,IAIX,SAAS+lB,EAAW9lB,GACrB,MAAgB,kBAATA,EACF,IAAI1H,MAAM,yBAA2B0H,EACxC,4BAENC,EAAeD,EACPA,EAAQ,8BACZ,8BAOC,SAAS+lB,EAAgB/lB,GAC1B,MAAgB,kBAATA,EACF,IAAI1H,MAAM,yBAA2B0H,EACxC,4BAENE,GAAwBF,EACjB,oCAAsCA,EAAO,WAAa,YAG5D,SAASG,IACV,GAAkB,iBAAX5B,OAAqB,CAC1B0B,GAAAA,EACF,OAEqB,oBAAZ5B,SAAkD,mBAAhBA,QAAQ8B,KACnD9B,QAAQ8B,IAAIvE,MAAMyC,QAASzI,YAQ1B,SAASqZ,EAAW7O,EAAWC,GAC/BH,GAGL7B,QAAQiC,KAAKF,EAAY,8BAAgCC,EACrD,aASC,SAASslB,EAAcpnB,GAEtBgC,MAAAA,EAAS,CAACC,QAAS,KAAMtC,QAAS,MAGpC,QAAkB,IAAXK,IAA2BA,EAAOkC,UAEpCF,OADPA,EAAOC,QAAU,iBACVD,EAGH,MAAA,UAACE,GAAalC,EAEhBkC,GAAAA,EAAUC,gBACZH,EAAOC,QAAU,UACjBD,EAAOrC,QAAUyC,EAAeF,EAAUG,UACtC,mBAAoB,QACnB,GAAIH,EAAUI,qBACW,IAA3BtC,EAAOuC,iBAA6BvC,EAAOwC,0BAC1CxC,EAAOyC,eAKXT,EAAOC,QAAU,SACjBD,EAAOrC,QAAUyC,EAAeF,EAAUG,UACtC,wBAAyB,QACxB,GAAIH,EAAUQ,cACjBR,EAAUG,UAAUM,MAAM,sBAC5BX,EAAOC,QAAU,OACjBD,EAAOrC,QAAUyC,EAAeF,EAAUG,UACtC,qBAAsB,OACrB,CAAA,IAAIrC,EAAOG,oBACd+B,EAAUG,UAAUM,MAAM,wBAQrBX,OADPA,EAAOC,QAAU,2BACVD,EAPPA,EAAOC,QAAU,SACjBD,EAAOrC,QAAUyC,EAAeF,EAAUG,UACtC,uBAAwB,GAC5BL,EAAOY,oBAAsB5C,EAAO6C,mBAChC,qBAAsB7C,EAAO6C,kBAAkBxN,UAM9C2M,OAAAA,EAST,SAASgB,EAASvN,GACTN,MAAwC,oBAAxCA,OAAOE,UAAU0G,SAASvE,KAAK/B,GAQjC,SAASqN,EAAcC,GACxB,OAACC,EAASD,GAIP5N,OAAOwB,KAAKoM,GAAME,OAAO,SAASC,EAAa3L,GAC9C4L,MAAAA,EAAQH,EAASD,EAAKxL,IACtB8E,EAAQ8G,EAAQL,EAAcC,EAAKxL,IAAQwL,EAAKxL,GAChD6L,EAAgBD,IAAUhO,OAAOwB,KAAK0F,GAAO/E,OAC/C+E,YAAUgH,IAAVhH,GAAuB+G,EAClBF,EAEF/N,OAAOS,OAAOsN,EAAa,CAAE3L,CAAAA,GAAM8E,KACzC,IAXM0G,EAeJ,SAASiB,EAAUF,EAAOO,EAAMC,GAChCD,IAAQC,EAAUrD,IAAIoD,EAAKT,MAGhCU,EAAUxD,IAAIuD,EAAKT,GAAIS,GACvBlP,OAAOwB,KAAK0N,GAAM5N,QAAQ8N,IACpBA,EAAKC,SAAS,MAChBR,EAAUF,EAAOA,EAAM3C,IAAIkD,EAAKE,IAAQD,GAC/BC,EAAKC,SAAS,QACvBH,EAAKE,GAAM9N,QAAQmN,IACjBI,EAAUF,EAAOA,EAAM3C,IAAIyC,GAAKU,QAOjC,SAASmJ,EAAYzL,EAAQsB,EAAOC,GACnCC,MAAAA,EAAkBD,EAAW,eAAiB,cAC9CE,EAAiB,IAAI5C,IACvByC,GAAU,OAAVA,EACKG,OAAAA,EAEHC,MAAAA,EAAa,GAcZD,OAbPzB,EAAOvL,QAAQ4F,IACM,UAAfA,EAAMd,MACNc,EAAMsH,kBAAoBL,EAAMM,IAClCF,EAAWxH,KAAKG,KAGpBqH,EAAWjN,QAAQoN,IACjB7B,EAAOvL,QAAQqN,IACTA,EAAMvI,OAASiI,GAAmBM,EAAMC,UAAYF,EAAUD,IAChEI,EAAUhC,EAAQ8B,EAAOL,OAIxBA;;ACjQT,aAmLC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,iBAAA,EAlLD,IAAA,EAAA,EAAA,QAAA,gBAkLC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAjLD,MAAM4D,EAAU6C,EAAMtI,IAEf,SAASimB,EAAiB7nB,EAAQyE,GACjCvC,MAAAA,EAAYlC,GAAUA,EAAOkC,UAE/B,IAACA,EAAUQ,aACb,OAGIgC,MAAAA,EAAuB,SAAS5L,GAChC,GAAa,iBAANA,GAAkBA,EAAE6L,WAAa7L,EAAE8L,SACrC9L,OAAAA,EAEH+L,MAAAA,EAAK,GA4CJA,OA3CP1P,OAAOwB,KAAKmC,GAAGrC,QAAQc,IACjBA,GAAQ,YAARA,GAA6B,aAARA,GAA8B,gBAARA,EAC7C,OAEIS,MAAAA,EAAuB,iBAAXc,EAAEvB,GAAqBuB,EAAEvB,GAAO,CAACuN,MAAOhM,EAAEvB,SAC5C8L,IAAZrL,EAAE+M,OAA0C,iBAAZ/M,EAAE+M,QACpC/M,EAAEgN,IAAMhN,EAAEiN,IAAMjN,EAAE+M,OAEdG,MAAAA,EAAW,SAASC,EAAQZ,GAC5BY,OAAAA,EACKA,EAASZ,EAAKa,OAAO,GAAGC,cAAgBd,EAAKe,MAAM,GAE3C,aAATf,EAAuB,WAAaA,GAE1CvM,QAAYqL,IAAZrL,EAAE8M,MAAqB,CACzBD,EAAGD,SAAWC,EAAGD,UAAY,GACzBW,IAAAA,EAAK,GACc,iBAAZvN,EAAE8M,OACXS,EAAGL,EAAS,MAAO3N,IAAQS,EAAE8M,MAC7BD,EAAGD,SAAS1I,KAAKqJ,IACjBA,EAAK,IACFL,EAAS,MAAO3N,IAAQS,EAAE8M,MAC7BD,EAAGD,SAAS1I,KAAKqJ,KAEjBA,EAAGL,EAAS,GAAI3N,IAAQS,EAAE8M,MAC1BD,EAAGD,SAAS1I,KAAKqJ,SAGLlC,IAAZrL,EAAE+M,OAA0C,iBAAZ/M,EAAE+M,OACpCF,EAAGF,UAAYE,EAAGF,WAAa,GAC/BE,EAAGF,UAAUO,EAAS,GAAI3N,IAAQS,EAAE+M,OAEnC,CAAA,MAAO,OAAOtO,QAAQ+O,SACNnC,IAAXrL,EAAEwN,KACJX,EAAGF,UAAYE,EAAGF,WAAa,GAC/BE,EAAGF,UAAUO,EAASM,EAAKjO,IAAQS,EAAEwN,QAKzC1M,EAAE2M,WACJZ,EAAGD,UAAYC,EAAGD,UAAY,IAAIc,OAAO5M,EAAE2M,WAEtCZ,GAGHc,EAAmB,SAASC,EAAaC,GACzCpB,GAAAA,EAAe9E,SAAW,GACrBkG,OAAAA,EAAKD,GAGVA,IADJA,EAAcE,KAAKC,MAAMD,KAAKE,UAAUJ,MACQ,iBAAtBA,EAAYK,MAAoB,CAClDC,MAAAA,EAAQ,SAASC,EAAKxN,EAAGE,GACzBF,KAAKwN,KAAStN,KAAKsN,KACrBA,EAAItN,GAAKsN,EAAIxN,UACNwN,EAAIxN,KAIfuN,GADAN,EAAcE,KAAKC,MAAMD,KAAKE,UAAUJ,KACtBK,MAAO,kBAAmB,uBAC5CC,EAAMN,EAAYK,MAAO,mBAAoB,wBAC7CL,EAAYK,MAAQvB,EAAqBkB,EAAYK,OAEnDL,GAAAA,GAA4C,iBAAtBA,EAAYQ,MAAoB,CAEpDC,IAAAA,EAAOT,EAAYQ,MAAME,WAC7BD,EAAOA,IAA0B,iBAATA,EAAqBA,EAAO,CAACvB,MAAOuB,IACtDE,MAAAA,EAA6B9B,EAAe9E,QAAU,GAEvD0G,GAAAA,IAAwB,SAAfA,EAAKtB,OAAmC,gBAAfsB,EAAKtB,OACf,SAAfsB,EAAKvB,OAAmC,gBAAfuB,EAAKvB,UACtC5C,EAAUQ,aAAa+D,0BACvBvE,EAAUQ,aAAa+D,0BAA0BH,YAChDC,GAA6B,CAE9BC,IAAAA,EAMAA,UAPGZ,EAAYQ,MAAME,WAEN,gBAAfD,EAAKtB,OAA0C,gBAAfsB,EAAKvB,MACvC0B,EAAU,CAAC,OAAQ,QACK,SAAfH,EAAKtB,OAAmC,SAAfsB,EAAKvB,QACvC0B,EAAU,CAAC,UAETA,EAEKtE,OAAAA,EAAUQ,aAAagE,mBAC7BhK,KAAKiK,IAEAC,IAAAA,GADJD,EAAUA,EAAQE,OAAOhM,GAAgB,eAAXA,EAAEiM,OACdC,KAAKlM,GAAK2L,EAAQQ,KAAKrE,GACvC9H,EAAEoM,MAAMC,cAAcC,SAASxE,KAU1BkD,OATFe,GAAOD,EAAQrP,QAAUkP,EAAQW,SAAS,UAC7CP,EAAMD,EAAQA,EAAQrP,OAAS,IAE7BsP,IACFhB,EAAYQ,MAAMgB,SAAWf,EAAKtB,MAAQ,CAACA,MAAO6B,EAAIQ,UACZ,CAACtC,MAAO8B,EAAIQ,WAExDxB,EAAYQ,MAAQ1B,EAAqBkB,EAAYQ,OACrDiB,EAAQ,WAAavB,KAAKE,UAAUJ,IAC7BC,EAAKD,KAIlBA,EAAYQ,MAAQ1B,EAAqBkB,EAAYQ,OAGhDP,OADPwB,EAAQ,WAAavB,KAAKE,UAAUJ,IAC7BC,EAAKD,IAGR0B,EAAa,SAAS1M,GACtB6J,OAAAA,EAAe9E,SAAW,GACrB/E,EAEF,CACL2J,KAAM,CACJgD,sBAAuB,kBACvBC,yBAA0B,kBAC1BC,kBAAmB,kBACnBC,qBAAsB,gBACtBC,4BAA6B,uBAC7BC,gBAAiB,mBACjBC,+BAAgC,kBAChCC,wBAAyB,kBACzBC,gBAAiB,aACjBC,mBAAoB,aACpBC,mBAAoB,cACpBrN,EAAE2J,OAAS3J,EAAE2J,KACf2D,QAAStN,EAAEsN,QACXC,WAAYvN,EAAEuN,YAAcvN,EAAEwN,eAC9BrM,WACS,OAAA,KAAKwI,MAAQ,KAAK2D,SAAW,MAAQ,KAAKA,WAmBnDhG,GALJA,EAAUmG,aATY,SAASzC,EAAa0C,EAAWC,GACrD5C,EAAiBC,EAAa9M,IAC5BoJ,EAAUI,mBAAmBxJ,EAAGwP,EAAW1N,IACrC2N,GACFA,EAAQjB,EAAW1M,SAKY2D,KAAK2D,GAKxCA,EAAUQ,aAAa2F,aAAc,CACjCG,MAAAA,EAAmBtG,EAAUQ,aAAa2F,aAC5C9J,KAAK2D,EAAUQ,cACnBR,EAAUQ,aAAa2F,aAAe,SAASI,GACtC9C,OAAAA,EAAiB8C,EAAI3P,GAAK0P,EAAiB1P,GAAG4D,KAAKgM,IACpD5P,GAAAA,EAAEmN,QAAUyC,EAAOC,iBAAiBrR,QACpCwB,EAAEsN,QAAUsC,EAAOE,iBAAiBtR,OAIhC,MAHNoR,EAAOG,YAAYpS,QAAQ6M,IACzBA,EAAMwF,SAEF,IAAIC,aAAa,GAAI,iBAEtBL,OAAAA,GACN9N,GAAKoO,QAAQC,OAAO3B,EAAW1M;;AChLxC,aACO,SAASwuB,EAAoBppB,EAAQkJ,GACtClJ,EAAOkC,UAAUQ,cACnB,oBAAqB1C,EAAOkC,UAAUQ,cAGlC1C,EAAOkC,UAAUQ,eAKI,mBAAhBwG,EAKXlJ,EAAOkC,UAAUQ,aAAayG,gBAC5B,SAAyBvD,GAChBsD,OAAAA,EAAYtD,GAChBlJ,KAAK0M,IACEC,MAAAA,EAAiBzD,EAAYQ,OAASR,EAAYQ,MAAMkD,MACxDC,EAAkB3D,EAAYQ,OAClCR,EAAYQ,MAAMoD,OACdC,EAAqB7D,EAAYQ,OACrCR,EAAYQ,MAAMsD,UAcb1J,OAbP4F,EAAYQ,MAAQ,CAClBzB,UAAW,CACTgF,kBAAmB,UACnBC,oBAAqBR,EACrBS,aAAcJ,GAAsB,IAGpCJ,IACFzD,EAAYQ,MAAMzB,UAAUmF,SAAWT,GAErCE,IACF3D,EAAYQ,MAAMzB,UAAUoF,UAAYR,GAEnCvJ,EAAOkC,UAAUQ,aAAa2F,aAAazC,MA1BxD9F,QAAQC,MAAM,gEA6BjB,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,oBAAA;;ACzCD,aAqrBC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,gBAAA,EAAA,QAAA,YAAA,EAAA,QAAA,uBAAA,EAAA,QAAA,aAAA,EAAA,QAAA,2BAAA,EAAA,QAAA,kCAAA,EAAA,QAAA,wBAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,qBAAA,EAAA,OAAA,eAAA,QAAA,mBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,oBAAA,OAAA,eAAA,QAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,uBAprBD,IAAA,EAAA,EAAA,QAAA,gBAEA,EAAA,QAAA,kBACA,EAAA,QAAA,qBAirBC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EA/qBM,SAAS+nB,EAAgB9nB,GAC9BA,EAAOgK,YAAchK,EAAOgK,aAAehK,EAAOiK,kBAG7C,SAAS8d,EAAY/nB,GACtB,GAAkB,iBAAXA,IAAuBA,EAAOG,mBAAuB,YAC5DH,EAAOG,kBAAkB9K,UA8D3B6U,EAAMC,wBAAwBnK,EAAQ,QAASpF,IACxCA,EAAEwP,aACLjV,OAAOmM,eAAe1G,EAAG,cACvB,CAACyB,MAAO,CAACgO,SAAUzP,EAAEyP,YAElBzP,QAnE8B,CACvCzF,OAAOmM,eAAetB,EAAOG,kBAAkB9K,UAAW,UAAW,CACnE8L,MACS,OAAA,KAAKmJ,UAEdxJ,IAAI5F,GACE,KAAKoP,UACFtJ,KAAAA,oBAAoB,QAAS,KAAKsJ,UAEpChK,KAAAA,iBAAiB,QAAS,KAAKgK,SAAWpP,IAEjDqG,YAAY,EACZC,cAAc,IAEV+I,MAAAA,EACFvK,EAAOG,kBAAkB9K,UAAUmV,qBACvCxK,EAAOG,kBAAkB9K,UAAUmV,qBACjC,WAuCSD,OAtCF,KAAKE,eACHA,KAAAA,aAAgB7P,CAAAA,IAGnBA,EAAE8N,OAAOpI,iBAAiB,WAAYoK,IAChCL,IAAAA,EAEFA,EADErK,EAAOG,kBAAkB9K,UAAUsV,aAC1B,KAAKA,eACb5D,KAAK/O,GAAKA,EAAEsL,OAAStL,EAAEsL,MAAMM,KAAO8G,EAAGpH,MAAMM,IAErC,CAACN,MAAOoH,EAAGpH,OAGlBsH,MAAAA,EAAQ,IAAIC,MAAM,SACxBD,EAAMtH,MAAQoH,EAAGpH,MACjBsH,EAAMP,SAAWA,EACjBO,EAAMR,YAAc,CAACC,SAAAA,GACrBO,EAAME,QAAU,CAAClQ,EAAE8N,QACdqC,KAAAA,cAAcH,KAErBhQ,EAAE8N,OAAOG,YAAYpS,QAAQ6M,IACvB+G,IAAAA,EAEFA,EADErK,EAAOG,kBAAkB9K,UAAUsV,aAC1B,KAAKA,eACb5D,KAAK/O,GAAKA,EAAEsL,OAAStL,EAAEsL,MAAMM,KAAON,EAAMM,IAElC,CAACN,MAAAA,GAERsH,MAAAA,EAAQ,IAAIC,MAAM,SACxBD,EAAMtH,MAAQA,EACdsH,EAAMP,SAAWA,EACjBO,EAAMR,YAAc,CAACC,SAAAA,GACrBO,EAAME,QAAU,CAAClQ,EAAE8N,QACdqC,KAAAA,cAAcH,OAGlBtK,KAAAA,iBAAiB,YAAa,KAAKmK,eAEnCF,EAAyBlN,MAAM,KAAMhG,aAgB7C,SAAS4wB,EAAuBjoB,GAEjC,GAAkB,iBAAXA,GAAuBA,EAAOG,qBACnC,eAAgBH,EAAOG,kBAAkB9K,YAC3C,qBAAsB2K,EAAOG,kBAAkB9K,UAAW,CACtD2V,MAAAA,EAAqB,SAASC,EAAI3H,GAC/B,MAAA,CACLA,MAAAA,EACI4H,WAQK,YAPY7H,IAAf,KAAK8H,QACY,UAAf7H,EAAMwD,KACHqE,KAAAA,MAAQF,EAAGG,iBAAiB9H,GAE5B6H,KAAAA,MAAQ,MAGV,KAAKA,OAEdE,IAAKJ,IAKL,IAACjL,EAAOG,kBAAkB9K,UAAUiW,WAAY,CAClDtL,EAAOG,kBAAkB9K,UAAUiW,WAAa,WAEvC,OADFC,KAAAA,SAAW,KAAKA,UAAY,GAC1B,KAAKA,SAASjG,SAEjBkG,MAAAA,EAAexL,EAAOG,kBAAkB9K,UAAUoW,SACxDzL,EAAOG,kBAAkB9K,UAAUoW,SACjC,SAAkBnI,EAAOoF,GACnBgD,IAAAA,EAASF,EAAanO,MAAM,KAAMhG,WAK/BqU,OAJFA,IACHA,EAASV,EAAmB,KAAM1H,GAC7BiI,KAAAA,SAASrP,KAAKwP,IAEdA,GAGLC,MAAAA,EAAkB3L,EAAOG,kBAAkB9K,UAAUuW,YAC3D5L,EAAOG,kBAAkB9K,UAAUuW,YACjC,SAAqBF,GACnBC,EAAgBtO,MAAM,KAAMhG,WACtBwU,MAAAA,EAAM,KAAKN,SAASO,QAAQJ,IACrB,IAATG,GACGN,KAAAA,SAASQ,OAAOF,EAAK,IAI5BG,MAAAA,EAAgBhM,EAAOG,kBAAkB9K,UAAU4W,UACzDjM,EAAOG,kBAAkB9K,UAAU4W,UAAY,SAAmBvD,GAC3D6C,KAAAA,SAAW,KAAKA,UAAY,GACjCS,EAAc3O,MAAM,KAAM,CAACqL,IAC3BA,EAAOG,YAAYpS,QAAQ6M,IACpBiI,KAAAA,SAASrP,KAAK8O,EAAmB,KAAM1H,OAI1C4I,MAAAA,EAAmBlM,EAAOG,kBAAkB9K,UAAU8W,aAC5DnM,EAAOG,kBAAkB9K,UAAU8W,aACjC,SAAsBzD,GACf6C,KAAAA,SAAW,KAAKA,UAAY,GACjCW,EAAiB7O,MAAM,KAAM,CAACqL,IAE9BA,EAAOG,YAAYpS,QAAQ6M,IACnBoI,MAAAA,EAAS,KAAKH,SAASxE,KAAK3P,GAAKA,EAAEkM,QAAUA,GAC/CoI,GACGH,KAAAA,SAASQ,OAAO,KAAKR,SAASO,QAAQJ,GAAS,WAIvD,GAAsB,iBAAX1L,GAAuBA,EAAOG,mBACrC,eAAgBH,EAAOG,kBAAkB9K,WACzC,qBAAsB2K,EAAOG,kBAAkB9K,WAC/C2K,EAAOoM,gBACL,SAAUpM,EAAOoM,aAAa/W,WAAY,CAC/CgX,MAAAA,EAAiBrM,EAAOG,kBAAkB9K,UAAUiW,WAC1DtL,EAAOG,kBAAkB9K,UAAUiW,WAAa,WACxCgB,MAAAA,EAAUD,EAAehP,MAAM,KAAM,IAEpCiP,OADPA,EAAQ7V,QAAQiV,GAAUA,EAAOL,IAAM,MAChCiB,GAGTnX,OAAOmM,eAAetB,EAAOoM,aAAa/W,UAAW,OAAQ,CAC3D8L,MAQS,YAPYkC,IAAf,KAAK8H,QACiB,UAApB,KAAK7H,MAAMwD,KACRqE,KAAAA,MAAQ,KAAKE,IAAID,iBAAiB,KAAK9H,OAEvC6H,KAAAA,MAAQ,MAGV,KAAKA,UAMb,SAAS+c,EAAaloB,GACvB,IAACA,EAAOG,kBACV,OAGIoM,MAAAA,EAAevM,EAAOG,kBAAkB9K,UAAUmX,SACxDxM,EAAOG,kBAAkB9K,UAAUmX,SAAW,WACtC,MAACC,EAAUC,EAAQC,GAAStV,UAI9BA,GAAAA,UAAUC,OAAS,GAAyB,mBAAbmV,EAC1BF,OAAAA,EAAalP,MAAM,KAAMhG,WAK9BkV,GAAwB,IAAxBA,EAAajV,SAAsC,IAArBD,UAAUC,QACpB,mBAAbmV,GACFF,OAAAA,EAAalP,MAAM,KAAM,IAG5BuP,MAAAA,EAAkB,SAASC,GACzBC,MAAAA,EAAiB,GAiBhBA,OAhBSD,EAAS7K,SACjBvL,QAAQsW,IACRC,MAAAA,EAAgB,CACpBpJ,GAAImJ,EAAOnJ,GACXqJ,UAAWF,EAAOE,UAClB1R,KAAM,CACJ2R,eAAgB,kBAChBC,gBAAiB,oBACjBJ,EAAOxR,OAASwR,EAAOxR,MAE3BwR,EAAOK,QAAQ3W,QAAQ8N,IACrByI,EAAczI,GAAQwI,EAAOM,KAAK9I,KAEpCuI,EAAeE,EAAcpJ,IAAMoJ,IAG9BF,GAIHQ,EAAe,SAASxJ,GACrB,OAAA,IAAIjD,IAAI1L,OAAOwB,KAAKmN,GAAO1N,IAAImB,GAAO,CAACA,EAAKuM,EAAMvM,OAGvDF,GAAAA,UAAUC,QAAU,EAAG,CACnByzB,MAAAA,EAA0B,SAASle,GACvCH,EAAOY,EAAaV,EAAgBC,MAG/BN,OAAAA,EAAalP,MAAM,KAAM,CAAC0tB,EAC/Bte,IAIG,OAAA,IAAIzD,QAAQ,CAACuE,EAAStE,KAC3BsD,EAAalP,MAAM,KAAM,CACvB,SAASwP,GACPU,EAAQD,EAAaV,EAAgBC,MACpC5D,MACJvM,KAAKgQ,EAAQC,IAIb,SAASwb,EAA2BnoB,GACrC,KAAoB,iBAAXA,GAAuBA,EAAOG,mBACvCH,EAAOoM,cAAgBpM,EAAOwN,gBAChC,OAIE,KAAE,aAAcxN,EAAOoM,aAAa/W,WAAY,CAC5CgX,MAAAA,EAAiBrM,EAAOG,kBAAkB9K,UAAUiW,WACtDe,IACFrM,EAAOG,kBAAkB9K,UAAUiW,WAAa,WACxCgB,MAAAA,EAAUD,EAAehP,MAAM,KAAM,IAEpCiP,OADPA,EAAQ7V,QAAQiV,GAAUA,EAAOL,IAAM,MAChCiB,IAILd,MAAAA,EAAexL,EAAOG,kBAAkB9K,UAAUoW,SACpDD,IACFxL,EAAOG,kBAAkB9K,UAAUoW,SAAW,WACtCC,MAAAA,EAASF,EAAanO,MAAM,KAAMhG,WAEjCqU,OADPA,EAAOL,IAAM,KACNK,IAGX1L,EAAOoM,aAAa/W,UAAUmX,SAAW,WACjCd,MAAAA,EAAS,KACR,OAAA,KAAKL,IAAImB,WAAW9P,KAAKsF,GAK9BkI,EAAMuD,YAAYzL,EAAQ0J,EAAOpI,OAAO,KAK1C,KAAE,aAActD,EAAOwN,eAAenY,WAAY,CAC9CqY,MAAAA,EAAmB1N,EAAOG,kBAAkB9K,UAAUsV,aACxD+C,IACF1N,EAAOG,kBAAkB9K,UAAUsV,aACjC,WACQgD,MAAAA,EAAYD,EAAiBrQ,MAAM,KAAM,IAExCsQ,OADPA,EAAUlX,QAAQ4T,GAAYA,EAASgB,IAAM,MACtCsC,IAGbzD,EAAMC,wBAAwBnK,EAAQ,QAASpF,IAC7CA,EAAEyP,SAASgB,IAAMzQ,EAAEgT,WACZhT,IAEToF,EAAOwN,eAAenY,UAAUmX,SAAW,WACnCnC,MAAAA,EAAW,KACV,OAAA,KAAKgB,IAAImB,WAAW9P,KAAKsF,GAC9BkI,EAAMuD,YAAYzL,EAAQqI,EAAS/G,OAAO,KAI5C,KAAE,aAActD,EAAOoM,aAAa/W,WACpC,aAAc2K,EAAOwN,eAAenY,WACtC,OAIIkX,MAAAA,EAAevM,EAAOG,kBAAkB9K,UAAUmX,SACxDxM,EAAOG,kBAAkB9K,UAAUmX,SAAW,WACxCnV,GAAAA,UAAUC,OAAS,GACnBD,UAAU,aAAc2I,EAAO6N,iBAAkB,CAC7CvK,MAAAA,EAAQjM,UAAU,GACpBqU,IAAAA,EACArB,EACAzT,EAoBAA,OAnBC0U,KAAAA,aAAa7U,QAAQW,IACpBA,EAAEkM,QAAUA,IACVoI,EACF9U,GAAM,EAEN8U,EAAStU,KAIVuT,KAAAA,eAAelU,QAAQuB,IACtBA,EAAEsL,QAAUA,IACV+G,EACFzT,GAAM,EAENyT,EAAWrS,GAGRA,EAAEsL,QAAUA,IAEjB1M,GAAQ8U,GAAUrB,EACbrB,QAAQC,OAAO,IAAIF,aACxB,4DACA,uBACO2C,EACFA,EAAOc,WACLnC,EACFA,EAASmC,WAEXxD,QAAQC,OAAO,IAAIF,aACxB,gDACA,uBAEGwD,OAAAA,EAAalP,MAAM,KAAMhG,YAI7B,SAASyW,EAAkC9N,GAIhDA,EAAOG,kBAAkB9K,UAAU2Y,gBACjC,WAES7Y,OADF4a,KAAAA,qBAAuB,KAAKA,sBAAwB,GAClD5a,OAAOwB,KAAK,KAAKoZ,sBACrB3Z,IAAI4Z,GAAY,KAAKD,qBAAqBC,GAAU,KAGrDxE,MAAAA,EAAexL,EAAOG,kBAAkB9K,UAAUoW,SACxDzL,EAAOG,kBAAkB9K,UAAUoW,SACjC,SAAkBnI,EAAOoF,GACnB,IAACA,EACI8C,OAAAA,EAAanO,MAAM,KAAMhG,WAE7B0Y,KAAAA,qBAAuB,KAAKA,sBAAwB,GAEnDrE,MAAAA,EAASF,EAAanO,MAAM,KAAMhG,WAMjCqU,OALF,KAAKqE,qBAAqBrH,EAAO9E,KAE+B,IAA1D,KAAKmM,qBAAqBrH,EAAO9E,IAAIkI,QAAQJ,IACjDqE,KAAAA,qBAAqBrH,EAAO9E,IAAI1H,KAAKwP,GAFrCqE,KAAAA,qBAAqBrH,EAAO9E,IAAM,CAAC8E,EAAQgD,GAI3CA,GAGLM,MAAAA,EAAgBhM,EAAOG,kBAAkB9K,UAAU4W,UACzDjM,EAAOG,kBAAkB9K,UAAU4W,UAAY,SAAmBvD,GAC3DqH,KAAAA,qBAAuB,KAAKA,sBAAwB,GAEzDrH,EAAOG,YAAYpS,QAAQ6M,IAErB8K,GADkB,KAAK9C,aAAavE,KAAK3P,GAAKA,EAAEkM,QAAUA,GAEtD,MAAA,IAAIyF,aAAa,wBACnB,wBAGFkH,MAAAA,EAAkB,KAAK3E,aAC7BU,EAAc3O,MAAM,KAAMhG,WACpB6Y,MAAAA,EAAa,KAAK5E,aACrBzE,OAAOsJ,IAAqD,IAAxCF,EAAgBnE,QAAQqE,IAC1CJ,KAAAA,qBAAqBrH,EAAO9E,IAAM,CAAC8E,GAAQhD,OAAOwK,IAGnDhE,MAAAA,EAAmBlM,EAAOG,kBAAkB9K,UAAU8W,aAC5DnM,EAAOG,kBAAkB9K,UAAU8W,aACjC,SAAsBzD,GAGbwD,OAFF6D,KAAAA,qBAAuB,KAAKA,sBAAwB,UAClD,KAAKA,qBAAqBrH,EAAO9E,IACjCsI,EAAiB7O,MAAM,KAAMhG,YAGlCsU,MAAAA,EAAkB3L,EAAOG,kBAAkB9K,UAAUuW,YAC3D5L,EAAOG,kBAAkB9K,UAAUuW,YACjC,SAAqBF,GAaZC,OAZFoE,KAAAA,qBAAuB,KAAKA,sBAAwB,GACrDrE,GACFvW,OAAOwB,KAAK,KAAKoZ,sBAAsBtZ,QAAQuZ,IACvCnE,MAAAA,EAAM,KAAKkE,qBAAqBC,GAAUlE,QAAQJ,IAC3C,IAATG,GACGkE,KAAAA,qBAAqBC,GAAUjE,OAAOF,EAAK,GAEC,IAA/C,KAAKkE,qBAAqBC,GAAU1Y,eAC/B,KAAKyY,qBAAqBC,KAIhCrE,EAAgBtO,MAAM,KAAMhG,YAIlC,SAAS2wB,EAAwBhoB,EAAQyE,GAC1C,IAACzE,EAAOG,kBACV,OAGEH,GAAAA,EAAOG,kBAAkB9K,UAAUoW,UACnChH,EAAe9E,SAAW,GACrBmO,OAAAA,EAAkC9N,GAKrC+N,MAAAA,EAAsB/N,EAAOG,kBAAkB9K,UAChD2Y,gBACLhO,EAAOG,kBAAkB9K,UAAU2Y,gBACjC,WACQC,MAAAA,EAAgBF,EAAoB1Q,MAAM,MAEzC4Q,OADFC,KAAAA,gBAAkB,KAAKA,iBAAmB,GACxCD,EAAc7X,IAAIsS,GAAU,KAAKwF,gBAAgBxF,EAAO9E,MAG7DoI,MAAAA,EAAgBhM,EAAOG,kBAAkB9K,UAAU4W,UACzDjM,EAAOG,kBAAkB9K,UAAU4W,UAAY,SAAmBvD,GAa5D,GAZCyF,KAAAA,SAAW,KAAKA,UAAY,GAC5BD,KAAAA,gBAAkB,KAAKA,iBAAmB,GAE/CxF,EAAOG,YAAYpS,QAAQ6M,IAErB8K,GADkB,KAAK9C,aAAavE,KAAK3P,GAAKA,EAAEkM,QAAUA,GAEtD,MAAA,IAAIyF,aAAa,wBACnB,yBAKH,KAAKmF,gBAAgBxF,EAAO9E,IAAK,CAC9ByK,MAAAA,EAAY,IAAIrO,EAAOgK,YAAYtB,EAAOG,aAC3CsF,KAAAA,SAASzF,EAAO9E,IAAMyK,EACtBH,KAAAA,gBAAgBG,EAAUzK,IAAM8E,EACrCA,EAAS2F,EAEXrC,EAAc3O,MAAM,KAAM,CAACqL,KAGvBwD,MAAAA,EAAmBlM,EAAOG,kBAAkB9K,UAAU8W,aA6DnD4C,SAAAA,EAAwB9D,EAAI4D,GAC/BK,IAAAA,EAAML,EAAYK,IAOf,OANP/Z,OAAOwB,KAAKsU,EAAGiD,iBAAmB,IAAIzX,QAAQ0Y,IACtCC,MAAAA,EAAiBnE,EAAGiD,gBAAgBiB,GACpCE,EAAiBpE,EAAGkD,SAASiB,EAAexL,IAClDsL,EAAMA,EAAItT,QAAQ,IAAI0T,OAAOD,EAAezL,GAAI,KAC5CwL,EAAexL,MAEd,IAAI2L,sBAAsB,CAC/BhU,KAAMsT,EAAYtT,KAClB2T,IAAAA,IAtEJlP,EAAOG,kBAAkB9K,UAAU8W,aACjC,SAAsBzD,GACfyF,KAAAA,SAAW,KAAKA,UAAY,GAC5BD,KAAAA,gBAAkB,KAAKA,iBAAmB,GAE/ChC,EAAiB7O,MAAM,KAAM,CAAE,KAAK8Q,SAASzF,EAAO9E,KAAO8E,WACpD,KAAKwF,gBAAiB,KAAKC,SAASzF,EAAO9E,IAC9C,KAAKuK,SAASzF,EAAO9E,IAAIA,GAAK8E,EAAO9E,WAClC,KAAKuK,SAASzF,EAAO9E,KAGhC5D,EAAOG,kBAAkB9K,UAAUoW,SACjC,SAAkBnI,EAAOoF,GACnB,GAAwB,WAAxB,KAAK4F,eACD,MAAA,IAAIvF,aACR,sDACA,qBAEE+B,MAAAA,EAAU,GAAGxF,MAAM9N,KAAKH,UAAW,GACrCyT,GAAmB,IAAnBA,EAAQxT,SACPwT,EAAQ,GAAGjC,YAAY9B,KAAK9O,GAAKA,IAAMqL,GAGpC,MAAA,IAAIyF,aACR,gHAEA,qBAIAqF,GADkB,KAAK9C,aAAavE,KAAK3P,GAAKA,EAAEkM,QAAUA,GAEtD,MAAA,IAAIyF,aAAa,wBACnB,sBAGDoF,KAAAA,SAAW,KAAKA,UAAY,GAC5BD,KAAAA,gBAAkB,KAAKA,iBAAmB,GACzCK,MAAAA,EAAY,KAAKJ,SAASzF,EAAO9E,IACnC2K,GAAAA,EAKFA,EAAU9C,SAASnI,GAGnB0F,QAAQuE,UAAU7Q,KAAK,KAChBqO,KAAAA,cAAc,IAAIF,MAAM,4BAE1B,CACCwD,MAAAA,EAAY,IAAIrO,EAAOgK,YAAY,CAAC1G,IACrC6K,KAAAA,SAASzF,EAAO9E,IAAMyK,EACtBH,KAAAA,gBAAgBG,EAAUzK,IAAM8E,EAChCuD,KAAAA,UAAUoC,GAEV,OAAA,KAAK/C,aAAavE,KAAK3P,GAAKA,EAAEkM,QAAUA,IA+BlD,CAAA,cAAe,gBAAgB7M,QAAQ,SAAS+X,GACzCC,MAAAA,EAAezO,EAAOG,kBAAkB9K,UAAUmZ,GAClDE,EAAY,CAAEF,CAAAA,KACZG,MAAAA,EAAOtX,UAGTuX,OAFiBvX,UAAUC,QACH,mBAAjBD,UAAU,GAEZoX,EAAapR,MAAM,KAAM,CAC7BwR,IACOC,MAAAA,EAAOC,EAAwB,KAAMF,GAC3CF,EAAK,GAAGtR,MAAM,KAAM,CAACyR,KAEtBlY,IACK+X,EAAK,IACPA,EAAK,GAAGtR,MAAM,KAAMzG,IAErBS,UAAU,KAGVoX,EAAapR,MAAM,KAAMhG,WAC/BqF,KAAKmS,GAAeE,EAAwB,KAAMF,MAErD7O,EAAOG,kBAAkB9K,UAAUmZ,GAAUE,EAAUF,KAGnDQ,MAAAA,EACFhP,EAAOG,kBAAkB9K,UAAU4Z,oBACvCjP,EAAOG,kBAAkB9K,UAAU4Z,oBACjC,WACM,OAAC5X,UAAUC,QAAWD,UAAU,GAAGkE,MAGvClE,UAAU,GA7CLmY,SAAwBvE,EAAI4D,GAC/BK,IAAAA,EAAML,EAAYK,IAOf,OANP/Z,OAAOwB,KAAKsU,EAAGiD,iBAAmB,IAAIzX,QAAQ0Y,IACtCC,MAAAA,EAAiBnE,EAAGiD,gBAAgBiB,GACpCE,EAAiBpE,EAAGkD,SAASiB,EAAexL,IAClDsL,EAAMA,EAAItT,QAAQ,IAAI0T,OAAOF,EAAexL,GAAI,KAC5CyL,EAAezL,MAEd,IAAI2L,sBAAsB,CAC/BhU,KAAMsT,EAAYtT,KAClB2T,IAAAA,IAmCeM,CAAwB,KAAMnY,UAAU,IAChD2X,EAAwB3R,MAAM,KAAMhG,YAHlC2X,EAAwB3R,MAAM,KAAMhG,YAQ3CoY,MAAAA,EAAuBta,OAAOua,yBAChC1P,EAAOG,kBAAkB9K,UAAW,oBACxCF,OAAOmM,eAAetB,EAAOG,kBAAkB9K,UAC3C,mBAAoB,CAClB8L,MACQ0N,MAAAA,EAAcY,EAAqBtO,IAAI9D,MAAM,MAC/CwR,MAAqB,KAArBA,EAAYtT,KACPsT,EAEFE,EAAwB,KAAMF,MAI7C7O,EAAOG,kBAAkB9K,UAAUuW,YACjC,SAAqBF,GACf,GAAwB,WAAxB,KAAK4C,eACD,MAAA,IAAIvF,aACR,sDACA,qBAIA,IAAC2C,EAAOL,IACJ,MAAA,IAAItC,aAAa,yFAC2B,aAGhD,KADY2C,EAAOL,MAAQ,MAEvB,MAAA,IAAItC,aAAa,6CACnB,sBAKFL,IAAAA,EADCyF,KAAAA,SAAW,KAAKA,UAAY,GAEjChZ,OAAOwB,KAAK,KAAKwX,UAAU1X,QAAQkZ,IAChB,KAAKxB,SAASwB,GAAU9G,YACtC9B,KAAKzD,GAASoI,EAAOpI,QAAUA,KAEhCoF,EAAS,KAAKyF,SAASwB,MAIvBjH,IACgC,IAA9BA,EAAOG,YAAYvR,OAGhB6U,KAAAA,aAAa,KAAK+B,gBAAgBxF,EAAO9E,KAG9C8E,EAAOkD,YAAYF,EAAOpI,OAEvByH,KAAAA,cAAc,IAAIF,MAAM,wBAK9B,SAAS6c,EAAmB1nB,EAAQyE,IACpCzE,EAAOG,mBAAqBH,EAAOwC,0BAEtCxC,EAAOG,kBAAoBH,EAAOwC,yBAE/BxC,EAAOG,mBAKRsE,EAAe9E,QAAU,IAC1B,CAAA,sBAAuB,uBAAwB,mBAC3ClJ,QAAQ,SAAS+X,GACVC,MAAAA,EAAezO,EAAOG,kBAAkB9K,UAAUmZ,GAClDE,EAAY,CAAEF,CAAAA,KAIXC,OAHPpX,UAAU,GAAK,IAAiB,oBAAXmX,EACjBxO,EAAO4P,gBACP5P,EAAOuP,uBAAuBlY,UAAU,IACrCoX,EAAapR,MAAM,KAAMhG,aAElC2I,EAAOG,kBAAkB9K,UAAUmZ,GAAUE,EAAUF,KAM1D,SAAS4Z,EAAqBpoB,EAAQyE,GAC3CyF,EAAMC,wBAAwBnK,EAAQ,oBAAqBpF,IACnDqQ,MAAAA,EAAKrQ,EAAE7D,OACT0N,KAAAA,EAAe9E,QAAU,IAAOsL,EAAG4E,kBACI,WAAvC5E,EAAG4E,mBAAmBC,eACE,WAAtB7E,EAAGqD,eAIF1T,OAAAA;;ACnrBX,aA0CC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,iBAAA,EAxCD,IAAA,EAAA,EAAA,QAAA,aAwCC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAlCM,SAAS+b,EAAiBvG,EAAYC,GACvCC,IAAAA,GAAU,EAEPF,OADPA,EAAatK,KAAKC,MAAMD,KAAKE,UAAUoK,KACrBvJ,OAAO0J,IACnBA,GAAAA,IAAWA,EAAOC,MAAQD,EAAOE,KAAM,CACrCD,IAAAA,EAAOD,EAAOC,MAAQD,EAAOE,IAC7BF,EAAOE,MAAQF,EAAOC,MACxBtG,EAAMwG,WAAW,mBAAoB,qBAEjCC,MAAAA,EAA2B,iBAATH,EAsBjB,OArBHG,IACFH,EAAO,CAACA,IAEVA,EAAOA,EAAK3J,OAAO4J,IAEbA,GAAyB,IAAzBA,EAAI3E,QAAQ,SACP,OAAA,EAGH8E,MAAAA,EAAYH,EAAII,WAAW,UAC5BJ,EAAII,WAAW,WAChBJ,EAAItJ,SAAS,iBACbyJ,OAAAA,IAAcN,GAChBA,GAAU,GACH,GAEFM,IAAcN,WAGhBC,EAAOE,IACdF,EAAOC,KAAOG,EAAWH,EAAK,GAAKA,IAC1BA,EAAKlZ;;AC9CpB,aAGA,IAAA,EAAA,CAIA,mBAAA,WACA,OAAA,KAAA,SAAA,SAAA,IAAA,OAAA,EAAA,MAIA,EAAA,WAAA,EAAA,qBAGA,EAAA,WAAA,SAAA,GACA,OAAA,EAAA,OAAA,MAAA,MAAA,IAAA,SAAA,GACA,OAAA,EAAA,UAIA,EAAA,cAAA,SAAA,GAEA,OADA,EAAA,MAAA,QACA,IAAA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,KAAA,EAAA,GAAA,OAAA,UAKA,EAAA,eAAA,SAAA,GACA,IAAA,EAAA,EAAA,cAAA,GACA,OAAA,GAAA,EAAA,IAIA,EAAA,iBAAA,SAAA,GACA,IAAA,EAAA,EAAA,cAAA,GAEA,OADA,EAAA,QACA,GAIA,EAAA,YAAA,SAAA,EAAA,GACA,OAAA,EAAA,WAAA,GAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,QAAA,MAOA,EAAA,eAAA,SAAA,GAqBA,IApBA,IAAA,EAQA,EAAA,CACA,YANA,EADA,IAAA,EAAA,QAAA,gBACA,EAAA,UAAA,IAAA,MAAA,KAEA,EAAA,UAAA,IAAA,MAAA,MAIA,GACA,UAAA,SAAA,EAAA,GAAA,IACA,SAAA,EAAA,GAAA,cACA,SAAA,SAAA,EAAA,GAAA,IACA,GAAA,EAAA,GACA,QAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAAA,IAEA,KAAA,EAAA,IAGA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,OAAA,EAAA,IACA,IAAA,QACA,EAAA,eAAA,EAAA,EAAA,GACA,MACA,IAAA,QACA,EAAA,YAAA,SAAA,EAAA,EAAA,GAAA,IACA,MACA,IAAA,UACA,EAAA,QAAA,EAAA,EAAA,GACA,MACA,IAAA,QACA,EAAA,MAAA,EAAA,EAAA,GACA,EAAA,iBAAA,EAAA,EAAA,GACA,MACA,QACA,EAAA,EAAA,IAAA,EAAA,EAAA,GAIA,OAAA,GAIA,EAAA,eAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,KAAA,EAAA,YACA,EAAA,KAAA,EAAA,WACA,EAAA,KAAA,EAAA,SAAA,eACA,EAAA,KAAA,EAAA,UACA,EAAA,KAAA,EAAA,SAAA,EAAA,IACA,EAAA,KAAA,EAAA,MAEA,IAAA,EAAA,EAAA,KAkBA,OAjBA,EAAA,KAAA,OACA,EAAA,KAAA,GACA,SAAA,GAAA,EAAA,gBACA,EAAA,cACA,EAAA,KAAA,SACA,EAAA,KAAA,EAAA,gBACA,EAAA,KAAA,SACA,EAAA,KAAA,EAAA,cAEA,EAAA,SAAA,QAAA,EAAA,SAAA,gBACA,EAAA,KAAA,WACA,EAAA,KAAA,EAAA,WAEA,EAAA,kBAAA,EAAA,SACA,EAAA,KAAA,SACA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAEA,aAAA,EAAA,KAAA,MAKA,EAAA,gBAAA,SAAA,GACA,OAAA,EAAA,OAAA,IAAA,MAAA,MAKA,EAAA,YAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,GAAA,MAAA,KACA,EAAA,CACA,YAAA,SAAA,EAAA,QAAA,KAUA,OAPA,EAAA,EAAA,GAAA,MAAA,KAEA,EAAA,KAAA,EAAA,GACA,EAAA,UAAA,SAAA,EAAA,GAAA,IACA,EAAA,SAAA,IAAA,EAAA,OAAA,SAAA,EAAA,GAAA,IAAA,EAEA,EAAA,YAAA,EAAA,SACA,GAKA,EAAA,YAAA,SAAA,GACA,IAAA,EAAA,EAAA,iBACA,IAAA,EAAA,uBACA,EAAA,EAAA,sBAEA,IAAA,EAAA,EAAA,UAAA,EAAA,aAAA,EACA,MAAA,YAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA,WACA,IAAA,EAAA,IAAA,EAAA,IAAA,QAMA,EAAA,YAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,GAAA,MAAA,KACA,MAAA,CACA,GAAA,SAAA,EAAA,GAAA,IACA,UAAA,EAAA,GAAA,QAAA,KAAA,EAAA,EAAA,GAAA,MAAA,KAAA,GAAA,WACA,IAAA,EAAA,KAMA,EAAA,YAAA,SAAA,GACA,MAAA,aAAA,EAAA,IAAA,EAAA,cACA,EAAA,WAAA,aAAA,EAAA,UACA,IAAA,EAAA,UACA,IACA,IAAA,EAAA,IAAA,QAMA,EAAA,UAAA,SAAA,GAIA,IAHA,IACA,EADA,EAAA,GAEA,EAAA,EAAA,OAAA,EAAA,QAAA,KAAA,GAAA,MAAA,KACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAEA,GADA,EAAA,EAAA,GAAA,OAAA,MAAA,MACA,GAAA,QAAA,EAAA,GAEA,OAAA,GAIA,EAAA,UAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,EAAA,YAIA,QAHA,IAAA,EAAA,uBACA,EAAA,EAAA,sBAEA,EAAA,YAAA,OAAA,KAAA,EAAA,YAAA,OAAA,CACA,IAAA,EAAA,GACA,OAAA,KAAA,EAAA,YAAA,QAAA,SAAA,GACA,EAAA,WAAA,GACA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,IAEA,EAAA,KAAA,KAGA,GAAA,UAAA,EAAA,IAAA,EAAA,KAAA,KAAA,OAEA,OAAA,GAKA,EAAA,YAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,EAAA,QAAA,KAAA,GAAA,MAAA,KACA,MAAA,CACA,KAAA,EAAA,QACA,UAAA,EAAA,KAAA,OAIA,EAAA,YAAA,SAAA,GACA,IAAA,EAAA,GACA,EAAA,EAAA,YAYA,YAXA,IAAA,EAAA,uBACA,EAAA,EAAA,sBAEA,EAAA,cAAA,EAAA,aAAA,QAEA,EAAA,aAAA,QAAA,SAAA,GACA,GAAA,aAAA,EAAA,IAAA,EAAA,MACA,EAAA,WAAA,EAAA,UAAA,OAAA,IAAA,EAAA,UAAA,IACA,SAGA,GAKA,EAAA,eAAA,SAAA,GACA,IAAA,EAAA,EAAA,QAAA,KACA,EAAA,CACA,KAAA,SAAA,EAAA,OAAA,EAAA,EAAA,GAAA,KAEA,EAAA,EAAA,QAAA,IAAA,GAOA,OANA,GAAA,GACA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,MAAA,EAAA,OAAA,EAAA,IAEA,EAAA,UAAA,EAAA,OAAA,EAAA,GAEA,GAGA,EAAA,eAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,IAAA,MAAA,KACA,MAAA,CACA,UAAA,EAAA,QACA,MAAA,EAAA,IAAA,SAAA,GACA,OAAA,SAAA,EAAA,QAOA,EAAA,OAAA,SAAA,GACA,IAAA,EAAA,EAAA,YAAA,EAAA,UAAA,GACA,GAAA,EACA,OAAA,EAAA,OAAA,IAIA,EAAA,iBAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,IAAA,MAAA,KACA,MAAA,CACA,UAAA,EAAA,GAAA,cACA,MAAA,EAAA,KAOA,EAAA,kBAAA,SAAA,EAAA,GAKA,MAAA,CACA,KAAA,OACA,aANA,EAAA,YAAA,EAAA,EACA,kBAKA,IAAA,EAAA,oBAKA,EAAA,oBAAA,SAAA,EAAA,GACA,IAAA,EAAA,WAAA,EAAA,OAIA,OAHA,EAAA,aAAA,QAAA,SAAA,GACA,GAAA,iBAAA,EAAA,UAAA,IAAA,EAAA,MAAA,SAEA,GAKA,EAAA,gBAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,GAAA,MAAA,KACA,MAAA,CACA,IAAA,SAAA,EAAA,GAAA,IACA,YAAA,EAAA,GACA,UAAA,EAAA,GACA,cAAA,EAAA,MAAA,KAIA,EAAA,gBAAA,SAAA,GACA,MAAA,YAAA,EAAA,IAAA,IACA,EAAA,YAAA,KACA,iBAAA,EAAA,UACA,EAAA,qBAAA,EAAA,WACA,EAAA,YACA,EAAA,cAAA,IAAA,EAAA,cAAA,KAAA,KAAA,IACA,QAKA,EAAA,qBAAA,SAAA,GACA,GAAA,IAAA,EAAA,QAAA,WACA,OAAA,KAEA,IAAA,EAAA,EAAA,OAAA,GAAA,MAAA,KACA,MAAA,CACA,UAAA,SACA,QAAA,EAAA,GACA,SAAA,EAAA,GACA,SAAA,EAAA,GAAA,EAAA,GAAA,MAAA,KAAA,QAAA,EACA,UAAA,EAAA,GAAA,EAAA,GAAA,MAAA,KAAA,QAAA,IAIA,EAAA,qBAAA,SAAA,GACA,OAAA,EAAA,UAAA,IACA,EAAA,SACA,EAAA,SAAA,IAAA,EAAA,SAAA,KACA,EAAA,UAAA,EAAA,UACA,IAAA,EAAA,SAAA,IAAA,EAAA,UACA,KAIA,EAAA,oBAAA,SAAA,EAAA,GAGA,OAFA,EAAA,YAAA,EAAA,EACA,aACA,IAAA,EAAA,kBAMA,EAAA,iBAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,YAAA,EAAA,EACA,gBAAA,GACA,EAAA,EAAA,YAAA,EAAA,EACA,cAAA,GACA,OAAA,GAAA,EAGA,CACA,iBAAA,EAAA,OAAA,IACA,SAAA,EAAA,OAAA,KAJA,MASA,EAAA,mBAAA,SAAA,GACA,MAAA,eAAA,EAAA,iBAAA,iBACA,EAAA,SAAA,QAIA,EAAA,mBAAA,SAAA,GASA,IARA,IAAA,EAAA,CACA,OAAA,GACA,iBAAA,GACA,cAAA,GACA,KAAA,IAGA,EADA,EAAA,WAAA,GACA,GAAA,MAAA,KACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,YACA,EAAA,YAAA,EAAA,KAAA,GACA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,YAAA,GACA,EAAA,EAAA,YACA,EAAA,UAAA,EAAA,KAQA,OANA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,IAAA,GACA,EAAA,aAAA,EAAA,YACA,EAAA,aAAA,EAAA,KACA,IAAA,EAAA,aACA,EAAA,OAAA,KAAA,GAEA,EAAA,KAAA,eACA,IAAA,MACA,IAAA,SACA,EAAA,cAAA,KAAA,EAAA,KAAA,iBAWA,OAJA,EAAA,YAAA,EAAA,aAAA,QAAA,SAAA,GACA,EAAA,iBAAA,KAAA,EAAA,YAAA,MAGA,GAKA,EAAA,oBAAA,SAAA,EAAA,GACA,IAAA,EAAA,GAGA,GAAA,KAAA,EAAA,IACA,GAAA,EAAA,OAAA,OAAA,EAAA,IAAA,IACA,GAAA,sBACA,GAAA,EAAA,OAAA,IAAA,SAAA,GACA,YAAA,IAAA,EAAA,qBACA,EAAA,qBAEA,EAAA,cACA,KAAA,KAAA,OAEA,GAAA,uBACA,GAAA,8BAGA,EAAA,OAAA,QAAA,SAAA,GACA,GAAA,EAAA,YAAA,GACA,GAAA,EAAA,UAAA,GACA,GAAA,EAAA,YAAA,KAEA,IAAA,EAAA,EAiBA,OAhBA,EAAA,OAAA,QAAA,SAAA,GACA,EAAA,SAAA,IACA,EAAA,EAAA,YAGA,EAAA,IACA,GAAA,cAAA,EAAA,QAEA,GAAA,iBAEA,EAAA,kBACA,EAAA,iBAAA,QAAA,SAAA,GACA,GAAA,EAAA,YAAA,KAIA,GAKA,EAAA,2BAAA,SAAA,GACA,IAcA,EAdA,EAAA,GACA,EAAA,EAAA,mBAAA,GACA,GAAA,IAAA,EAAA,cAAA,QAAA,OACA,GAAA,IAAA,EAAA,cAAA,QAAA,UAGA,EAAA,EAAA,YAAA,EAAA,WACA,IAAA,SAAA,GACA,OAAA,EAAA,eAAA,KAEA,OAAA,SAAA,GACA,MAAA,UAAA,EAAA,YAEA,EAAA,EAAA,OAAA,GAAA,EAAA,GAAA,KAGA,EAAA,EAAA,YAAA,EAAA,oBACA,IAAA,SAAA,GAEA,OADA,EAAA,OAAA,IAAA,MAAA,KACA,IAAA,SAAA,GACA,OAAA,SAAA,EAAA,QAGA,EAAA,OAAA,GAAA,EAAA,GAAA,OAAA,GAAA,EAAA,GAAA,KAAA,IACA,EAAA,EAAA,GAAA,IAGA,EAAA,OAAA,QAAA,SAAA,GACA,GAAA,QAAA,EAAA,KAAA,eAAA,EAAA,WAAA,IAAA,CACA,IAAA,EAAA,CACA,KAAA,EACA,iBAAA,SAAA,EAAA,WAAA,IAAA,KAEA,GAAA,IACA,EAAA,IAAA,CAAA,KAAA,IAEA,EAAA,KAAA,GACA,KACA,EAAA,KAAA,MAAA,KAAA,UAAA,KACA,IAAA,CACA,KAAA,EACA,UAAA,EAAA,aAAA,OAEA,EAAA,KAAA,OAIA,IAAA,EAAA,QAAA,GACA,EAAA,KAAA,CACA,KAAA,IAKA,IAAA,EAAA,EAAA,YAAA,EAAA,MAeA,OAdA,EAAA,SAEA,EADA,IAAA,EAAA,GAAA,QAAA,WACA,SAAA,EAAA,GAAA,OAAA,GAAA,IACA,IAAA,EAAA,GAAA,QAAA,SAEA,IAAA,SAAA,EAAA,GAAA,OAAA,GAAA,IAAA,IACA,UAEA,EAEA,EAAA,QAAA,SAAA,GACA,EAAA,WAAA,KAGA,GAIA,EAAA,oBAAA,SAAA,GACA,IAAA,EAAA,GAIA,EAAA,EAAA,YAAA,EAAA,WACA,IAAA,SAAA,GACA,OAAA,EAAA,eAAA,KAEA,OAAA,SAAA,GACA,MAAA,UAAA,EAAA,YACA,GACA,IACA,EAAA,MAAA,EAAA,MACA,EAAA,KAAA,EAAA,MAKA,IAAA,EAAA,EAAA,YAAA,EAAA,gBACA,EAAA,YAAA,EAAA,OAAA,EACA,EAAA,SAAA,IAAA,EAAA,OAIA,IAAA,EAAA,EAAA,YAAA,EAAA,cAGA,OAFA,EAAA,IAAA,EAAA,OAAA,EAEA,GAKA,EAAA,UAAA,SAAA,GACA,IAAA,EACA,EAAA,EAAA,YAAA,EAAA,WACA,GAAA,IAAA,EAAA,OAEA,MAAA,CAAA,QADA,EAAA,EAAA,GAAA,OAAA,GAAA,MAAA,MACA,GAAA,MAAA,EAAA,IAEA,IAAA,EAAA,EAAA,YAAA,EAAA,WACA,IAAA,SAAA,GACA,OAAA,EAAA,eAAA,KAEA,OAAA,SAAA,GACA,MAAA,SAAA,EAAA,YAEA,OAAA,EAAA,OAAA,EAEA,CAAA,QADA,EAAA,EAAA,GAAA,MAAA,MAAA,MACA,GAAA,MAAA,EAAA,SAFA,GASA,EAAA,qBAAA,SAAA,GACA,IAEA,EAFA,EAAA,EAAA,WAAA,GACA,EAAA,EAAA,YAAA,EAAA,uBAEA,EAAA,OAAA,IACA,EAAA,SAAA,EAAA,GAAA,OAAA,IAAA,KAEA,MAAA,KACA,EAAA,OAEA,IAAA,EAAA,EAAA,YAAA,EAAA,gBACA,GAAA,EAAA,OAAA,EACA,MAAA,CACA,KAAA,SAAA,EAAA,GAAA,OAAA,IAAA,IACA,SAAA,EAAA,IACA,eAAA,GAIA,GADA,EAAA,YAAA,EAAA,cACA,OAAA,EAAA,CACA,IAAA,EAAA,EAAA,YAAA,EAAA,cAAA,GACA,OAAA,IACA,MAAA,KACA,MAAA,CACA,KAAA,SAAA,EAAA,GAAA,IACA,SAAA,EAAA,GACA,eAAA,KAUA,EAAA,qBAAA,SAAA,EAAA,GACA,IAAA,EAAA,GAiBA,OAfA,EADA,cAAA,EAAA,SACA,CACA,KAAA,EAAA,KAAA,MAAA,EAAA,SAAA,IAAA,EAAA,SAAA,OACA,uBACA,eAAA,EAAA,KAAA,QAGA,CACA,KAAA,EAAA,KAAA,MAAA,EAAA,SAAA,IAAA,EAAA,KAAA,OACA,uBACA,aAAA,EAAA,KAAA,IAAA,EAAA,SAAA,mBAGA,IAAA,EAAA,gBACA,EAAA,KAAA,sBAAA,EAAA,eAAA,QAEA,EAAA,KAAA,KAOA,EAAA,kBAAA,WACA,OAAA,KAAA,SAAA,WAAA,OAAA,EAAA,KAQA,EAAA,wBAAA,SAAA,EAAA,EAAA,GACA,IACA,OAAA,IAAA,EAAA,EAAA,EAQA,MAAA,aAFA,GAAA,qBAGA,KARA,GAGA,EAAA,qBAKA,IAAA,EACA,yCAKA,EAAA,kBAAA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,oBAAA,EAAA,KAAA,GAyBA,GAtBA,GAAA,EAAA,mBACA,EAAA,YAAA,sBAGA,GAAA,EAAA,oBACA,EAAA,cAAA,qBACA,UAAA,EAAA,UAAA,UAEA,GAAA,SAAA,EAAA,IAAA,OAEA,EAAA,UACA,GAAA,KAAA,EAAA,UAAA,OACA,EAAA,WAAA,EAAA,YACA,GAAA,iBACA,EAAA,UACA,GAAA,iBACA,EAAA,YACA,GAAA,iBAEA,GAAA,iBAGA,EAAA,UAAA,CAEA,IAAA,EAAA,QAAA,EAAA,GAAA,IACA,EAAA,UAAA,MAAA,GAAA,OACA,GAAA,KAAA,EAGA,GAAA,UAAA,EAAA,uBAAA,GAAA,KACA,IAAA,EACA,EAAA,uBAAA,GAAA,MACA,GAAA,UAAA,EAAA,uBAAA,GAAA,IAAA,KACA,IAAA,EACA,GAAA,oBACA,EAAA,uBAAA,GAAA,KAAA,IACA,EAAA,uBAAA,GAAA,IAAA,KACA,QAUA,OANA,GAAA,UAAA,EAAA,uBAAA,GAAA,KACA,UAAA,EAAA,WAAA,OACA,EAAA,WAAA,EAAA,uBAAA,GAAA,MACA,GAAA,UAAA,EAAA,uBAAA,GAAA,IAAA,KACA,UAAA,EAAA,WAAA,QAEA,GAIA,EAAA,aAAA,SAAA,EAAA,GAGA,IADA,IAAA,EAAA,EAAA,WAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,OAAA,EAAA,IACA,IAAA,aACA,IAAA,aACA,IAAA,aACA,IAAA,aACA,OAAA,EAAA,GAAA,OAAA,GAKA,OAAA,EACA,EAAA,aAAA,GAEA,YAGA,EAAA,QAAA,SAAA,GAGA,OAFA,EAAA,WAAA,GACA,GAAA,MAAA,KACA,GAAA,OAAA,IAGA,EAAA,WAAA,SAAA,GACA,MAAA,MAAA,EAAA,MAAA,IAAA,GAAA,IAGA,EAAA,WAAA,SAAA,GACA,IACA,EADA,EAAA,WAAA,GACA,GAAA,OAAA,GAAA,MAAA,KACA,MAAA,CACA,KAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAAA,IACA,SAAA,EAAA,GACA,IAAA,EAAA,MAAA,GAAA,KAAA,OAIA,EAAA,WAAA,SAAA,GACA,IACA,EADA,EAAA,YAAA,EAAA,MAAA,GACA,OAAA,GAAA,MAAA,KACA,MAAA,CACA,SAAA,EAAA,GACA,UAAA,EAAA,GACA,eAAA,SAAA,EAAA,GAAA,IACA,QAAA,EAAA,GACA,YAAA,EAAA,GACA,QAAA,EAAA,KAKA,EAAA,WAAA,SAAA,GACA,GAAA,iBAAA,GAAA,IAAA,EAAA,OACA,OAAA,EAGA,IADA,IAAA,EAAA,EAAA,WAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,GAAA,OAAA,GAAA,MAAA,EAAA,GAAA,OAAA,GACA,OAAA,EAIA,OAAA,GAIA,iBAAA,SACA,OAAA,QAAA;;AC/yBA,aAEA,IAAIwZ,EAAWpZ,QAAQ,OAEvB,SAASgpB,EAAarT,GACb,MAAA,CACLkT,WAAY,cACZC,YAAa,eACbC,cAAe,iBACfvT,eAAgB,kBAChBC,gBAAiB,oBACjBE,EAAK9R,OAAS8R,EAAK9R,KAGvB,SAASwV,EAAkB3G,EAAa4G,EAAMzV,EAAMmN,EAAQuI,GACtD/B,IAAAA,EAAM4B,EAASI,oBAAoB9G,EAAYtD,KAAMkK,GAuBrD5G,GApBJ8E,GAAO4B,EAASK,mBACZ/G,EAAYgH,YAAYC,sBAG5BnC,GAAO4B,EAASQ,oBACZlH,EAAYmH,cAAcF,qBACjB,UAAT9V,EAAmB,UAAY0V,GAAY,UAE/C/B,GAAO,SAAW9E,EAAYoH,IAAM,OAEhCpH,EAAYqH,WAAarH,EAAYsH,YACvCxC,GAAO,iBACE9E,EAAYqH,UACrBvC,GAAO,iBACE9E,EAAYsH,YACrBxC,GAAO,iBAEPA,GAAO,iBAGL9E,EAAYqH,UAAW,CACrB1N,IAAAA,EAAUqG,EAAYqH,UAAUE,iBAChCvH,EAAYqH,UAAUnO,MAAMM,GAChCwG,EAAYqH,UAAUE,gBAAkB5N,EAEpC6N,IAAAA,EAAO,SAAWlJ,EAASA,EAAO9E,GAAK,KAAO,IAC9CG,EAAU,OACdmL,GAAO,KAAO0C,EAEd1C,GAAO,UAAY9E,EAAYyH,uBAAuB,GAAGC,KACrD,IAAMF,EAGNxH,EAAYyH,uBAAuB,GAAGE,MACxC7C,GAAO,UAAY9E,EAAYyH,uBAAuB,GAAGE,IAAID,KACzD,IAAMF,EACV1C,GAAO,oBACH9E,EAAYyH,uBAAuB,GAAGC,KAAO,IAC7C1H,EAAYyH,uBAAuB,GAAGE,IAAID,KAC1C,QAUD5C,OANPA,GAAO,UAAY9E,EAAYyH,uBAAuB,GAAGC,KACrD,UAAYhB,EAASkB,WAAa,OAClC5H,EAAYqH,WAAarH,EAAYyH,uBAAuB,GAAGE,MACjE7C,GAAO,UAAY9E,EAAYyH,uBAAuB,GAAGE,IAAID,KACzD,UAAYhB,EAASkB,WAAa,QAEjC9C,EAQT,SAASyH,EAAiBvG,EAAYC,GAChCC,IAAAA,GAAU,EAEPF,OADPA,EAAatK,KAAKC,MAAMD,KAAKE,UAAUoK,KACrBvJ,OAAO,SAAS0J,GAC5BA,GAAAA,IAAWA,EAAOC,MAAQD,EAAOE,KAAM,CACrCD,IAAAA,EAAOD,EAAOC,MAAQD,EAAOE,IAC7BF,EAAOE,MAAQF,EAAOC,MACxB1Q,QAAQiC,KAAK,qDAEX4O,IAAAA,EAA2B,iBAATH,EAoBf,OAnBHG,IACFH,EAAO,CAACA,IAEVA,EAAOA,EAAK3J,OAAO,SAAS4J,GAMtBG,OALqC,IAAzBH,EAAI3E,QAAQ,WACU,IAAlC2E,EAAI3E,QAAQ,mBACe,IAA3B2E,EAAI3E,QAAQ,YACXwE,GAGHA,GAAU,GACH,GAEuB,IAAzBG,EAAI3E,QAAQ,UAAkBuE,GAAe,QACb,IAAnCI,EAAI3E,QAAQ,2BAGXyE,EAAOE,IACdF,EAAOC,KAAOG,EAAWH,EAAK,GAAKA,IAC1BA,EAAKlZ,UAMpB,SAAS2a,EAAsBC,EAAmBC,GAC5CC,IAAAA,EAAqB,CACvBC,OAAQ,GACRC,iBAAkB,GAClBC,cAAe,IAGbC,EAAyB,SAASC,EAAIJ,GACxCI,EAAKrO,SAASqO,EAAI,IACb,IAAA,IAAIxc,EAAI,EAAGA,EAAIoc,EAAO/a,OAAQrB,IAC7Boc,GAAAA,EAAOpc,GAAGyc,cAAgBD,GAC1BJ,EAAOpc,GAAG0c,uBAAyBF,EAC9BJ,OAAAA,EAAOpc,IAKhB2c,EAAuB,SAASC,EAAMC,EAAMC,EAASC,GACnDC,IAAAA,EAAST,EAAuBK,EAAKK,WAAWC,IAAKJ,GACrDK,EAASZ,EAAuBM,EAAKI,WAAWC,IAAKH,GAClDC,OAAAA,GAAUG,GACbH,EAAO1O,KAAK2C,gBAAkBkM,EAAO7O,KAAK2C,eAqDzCkL,OAlDPF,EAAkBG,OAAO5b,QAAQ,SAASwc,GACnC,IAAA,IAAIhd,EAAI,EAAGA,EAAIkc,EAAmBE,OAAO/a,OAAQrB,IAAK,CACrDmd,IAAAA,EAASjB,EAAmBE,OAAOpc,GACnCgd,GAAAA,EAAO1O,KAAK2C,gBAAkBkM,EAAO7O,KAAK2C,eAC1C+L,EAAOI,YAAcD,EAAOC,UAAW,CACrCJ,GAA8B,QAA9BA,EAAO1O,KAAK2C,eACZ+L,EAAOC,YAAcE,EAAOF,WAAWC,MAGpCP,EAAqBK,EAAQG,EAC9BlB,EAAkBG,OAAQF,EAAmBE,QAC/C,UAGJe,EAAStN,KAAKC,MAAMD,KAAKE,UAAUoN,KAE5BE,YAAcC,KAAKvO,IAAIiO,EAAOK,YACjCF,EAAOE,aAEXlB,EAAmBC,OAAOnW,KAAKkX,GAG/BA,EAAOI,aAAeJ,EAAOI,aAAa3M,OAAO,SAAS4M,GACnD,IAAA,IAAIC,EAAI,EAAGA,EAAIT,EAAOO,aAAalc,OAAQoc,IAC1CT,GAAAA,EAAOO,aAAaE,GAAGnY,OAASkY,EAAGlY,MACnC0X,EAAOO,aAAaE,GAAGC,YAAcF,EAAGE,UACnC,OAAA,EAGJ,OAAA,IAIT,UAKNzB,EAAkBI,iBAAiB7b,QAAQ,SAASmd,GAC7C,IAAA,IAAI3d,EAAI,EAAGA,EAAIkc,EAAmBG,iBAAiBhb,OACnDrB,IAAK,CACJ4d,IAAAA,EAAmB1B,EAAmBG,iBAAiBrc,GACvD2d,GAAAA,EAAiBE,MAAQD,EAAiBC,IAAK,CACjD1B,EAAmBE,iBAAiBpW,KAAK2X,GACzC,UAMCzB,EAIT,SAAS2B,EAAgCC,EAAQzY,EAAM+S,GAC9C,OASsC,IATtC,CACL2F,MAAO,CACLhF,oBAAqB,CAAC,SAAU,oBAChCzE,qBAAsB,CAAC,SAAU,sBAEnC0J,OAAQ,CACNjF,oBAAqB,CAAC,oBAAqB,uBAC3CzE,qBAAsB,CAAC,mBAAoB,0BAE7CjP,GAAMyY,GAAQlI,QAAQwC,GAG1B,SAAS6F,EAAkBC,EAAcC,GAGnCC,IAAAA,EAAeF,EAAaG,sBAC3BxN,KAAK,SAASyN,GACNH,OAAAA,EAAUI,aAAeD,EAAgBC,YAC5CJ,EAAUK,KAAOF,EAAgBE,IACjCL,EAAUM,OAASH,EAAgBG,MACnCN,EAAUO,WAAaJ,EAAgBI,UACvCP,EAAUQ,WAAaL,EAAgBK,UACvCR,EAAU9Y,OAASiZ,EAAgBjZ,OAKtC,OAHF+Y,GACHF,EAAaU,mBAAmBT,IAE1BC,EAIV,SAASS,EAAUxQ,EAAMsK,GACnBjU,IAAAA,EAAI,IAAIb,MAAM8U,GAUXjU,OATPA,EAAE2J,KAAOA,EAET3J,EAAEoa,KAAO,CACPC,kBAAmB,EACnBxN,kBAAmB,GACnByN,mBAAoB,GACpBxf,eAAW2N,EACX8R,oBAAgB9R,GAChBkB,GACK3J,EAGT/D,OAAOC,QAAU,SAASkJ,EAAQqQ,GAIvB+E,SAAAA,EAA6B9R,EAAOoF,GAC3CA,EAAO+C,SAASnI,GAChBoF,EAAOqC,cAAc,IAAI/K,EAAOqV,sBAAsB,WAClD,CAAC/R,MAAOA,KASLgS,SAAAA,EAAarK,EAAI3H,EAAO+G,EAAUS,GACrCyK,IAAAA,EAAa,IAAI1K,MAAM,SAC3B0K,EAAWjS,MAAQA,EACnBiS,EAAWlL,SAAWA,EACtBkL,EAAWnL,YAAc,CAACC,SAAUA,GACpCkL,EAAWzK,QAAUA,EACrB9K,EAAOwV,WAAW,WAChBvK,EAAGwK,eAAe,QAASF,KAI3BpV,IAAAA,EAAoB,SAASuV,GAC3BzK,IAAAA,EAAK,KAEL0K,EAAeC,SAASC,yBAwBxBH,GAvBH,CAAA,mBAAoB,sBAAuB,iBACvCjf,QAAQ,SAAS+X,GAChBvD,EAAGuD,GAAUmH,EAAanH,GAAQjQ,KAAKoX,KAGxCG,KAAAA,wBAA0B,KAE1BC,KAAAA,iBAAkB,EAElBC,KAAAA,aAAe,GACfC,KAAAA,cAAgB,GAEhBC,KAAAA,kBAAoB,KACpBC,KAAAA,mBAAqB,KAErB7H,KAAAA,eAAiB,SACjB8H,KAAAA,mBAAqB,MACrBC,KAAAA,gBAAkB,MAClBC,KAAAA,kBAAoB,MAEzBZ,EAAS5P,KAAKC,MAAMD,KAAKE,UAAU0P,GAAU,KAExCa,KAAAA,YAAsC,eAAxBb,EAAOc,aACG,cAAzBd,EAAOe,cACH1B,MAAAA,EAAU,oBACZ,8CAKEW,OAJIA,EAAOe,gBACjBf,EAAOe,cAAgB,WAGjBf,EAAOgB,oBACR,IAAA,MACA,IAAA,QACH,MACF,QACEhB,EAAOgB,mBAAqB,MAIxBhB,OAAAA,EAAOc,cACR,IAAA,WACA,IAAA,aACA,IAAA,aACH,MACF,QACEd,EAAOc,aAAe,WAOtBd,GAHJA,EAAOtF,WAAauG,EAAiBjB,EAAOtF,YAAc,GAAIC,GAEzDuG,KAAAA,cAAgB,GACjBlB,EAAOmB,qBACJ,IAAA,IAAI5gB,EAAIyf,EAAOmB,qBAAsB5gB,EAAI,EAAGA,IAC1C2gB,KAAAA,cAAc1a,KAAK,IAAI8D,EAAOyC,eAAe,CAChD2N,WAAYsF,EAAOtF,WACnB0G,aAAcpB,EAAOgB,2BAIzBhB,EAAOmB,qBAAuB,EAG3BE,KAAAA,QAAUrB,EAIVsB,KAAAA,aAAe,GAEfC,KAAAA,cAAgBnG,EAASoG,oBACzBC,KAAAA,mBAAqB,EAErBC,KAAAA,eAAY/T,EAEZgU,KAAAA,WAAY,GAGnBliB,OAAOmM,eAAenB,EAAkB9K,UAAW,mBAAoB,CACrEmM,cAAc,EACdL,IAAK,WACI,OAAA,KAAK+U,qBAGhB/gB,OAAOmM,eAAenB,EAAkB9K,UAAW,oBAAqB,CACtEmM,cAAc,EACdL,IAAK,WACI,OAAA,KAAKgV,sBAKhBhW,EAAkB9K,UAAUiiB,eAAiB,KAC7CnX,EAAkB9K,UAAUkiB,YAAc,KAC1CpX,EAAkB9K,UAAUmiB,QAAU,KACtCrX,EAAkB9K,UAAUoiB,eAAiB,KAC7CtX,EAAkB9K,UAAUqiB,uBAAyB,KACrDvX,EAAkB9K,UAAUsiB,2BAA6B,KACzDxX,EAAkB9K,UAAUuiB,wBAA0B,KACtDzX,EAAkB9K,UAAUwiB,0BAA4B,KACxD1X,EAAkB9K,UAAUyiB,oBAAsB,KAClD3X,EAAkB9K,UAAU0iB,cAAgB,KAE5C5X,EAAkB9K,UAAUogB,eAAiB,SAASlR,EAAMqG,GACtD,KAAKyM,YAGJtM,KAAAA,cAAcH,GACc,mBAAtB,KAAK,KAAOrG,IAChB,KAAA,KAAOA,GAAMqG,KAItBzK,EAAkB9K,UAAU2iB,0BAA4B,WAClDpN,IAAAA,EAAQ,IAAIC,MAAM,2BACjB4K,KAAAA,eAAe,0BAA2B7K,IAGjDzK,EAAkB9K,UAAUwa,iBAAmB,WACtC,OAAA,KAAKkH,SAGd5W,EAAkB9K,UAAU2Y,gBAAkB,WACrC,OAAA,KAAKgI,cAGd7V,EAAkB9K,UAAU4iB,iBAAmB,WACtC,OAAA,KAAKhC,eAKd9V,EAAkB9K,UAAU6iB,mBAAqB,SAASpR,EAAMqR,GAC1DC,IAAAA,EAAqB,KAAKpB,aAAa1f,OAAS,EAChD8S,EAAc,CAChB9G,MAAO,KACP8N,YAAa,KACbgD,aAAc,KACd7C,cAAe,KACfW,kBAAmB,KACnBC,mBAAoB,KACpBV,UAAW,KACXC,YAAa,KACb5K,KAAMA,EACN0K,IAAK,KACLK,uBAAwB,KACxBwG,uBAAwB,KACxB3P,OAAQ,KACR4P,6BAA8B,GAC9BC,aAAa,GAEX,GAAA,KAAKhC,aAAe6B,EACtBhO,EAAYgK,aAAe,KAAK4C,aAAa,GAAG5C,aAChDhK,EAAYmH,cAAgB,KAAKyF,aAAa,GAAGzF,kBAC5C,CACDiH,IAAAA,EAAa,KAAKC,8BACtBrO,EAAYgK,aAAeoE,EAAWpE,aACtChK,EAAYmH,cAAgBiH,EAAWjH,cAKlCnH,OAHF+N,GACEnB,KAAAA,aAAa9a,KAAKkO,GAElBA,GAGTjK,EAAkB9K,UAAUoW,SAAW,SAASnI,EAAOoF,GACjD,GAAA,KAAK2O,UACDtC,MAAAA,EAAU,oBACZ,0DAGF3G,IAQAhE,EAJAgE,GAJgB,KAAK4I,aAAajQ,KAAK,SAAS3P,GAC3CA,OAAAA,EAAEkM,QAAUA,IAIbyR,MAAAA,EAAU,qBAAsB,yBAInC,IAAA,IAAI9e,EAAI,EAAGA,EAAI,KAAK+gB,aAAa1f,OAAQrB,IACvC,KAAK+gB,aAAa/gB,GAAGqN,OACtB,KAAK0T,aAAa/gB,GAAG6Q,OAASxD,EAAMwD,OACtCsD,EAAc,KAAK4M,aAAa/gB,IAiB7BmU,OAdFA,IACHA,EAAc,KAAK8N,mBAAmB5U,EAAMwD,OAGzC4R,KAAAA,+BAEsC,IAAvC,KAAK1C,aAAalK,QAAQpD,IACvBsN,KAAAA,aAAa9Z,KAAKwM,GAGzB0B,EAAY9G,MAAQA,EACpB8G,EAAY1B,OAASA,EACrB0B,EAAYqH,UAAY,IAAIzR,EAAOoM,aAAa9I,EAC5C8G,EAAYmH,eACTnH,EAAYqH,WAGrBtR,EAAkB9K,UAAU4W,UAAY,SAASvD,GAC3CuC,IAAAA,EAAK,KACLoF,GAAAA,GAAe,MACjB3H,EAAOG,YAAYpS,QAAQ,SAAS6M,GAClC2H,EAAGQ,SAASnI,EAAOoF,SAEhB,CAIDiQ,IAAAA,EAAejQ,EAAOkQ,QAC1BlQ,EAAOG,YAAYpS,QAAQ,SAAS6M,EAAOuI,GACrCgN,IAAAA,EAAcF,EAAa9P,YAAYgD,GAC3CvI,EAAMhD,iBAAiB,UAAW,SAASsK,GACzCiO,EAAYC,QAAUlO,EAAMkO,YAGhCH,EAAa9P,YAAYpS,QAAQ,SAAS6M,GACxC2H,EAAGQ,SAASnI,EAAOqV,OAKzBxY,EAAkB9K,UAAUuW,YAAc,SAASF,GAC7C,GAAA,KAAK2L,UACDtC,MAAAA,EAAU,oBACZ,6DAGF,KAAErJ,aAAkB1L,EAAOoM,cACvB,MAAA,IAAI1W,UAAU,0FAIlB0U,IAAAA,EAAc,KAAK4M,aAAajQ,KAAK,SAAS9O,GACzCA,OAAAA,EAAEwZ,YAAc/F,IAGrB,IAACtB,EACG2K,MAAAA,EAAU,qBACZ,8CAEFrM,IAAAA,EAAS0B,EAAY1B,OAEzB0B,EAAYqH,UAAU3I,OACtBsB,EAAYqH,UAAY,KACxBrH,EAAY9G,MAAQ,KACpB8G,EAAY1B,OAAS,MAMiB,IAHnB,KAAKsO,aAAa5gB,IAAI,SAAS6B,GACzCA,OAAAA,EAAEyQ,SAEMoD,QAAQpD,IACrB,KAAKsN,aAAalK,QAAQpD,IAAW,GAClCsN,KAAAA,aAAajK,OAAO,KAAKiK,aAAalK,QAAQpD,GAAS,GAGzDgQ,KAAAA,+BAGPvY,EAAkB9K,UAAU8W,aAAe,SAASzD,GAC9CuC,IAAAA,EAAK,KACTvC,EAAOG,YAAYpS,QAAQ,SAAS6M,GAC9BoI,IAAAA,EAAST,EAAGK,aAAavE,KAAK,SAAS3P,GAClCA,OAAAA,EAAEkM,QAAUA,IAEjBoI,GACFT,EAAGW,YAAYF,MAKrBvL,EAAkB9K,UAAUiW,WAAa,WAChC,OAAA,KAAK0L,aAAanQ,OAAO,SAASuD,GAChC,QAAEA,EAAYqH,YAEtBrb,IAAI,SAASgU,GACLA,OAAAA,EAAYqH,aAIvBtR,EAAkB9K,UAAUsV,aAAe,WAClC,OAAA,KAAKqM,aAAanQ,OAAO,SAASuD,GAChC,QAAEA,EAAYsH,cAEtBtb,IAAI,SAASgU,GACLA,OAAAA,EAAYsH,eAKvBvR,EAAkB9K,UAAU0jB,mBAAqB,SAASC,EACtDzC,GACEtL,IAAAA,EAAK,KACLsL,GAAAA,GAAeyC,EAAgB,EAC1B,OAAA,KAAKhC,aAAa,GAAG5F,YACvB,GAAI,KAAKwF,cAActf,OACrB,OAAA,KAAKsf,cAAcqC,QAExB7H,IAAAA,EAAc,IAAIpR,EAAOyC,eAAe,CAC1C2N,WAAY,KAAK2G,QAAQ3G,WACzB0G,aAAc,KAAKC,QAAQL,qBAkBtBtF,OAhBPjc,OAAOmM,eAAe8P,EAAa,QAC/B,CAAC/U,MAAO,MAAO6c,UAAU,IAGxBlC,KAAAA,aAAagC,GAAeG,wBAA0B,GACtDnC,KAAAA,aAAagC,GAAeI,iBAAmB,SAASxO,GACvDyO,IAAAA,GAAOzO,EAAMyJ,WAAqD,IAAxClf,OAAOwB,KAAKiU,EAAMyJ,WAAW/c,OAG3D8Z,EAAYkI,MAAQD,EAAM,YAAc,YACuB,OAA3DpO,EAAG+L,aAAagC,GAAeG,yBACjClO,EAAG+L,aAAagC,GAAeG,wBAAwBjd,KAAK0O,IAGhEwG,EAAY9Q,iBAAiB,iBAC3B,KAAK0W,aAAagC,GAAeI,kBAC5BhI,GAITjR,EAAkB9K,UAAUkkB,QAAU,SAAS/H,EAAKwH,GAC9C/N,IAAAA,EAAK,KACLmG,EAAc,KAAK4F,aAAagC,GAAe5H,YAC/CA,IAAAA,EAAYoI,iBAAZpI,CAGA+H,IAAAA,EACF,KAAKnC,aAAagC,GAAeG,wBAC9BnC,KAAAA,aAAagC,GAAeG,wBAA0B,KAC3D/H,EAAYpQ,oBAAoB,iBAC9B,KAAKgW,aAAagC,GAAeI,kBACnChI,EAAYoI,iBAAmB,SAASC,GAClCxO,KAAAA,EAAGsL,aAAeyC,EAAgB,GAAlC/N,CAMAL,IAAAA,EAAQ,IAAIC,MAAM,gBACtBD,EAAMyJ,UAAY,CAACqF,OAAQlI,EAAKwH,cAAeA,GAE3CW,IAAAA,EAAOF,EAAIpF,UAEXgF,GAAOM,GAAqC,IAA7BxkB,OAAOwB,KAAKgjB,GAAMriB,OACjC+hB,GAAAA,EAGwB,QAAtBjI,EAAYkI,OAAyC,cAAtBlI,EAAYkI,QAC7ClI,EAAYkI,MAAQ,iBAEjB,CACqB,QAAtBlI,EAAYkI,QACdlI,EAAYkI,MAAQ,aAGtBK,EAAKC,UAAY,EAEjBD,EAAKE,MAAQzI,EAAYC,qBAAqByI,iBAE1CC,IAAAA,EAAsBjJ,EAASkJ,eAAeL,GAClD/O,EAAMyJ,UAAYlf,OAAOS,OAAOgV,EAAMyJ,UAClCvD,EAASmJ,eAAeF,IAE5BnP,EAAMyJ,UAAUA,UAAY0F,EAC5BnP,EAAMyJ,UAAU6F,OAAS,WAChB,MAAA,CACL7F,UAAWzJ,EAAMyJ,UAAUA,UAC3BqF,OAAQ9O,EAAMyJ,UAAUqF,OACxBV,cAAepO,EAAMyJ,UAAU2E,cAC/Bc,iBAAkBlP,EAAMyJ,UAAUyF,mBAMpCK,IAAAA,EAAWrJ,EAASsJ,iBAAiBnP,EAAGiL,kBAAkBhH,KAK5DiL,EAASvP,EAAMyJ,UAAU2E,gBAJtBK,EAKC,0BAHA,KAAOzO,EAAMyJ,UAAUA,UAAY,OAKzCpJ,EAAGiL,kBAAkBhH,IACjB4B,EAASuJ,eAAepP,EAAGiL,kBAAkBhH,KAC7CiL,EAAS7jB,KAAK,IACdgkB,IAAAA,EAAWrP,EAAG+L,aAAauD,MAAM,SAASnQ,GACrCA,OAAAA,EAAYgH,aACmB,cAAlChH,EAAYgH,YAAYkI,QAGD,cAAzBrO,EAAGqL,oBACLrL,EAAGqL,kBAAoB,YACvBrL,EAAG+M,6BAKAqB,GACHpO,EAAGwK,eAAe,eAAgB7K,GAEhC0P,IACFrP,EAAGwK,eAAe,eAAgB,IAAI5K,MAAM,iBAC5CI,EAAGqL,kBAAoB,WACvBrL,EAAG+M,+BAKPhY,EAAOwV,WAAW,WAChB2D,EAAwB1iB,QAAQ,SAASmE,GACvCwW,EAAYoI,iBAAiB5e,MAE9B,KAILuF,EAAkB9K,UAAUojB,4BAA8B,WACpDxN,IAAAA,EAAK,KACLmJ,EAAe,IAAIpU,EAAOwa,gBAAgB,MAC9CpG,EAAaqG,iBAAmB,WAC9BxP,EAAGyP,4BACHzP,EAAG0P,0BAGDpJ,IAAAA,EAAgB,IAAIvR,EAAO4a,iBAAiBxG,GAWzC,OAVP7C,EAAcsJ,kBAAoB,WAChC5P,EAAG0P,0BAELpJ,EAAcuJ,QAAU,WAEtB3lB,OAAOmM,eAAeiQ,EAAe,QACjC,CAAClV,MAAO,SAAU6c,UAAU,IAChCjO,EAAG0P,0BAGE,CACLvG,aAAcA,EACd7C,cAAeA,IAMnBpR,EAAkB9K,UAAU0lB,6BAA+B,SACvD/B,GACE5H,IAAAA,EAAc,KAAK4F,aAAagC,GAAe5H,YAC/CA,WACKA,EAAYoI,wBACZ,KAAKxC,aAAagC,GAAe5H,aAEtCgD,IAAAA,EAAe,KAAK4C,aAAagC,GAAe5E,aAChDA,WACKA,EAAaqG,wBACb,KAAKzD,aAAagC,GAAe5E,cAEtC7C,IAAAA,EAAgB,KAAKyF,aAAagC,GAAezH,cACjDA,WACKA,EAAcsJ,yBACdtJ,EAAcuJ,eACd,KAAK9D,aAAagC,GAAezH,gBAK5CpR,EAAkB9K,UAAU2lB,YAAc,SAAS5Q,EAC/C6Q,EAAMC,GACJC,IAAAA,EAASlJ,EAAsB7H,EAAY8H,kBAC3C9H,EAAY+H,oBACZ8I,GAAQ7Q,EAAYqH,YACtB0J,EAAOC,UAAYhR,EAAYyH,uBAC/BsJ,EAAOE,KAAO,CACZC,MAAOxK,EAASkB,WAChBuJ,SAAUnR,EAAYoR,eAAeD,UAEnCnR,EAAYiO,uBAAuB/gB,SACrC6jB,EAAOE,KAAKvJ,KAAO1H,EAAYiO,uBAAuB,GAAGvG,MAE3D1H,EAAYqH,UAAUwJ,KAAKE,IAEzBD,GAAQ9Q,EAAYsH,aAAeyJ,EAAO9I,OAAO/a,OAAS,IAEnC,UAArB8S,EAAYtD,MACTsD,EAAYiO,wBACZhI,EAAc,OACnBjG,EAAYiO,uBAAuB5hB,QAAQ,SAASkB,UAC3CA,EAAEoa,MAGT3H,EAAYiO,uBAAuB/gB,OACrC6jB,EAAOC,UAAYhR,EAAYiO,uBAE/B8C,EAAOC,UAAY,CAAC,IAEtBD,EAAOE,KAAO,CACZE,SAAUnR,EAAYoR,eAAeD,UAEnCnR,EAAYoR,eAAeF,QAC7BH,EAAOE,KAAKC,MAAQlR,EAAYoR,eAAeF,OAE7ClR,EAAYyH,uBAAuBva,SACrC6jB,EAAOE,KAAKvJ,KAAO1H,EAAYyH,uBAAuB,GAAGC,MAE3D1H,EAAYsH,YAAY+J,QAAQN,KAIpChb,EAAkB9K,UAAU4Z,oBAAsB,SAASJ,GACrD5D,IAeAkP,EACAuB,EAhBAzQ,EAAK,KAGL,IAAmD,IAAnD,CAAC,QAAS,UAAUa,QAAQ+C,EAAYtT,MACnCyN,OAAAA,QAAQC,OAAO8L,EAAU,YAC5B,qBAAuBlG,EAAYtT,KAAO,MAG5C,IAACwY,EAAgC,sBACjClF,EAAYtT,KAAM0P,EAAGqD,iBAAmBrD,EAAGoM,UACtCrO,OAAAA,QAAQC,OAAO8L,EAAU,oBAC5B,qBAAuBlG,EAAYtT,KACnC,aAAe0P,EAAGqD,iBAKpBO,GAAqB,UAArBA,EAAYtT,KAGd4e,EAAWrJ,EAAS6K,cAAc9M,EAAYK,KAC9CwM,EAAcvB,EAASlB,QACvBkB,EAAS1jB,QAAQ,SAASmlB,EAAc5C,GAClChI,IAAAA,EAAOF,EAAS+K,mBAAmBD,GACvC3Q,EAAG+L,aAAagC,GAAe9G,kBAAoBlB,IAGrD/F,EAAG+L,aAAavgB,QAAQ,SAAS2T,EAAa4O,GAC5C/N,EAAGsO,QAAQnP,EAAYoH,IAAKwH,UAEzB,GAAyB,WAArBnK,EAAYtT,KAAmB,CACxC4e,EAAWrJ,EAAS6K,cAAc1Q,EAAGkL,mBAAmBjH,KACxDwM,EAAcvB,EAASlB,QACnB6C,IAAAA,EAAYhL,EAASiL,YAAYL,EACjC,cAAcpkB,OAAS,EAC3B6iB,EAAS1jB,QAAQ,SAASmlB,EAAc5C,GAClC5O,IAAAA,EAAca,EAAG+L,aAAagC,GAC9B5H,EAAchH,EAAYgH,YAC1BgD,EAAehK,EAAYgK,aAC3B7C,EAAgBnH,EAAYmH,cAC5BW,EAAoB9H,EAAY8H,kBAChCC,EAAqB/H,EAAY+H,mBAMjC,KAHWrB,EAASkL,WAAWJ,IACgC,IAA/D9K,EAASiL,YAAYH,EAAc,iBAAiBtkB,UAEtC8S,EAAY6R,SAAU,CAClCC,IAAAA,EAAsBpL,EAASqL,iBAC/BP,EAAcF,GACdU,EAAuBtL,EAASuL,kBAChCT,EAAcF,GACdI,IACFM,EAAqBE,KAAO,UAGzBrR,EAAGsL,aAAiC,IAAlByC,IACrB/N,EAAGsO,QAAQnP,EAAYoH,IAAKwH,GACD,QAAvB5E,EAAakF,OACflF,EAAamI,MAAMnL,EAAa8K,EAC5BJ,EAAY,cAAgB,cAEN,QAAxBvK,EAAc+H,OAChB/H,EAAcgL,MAAMH,IAKpBjB,IAAAA,EAASlJ,EAAsBC,EAC/BC,GAIJlH,EAAG+P,YAAY5Q,EACX+Q,EAAO9I,OAAO/a,OAAS,GACvB,MAeH0R,OAVPiC,EAAGiL,kBAAoB,CACrB3a,KAAMsT,EAAYtT,KAClB2T,IAAKL,EAAYK,KAEM,UAArBL,EAAYtT,KACd0P,EAAGuR,sBAAsB,oBAEzBvR,EAAGuR,sBAAsB,UAGpBxT,QAAQuE,WAGjBpN,EAAkB9K,UAAUmV,qBAAuB,SAASqE,GACtD5D,IAAAA,EAAK,KAGL,IAAmD,IAAnD,CAAC,QAAS,UAAUa,QAAQ+C,EAAYtT,MACnCyN,OAAAA,QAAQC,OAAO8L,EAAU,YAC5B,qBAAuBlG,EAAYtT,KAAO,MAG5C,IAACwY,EAAgC,uBACjClF,EAAYtT,KAAM0P,EAAGqD,iBAAmBrD,EAAGoM,UACtCrO,OAAAA,QAAQC,OAAO8L,EAAU,oBAC5B,sBAAwBlG,EAAYtT,KACpC,aAAe0P,EAAGqD,iBAGpBxD,IAAAA,EAAU,GACdG,EAAGgL,cAAcxf,QAAQ,SAASiS,GAChCoC,EAAQpC,EAAO9E,IAAM8E,IAEnB+T,IAAAA,EAAe,GACftC,EAAWrJ,EAAS6K,cAAc9M,EAAYK,KAC9CwM,EAAcvB,EAASlB,QACvB6C,EAAYhL,EAASiL,YAAYL,EACjC,cAAcpkB,OAAS,EACvBif,EAAczF,EAASiL,YAAYL,EACnC,mBAAmBpkB,OAAS,EAChC2T,EAAGsL,YAAcA,EACbmG,IAAAA,EAAa5L,EAASiL,YAAYL,EAClC,kBAAkB,GA4Uf1S,OA1ULiC,EAAG6K,0BADD4G,GAC2BA,EAAWC,OAAO,IAAInmB,MAAM,KACpDsV,QAAQ,YAAc,EAK7BqO,EAAS1jB,QAAQ,SAASmlB,EAAc5C,GAClC4D,IAAAA,EAAQ9L,EAAS+L,WAAWjB,GAC5B9U,EAAOgK,EAASgM,QAAQlB,GAExBK,EAAWnL,EAASkL,WAAWJ,IACgC,IAA/D9K,EAASiL,YAAYH,EAAc,iBAAiBtkB,OACpDud,EAAW+H,EAAM,GAAGD,OAAO,GAAGnmB,MAAM,KAAK,GAEzCumB,EAAYjM,EAASkM,aAAapB,EAAcF,GAChDuB,EAAanM,EAASoM,UAAUtB,GAEhCpK,EAAMV,EAASqM,OAAOvB,IAAiB9K,EAASsM,qBAGhDnB,GAAAA,GAAsB,gBAATnV,IAAwC,cAAb+N,GAC3B,kBAAbA,GAGF5J,EAAG+L,aAAagC,GAAiB,CAC/BxH,IAAKA,EACL1K,KAAMA,EACN+N,SAAUA,EACVoH,UAAU,OARVA,CAmBA7R,IAAAA,EACAgH,EACAgD,EACA7C,EACAG,EACAG,EACAwG,EACAnG,EAEA5O,GAfC2Y,GAAYhR,EAAG+L,aAAagC,IAC7B/N,EAAG+L,aAAagC,GAAeiD,WAEjChR,EAAG+L,aAAagC,GAAiB/N,EAAGiN,mBAAmBpR,GAAM,IAc3DqL,IACA+J,EACAE,EAFAjK,EAAqBrB,EAAS+K,mBAAmBD,GAGhDK,IACHC,EAAsBpL,EAASqL,iBAAiBP,EAC5CF,IACJU,EAAuBtL,EAASuL,kBAAkBT,EAC9CF,IACiBY,KAAO,UAE9BjE,EACIvH,EAASuM,2BAA2BzB,GAEpCJ,IAAAA,EAAiB1K,EAASwM,oBAAoB1B,GAE9C2B,EAAazM,EAASiL,YAAYH,EAClC,sBAAuBF,GAAapkB,OAAS,EAC7CkmB,EAAQ1M,EAASiL,YAAYH,EAAc,gBAC1CxlB,IAAI,SAASujB,GACL7I,OAAAA,EAASmJ,eAAeN,KAEhC9S,OAAO,SAAS8S,GACRA,OAAmB,IAAnBA,EAAKC,YAuBd/K,IAnBsB,UAArBA,EAAYtT,MAAyC,WAArBsT,EAAYtT,QAC5C0gB,GAAY1F,GAAeyC,EAAgB,GAC5C/N,EAAG+L,aAAagC,KAClB/N,EAAG8P,6BAA6B/B,GAChC/N,EAAG+L,aAAagC,GAAe5H,YAC3BnG,EAAG+L,aAAa,GAAG5F,YACvBnG,EAAG+L,aAAagC,GAAe5E,aAC3BnJ,EAAG+L,aAAa,GAAG5C,aACvBnJ,EAAG+L,aAAagC,GAAezH,cAC3BtG,EAAG+L,aAAa,GAAGzF,cACnBtG,EAAG+L,aAAagC,GAAevH,WACjCxG,EAAG+L,aAAagC,GAAevH,UAAUgM,aACrCxS,EAAG+L,aAAa,GAAGzF,eAErBtG,EAAG+L,aAAagC,GAAetH,aACjCzG,EAAG+L,aAAagC,GAAetH,YAAY+L,aACvCxS,EAAG+L,aAAa,GAAGzF,gBAGF,UAArB1C,EAAYtT,MAAqB0gB,GAmG9B,GAAyB,WAArBpN,EAAYtT,OAAsB0gB,EAAU,CAErD7K,GADAhH,EAAca,EAAG+L,aAAagC,IACJ5H,YAC1BgD,EAAehK,EAAYgK,aAC3B7C,EAAgBnH,EAAYmH,cAC5BG,EAActH,EAAYsH,YAC1BG,EAAyBzH,EAAYyH,uBACrCK,EAAoB9H,EAAY8H,kBAEhCjH,EAAG+L,aAAagC,GAAeX,uBAC3BA,EACJpN,EAAG+L,aAAagC,GAAe7G,mBAC3BA,EACJlH,EAAG+L,aAAagC,GAAewC,eAAiBA,EAE5CgC,EAAMlmB,QAAiC,QAAvB8c,EAAakF,SAC1BwC,IAAayB,GACZhH,GAAiC,IAAlByC,EAGnBwE,EAAM/mB,QAAQ,SAAS4d,GACrBF,EAAkB/J,EAAYgK,aAAcC,KAH9CD,EAAasJ,oBAAoBF,IAQhCjH,GAAiC,IAAlByC,IACS,QAAvB5E,EAAakF,OACflF,EAAamI,MAAMnL,EAAa8K,EAC5B,eAEsB,QAAxB3K,EAAc+H,OAChB/H,EAAcgL,MAAMH,KAMCnK,EACvB7H,EAAY8H,kBACZ9H,EAAY+H,oBAEkBE,OAAOxL,OAAO,SAAS/N,GAC9CA,MAAyB,QAAzBA,EAAEyL,KAAK2C,gBACb5P,QACY8S,EAAYyH,uBAAuB,GAAGE,YAC5C3H,EAAYyH,uBAAuB,GAAGE,IAG/C9G,EAAG+P,YAAY5Q,EACG,aAAd2S,GAA0C,aAAdA,EACd,aAAdA,GAA0C,aAAdA,IAG5BrL,GACe,aAAdqL,GAA0C,aAAdA,SAiBxB3S,EAAYsH,aAhBnBpO,EAAQoO,EAAYpO,MAChB2Z,GACGnS,EAAQmS,EAAWvU,UACtBoC,EAAQmS,EAAWvU,QAAU,IAAI1I,EAAOgK,aAE1CoL,EAA6B9R,EAAOwH,EAAQmS,EAAWvU,SACvD+T,EAAavgB,KAAK,CAACoH,EAAOoO,EAAa5G,EAAQmS,EAAWvU,YAErDoC,EAAQnO,UACXmO,EAAQnO,QAAU,IAAIqD,EAAOgK,aAE/BoL,EAA6B9R,EAAOwH,EAAQnO,SAC5C8f,EAAavgB,KAAK,CAACoH,EAAOoO,EAAa5G,EAAQnO,iBAvKN,EAC7CyN,EAAca,EAAG+L,aAAagC,IAC1B/N,EAAGiN,mBAAmBpR,IACd0K,IAAMA,EAEbpH,EAAYgH,cACfhH,EAAYgH,YAAcnG,EAAG8N,mBAAmBC,EAC5CzC,IAGFiH,EAAMlmB,QAA6C,QAAnC8S,EAAYgK,aAAakF,SACvCiE,GAAgBhH,GAAiC,IAAlByC,EAGjCwE,EAAM/mB,QAAQ,SAAS4d,GACrBF,EAAkB/J,EAAYgK,aAAcC,KAH9CjK,EAAYgK,aAAasJ,oBAAoBF,IAQjDtL,EAAoBlS,EAAOwN,eAAemQ,gBAAgB7W,GAItDuJ,EAAc,QAChB6B,EAAkBG,OAASH,EAAkBG,OAAOxL,OAChD,SAAS+W,GACAA,MAAe,QAAfA,EAAMrZ,QAIrBsN,EAAyBzH,EAAYyH,wBAA0B,CAAC,CAC9DC,KAAgC,MAAzB,EAAIkH,EAAgB,KAIzB6E,IAOInV,EAPJmV,GAAa,EACbd,GAAc,aAAdA,GAA0C,aAAdA,GAK1Bc,GAJJA,GAAczT,EAAYsH,YAC1BA,EAActH,EAAYsH,aACtB,IAAI1R,EAAOwN,eAAepD,EAAYmH,cAAezK,GAErD+W,EAEFva,EAAQoO,EAAYpO,MAEhB2Z,GAAoC,MAAtBA,EAAWvU,SAElBuU,GACJnS,EAAQmS,EAAWvU,UACtBoC,EAAQmS,EAAWvU,QAAU,IAAI1I,EAAOgK,YACxC7U,OAAOmM,eAAewJ,EAAQmS,EAAWvU,QAAS,KAAM,CACtDvH,IAAK,WACI8b,OAAAA,EAAWvU,WAIxBvT,OAAOmM,eAAegC,EAAO,KAAM,CACjCnC,IAAK,WACI8b,OAAAA,EAAW3Z,SAGtBoF,EAASoC,EAAQmS,EAAWvU,UAEvBoC,EAAQnO,UACXmO,EAAQnO,QAAU,IAAIqD,EAAOgK,aAE/BtB,EAASoC,EAAQnO,UAEf+L,IACF0M,EAA6B9R,EAAOoF,GACpC0B,EAAYkO,6BAA6Bpc,KAAKwM,IAEhD+T,EAAavgB,KAAK,CAACoH,EAAOoO,EAAahJ,SAEhC0B,EAAYsH,aAAetH,EAAYsH,YAAYpO,QAC5D8G,EAAYkO,6BAA6B7hB,QAAQ,SAASW,GACpD0mB,IA/zB6Bxa,EAAOoF,EA+zBpCoV,EAAc1mB,EAAEyR,YAAY9B,KAAK,SAAS9O,GACrCA,OAAAA,EAAE2L,KAAOwG,EAAYsH,YAAYpO,MAAMM,KAE5Cka,IAl0B6Bxa,EAm0BGwa,GAn0BIpV,EAm0BStR,GAl0BlDwU,YAAYtI,GACnBoF,EAAOqC,cAAc,IAAI/K,EAAOqV,sBAAsB,cAClD,CAAC/R,MAAOA,QAm0BN8G,EAAYkO,6BAA+B,IAG7ClO,EAAY8H,kBAAoBA,EAChC9H,EAAY+H,mBAAqBA,EACjC/H,EAAYsH,YAAcA,EAC1BtH,EAAYoR,eAAiBA,EAC7BpR,EAAYyH,uBAAyBA,EACrCzH,EAAYiO,uBAAyBA,EAIrCpN,EAAG+P,YAAY/P,EAAG+L,aAAagC,IAC3B,EACA6E,YA8Eaxa,IAAjB4H,EAAGmM,YACLnM,EAAGmM,UAAiC,UAArBvI,EAAYtT,KAAmB,SAAW,WAG3D0P,EAAGkL,mBAAqB,CACtB5a,KAAMsT,EAAYtT,KAClB2T,IAAKL,EAAYK,KAEM,UAArBL,EAAYtT,KACd0P,EAAGuR,sBAAsB,qBAEzBvR,EAAGuR,sBAAsB,UAE3BrnB,OAAOwB,KAAKmU,GAASrU,QAAQ,SAASsnB,GAChCrV,IAAAA,EAASoC,EAAQiT,GACjBrV,GAAAA,EAAOG,YAAYvR,OAAQ,CACzB2T,IAAsC,IAAtCA,EAAGgL,cAAcnK,QAAQpD,GAAgB,CAC3CuC,EAAGgL,cAAc/Z,KAAKwM,GAClBkC,IAAAA,EAAQ,IAAIC,MAAM,aACtBD,EAAMlC,OAASA,EACf1I,EAAOwV,WAAW,WAChBvK,EAAGwK,eAAe,YAAa7K,KAInC6R,EAAahmB,QAAQ,SAASunB,GACxB1a,IAAAA,EAAQ0a,EAAK,GACb3T,EAAW2T,EAAK,GAChBtV,EAAO9E,KAAOoa,EAAK,GAAGpa,IAG1B0R,EAAarK,EAAI3H,EAAO+G,EAAU,CAAC3B,SAIzC+T,EAAahmB,QAAQ,SAASunB,GACxBA,EAAK,IAGT1I,EAAarK,EAAI+S,EAAK,GAAIA,EAAK,GAAI,MAKrChe,EAAOwV,WAAW,WACVvK,GAAMA,EAAG+L,cAGf/L,EAAG+L,aAAavgB,QAAQ,SAAS2T,GAC3BA,EAAYgK,cACuB,QAAnChK,EAAYgK,aAAakF,OACzBlP,EAAYgK,aAAaG,sBAAsBjd,OAAS,IAC1DwI,QAAQiC,KAAK,sFAEbqI,EAAYgK,aAAaU,mBAAmB,QAG/C,KAEI9L,QAAQuE,WAGjBpN,EAAkB9K,UAAU4oB,MAAQ,WAC7BjH,KAAAA,aAAavgB,QAAQ,SAAS2T,GAM7BA,EAAYgK,cACdhK,EAAYgK,aAAatL,OAEvBsB,EAAYmH,eACdnH,EAAYmH,cAAczI,OAExBsB,EAAYqH,WACdrH,EAAYqH,UAAU3I,OAEpBsB,EAAYsH,aACdtH,EAAYsH,YAAY5I,SAIvBuO,KAAAA,WAAY,EACZmF,KAAAA,sBAAsB,WAI7Brc,EAAkB9K,UAAUmnB,sBAAwB,SAAS0B,GACtD5P,KAAAA,eAAiB4P,EAClBtT,IAAAA,EAAQ,IAAIC,MAAM,wBACjB4K,KAAAA,eAAe,uBAAwB7K,IAI9CzK,EAAkB9K,UAAUqjB,4BAA8B,WACpDzN,IAAAA,EAAK,KACmB,WAAxB,KAAKqD,iBAAwD,IAAzB,KAAKyH,kBAGxCA,KAAAA,iBAAkB,EACvB/V,EAAOwV,WAAW,WACZvK,GAAAA,EAAG8K,gBAAiB,CACtB9K,EAAG8K,iBAAkB,EACjBnL,IAAAA,EAAQ,IAAIC,MAAM,qBACtBI,EAAGwK,eAAe,oBAAqB7K,KAExC,KAILzK,EAAkB9K,UAAUqlB,0BAA4B,WAClDwD,IAAAA,EACAC,EAAS,CACJ,IAAA,EACPC,OAAQ,EACRC,SAAU,EACVC,UAAW,EACXC,UAAW,EACXC,aAAc,EACdC,OAAQ,GAuBNP,GArBClH,KAAAA,aAAavgB,QAAQ,SAAS2T,GAC7BA,EAAYgK,eAAiBhK,EAAY6R,UAC3CkC,EAAO/T,EAAYgK,aAAakF,WAIpC4E,EAAW,MACPC,EAAOM,OAAS,EAClBP,EAAW,SACFC,EAAOE,SAAW,EAC3BH,EAAW,WACFC,EAAOK,aAAe,EAC/BN,EAAW,eACFC,EAAOO,IAAM,EACtBR,EAAW,MACFC,EAAOG,UAAY,EAC5BJ,EAAW,YACFC,EAAOI,UAAY,IAC5BL,EAAW,aAGTA,IAAa,KAAK9H,mBAAoB,CACnCA,KAAAA,mBAAqB8H,EACtBtT,IAAAA,EAAQ,IAAIC,MAAM,4BACjB4K,KAAAA,eAAe,2BAA4B7K,KAKpDzK,EAAkB9K,UAAUslB,uBAAyB,WAC/CuD,IAAAA,EACAC,EAAS,CACJ,IAAA,EACPC,OAAQ,EACRO,WAAY,EACZL,UAAW,EACXC,UAAW,EACXC,aAAc,EACdC,OAAQ,GAyBNP,GAvBClH,KAAAA,aAAavgB,QAAQ,SAAS2T,GAC7BA,EAAYgK,cAAgBhK,EAAYmH,gBACvCnH,EAAY6R,WACfkC,EAAO/T,EAAYgK,aAAakF,SAChC6E,EAAO/T,EAAYmH,cAAc+H,YAIrC6E,EAAOG,WAAaH,EAAOI,UAE3BL,EAAW,MACPC,EAAOM,OAAS,EAClBP,EAAW,SACFC,EAAOQ,WAAa,EAC7BT,EAAW,aACFC,EAAOK,aAAe,EAC/BN,EAAW,eACFC,EAAOO,IAAM,EACtBR,EAAW,MACFC,EAAOG,UAAY,IAC5BJ,EAAW,aAGTA,IAAa,KAAK7H,gBAAiB,CAChCA,KAAAA,gBAAkB6H,EACnBtT,IAAAA,EAAQ,IAAIC,MAAM,yBACjB4K,KAAAA,eAAe,wBAAyB7K,KAIjDzK,EAAkB9K,UAAUupB,YAAc,WACpC3T,IAAAA,EAAK,KAELA,GAAAA,EAAGoM,UACErO,OAAAA,QAAQC,OAAO8L,EAAU,oBAC5B,yCAGF8J,IAAAA,EAAiB5T,EAAG+L,aAAanQ,OAAO,SAAS5O,GAC5CA,MAAW,UAAXA,EAAE6O,OACRxP,OACCwnB,EAAiB7T,EAAG+L,aAAanQ,OAAO,SAAS5O,GAC5CA,MAAW,UAAXA,EAAE6O,OACRxP,OAGCynB,EAAe1nB,UAAU,GACzB0nB,GAAAA,EAAc,CAEZA,GAAAA,EAAapa,WAAaoa,EAAana,SACnC,MAAA,IAAIlP,UACN,6DAEmC2N,IAArC0b,EAAaC,sBAEbH,GADuC,IAArCE,EAAaC,oBACE,GAC6B,IAArCD,EAAaC,oBACL,EAEAD,EAAaC,0BAGO3b,IAArC0b,EAAaE,sBAEbH,GADuC,IAArCC,EAAaE,oBACE,GAC6B,IAArCF,EAAaE,oBACL,EAEAF,EAAaE,qBAoB7BJ,IAfP5T,EAAG+L,aAAavgB,QAAQ,SAAS2T,GACN,UAArBA,EAAYtD,OACd+X,EACqB,IACnBzU,EAAYmO,aAAc,GAEE,UAArBnO,EAAYtD,QACrBgY,EACqB,IACnB1U,EAAYmO,aAAc,KAMzBsG,EAAiB,GAAKC,EAAiB,GACxCD,EAAiB,IACnB5T,EAAGiN,mBAAmB,SACtB2G,KAEEC,EAAiB,IACnB7T,EAAGiN,mBAAmB,SACtB4G,KAIA5P,IAAAA,EAAM4B,EAASoO,wBAAwBjU,EAAGgM,cAC1ChM,EAAGkM,sBACPlM,EAAG+L,aAAavgB,QAAQ,SAAS2T,EAAa4O,GAGxC1V,IAAAA,EAAQ8G,EAAY9G,MACpBwD,EAAOsD,EAAYtD,KACnB0K,EAAMpH,EAAYoH,KAAOV,EAASsM,qBACtChT,EAAYoH,IAAMA,EAEbpH,EAAYgH,cACfhH,EAAYgH,YAAcnG,EAAG8N,mBAAmBC,EAC5C/N,EAAGsL,cAGLrE,IAAAA,EAAoBlS,EAAOoM,aAAauR,gBAAgB7W,GAGxDuJ,EAAc,QAChB6B,EAAkBG,OAASH,EAAkBG,OAAOxL,OAChD,SAAS+W,GACAA,MAAe,QAAfA,EAAMrZ,QAGrB2N,EAAkBG,OAAO5b,QAAQ,SAASmnB,GAGrB,SAAfA,EAAMrZ,WAC0ClB,IAAhDua,EAAM1K,WAAW,6BACnB0K,EAAM1K,WAAW,2BAA6B,KAK5C9I,EAAY+H,oBACZ/H,EAAY+H,mBAAmBE,QACjCjI,EAAY+H,mBAAmBE,OAAO5b,QAAQ,SAAS0oB,GACjDvB,EAAMrZ,KAAK2C,gBAAkBiY,EAAY5a,KAAK2C,eAC9C0W,EAAMvK,YAAc8L,EAAY9L,YAClCuK,EAAMjL,qBAAuBwM,EAAYzM,iBAKjDR,EAAkBI,iBAAiB7b,QAAQ,SAAS2oB,IAC3BhV,EAAY+H,oBAC/B/H,EAAY+H,mBAAmBG,kBAAoB,IACtC7b,QAAQ,SAAS4oB,GAC5BD,EAAOtL,MAAQuL,EAAQvL,MACzBsL,EAAOxb,GAAKyb,EAAQzb,QAMtBiO,IAAAA,EAAyBzH,EAAYyH,wBAA0B,CAAC,CAClEC,KAAgC,MAAzB,EAAIkH,EAAgB,KAEzB1V,GAEE+M,GAAe,OAAkB,UAATvJ,IACvB+K,EAAuB,GAAGE,MAC7BF,EAAuB,GAAGE,IAAM,CAC9BD,KAAMD,EAAuB,GAAGC,KAAO,IAKzC1H,EAAYmO,cACdnO,EAAYsH,YAAc,IAAI1R,EAAOwN,eACjCpD,EAAYmH,cAAezK,IAGjCsD,EAAY8H,kBAAoBA,EAChC9H,EAAYyH,uBAAyBA,IAIP,eAA5B5G,EAAG8L,QAAQP,eACbtH,GAAO,kBAAoBjE,EAAG+L,aAAa5gB,IAAI,SAAS6B,GAC/CA,OAAAA,EAAEuZ,MACRlb,KAAK,KAAO,QAEjB4Y,GAAO,4BAEPjE,EAAG+L,aAAavgB,QAAQ,SAAS2T,EAAa4O,GAC5C9J,GAAO6B,EAAkB3G,EAAaA,EAAY8H,kBAC9C,QAAS9H,EAAY1B,OAAQuC,EAAGmM,WACpClI,GAAO,oBAEH9E,EAAYgH,aAAwC,QAAzBnG,EAAGqL,mBACX,IAAlB0C,GAAwB/N,EAAGsL,cAC9BnM,EAAYgH,YAAYkO,qBAAqB7oB,QAAQ,SAASkjB,GAC5DA,EAAKC,UAAY,EACjB1K,GAAO,KAAO4B,EAASkJ,eAAeL,GAAQ,SAGV,cAAlCvP,EAAYgH,YAAYkI,QAC1BpK,GAAO,8BAKTJ,IAAAA,EAAO,IAAI9O,EAAOuP,sBAAsB,CAC1ChU,KAAM,QACN2T,IAAKA,IAEAlG,OAAAA,QAAQuE,QAAQuB,IAGzB3O,EAAkB9K,UAAUkqB,aAAe,WACrCtU,IAAAA,EAAK,KAELA,GAAAA,EAAGoM,UACErO,OAAAA,QAAQC,OAAO8L,EAAU,oBAC5B,0CAGF,GAAwB,sBAAtB9J,EAAGqD,gBACiB,wBAAtBrD,EAAGqD,eACEtF,OAAAA,QAAQC,OAAO8L,EAAU,oBAC5B,+CAAiD9J,EAAGqD,iBAGtDY,IAAAA,EAAM4B,EAASoO,wBAAwBjU,EAAGgM,cAC1ChM,EAAGkM,sBACHlM,EAAGsL,cACLrH,GAAO,kBAAoBjE,EAAG+L,aAAa5gB,IAAI,SAAS6B,GAC/CA,OAAAA,EAAEuZ,MACRlb,KAAK,KAAO,QAEjB4Y,GAAO,4BAEHsQ,IAAAA,EAAuB1O,EAASsJ,iBAChCnP,EAAGkL,mBAAmBjH,KAAK5X,OAC/B2T,EAAG+L,aAAavgB,QAAQ,SAAS2T,EAAa4O,GACxCA,KAAAA,EAAgB,EAAIwG,GAApBxG,CAGA5O,GAAAA,EAAY6R,SAkBd,MAjByB,gBAArB7R,EAAYtD,KACe,cAAzBsD,EAAYyK,SACd3F,GAAO,qCAEPA,GAAO,mBAAqB9E,EAAYyK,SACpC,0BAEwB,UAArBzK,EAAYtD,KACrBoI,GAAO,4DAEuB,UAArB9E,EAAYtD,OACrBoI,GAAO,sEAGTA,GAAO,2CAEQ9E,EAAYoH,IAAM,QAM7BiO,IAAAA,EADFrV,GAAAA,EAAY1B,OAEW,UAArB0B,EAAYtD,KACd2Y,EAAarV,EAAY1B,OAAOC,iBAAiB,GACnB,UAArByB,EAAYtD,OACrB2Y,EAAarV,EAAY1B,OAAOE,iBAAiB,IAE/C6W,GAEEpP,GAAe,OAA8B,UAArBjG,EAAYtD,OACnCsD,EAAYyH,uBAAuB,GAAGE,MACzC3H,EAAYyH,uBAAuB,GAAGE,IAAM,CAC1CD,KAAM1H,EAAYyH,uBAAuB,GAAGC,KAAO,IAOvDM,IAAAA,EAAqBH,EACrB7H,EAAY8H,kBACZ9H,EAAY+H,qBAEHC,EAAmBC,OAAOxL,OAAO,SAAS/N,GAC9CA,MAAyB,QAAzBA,EAAEyL,KAAK2C,gBACb5P,QACY8S,EAAYyH,uBAAuB,GAAGE,YAC5C3H,EAAYyH,uBAAuB,GAAGE,IAG/C7C,GAAO6B,EAAkB3G,EAAagI,EAClC,SAAUhI,EAAY1B,OAAQuC,EAAGmM,WACjChN,EAAYoR,gBACZpR,EAAYoR,eAAekE,cAC7BxQ,GAAO,uBAIPJ,IAAAA,EAAO,IAAI9O,EAAOuP,sBAAsB,CAC1ChU,KAAM,SACN2T,IAAKA,IAEAlG,OAAAA,QAAQuE,QAAQuB,IAGzB3O,EAAkB9K,UAAUsqB,gBAAkB,SAAStL,GACjDpJ,IACAkP,EADAlP,EAAK,KAELoJ,OAAAA,QAA2ChR,IAA5BgR,EAAU2E,gBACzB3E,EAAUqF,OACL1Q,QAAQC,OAAO,IAAIvT,UAAU,qCAI/B,IAAIsT,QAAQ,SAASuE,EAAStE,GAC/B,IAACgC,EAAGkL,mBACClN,OAAAA,EAAO8L,EAAU,oBACpB,2DACC,GAAKV,GAAqC,KAAxBA,EAAUA,UAe5B,CACD2E,IAAAA,EAAgB3E,EAAU2E,cAC1B3E,GAAAA,EAAUqF,OACP,IAAA,IAAIzjB,EAAI,EAAGA,EAAIgV,EAAG+L,aAAa1f,OAAQrB,IACtCgV,GAAAA,EAAG+L,aAAa/gB,GAAGub,MAAQ6C,EAAUqF,OAAQ,CAC/CV,EAAgB/iB,EAChB,MAIFmU,IAAAA,EAAca,EAAG+L,aAAagC,GAC9B5O,IAAAA,EAqCKnB,OAAAA,EAAO8L,EAAU,iBACpB,8BArCA3K,GAAAA,EAAY6R,SACP1O,OAAAA,IAELoM,IAAAA,EAAOxkB,OAAOwB,KAAK0d,EAAUA,WAAW/c,OAAS,EACjDwZ,EAASmJ,eAAe5F,EAAUA,WAAa,GAE/CsF,GAAkB,QAAlBA,EAAK9E,WAAqC,IAAd8E,EAAKhF,MAA4B,IAAdgF,EAAKhF,MAC/CpH,OAAAA,IAGLoM,GAAAA,EAAKC,WAAgC,IAAnBD,EAAKC,UAClBrM,OAAAA,IAILyL,IAAkB,IAAlBA,GAAwBA,EAAgB,GACxC5O,EAAYgK,eAAiBnJ,EAAG+L,aAAa,GAAG5C,gBAC7CD,EAAkB/J,EAAYgK,aAAcuF,GACxC1Q,OAAAA,EAAO8L,EAAU,iBACpB,8BAKJ6K,IAAAA,EAAkBvL,EAAUA,UAAUwL,OACJ,IAAlCD,EAAgB9T,QAAQ,QAC1B8T,EAAkBA,EAAgBjD,OAAO,KAE3CxC,EAAWrJ,EAASsJ,iBAAiBnP,EAAGkL,mBAAmBjH,MAClD8J,IAAkB,MACtBW,EAAKpe,KAAOqkB,EAAkB,qBAC7B,OACN3U,EAAGkL,mBAAmBjH,IAClB4B,EAASuJ,eAAepP,EAAGkL,mBAAmBjH,KAC9CiL,EAAS7jB,KAAK,SA5Df,IAAA,IAAIod,EAAI,EAAGA,EAAIzI,EAAG+L,aAAa1f,SAC9B2T,EAAG+L,aAAatD,GAAGuI,WAGvBhR,EAAG+L,aAAatD,GAAGU,aAAaU,mBAAmB,KACnDqF,EAAWrJ,EAASsJ,iBAAiBnP,EAAGkL,mBAAmBjH,MAClDwE,IAAM,0BACfzI,EAAGkL,mBAAmBjH,IAClB4B,EAASuJ,eAAepP,EAAGkL,mBAAmBjH,KAC9CiL,EAAS7jB,KAAK,KACd2U,EAAGsL,cAVmC7C,KAkE9CnG,OAIJpN,EAAkB9K,UAAUmX,SAAW,SAASC,GAC1CA,GAAAA,GAAYA,aAAoBzM,EAAO6N,iBAAkB,CACvDiS,IAAAA,EAAmB,KAUnB,GATC9I,KAAAA,aAAavgB,QAAQ,SAAS2T,GAC7BA,EAAYqH,WACZrH,EAAYqH,UAAUnO,QAAUmJ,EAClCqT,EAAmB1V,EAAYqH,UACtBrH,EAAYsH,aACnBtH,EAAYsH,YAAYpO,QAAUmJ,IACpCqT,EAAmB1V,EAAYsH,gBAG9BoO,EACG/K,MAAAA,EAAU,qBAAsB,qBAEjC+K,OAAAA,EAAiBtT,WAGtBuT,IAAAA,EAAW,GASR/W,OARFgO,KAAAA,aAAavgB,QAAQ,SAAS2T,GAChC,CAAA,YAAa,cAAe,cAAe,eACxC,iBAAiB3T,QAAQ,SAAS+X,GAC5BpE,EAAYoE,IACduR,EAAS7jB,KAAKkO,EAAYoE,GAAQhC,gBAIrCxD,QAAQgX,IAAID,GAAUrjB,KAAK,SAASujB,GACrCC,IAAAA,EAAU,IAAIrf,IAMXqf,OALPD,EAASxpB,QAAQ,SAASqN,GACxBA,EAAMrN,QAAQ,SAAS4W,GACrB6S,EAAQpf,IAAIuM,EAAKzJ,GAAIyJ,OAGlB6S,KAKO,CAAC,eAAgB,iBAAkB,iBACnD,kBAAmB,oBACTzpB,QAAQ,SAAS0pB,GACvBha,IAAAA,EAAMnG,EAAOmgB,GACbha,GAAAA,GAAOA,EAAI9Q,WAAa8Q,EAAI9Q,UAAUmX,SAAU,CAC9C4T,IAAAA,EAAiBja,EAAI9Q,UAAUmX,SACnCrG,EAAI9Q,UAAUmX,SAAW,WAChB4T,OAAAA,EAAe/iB,MAAM,MAC3BX,KAAK,SAAS2jB,GACTC,IAAAA,EAAW,IAAIzf,IAKZyf,OAJPnrB,OAAOwB,KAAK0pB,GAAa5pB,QAAQ,SAASmN,GACxCyc,EAAYzc,GAAIrI,KAAOmlB,EAAaL,EAAYzc,IAChD0c,EAASxf,IAAI8C,EAAIyc,EAAYzc,MAExB0c,QAOXK,IAAAA,EAAU,CAAC,cAAe,gBA8DvBxgB,OA7DPwgB,EAAQlqB,QAAQ,SAAS+X,GACnBC,IAAAA,EAAetO,EAAkB9K,UAAUmZ,GAC/CrO,EAAkB9K,UAAUmZ,GAAU,WAChCG,IAAAA,EAAOtX,UACP,MAAmB,mBAAZsX,EAAK,IACO,mBAAZA,EAAK,GACPF,EAAapR,MAAM,KAAM,CAAChG,UAAU,KAC1CqF,KAAK,SAASmS,GACU,mBAAZF,EAAK,IACdA,EAAK,GAAGtR,MAAM,KAAM,CAACwR,KAEtB,SAAS9O,GACa,mBAAZ4O,EAAK,IACdA,EAAK,GAAGtR,MAAM,KAAM,CAAC0C,MAIpB0O,EAAapR,MAAM,KAAMhG,eAIpCspB,EAAU,CAAC,sBAAuB,uBAAwB,oBAClDlqB,QAAQ,SAAS+X,GACnBC,IAAAA,EAAetO,EAAkB9K,UAAUmZ,GAC/CrO,EAAkB9K,UAAUmZ,GAAU,WAChCG,IAAAA,EAAOtX,UACP,MAAmB,mBAAZsX,EAAK,IACO,mBAAZA,EAAK,GACPF,EAAapR,MAAM,KAAMhG,WAC/BqF,KAAK,WACmB,mBAAZiS,EAAK,IACdA,EAAK,GAAGtR,MAAM,OAEf,SAAS0C,GACa,mBAAZ4O,EAAK,IACdA,EAAK,GAAGtR,MAAM,KAAM,CAAC0C,MAIpB0O,EAAapR,MAAM,KAAMhG,cAMnC,CAAA,YAAYZ,QAAQ,SAAS+X,GACxBC,IAAAA,EAAetO,EAAkB9K,UAAUmZ,GAC/CrO,EAAkB9K,UAAUmZ,GAAU,WAChCG,IAAAA,EAAOtX,UACP,MAAmB,mBAAZsX,EAAK,GACPF,EAAapR,MAAM,KAAMhG,WAC/BqF,KAAK,WACmB,mBAAZiS,EAAK,IACdA,EAAK,GAAGtR,MAAM,QAIboR,EAAapR,MAAM,KAAMhG,cAI7B8I;;ACvzDT,aAEO,SAAS0nB,EAAiB7nB,GACzBkC,MAAAA,EAAYlC,GAAUA,EAAOkC,UAc7BsG,EAAmBtG,EAAUQ,aAAa2F,aAC5C9J,KAAK2D,EAAUQ,cACnBR,EAAUQ,aAAa2F,aAAe,SAASvP,GACtC0P,OAAAA,EAAiB1P,GAAG8nB,MAAMhmB,GAAKoO,QAAQC,OAf7B,SAASrO,GACnB,MAAA,CACL2J,KAAM,CAACgD,sBAAuB,mBAAmB3M,EAAE2J,OAAS3J,EAAE2J,KAC9D2D,QAAStN,EAAEsN,QACXC,WAAYvN,EAAEuN,WACdpM,WACS,OAAA,KAAKwI,OASqC+C,CAAW1M,MAEnE,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,iBAAA;;ACtBD,aAEO,SAASwuB,EAAoBppB,GAC5B,oBAAqBA,EAAOkC,WAG5BlC,EAAOkC,UAAUQ,eAGnB1C,EAAOkC,UAAUQ,cACnB,oBAAqB1C,EAAOkC,UAAUQ,eAGxC1C,EAAOkC,UAAUQ,aAAayG,gBAC5BnJ,EAAOkC,UAAUiH,gBAAgB5K,KAAKyB,EAAOkC,aAChD,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,oBAAA;;ACfD,aAgFC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,mBAAA,EAAA,QAAA,iBAAA,EAAA,OAAA,eAAA,QAAA,mBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,oBAAA,OAAA,eAAA,QAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,uBA9ED,IAAA,EAAA,EAAA,QAAA,aACA,EAAA,QAAA,sBACA,EAAA,EAAA,QAAA,2BAEA,EAAA,QAAA,kBACA,EAAA,QAAA,qBAyEC,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAAA,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAvEM,SAASwlB,EAAmB1nB,EAAQyE,GACrCzE,GAAAA,EAAOyC,iBACJzC,EAAO4P,kBACV5P,EAAO4P,gBAAkB,SAAyBjB,GACzCA,OAAAA,IAGN3O,EAAOuP,wBACVvP,EAAOuP,sBAAwB,SAA+BZ,GACrDA,OAAAA,IAMPlK,EAAe9E,QAAU,OAAO,CAC5BkhB,MAAAA,EAAiB1rB,OAAOua,yBAC1B1P,EAAO6N,iBAAiBxY,UAAW,WACvCF,OAAOmM,eAAetB,EAAO6N,iBAAiBxY,UAAW,UAAW,CAClEyL,IAAIzE,GACFwkB,EAAe/f,IAAItJ,KAAK,KAAM6E,GACxBykB,MAAAA,EAAK,IAAIjW,MAAM,WACrBiW,EAAGhI,QAAUzc,EACR0O,KAAAA,cAAc+V,OAQvB9gB,EAAOoM,cAAkB,SAAUpM,EAAOoM,aAAa/W,WACzDF,OAAOmM,eAAetB,EAAOoM,aAAa/W,UAAW,OAAQ,CAC3D8L,MAQS,YAPYkC,IAAf,KAAK8H,QACiB,UAApB,KAAK7H,MAAMwD,KACRqE,KAAAA,MAAQ,IAAInL,EAAO+gB,cAAc,MACT,UAApB,KAAKzd,MAAMwD,OACfqE,KAAAA,MAAQ,OAGV,KAAKA,SAMdnL,EAAO+gB,gBAAkB/gB,EAAOghB,gBAClChhB,EAAOghB,cAAgBhhB,EAAO+gB,eAG1BE,MAAAA,GAAwB,EAAsBjhB,EAAAA,SAAAA,EAChDyE,EAAe9E,SACnBK,EAAOG,kBAAoB,SAA2BuV,GAM7C,OALHA,GAAUA,EAAOtF,aACnBsF,EAAOtF,YAAa,EAAiBsF,EAAAA,kBAAAA,EAAOtF,WAC1C3L,EAAe9E,SACjBuK,EAAMtI,IAAI,+BAAgC8T,EAAOtF,aAE5C,IAAI6Q,EAAsBvL,IAEnC1V,EAAOG,kBAAkB9K,UAAY4rB,EAAsB5rB,UAGtD,SAASg0B,EAAiBrpB,IAE3BA,EAAOoM,cACL,iBAAkBpM,EAAOoM,aAAa/W,YAC1C2K,EAAOoM,aAAa/W,UAAU6rB,aAC1BlhB,EAAOoM,aAAa/W,UAAU8rB;;AC9EtC,aA0DC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,iBAAA,EAxDD,IAAA,EAAA,EAAA,QAAA,aAwDC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAtDM,SAAS0G,EAAiB7nB,EAAQyE,GACjCvC,MAAAA,EAAYlC,GAAUA,EAAOkC,UAC7B2L,EAAmB7N,GAAUA,EAAO6N,iBAStC,GAPJ3L,EAAUmG,aAAe,SAASzC,EAAa0C,EAAWC,GAExD2B,EAAMwG,WAAW,yBACb,uCACJxO,EAAUQ,aAAa2F,aAAazC,GAAalJ,KAAK4L,EAAWC,MAG7D9D,EAAe9E,QAAU,IAC3B,oBAAqBuC,EAAUQ,aAAa+D,2BAA4B,CACpEP,MAAAA,EAAQ,SAASC,EAAKxN,EAAGE,GACzBF,KAAKwN,KAAStN,KAAKsN,KACrBA,EAAItN,GAAKsN,EAAIxN,UACNwN,EAAIxN,KAITyoB,EAAqBlf,EAAUQ,aAAa2F,aAC9C9J,KAAK2D,EAAUQ,cAUfmL,GATJ3L,EAAUQ,aAAa2F,aAAe,SAASvP,GAMtCsoB,MALU,iBAANtoB,GAAqC,iBAAZA,EAAEmN,QACpCnN,EAAIgN,KAAKC,MAAMD,KAAKE,UAAUlN,IAC9BoN,EAAMpN,EAAEmN,MAAO,kBAAmB,sBAClCC,EAAMpN,EAAEmN,MAAO,mBAAoB,wBAE9Bmb,EAAmBtoB,IAGxB+U,GAAoBA,EAAiBxY,UAAUgsB,YAAa,CACxDC,MAAAA,EAAoBzT,EAAiBxY,UAAUgsB,YACrDxT,EAAiBxY,UAAUgsB,YAAc,WACjClb,MAAAA,EAAMmb,EAAkBjkB,MAAM,KAAMhG,WAGnC8O,OAFPD,EAAMC,EAAK,qBAAsB,mBACjCD,EAAMC,EAAK,sBAAuB,oBAC3BA,GAIP0H,GAAAA,GAAoBA,EAAiBxY,UAAUksB,iBAAkB,CAC7DC,MAAAA,EACJ3T,EAAiBxY,UAAUksB,iBAC7B1T,EAAiBxY,UAAUksB,iBAAmB,SAASzoB,GAM9C0oB,MALW,UAAd,KAAK1a,MAAiC,iBAANhO,IAClCA,EAAIgN,KAAKC,MAAMD,KAAKE,UAAUlN,IAC9BoN,EAAMpN,EAAG,kBAAmB,sBAC5BoN,EAAMpN,EAAG,mBAAoB,wBAExB0oB,EAAuBnkB,MAAM,KAAM,CAACvE;;ACtDnD,aAEO,SAASswB,EAAoBppB,EAAQyhB,GACtCzhB,EAAOkC,UAAUQ,cACnB,oBAAqB1C,EAAOkC,UAAUQ,cAGlC1C,EAAOkC,UAAUQ,eAGvB1C,EAAOkC,UAAUQ,aAAayG,gBAC5B,SAAyBvD,GACnB,IAAEA,IAAeA,EAAYQ,MAAQ,CACjCxP,MAAAA,EAAM,IAAImS,aAAa,0DAKtBC,OAHPpS,EAAI2N,KAAO,gBAEX3N,EAAIoe,KAAO,EACJhM,QAAQC,OAAOrS,GAOjBoJ,OALmB,IAAtB4F,EAAYQ,MACdR,EAAYQ,MAAQ,CAACsb,YAAaD,GAElC7b,EAAYQ,MAAMsb,YAAcD,EAE3BzhB,EAAOkC,UAAUQ,aAAa2F,aAAazC,KAEvD,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,oBAAA;;AC3BD,aA+RC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,YAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,kBAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,iBAAA,EAAA,OAAA,eAAA,QAAA,mBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,oBAAA,OAAA,eAAA,QAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,uBA7RD,IAAA,EAAA,EAAA,QAAA,aACA,EAAA,QAAA,kBACA,EAAA,QAAA,qBA2RC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAzRM,SAASmiB,EAAY/nB,GACJ,iBAAXA,GAAuBA,EAAO2hB,eACpC,aAAc3hB,EAAO2hB,cAActsB,aAClC,gBAAiB2K,EAAO2hB,cAActsB,YAC1CF,OAAOmM,eAAetB,EAAO2hB,cAActsB,UAAW,cAAe,CACnE8L,MACS,MAAA,CAACkJ,SAAU,KAAKA,aAMxB,SAASqd,EAAmB1nB,EAAQyE,GACrC,GAAkB,iBAAXzE,IACLA,EAAOG,oBAAqBH,EAAO4hB,qBAAuB,QAG3D5hB,EAAOG,mBAAqBH,EAAO4hB,uBAEtC5hB,EAAOG,kBAAoBH,EAAO4hB,sBAGhCnd,EAAe9E,QAAU,IAE1B,CAAA,sBAAuB,uBAAwB,mBAC3ClJ,QAAQ,SAAS+X,GACVC,MAAAA,EAAezO,EAAOG,kBAAkB9K,UAAUmZ,GAClDE,EAAY,CAAEF,CAAAA,KAIXC,OAHPpX,UAAU,GAAK,IAAiB,oBAAXmX,EACjBxO,EAAO4P,gBACP5P,EAAOuP,uBAAuBlY,UAAU,IACrCoX,EAAapR,MAAM,KAAMhG,aAElC2I,EAAOG,kBAAkB9K,UAAUmZ,GAAUE,EAAUF,KAIzDqT,MAAAA,EAAmB,CACvBtB,WAAY,cACZC,YAAa,eACbC,cAAe,iBACfvT,eAAgB,kBAChBC,gBAAiB,oBAGb2U,EAAiB9hB,EAAOG,kBAAkB9K,UAAUmX,SAC1DxM,EAAOG,kBAAkB9K,UAAUmX,SAAW,WACtC,MAACC,EAAUC,EAAQC,GAAStV,UAC3ByqB,OAAAA,EAAezkB,MAAM,KAAM,CAACoP,GAAY,OAC5C/P,KAAKoH,IACAW,GAAAA,EAAe9E,QAAU,KAAO+M,EAG9B,IACF5I,EAAMrN,QAAQ4W,IACZA,EAAK9R,KAAOsmB,EAAiBxU,EAAK9R,OAAS8R,EAAK9R,OAElD,MAAOX,GACHA,GAAW,cAAXA,EAAE2J,KACE3J,MAAAA,EAGRkJ,EAAMrN,QAAQ,CAAC4W,EAAMpX,KACnB6N,EAAMhD,IAAI7K,EAAGd,OAAOS,OAAO,GAAIyX,EAAM,CACnC9R,KAAMsmB,EAAiBxU,EAAK9R,OAAS8R,EAAK9R,UAK3CuI,OAAAA,IAERpH,KAAKgQ,EAAQC,IAIb,SAASic,EAAmB5oB,GAC7B,GAAoB,iBAAXA,IAAuBA,EAAOG,oBACvCH,EAAOoM,aACT,OAEEpM,GAAAA,EAAOoM,cAAgB,aAAcpM,EAAOoM,aAAa/W,UAC3D,OAEIgX,MAAAA,EAAiBrM,EAAOG,kBAAkB9K,UAAUiW,WACtDe,IACFrM,EAAOG,kBAAkB9K,UAAUiW,WAAa,WACxCgB,MAAAA,EAAUD,EAAehP,MAAM,KAAM,IAEpCiP,OADPA,EAAQ7V,QAAQiV,GAAUA,EAAOL,IAAM,MAChCiB,IAILd,MAAAA,EAAexL,EAAOG,kBAAkB9K,UAAUoW,SACpDD,IACFxL,EAAOG,kBAAkB9K,UAAUoW,SAAW,WACtCC,MAAAA,EAASF,EAAanO,MAAM,KAAMhG,WAEjCqU,OADPA,EAAOL,IAAM,KACNK,IAGX1L,EAAOoM,aAAa/W,UAAUmX,SAAW,WAChC,OAAA,KAAKlJ,MAAQ,KAAK+H,IAAImB,SAAS,KAAKlJ,OACvC0F,QAAQuE,QAAQ,IAAI1M,MAIrB,SAASgoB,EAAqB7oB,GAC/B,GAAoB,iBAAXA,IAAuBA,EAAOG,oBACvCH,EAAOoM,aACT,OAEEpM,GAAAA,EAAOoM,cAAgB,aAAcpM,EAAOwN,eAAenY,UAC7D,OAEIqY,MAAAA,EAAmB1N,EAAOG,kBAAkB9K,UAAUsV,aACxD+C,IACF1N,EAAOG,kBAAkB9K,UAAUsV,aAAe,WAC1CgD,MAAAA,EAAYD,EAAiBrQ,MAAM,KAAM,IAExCsQ,OADPA,EAAUlX,QAAQ4T,GAAYA,EAASgB,IAAM,MACtCsC,IAGXzD,EAAMC,wBAAwBnK,EAAQ,QAASpF,IAC7CA,EAAEyP,SAASgB,IAAMzQ,EAAEgT,WACZhT,IAEToF,EAAOwN,eAAenY,UAAUmX,SAAW,WAClC,OAAA,KAAKnB,IAAImB,SAAS,KAAKlJ,QAI3B,SAASqlB,EAAiB3oB,IAC1BA,EAAOG,mBACR,iBAAkBH,EAAOG,kBAAkB9K,YAG/C2K,EAAOG,kBAAkB9K,UAAU8W,aACjC,SAAsBzD,GACpBwB,EAAMwG,WAAW,eAAgB,eAC5BpF,KAAAA,aAAa7U,QAAQiV,IACpBA,EAAOpI,OAASoF,EAAOG,YAAY1B,SAASuE,EAAOpI,QAChDsI,KAAAA,YAAYF,OAMpB,SAASod,EAAmB9oB,GAG7BA,EAAO+hB,cAAgB/hB,EAAOgiB,iBAChChiB,EAAOgiB,eAAiBhiB,EAAO+hB,aAI5B,SAASgH,EAAmB/oB,GAI7B,GAAoB,iBAAXA,IAAuBA,EAAOG,kBACzC,OAEI8hB,MAAAA,EAAqBjiB,EAAOG,kBAAkB9K,UAAU6sB,eAC1DD,IACFjiB,EAAOG,kBAAkB9K,UAAU6sB,eACjC,WACOC,KAAAA,sBAAwB,GACvBC,MAAAA,EAAiB/qB,UAAU,GAC3BgrB,EAAqBD,GACD,kBAAmBA,EACzCC,GAEFD,EAAeE,cAAc7rB,QAAS8rB,IAChC,GAAA,QAASA,EAAe,CAEtB,IADa,oBACHC,KAAKD,EAAcE,KACzB,MAAA,IAAI/sB,UAAU,+BAGpB,GAAA,0BAA2B6sB,KACvBG,WAAWH,EAAcI,wBAA0B,GACjD,MAAA,IAAIC,WAAW,2CAGrB,GAAA,iBAAkBL,KACdG,WAAWH,EAAcM,eAAiB,GACxC,MAAA,IAAID,WAAW,kCAKvBxY,MAAAA,EAAc6X,EAAmB5kB,MAAM,KAAMhG,WAC/CgrB,GAAAA,EAAoB,CAQhB,MAAA,OAAC3W,GAAUtB,EACX+Q,EAASzP,EAAOoX,gBAChB,cAAe3H,IAEY,IAA5BA,EAAOC,UAAU9jB,QAC2B,IAA5CnC,OAAOwB,KAAKwkB,EAAOC,UAAU,IAAI9jB,UACpC6jB,EAAOC,UAAYgH,EAAeE,cAClC5W,EAAO4W,cAAgBF,EAAeE,cACjCH,KAAAA,sBAAsBjmB,KAAKwP,EAAOqX,cAAc5H,GAClDze,KAAK,YACGgP,EAAO4W,gBACb1B,MAAM,YACAlV,EAAO4W,kBAKflY,OAAAA,IAKR,SAAS4e,EAAkBhpB,GAC5B,GAAoB,iBAAXA,IAAuBA,EAAOoM,aACzC,OAEI4W,MAAAA,EAAoBhjB,EAAOoM,aAAa/W,UAAUytB,cACpDE,IACFhjB,EAAOoM,aAAa/W,UAAUytB,cAC5B,WACQ3H,MAAAA,EAAS6H,EAAkB3lB,MAAM,KAAMhG,WAItC8jB,MAHD,cAAeA,IACnBA,EAAOC,UAAY,GAAG1V,OAAO,KAAK4c,eAAiB,CAAC,MAE/CnH,IAKR,SAAS8N,EAAgBjpB,GAI1B,GAAoB,iBAAXA,IAAuBA,EAAOG,kBACzC,OAEI8iB,MAAAA,EAAkBjjB,EAAOG,kBAAkB9K,UAAUupB,YAC3D5e,EAAOG,kBAAkB9K,UAAUupB,YAAc,WAC3C,OAAA,KAAKuD,uBAAyB,KAAKA,sBAAsB7qB,OACpD0R,QAAQgX,IAAI,KAAKmC,uBACvBzlB,KAAK,IACGumB,EAAgB5lB,MAAM,KAAMhG,YAEpC6rB,QAAQ,KACFf,KAAAA,sBAAwB,KAG1Bc,EAAgB5lB,MAAM,KAAMhG,YAIhC,SAAS6xB,EAAiBlpB,GAI3B,GAAoB,iBAAXA,IAAuBA,EAAOG,kBACzC,OAEIgjB,MAAAA,EAAmBnjB,EAAOG,kBAAkB9K,UAAUkqB,aAC5Dvf,EAAOG,kBAAkB9K,UAAUkqB,aAAe,WAC5C,OAAA,KAAK4C,uBAAyB,KAAKA,sBAAsB7qB,OACpD0R,QAAQgX,IAAI,KAAKmC,uBACvBzlB,KAAK,IACGymB,EAAiB9lB,MAAM,KAAMhG,YAErC6rB,QAAQ,KACFf,KAAAA,sBAAwB,KAG1BgB,EAAiB9lB,MAAM,KAAMhG;;AC9RxC,aAwVC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,oBAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,0BAAA,EAAA,QAAA,sBAAA,EAAA,QAAA,iBAAA,EAvVD,IAAA,EAAA,EAAA,QAAA,aAuVC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EArVM,SAASqyB,EAAoB1pB,GAC9B,GAAkB,iBAAXA,GAAwBA,EAAOG,kBAAtC,CAYA,GATE,oBAAqBH,EAAOG,kBAAkB9K,YAClD2K,EAAOG,kBAAkB9K,UAAU2Y,gBACjC,WAIS,OAHF,KAAKoV,gBACHA,KAAAA,cAAgB,IAEhB,KAAKA,kBAGZ,cAAepjB,EAAOG,kBAAkB9K,WAAY,CAClDguB,MAAAA,EAAYrjB,EAAOG,kBAAkB9K,UAAUoW,SACrDzL,EAAOG,kBAAkB9K,UAAU4W,UAAY,SAAmBvD,GAC3D,KAAK0a,gBACHA,KAAAA,cAAgB,IAElB,KAAKA,cAAcjc,SAASuB,IAC1B0a,KAAAA,cAAclnB,KAAKwM,GAI1BA,EAAOC,iBAAiBlS,QAAQ6M,GAAS+f,EAAU7rB,KAAK,KAAM8L,EAC5DoF,IACFA,EAAOE,iBAAiBnS,QAAQ6M,GAAS+f,EAAU7rB,KAAK,KAAM8L,EAC5DoF,KAGJ1I,EAAOG,kBAAkB9K,UAAUoW,SACjC,SAAkBnI,KAAUwH,GAUnBuY,OATHvY,GACFA,EAAQrU,QAASiS,IACV,KAAK0a,cAEE,KAAKA,cAAcjc,SAASuB,IACjC0a,KAAAA,cAAclnB,KAAKwM,GAFnB0a,KAAAA,cAAgB,CAAC1a,KAMrB2a,EAAUhmB,MAAM,KAAMhG,YAG7B,iBAAkB2I,EAAOG,kBAAkB9K,YAC/C2K,EAAOG,kBAAkB9K,UAAU8W,aACjC,SAAsBzD,GACf,KAAK0a,gBACHA,KAAAA,cAAgB,IAEjBE,MAAAA,EAAQ,KAAKF,cAActX,QAAQpD,GACrC4a,IAAW,IAAXA,EACF,OAEGF,KAAAA,cAAcrX,OAAOuX,EAAO,GAC3BC,MAAAA,EAAS7a,EAAOG,YACjByC,KAAAA,aAAa7U,QAAQiV,IACpB6X,EAAOpc,SAASuE,EAAOpI,QACpBsI,KAAAA,YAAYF,QAOtB,SAASie,EAAqB3pB,GAC/B,GAAkB,iBAAXA,GAAwBA,EAAOG,oBAGpC,qBAAsBH,EAAOG,kBAAkB9K,YACnD2K,EAAOG,kBAAkB9K,UAAU4iB,iBACjC,WACS,OAAA,KAAKuL,eAAiB,KAAKA,eAAiB,OAGnD,gBAAiBxjB,EAAOG,kBAAkB9K,YAAY,CAC1DF,OAAOmM,eAAetB,EAAOG,kBAAkB9K,UAAW,cAAe,CACvE8L,MACS,OAAA,KAAKsiB,cAEd3iB,IAAI5F,GACE,KAAKuoB,eACFziB,KAAAA,oBAAoB,YAAa,KAAKyiB,cACtCziB,KAAAA,oBAAoB,QAAS,KAAK0iB,mBAEpCpjB,KAAAA,iBAAiB,YAAa,KAAKmjB,aAAevoB,GAClDoF,KAAAA,iBAAiB,QAAS,KAAKojB,iBAAoB9oB,CAAAA,IACtDA,EAAEkQ,QAAQrU,QAAQiS,IAIZ,GAHC,KAAK8a,iBACHA,KAAAA,eAAiB,IAEpB,KAAKA,eAAerc,SAASuB,GAC/B,OAEG8a,KAAAA,eAAetnB,KAAKwM,GACnBkC,MAAAA,EAAQ,IAAIC,MAAM,aACxBD,EAAMlC,OAASA,EACVqC,KAAAA,cAAcH,WAKrBL,MAAAA,EACJvK,EAAOG,kBAAkB9K,UAAUmV,qBACrCxK,EAAOG,kBAAkB9K,UAAUmV,qBACjC,WACQS,MAAAA,EAAK,KAiBJV,OAhBF,KAAKmZ,kBACHpjB,KAAAA,iBAAiB,QAAS,KAAKojB,iBAAmB,SAAS9oB,GAC9DA,EAAEkQ,QAAQrU,QAAQiS,IAIZuC,GAHCA,EAAGuY,iBACNvY,EAAGuY,eAAiB,IAElBvY,EAAGuY,eAAe1X,QAAQpD,IAAW,EACvC,OAEFuC,EAAGuY,eAAetnB,KAAKwM,GACjBkC,MAAAA,EAAQ,IAAIC,MAAM,aACxBD,EAAMlC,OAASA,EACfuC,EAAGF,cAAcH,OAIhBL,EAAyBlN,MAAM4N,EAAI5T,aAK3C,SAASoyB,EAAiBzpB,GAC3B,GAAkB,iBAAXA,IAAwBA,EAAOG,kBACxC,OAEI9K,MAAAA,EAAY2K,EAAOG,kBAAkB9K,UACrC4tB,EAAkB5tB,EAAUupB,YAC5BuE,EAAmB9tB,EAAUkqB,aAC7BtQ,EAAsB5Z,EAAU4Z,oBAChCzE,EAAuBnV,EAAUmV,qBACjCmV,EAAkBtqB,EAAUsqB,gBAElCtqB,EAAUupB,YACR,SAAqB+E,EAAiBC,GAC9BC,MAAAA,EAAWxsB,UAAUC,QAAU,EAAKD,UAAU,GAAKA,UAAU,GAC7DysB,EAAUb,EAAgB5lB,MAAM,KAAM,CAACwmB,IACzC,OAACD,GAGLE,EAAQpnB,KAAKinB,EAAiBC,GACvB5a,QAAQuE,WAHNuW,GAMbzuB,EAAUkqB,aACR,SAAsBoE,EAAiBC,GAC/BC,MAAAA,EAAWxsB,UAAUC,QAAU,EAAKD,UAAU,GAAKA,UAAU,GAC7DysB,EAAUX,EAAiB9lB,MAAM,KAAM,CAACwmB,IAC1C,OAACD,GAGLE,EAAQpnB,KAAKinB,EAAiBC,GACvB5a,QAAQuE,WAHNuW,GAMTC,IAAAA,EAAe,SAASlV,EAAa8U,EAAiBC,GAClDE,MAAAA,EAAU7U,EAAoB5R,MAAM,KAAM,CAACwR,IAC7C,OAAC+U,GAGLE,EAAQpnB,KAAKinB,EAAiBC,GACvB5a,QAAQuE,WAHNuW,GAKXzuB,EAAU4Z,oBAAsB8U,EAEhCA,EAAe,SAASlV,EAAa8U,EAAiBC,GAC9CE,MAAAA,EAAUtZ,EAAqBnN,MAAM,KAAM,CAACwR,IAC9C,OAAC+U,GAGLE,EAAQpnB,KAAKinB,EAAiBC,GACvB5a,QAAQuE,WAHNuW,GAKXzuB,EAAUmV,qBAAuBuZ,EAEjCA,EAAe,SAAS1P,EAAWsP,EAAiBC,GAC5CE,MAAAA,EAAUnE,EAAgBtiB,MAAM,KAAM,CAACgX,IACzC,OAACuP,GAGLE,EAAQpnB,KAAKinB,EAAiBC,GACvB5a,QAAQuE,WAHNuW,GAKXzuB,EAAUsqB,gBAAkBoE,EAGvB,SAAS8D,EAAiB7nB,GACzBkC,MAAAA,EAAYlC,GAAUA,EAAOkC,UAE/BA,GAAAA,EAAUQ,cAAgBR,EAAUQ,aAAa2F,aAAc,CAE3D3F,MAAAA,EAAeR,EAAUQ,aACzBshB,EAAgBthB,EAAa2F,aAAa9J,KAAKmE,GACrDR,EAAUQ,aAAa2F,aAAgBzC,CAAAA,GAC9Boe,EAAcC,EAAgBre,MAIpC1D,EAAUmG,cAAgBnG,EAAUQ,cACvCR,EAAUQ,aAAa2F,eACvBnG,EAAUmG,aAAe,SAAsBzC,EAAapF,EAAI0jB,GAC9DhiB,EAAUQ,aAAa2F,aAAazC,GACnClJ,KAAK8D,EAAI0jB,IACV3lB,KAAK2D,IAIJ,SAAS+hB,EAAgBre,GAC1BA,OAAAA,QAAqCvC,IAAtBuC,EAAYQ,MACtBjR,OAAOS,OAAO,GACnBgQ,EACA,CAACQ,MAAO8D,EAAMpH,cAAc8C,EAAYQ,SAIrCR,EAGF,SAAS2jB,EAAqBvpB,GAC/B,IAACA,EAAOG,kBACV,OAGIgkB,MAAAA,EAAqBnkB,EAAOG,kBAClCH,EAAOG,kBACL,SAA2BikB,EAAUC,GAC/BD,GAAAA,GAAYA,EAAShU,WAAY,CAC7BkU,MAAAA,EAAgB,GACjB,IAAA,IAAIruB,EAAI,EAAGA,EAAImuB,EAAShU,WAAW9Y,OAAQrB,IAAK,CAC/Csa,IAAAA,EAAS6T,EAAShU,WAAWna,IAC5Bsa,EAAOnb,eAAe,SACvBmb,EAAOnb,eAAe,QACxB8U,EAAMwG,WAAW,mBAAoB,sBACrCH,EAASzK,KAAKC,MAAMD,KAAKE,UAAUuK,KAC5BC,KAAOD,EAAOE,WACdF,EAAOE,IACd6T,EAAcpoB,KAAKqU,IAEnB+T,EAAcpoB,KAAKkoB,EAAShU,WAAWna,IAG3CmuB,EAAShU,WAAakU,EAEjB,OAAA,IAAIH,EAAmBC,EAAUC,IAE5CrkB,EAAOG,kBAAkB9K,UAAY8uB,EAAmB9uB,UAEpD,wBAAyB8uB,GAC3BhvB,OAAOmM,eAAetB,EAAOG,kBAAmB,sBAAuB,CACrEgB,IAAG,IACMgjB,EAAmBI,sBAM3B,SAASqF,EAA0B5pB,GAElB,iBAAXA,GAAuBA,EAAO2hB,eACrC,aAAc3hB,EAAO2hB,cAActsB,aACjC,gBAAiB2K,EAAO2hB,cAActsB,YAC1CF,OAAOmM,eAAetB,EAAO2hB,cAActsB,UAAW,cAAe,CACnE8L,MACS,MAAA,CAACkJ,SAAU,KAAKA,aAMxB,SAASmf,EAAsBxpB,GAC9BijB,MAAAA,EAAkBjjB,EAAOG,kBAAkB9K,UAAUupB,YAC3D5e,EAAOG,kBAAkB9K,UAAUupB,YACjC,SAAqBG,GACfA,GAAAA,EAAc,MACgC,IAArCA,EAAaC,sBAEtBD,EAAaC,sBACTD,EAAaC,qBAEbwF,MAAAA,EAAmB,KAAKC,kBAAkB1d,KAAKqD,GACf,UAApCA,EAAYC,SAAS/G,MAAMwD,OACY,IAArCiY,EAAaC,qBAAiCwF,EACb,aAA/BA,EAAiBzH,UACfyH,EAAiBE,aACnBF,EAAiBE,aAAa,YAE9BF,EAAiBzH,UAAY,WAES,aAA/ByH,EAAiBzH,YACtByH,EAAiBE,aACnBF,EAAiBE,aAAa,YAE9BF,EAAiBzH,UAAY,aAGa,IAArCgC,EAAaC,qBACnBwF,GACEtC,KAAAA,eAAe,cAG0B,IAArCnD,EAAaE,sBAEtBF,EAAaE,sBACTF,EAAaE,qBAEb0F,MAAAA,EAAmB,KAAKF,kBAAkB1d,KAAKqD,GACf,UAApCA,EAAYC,SAAS/G,MAAMwD,OACY,IAArCiY,EAAaE,qBAAiC0F,EACb,aAA/BA,EAAiB5H,UACf4H,EAAiBD,aACnBC,EAAiBD,aAAa,YAE9BC,EAAiB5H,UAAY,WAES,aAA/B4H,EAAiB5H,YACtB4H,EAAiBD,aACnBC,EAAiBD,aAAa,YAE9BC,EAAiB5H,UAAY,aAGa,IAArCgC,EAAaE,qBACnB0F,GACEzC,KAAAA,eAAe,SAGjBe,OAAAA,EAAgB5lB,MAAM,KAAMhG,YAIlC,SAASwyB,EAAiB7pB,GACT,iBAAXA,GAAuBA,EAAO4kB,eAGzC5kB,EAAO4kB,aAAe5kB,EAAO6kB;;ACtV/B,aA0XC,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,oBAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,uBAAA,EAAA,QAAA,oBAAA,EAAA,QAAA,uBAAA,EAAA,QAAA,+BAAA,EAxXD,IAAA,EAAA,EAAA,QAAA,QACA,EAAA,EAAA,QAAA,YAuXC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GArXM,SAASwD,EAAoBroB,GAG9B,IAACA,EAAO4P,iBAAoB5P,EAAO4P,iBAAmB,eACtD5P,EAAO4P,gBAAgBva,UACzB,OAGIyvB,MAAAA,EAAwB9kB,EAAO4P,gBACrC5P,EAAO4P,gBAAkB,SAAyBjB,GAQ5CA,GANgB,iBAATA,GAAqBA,EAAK0F,WACA,IAAjC1F,EAAK0F,UAAUvI,QAAQ,SACzB6C,EAAO7I,KAAKC,MAAMD,KAAKE,UAAU2I,KAC5B0F,UAAY1F,EAAK0F,UAAUsI,OAAO,IAGrChO,EAAK0F,WAAa1F,EAAK0F,UAAU/c,OAAQ,CAErCytB,MAAAA,EAAkB,IAAID,EAAsBnW,GAC5CqW,EAAkBlU,EAASmJ,QAAAA,eAAetL,EAAK0F,WAC/C4Q,EAAqB9vB,OAAOS,OAAOmvB,EACrCC,GAWGC,OARPA,EAAmB/K,OAAS,WACnB,MAAA,CACL7F,UAAW4Q,EAAmB5Q,UAC9BqF,OAAQuL,EAAmBvL,OAC3BV,cAAeiM,EAAmBjM,cAClCc,iBAAkBmL,EAAmBnL,mBAGlCmL,EAEF,OAAA,IAAIH,EAAsBnW,IAEnC3O,EAAO4P,gBAAgBva,UAAYyvB,EAAsBzvB,UAIzD6U,EAAMC,wBAAwBnK,EAAQ,eAAgBpF,IAChDA,EAAEyZ,WACJlf,OAAOmM,eAAe1G,EAAG,YAAa,CACpCyB,MAAO,IAAI2D,EAAO4P,gBAAgBhV,EAAEyZ,WACpC6E,SAAU,UAGPte,IAIJ,SAAS2tB,EAAmBvoB,EAAQyE,GACrC,IAACzE,EAAOG,kBACV,OAGI,SAAUH,EAAOG,kBAAkB9K,WACvCF,OAAOmM,eAAetB,EAAOG,kBAAkB9K,UAAW,OAAQ,CAChE8L,MACS,YAAsB,IAAf,KAAK+jB,MAAwB,KAAO,KAAKA,SAKvDC,MAmFA5a,EACFvK,EAAOG,kBAAkB9K,UAAUmV,qBACvCxK,EAAOG,kBAAkB9K,UAAUmV,qBACjC,WAKM/F,GAJCygB,KAAAA,MAAQ,KAIkB,WAA3BzgB,EAAexC,SAAwBwC,EAAe9E,SAAW,GAAI,CACjE,MAAA,aAACmQ,GAAgB,KAAKD,mBACP,WAAjBC,GACF3a,OAAOmM,eAAe,KAAM,OAAQ,CAClCH,MACS,YAAsB,IAAf,KAAK+jB,MAAwB,KAAO,KAAKA,OAEzD3jB,YAAY,EACZC,cAAc,IAKhB2jB,GAxGkB,SAAStW,GAC7B,IAACA,IAAgBA,EAAYK,IACxB,OAAA,EAEHiL,MAAAA,EAAWrJ,EAAS6K,QAAAA,cAAc9M,EAAYK,KAE7CiL,OADPA,EAASlB,QACFkB,EAASnT,KAAK4U,IACbwJ,MAAAA,EAAQtU,EAASuU,QAAAA,WAAWzJ,GAC3BwJ,OAAAA,GAAwB,gBAAfA,EAAMte,OACqB,IAApCse,EAAMvQ,SAAS/I,QAAQ,UA+F1BqZ,CAAkB9tB,UAAU,IAAK,CAE7BiuB,MAAAA,EA7FoB,SAASzW,GAEjClM,MAAAA,EAAQkM,EAAYK,IAAIvM,MAAM,mCAChCA,GAAU,OAAVA,GAAkBA,EAAMrL,OAAS,EAC5B,OAAC,EAEJqI,MAAAA,EAAUyE,SAASzB,EAAM,GAAI,IAE5BhD,OAAAA,GAAYA,GAAW,EAAIA,EAqFZqrB,CAAwB3zB,UAAU,IAG9CmuB,EArFqB,SAASC,GAKpCC,IAAAA,EAAwB,MAwBrBA,MAvBwB,YAA3BjhB,EAAexC,UAKbyjB,EAJAjhB,EAAe9E,QAAU,IACF,IAArB8lB,EAGsB,MAIA,WAEjBhhB,EAAe9E,QAAU,GAML,KAA3B8E,EAAe9E,QAAiB,MAAQ,MAGlB,YAGrB+lB,EAwDgBuF,CAAyB3F,GAGtCK,EAxDc,SAAS9W,EAAa4W,GAG1CF,IAAAA,EAAiB,MAKU,YAA3B9gB,EAAexC,SACgB,KAA3BwC,EAAe9E,UACrB4lB,EAAiB,OAGb5iB,MAAAA,EAAQmO,EAASiL,QAAAA,YAAYlN,EAAYK,IAC7C,uBAUKqW,OATH5iB,EAAMrL,OAAS,EACjBiuB,EAAiBnhB,SAASzB,EAAM,GAAGga,OAAO,IAAK,IACX,YAA3BlY,EAAexC,UACO,IAArBwjB,IAIVF,EAAiB,YAEZA,EAgCe2F,CAAkB7zB,UAAU,GAAIiuB,GAG9CC,IAAAA,EAEFA,EADiB,IAAfC,GAAkC,IAAdG,EACLC,OAAOC,kBACA,IAAfL,GAAkC,IAAdG,EACZpS,KAAKtO,IAAIugB,EAAYG,GAErBpS,KAAKvO,IAAIwgB,EAAYG,GAKlCG,MAAAA,EAAO,GACb3wB,OAAOmM,eAAewkB,EAAM,iBAAkB,CAC5C3kB,IAAG,IACMokB,IAGNL,KAAAA,MAAQY,EAGRvb,OAAAA,EAAyBlN,MAAM,KAAMhG,YAI3C,SAASmxB,EAAuBxoB,GACjC,KAAEA,EAAOG,mBACT,sBAAuBH,EAAOG,kBAAkB9K,WAClD,OAOO6wB,SAAAA,EAAWE,EAAInb,GAChBob,MAAAA,EAAsBD,EAAGnL,KAC/BmL,EAAGnL,KAAO,WACFlY,MAAAA,EAAO1L,UAAU,GACjBC,EAASyL,EAAKzL,QAAUyL,EAAK1B,MAAQ0B,EAAKujB,WAC5CF,GAAkB,SAAlBA,EAAGG,YACHtb,EAAG6a,MAAQxuB,EAAS2T,EAAG6a,KAAKP,eACxB,MAAA,IAAI7vB,UAAU,4CAClBuV,EAAG6a,KAAKP,eAAiB,WAEtBc,OAAAA,EAAoBhpB,MAAM+oB,EAAI/uB,YAGnC0uB,MAAAA,EACJ/lB,EAAOG,kBAAkB9K,UAAU2wB,kBACrChmB,EAAOG,kBAAkB9K,UAAU2wB,kBACjC,WACQC,MAAAA,EAAcF,EAAsB1oB,MAAM,KAAMhG,WAE/C4uB,OADPC,EAAWD,EAAa,MACjBA,GAEX/b,EAAMC,wBAAwBnK,EAAQ,cAAepF,IACnDsrB,EAAWtrB,EAAEurB,QAASvrB,EAAE7D,QACjB6D,IAYJ,SAAS0tB,EAAoBtoB,GAC9B,IAACA,EAAOG,mBACR,oBAAqBH,EAAOG,kBAAkB9K,UAChD,OAEI+K,MAAAA,EAAQJ,EAAOG,kBAAkB9K,UACvCF,OAAOmM,eAAelB,EAAO,kBAAmB,CAC9Ce,MACS,MAAA,CACLod,UAAW,YACXF,SAAU,cACV,KAAKjI,qBAAuB,KAAKA,oBAErC7U,YAAY,EACZC,cAAc,IAEhBrM,OAAOmM,eAAelB,EAAO,0BAA2B,CACtDe,MACS,OAAA,KAAKqlB,0BAA4B,MAE1C1lB,IAAIN,GACE,KAAKgmB,2BACFxlB,KAAAA,oBAAoB,wBACrB,KAAKwlB,iCACF,KAAKA,0BAEVhmB,GACGF,KAAAA,iBAAiB,wBAClB,KAAKkmB,yBAA2BhmB,IAGxCe,YAAY,EACZC,cAAc,IAGf,CAAA,sBAAuB,wBAAwB/K,QAAS+X,IACjDiY,MAAAA,EAAarmB,EAAMoO,GACzBpO,EAAMoO,GAAU,WAcPiY,OAbF,KAAKC,6BACHA,KAAAA,2BAA6B9rB,CAAAA,IAC1BqQ,MAAAA,EAAKrQ,EAAE7D,OACTkU,GAAAA,EAAG0b,uBAAyB1b,EAAGoL,gBAAiB,CAClDpL,EAAG0b,qBAAuB1b,EAAGoL,gBACvBuQ,MAAAA,EAAW,IAAI/b,MAAM,wBAAyBjQ,GACpDqQ,EAAGF,cAAc6b,GAEZhsB,OAAAA,IAEJ0F,KAAAA,iBAAiB,2BACpB,KAAKomB,6BAEFD,EAAWppB,MAAM,KAAMhG,cAK7B,SAASoxB,EAAuBzoB,EAAQyE,GAEzC,IAACzE,EAAOG,kBACV,OAEEsE,GAA2B,WAA3BA,EAAexC,SAAwBwC,EAAe9E,SAAW,GACnE,OAEE8E,GAA2B,WAA3BA,EAAexC,SAAwBwC,EAAe9E,SAAW,IACnE,OAEIknB,MAAAA,EAAY7mB,EAAOG,kBAAkB9K,UAAUmV,qBACrDxK,EAAOG,kBAAkB9K,UAAUmV,qBACnC,SAA8BsE,GACxBA,GAAAA,GAAQA,EAAKI,MAAuD,IAAhDJ,EAAKI,IAAIpD,QAAQ,0BAAkC,CACnEoD,MAAAA,EAAMJ,EAAKI,IAAI1Y,MAAM,MAAMqQ,OAAQigB,GAChB,yBAAhBA,EAAKjH,QACXvpB,KAAK,MAEJ0J,EAAOuP,uBACPT,aAAgB9O,EAAOuP,sBACzBlY,UAAU,GAAK,IAAI2I,EAAOuP,sBAAsB,CAC9ChU,KAAMuT,EAAKvT,KACX2T,IAAAA,IAGFJ,EAAKI,IAAMA,EAGR2X,OAAAA,EAAUxpB,MAAM,KAAMhG,YAI1B,SAASuwB,EAA+B5nB,EAAQyE,GAKjD,IAAEzE,EAAOG,oBAAqBH,EAAOG,kBAAkB9K,UACzD,OAEI0xB,MAAAA,EACF/mB,EAAOG,kBAAkB9K,UAAUsqB,gBAClCoH,GAA0D,IAAjCA,EAAsBzvB,SAGpD0I,EAAOG,kBAAkB9K,UAAUsqB,gBACjC,WACM,OAACtoB,UAAU,IAWkB,WAA3BoN,EAAexC,SAAwBwC,EAAe9E,QAAU,IAClC,YAA3B8E,EAAexC,SACZwC,EAAe9E,QAAU,IACD,WAA3B8E,EAAexC,UACjB5K,UAAU,IAAiC,KAA3BA,UAAU,GAAGgd,UAC3BrL,QAAQuE,UAEVwZ,EAAsB1pB,MAAM,KAAMhG,YAjBnCA,UAAU,IACZA,UAAU,GAAGgG,MAAM,MAEd2L,QAAQuE;;AC3NtB,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,eAAA,EAhJD,IAAA,EAAA,EAAA,QAAA,YAGA,EAAA,EAAA,QAAA,yBACA,EAAA,EAAA,QAAA,qBACA,EAAA,EAAA,QAAA,2BACA,EAAA,EAAA,QAAA,yBACA,EAAA,EAAA,QAAA,kBAyIC,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAtIM,SAAS4d,GAAe,OAACnrB,GAAU,GAAI6jB,EAAU,CACtDmD,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,YAAY,IAGN9f,MAAAA,EAAU6C,EAAMtI,IAChB6C,EAAiByF,EAAMkd,cAAcpnB,GAErCqnB,EAAU,CACd5iB,eAAAA,EACA6iB,WAAAA,EACAllB,eAAgB8H,EAAM9H,eACtBmlB,WAAYrd,EAAMqd,WAClBC,gBAAiBtd,EAAMsd,iBAIjB/iB,OAAAA,EAAexC,SAChB,IAAA,SACC,IAACwlB,IAAeA,EAAWC,qBAC1B7D,EAAQmD,WAEJK,OADPhgB,EAAQ,wDACDggB,EAEL5iB,GAA2B,OAA3BA,EAAe9E,QAEV0nB,OADPhgB,EAAQ,wDACDggB,EAEThgB,EAAQ,+BAERggB,EAAQM,YAAcF,EAGtBH,EAAWM,+BAA+B5nB,EAAQyE,GAElDgjB,EAAWI,iBAAiB7nB,EAAQyE,GACpCgjB,EAAWK,gBAAgB9nB,EAAQyE,GACnCgjB,EAAWC,mBAAmB1nB,EAAQyE,GACtCgjB,EAAWM,YAAY/nB,EAAQyE,GAC/BgjB,EAAWO,wBAAwBhoB,EAAQyE,GAC3CgjB,EAAWQ,uBAAuBjoB,EAAQyE,GAC1CgjB,EAAWS,aAAaloB,EAAQyE,GAChCgjB,EAAWU,2BAA2BnoB,EAAQyE,GAC9CgjB,EAAWW,qBAAqBpoB,EAAQyE,GAExC6iB,EAAWe,oBAAoBroB,EAAQyE,GACvC6iB,EAAWgB,oBAAoBtoB,EAAQyE,GACvC6iB,EAAWiB,mBAAmBvoB,EAAQyE,GACtC6iB,EAAWkB,uBAAuBxoB,EAAQyE,GAC1C6iB,EAAWmB,uBAAuBzoB,EAAQyE,GAC1C,MACG,IAAA,UACC,IAACikB,IAAgBA,EAAYhB,qBAC5B7D,EAAQoD,YAEJI,OADPhgB,EAAQ,yDACDggB,EAEThgB,EAAQ,gCAERggB,EAAQM,YAAce,EAGtBpB,EAAWM,+BAA+B5nB,EAAQyE,GAElDikB,EAAYb,iBAAiB7nB,EAAQyE,GACrCikB,EAAYhB,mBAAmB1nB,EAAQyE,GACvCikB,EAAYX,YAAY/nB,EAAQyE,GAChCikB,EAAYC,iBAAiB3oB,EAAQyE,GACrCikB,EAAYE,mBAAmB5oB,EAAQyE,GACvCikB,EAAYG,qBAAqB7oB,EAAQyE,GACzCikB,EAAYI,mBAAmB9oB,EAAQyE,GACvCikB,EAAYK,mBAAmB/oB,EAAQyE,GACvCikB,EAAYM,kBAAkBhpB,EAAQyE,GACtCikB,EAAYO,gBAAgBjpB,EAAQyE,GACpCikB,EAAYQ,iBAAiBlpB,EAAQyE,GAErC6iB,EAAWe,oBAAoBroB,EAAQyE,GACvC6iB,EAAWgB,oBAAoBtoB,EAAQyE,GACvC6iB,EAAWiB,mBAAmBvoB,EAAQyE,GACtC6iB,EAAWkB,uBAAuBxoB,EAAQyE,GAC1C,MACG,IAAA,OACC,IAAC0kB,IAAaA,EAASzB,qBAAuB7D,EAAQqD,SAEjDG,OADPhgB,EAAQ,yDACDggB,EAEThgB,EAAQ,6BAERggB,EAAQM,YAAcwB,EAEtBA,EAAStB,iBAAiB7nB,EAAQyE,GAClC0kB,EAASC,oBAAoBppB,EAAQyE,GACrC0kB,EAASzB,mBAAmB1nB,EAAQyE,GACpC0kB,EAASE,iBAAiBrpB,EAAQyE,GAIlC6iB,EAAWiB,mBAAmBvoB,EAAQyE,GACtC6iB,EAAWkB,uBAAuBxoB,EAAQyE,GAC1C,MACG,IAAA,SACC,IAAC6kB,IAAezF,EAAQsD,WAEnBE,OADPhgB,EAAQ,wDACDggB,EAEThgB,EAAQ,+BAERggB,EAAQM,YAAc2B,EAGtBhC,EAAWM,+BAA+B5nB,EAAQyE,GAElD6kB,EAAWC,qBAAqBvpB,EAAQyE,GACxC6kB,EAAWE,sBAAsBxpB,EAAQyE,GACzC6kB,EAAWG,iBAAiBzpB,EAAQyE,GACpC6kB,EAAWI,oBAAoB1pB,EAAQyE,GACvC6kB,EAAWK,qBAAqB3pB,EAAQyE,GACxC6kB,EAAWM,0BAA0B5pB,EAAQyE,GAC7C6kB,EAAWzB,iBAAiB7nB,EAAQyE,GACpC6kB,EAAWO,iBAAiB7pB,EAAQyE,GAEpC6iB,EAAWe,oBAAoBroB,EAAQyE,GACvC6iB,EAAWiB,mBAAmBvoB,EAAQyE,GACtC6iB,EAAWkB,uBAAuBxoB,EAAQyE,GAC1C6iB,EAAWmB,uBAAuBzoB,EAAQyE,GAC1C,MACF,QACE4C,EAAQ,wBAILggB,OAAAA;;AC7IT,aAMeA,OAAAA,eAAAA,QAAAA,aAAAA,CAAAA,OAAAA,IAAAA,QAAAA,aAAAA,EAJf,IAAA,EAAA,QAAA,wBAEA,MAAMA,GACJ,EAAe,EAAA,gBAAA,CAACrnB,OAA0B,oBAAXA,YAAyBqD,EAAYrD,SACvDqnB,IAAAA,EAAAA,EAAAA,QAAAA,QAAAA;;ACff,aAEA,IAIA,EAAA,EAJA,EAAA,OAAA,QAAA,SAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,CAAA,IAAA,EAAA,UAAA,GAAA,IAAA,IAAA,KAAA,EAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,GAEA,EAAA,WAAA,SAAA,EAAA,EAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,UAAA,IAAA,EAAA,UAAA,GAAA,OAAA,eAAA,EAAA,EAAA,IAAA,IAAA,OAAA,SAAA,EAAA,EAAA,GAAA,OAAA,GAAA,EAAA,EAAA,UAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAIA,SAAA,EAAA,EAAA,GAAA,KAAA,aAAA,GAAA,MAAA,IAAA,UAAA,qCAEA,SAAA,EAAA,EAAA,GAAA,IAAA,EAAA,MAAA,IAAA,eAAA,6DAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,EAAA,EAEA,SAAA,EAAA,EAAA,GAAA,GAAA,mBAAA,GAAA,OAAA,EAAA,MAAA,IAAA,UAAA,kEAAA,GAAA,EAAA,UAAA,OAAA,OAAA,GAAA,EAAA,UAAA,CAAA,YAAA,CAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,KAAA,IAAA,OAAA,eAAA,OAAA,eAAA,EAAA,GAAA,EAAA,UAAA,GAEA,IAAA,EAAA,QAAA,SACA,EAAA,EAAA,UAEA,EAAA,QAAA,cAEA,EAAA,QAAA,iBACA,EAAA,EAAA,YACA,EAAA,EAAA,qBAEA,EAAA,QAAA,sBACA,EAAA,QAAA,gBAGA,QAAA,kBAIA,IAAA,EAAA,EAAA,CAAA,gu9HAAA,CACA,KAAA,2BAIA,EAAA,CAAA,QAAA,aAAA,cAEA,OAAA,SAAA,EAAA,EAAA,SAAA,GAGA,SAAA,EAAA,GACA,EAAA,KAAA,GAEA,IAAA,EAAA,EAAA,MAAA,EAAA,WAAA,OAAA,eAAA,IAAA,KAAA,KAAA,IAoBA,OAlBA,EAAA,IAAA,GAGA,EAAA,MAAA,CACA,aAAA,GAGA,EAAA,SAAA,EAAA,SAAA,KAAA,GACA,EAAA,mBAAA,EAAA,mBAAA,KAAA,GACA,EAAA,MAAA,EAAA,MAAA,KAAA,GACA,EAAA,YAAA,EAAA,YAAA,KAAA,GACA,EAAA,gBAAA,EAAA,gBAAA,KAAA,GACA,EAAA,kBAAA,EAAA,kBAAA,KAAA,GACA,EAAA,eAAA,EAAA,eAAA,KAAA,GACA,EAAA,iBAAA,EAAA,iBAAA,KAAA,GACA,EAAA,gBAAA,EAAA,gBAAA,KAAA,GACA,EAAA,oBAAA,EAAA,oBAAA,KAAA,GACA,EAAA,cAAA,EAAA,cAAA,KAAA,GACA,EAiYA,OA1ZA,EAAA,EA2ZA,GA/XA,EAAA,EAAA,CAAA,CACA,IAAA,oBACA,MAAA,WAEA,KAAA,OAAA,IAAA,OAAA,IAAA,gBAAA,IACA,KAAA,OAAA,UAAA,KAAA,oBAEA,KAAA,MAAA,WAGA,KAAA,qBAFA,KAAA,aAKA,CACA,IAAA,4BACA,MAAA,SAAA,GAEA,IAAA,EAAA,EAAA,KAAA,MAAA,EAAA,GAEA,GAAA,EACA,GAAA,EACA,OAAA,EAEA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,OAAA,cAAA,GAAA,EAAA,EAAA,QAAA,MAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,MAEA,GAAA,cAAA,EAAA,CACA,KAAA,iBACA,KAAA,SAAA,GACA,MACA,GAAA,SAAA,EACA,GAAA,KAAA,MAAA,OAAA,EAAA,aACA,KAAA,QAAA,WAAA,KAAA,MAAA,EAAA,QAEA,GAAA,EAAA,OACA,aAAA,KAAA,cAEA,GAAA,cAAA,EAAA,CACA,KAAA,MAAA,aAAA,EAAA,YACA,KAAA,iBACA,KAAA,SAAA,KAEA,KAAA,iBACA,KAAA,mBAAA,KAAA,oBAEA,QAGA,MAAA,GACA,GAAA,EACA,EAAA,EACA,QACA,KACA,GAAA,EAAA,QACA,EAAA,SAEA,QACA,GAAA,EACA,MAAA,MAKA,CACA,IAAA,wBACA,MAAA,SAAA,EAAA,GACA,OAAA,IAAA,KAAA,OAKA,EAAA,KAAA,MAAA,EAAA,GACA,OAAA,IAEA,CACA,IAAA,uBACA,MAAA,WAEA,KAAA,SACA,KAAA,OAAA,YACA,KAAA,YAAA,GAEA,KAAA,mBAEA,CACA,IAAA,iBACA,MAAA,WAEA,KAAA,UACA,aAAA,KAAA,SACA,KAAA,aAAA,GAEA,KAAA,YACA,KAAA,aAEA,KAAA,QACA,KAAA,OAAA,oBAAA,OAAA,KAAA,kBAEA,KAAA,IAAA,KACA,KAAA,IAAA,IAAA,oBAAA,OAAA,KAAA,SAGA,CACA,IAAA,WACA,MAAA,WACA,IAAA,EAAA,UAAA,OAAA,QAAA,IAAA,UAAA,GAAA,UAAA,GAAA,KAAA,MACA,EAAA,EAAA,QACA,EAAA,EAAA,WAKA,EAAA,WAAA,KAAA,UAAA,WACA,EAAA,GACA,UAAA,cAAA,mBAAA,UAAA,aAAA,0BACA,EAAA,UAAA,aAAA,2BAEA,IAAA,EAAA,GAEA,EAAA,aACA,EAAA,WAAA,CAAA,MAAA,IAEA,EAAA,YACA,EAAA,UAAA,CAAA,MAAA,GAAA,IAAA,MAGA,EAAA,YAAA,EAAA,QAAA,QAAA,EAAA,aAAA,GAAA,EAAA,GAAA,KAAA,SAAA,GACA,OAAA,OAAA,OAAA,GAAA,CAAA,SAAA,GAAA,EAAA,gBAGA,KAAA,SAAA,GACA,OAAA,UAAA,aAAA,aAAA,CAAA,MAAA,MACA,KAAA,KAAA,aAAA,MAAA,KAEA,CACA,IAAA,cACA,MAAA,SAAA,GACA,IAAA,EAAA,KAAA,IAAA,QACA,EAAA,KAAA,MAAA,WAIA,IAAA,EACA,OAAA,WAAA,KAAA,YAAA,IAAA,QAIA,KAAA,GAAA,IAAA,UACA,EAAA,UAAA,OACA,IAAA,EAAA,aACA,EAAA,aAAA,EACA,OAAA,IAAA,gBACA,EAAA,IAAA,OAAA,IAAA,gBAAA,GACA,OAAA,UACA,EAAA,IAAA,OAAA,UAAA,gBAAA,GAEA,EAAA,IAAA,EAIA,EAAA,aAAA,EAEA,IAAA,EAAA,EAAA,YAAA,GAEA,KAAA,WAAA,EAAA,KAAA,KAAA,GAEA,EAAA,iBAAA,YAAA,KAAA,iBAEA,KAAA,SAAA,CAAA,YAAA,QAAA,EAAA,YAAA,EAAA,UAEA,CACA,IAAA,kBACA,MAAA,WACA,IAAA,EAAA,KAAA,MACA,EAAA,EAAA,MACA,EAAA,EAAA,OACA,EAAA,KAAA,MACA,EAAA,EAAA,YACA,EAAA,EAAA,YAEA,EAAA,KAAA,IAAA,QACA,EAAA,OAEA,mBAAA,GACA,EAAA,CAAA,YAAA,EAAA,YAAA,IAGA,iBAAA,IACA,KAAA,QAAA,WAAA,KAAA,MAAA,IAIA,EAAA,oBAAA,YAAA,KAAA,mBAEA,CACA,IAAA,QACA,MAAA,WACA,IAAA,EAAA,KAAA,MACA,EAAA,EAAA,WACA,EAAA,EAAA,WACA,EAAA,EAAA,MACA,EAAA,KAAA,IACA,EAAA,EAAA,QACA,EAAA,EAAA,OACA,EAAA,EAAA,IAIA,EAAA,KAAA,MAAA,EAAA,EAAA,aAAA,EAAA,YACA,EAAA,KAAA,MAAA,EAAA,EAAA,cAAA,EAAA,aAGA,EAAA,EACA,EAAA,EAGA,GAAA,EAAA,CAEA,IACA,EAAA,GADA,EAAA,EAAA,EAAA,GAGA,GAAA,EACA,GAAA,EAEA,EAAA,MAAA,EACA,EAAA,OAAA,MACA,CAEA,IACA,EAAA,GADA,EAAA,EAAA,EAAA,GAMA,IAHA,GAAA,GAGA,GAAA,GAAA,EACA,IAHA,GAAA,GAGA,GAAA,GAAA,EAEA,EAAA,MAAA,EACA,EAAA,OAAA,EAGA,IAAA,EAAA,GAAA,EAAA,aAAA,EAAA,iBAEA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,WAAA,MAEA,EAAA,UAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,EAAA,MAAA,EAAA,QAEA,KAAA,OAAA,YAAA,QAGA,KAAA,QAAA,WAAA,KAAA,MAAA,KAGA,CACA,IAAA,sBACA,MAAA,SAAA,GACA,IAAA,EAAA,KAAA,MACA,EAAA,EAAA,OACA,EAAA,EAAA,WACA,EAAA,EAAA,MAGA,EADA,EAAA,MACA,OAEA,GAAA,iBAAA,GAAA,KAAA,SACA,KAAA,QAAA,WAAA,KAAA,MAAA,MAGA,CACA,IAAA,qBACA,MAAA,WACA,KAAA,OAAA,IAAA,WACA,KAAA,OAAA,iBAAA,OAAA,KAAA,kBACA,KAAA,IAAA,IAAA,iBAAA,OAAA,KAAA,OAAA,GAGA,KAAA,wBAAA,EAEA,mBAAA,KAAA,MAAA,QACA,KAAA,MAAA,WAGA,CACA,IAAA,oBACA,MAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,MAAA,GACA,KAAA,OAAA,cAAA,KAEA,CACA,IAAA,mBACA,MAAA,SAAA,GAEA,KAAA,IAAA,IAAA,IAAA,EAAA,OAAA,SAEA,CACA,IAAA,kBACA,MAAA,WAEA,KAAA,IAAA,MAAA,UAEA,CACA,IAAA,gBACA,MAAA,SAAA,GACA,IAAA,EAAA,KAEA,OAAA,SAAA,GACA,EAAA,IAAA,GAAA,KAGA,CACA,IAAA,SACA,MAAA,WACA,IAAA,EAAA,KAAA,MACA,EAAA,EAAA,MACA,EAAA,EAAA,UACA,EAAA,EAAA,YACA,EAAA,EAAA,WACA,EAAA,EAAA,eAUA,GATA,EAAA,WASA,CAAA,QAAA,SACA,EAAA,CACA,IAAA,EACA,KAAA,EACA,QAAA,QACA,SAAA,WACA,SAAA,SACA,MAAA,OACA,OAAA,QAEA,EAAA,EAAA,GAAA,EAAA,CACA,UAAA,QACA,UAAA,KAAA,MAAA,YAAA,kBAAA,IAEA,EAAA,EAAA,GAAA,EAAA,CACA,UAAA,eAeA,OAAA,EAAA,cACA,UACA,CAAA,UAAA,EAAA,MAAA,GACA,EAAA,cACA,UACA,CAAA,MAzCA,CACA,SAAA,SACA,SAAA,WACA,MAAA,OACA,WAAA,UAsCA,GAAA,EAAA,EAAA,cAAA,MAAA,CAAA,MAlBA,CACA,IAAA,EACA,KAAA,EACA,OAAA,EACA,UAAA,aACA,OAAA,gCACA,UAAA,uCACA,SAAA,WACA,MAAA,OACA,OAAA,UASA,KACA,EAAA,EAAA,cAAA,QAAA,CACA,MAAA,EACA,KAAA,OACA,OAAA,UACA,IAAA,KAAA,cAAA,SACA,SAAA,KAAA,oBACA,KACA,EAAA,EAAA,cAAA,MAAA,CAAA,MAAA,EAAA,IAAA,KAAA,cAAA,OAAA,OAAA,IAAA,EAAA,cAAA,QAAA,CAAA,MAAA,EAAA,IAAA,KAAA,cAAA,aACA,EAAA,cAAA,SAAA,CAAA,MAAA,EAAA,IAAA,KAAA,cAAA,kBAMA,EA3ZA,GA4ZA,EAAA,UAAA,CACA,OAAA,EAAA,KAAA,WACA,QAAA,EAAA,KAAA,WACA,OAAA,EAAA,KACA,YAAA,EAAA,KACA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,OACA,WAAA,EAAA,MAAA,CAAA,OAAA,gBACA,WAAA,EAAA,KACA,WAAA,EAAA,OACA,eAAA,EAAA,KACA,MAAA,EAAA,IACA,UAAA,EAAA,OACA,YAAA,EAAA,QACA,EAAA,aAAA,CACA,MAAA,IACA,WAAA,IACA,WAAA,cACA,gBAAA,EACA,YAAA,MACA;;AC3cA,aAAA,IAAA,EAAA,MAAA,KAAA,kBAAA,OAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,OAAA,eAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,KAAA,qBAAA,OAAA,OAAA,SAAA,EAAA,GAAA,OAAA,eAAA,EAAA,UAAA,CAAA,YAAA,EAAA,MAAA,KAAA,SAAA,EAAA,GAAA,EAAA,QAAA,IAAA,EAAA,MAAA,KAAA,cAAA,SAAA,GAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,IAAA,EAAA,GAAA,GAAA,MAAA,EAAA,IAAA,IAAA,KAAA,EAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,sBAAA,EAVA,MAAA,EAAA,QAAA,SACA,EAAA,EAAA,QAAA,kCAEM,EAAgB,KAEb,OADS,EAAA,WAAW,EAAA,UAIhB,QAAA,iBAAmB,EAAA,OAEhC,QAAA,QAAe;;ACkCf,aAAA,IAAA,EAAA,MAAA,KAAA,kBAAA,OAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,OAAA,eAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,KAAA,qBAAA,OAAA,OAAA,SAAA,EAAA,GAAA,OAAA,eAAA,EAAA,UAAA,CAAA,YAAA,EAAA,MAAA,KAAA,SAAA,EAAA,GAAA,EAAA,QAAA,IAAA,EAAA,MAAA,KAAA,cAAA,SAAA,GAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,IAAA,EAAA,GAAA,GAAA,MAAA,EAAA,IAAA,IAAA,KAAA,EAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,EAAA,MAAA,KAAA,iBAAA,SAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,IAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IA5CA,MAAA,EAAA,EAAA,QAAA,UACA,EAAA,EAAA,QAAA,kBACA,EAAA,EAAA,QAAA,oBACA,EAAA,EAAA,QAAA,2BAEM,EAAwB,KACtB,MAAA,QAAE,EAAF,WAAW,GAAe,EAAA,UAE1B,EAAS,EAAA,YACZ,IACK,GACF,EAAQ,KAAK,MAAM,KAGvB,IAcA,OAXF,EAAA,UAAU,KACF,MAAA,EAAO,OAAO,SAAS,KACzB,GAAA,EAAM,CACF,MAAA,EAAoB,EAAK,UAAU,GACnC,EAAa,KAAK,MAAM,KAAK,IACnC,EAAQ,GAEV,QAAQ,IAAI,IACX,IAGD,EAAA,QAAA,cAAA,EAAA,QAAA,SAAA,KACE,EAAA,QAAA,cAAA,MAAA,KAAM,SAAS,SAAf,KAA2B,SAAS,KAAM,SAAS,SAAnD,IAA8D,KAAK,KAAK,UAAU,KAClF,EAAA,QAAA,cAAC,EAAA,QAAM,CACL,MAAO,KAAK,UAAU,GACtB,KAAM,MAER,EAAA,QAAA,cAAC,EAAA,QAAQ,CACP,MAAO,IACP,OAAQ,EACR,QAAU,IAAa,QAAQ,MAAM,IACrC,MAAO,CAAE,MAAO,QAAS,OAAQ,aAMzC,QAAA,QAAe;;AC8Ld,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,UAAA,EAAA,QAAA,OAAA,EAAA,QAAA,WAAA,EAAA,QAAA,QAAA,EAAA,QAAA,WAAA,EAAA,QAAA,UAAA,EAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAAA,QAAA,SAAA,EAAA,QAAA,OAAA,EAAA,QAAA,SAAA,EAAA,QAAA,eAAA,EAAA,QAAA,cAAA,EAAA,QAAA,QAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,cAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,aAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,uBAAA,EAAA,QAAA,uBAAA,EAAA,QAAA,gBAAA,QAAA,cAAA,EA1ND,IAAI+D,EAAgB,SAASvwB,EAAGhC,GAIrBuyB,OAHPA,EAAgBj2B,OAAOk2B,gBAClB,CAAEC,UAAW,cAAgBnwB,OAAS,SAAUN,EAAGhC,GAAKgC,EAAEywB,UAAYzyB,IACvE,SAAUgC,EAAGhC,GAAU,IAAA,IAAIlB,KAAKkB,EAAO1D,OAAOE,UAAUD,eAAeoC,KAAKqB,EAAGlB,KAAIkD,EAAElD,GAAKkB,EAAElB,MAC3EkD,EAAGhC,IAGrB,SAAS0yB,EAAU1wB,EAAGhC,GACrB,GAAa,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAInD,UAAU,uBAAyBI,OAAO+C,GAAK,iCAEpD2yB,SAAAA,IAAYtxB,KAAAA,YAAcW,EADnCuwB,EAAcvwB,EAAGhC,GAEjBgC,EAAExF,UAAkB,OAANwD,EAAa1D,OAAOs2B,OAAO5yB,IAAM2yB,EAAGn2B,UAAYwD,EAAExD,UAAW,IAAIm2B,GAG5E,IAAIE,EAAW,WAQXA,OAPPA,QAAAA,SAAAA,EAAWv2B,OAAOS,QAAU,SAAkBqC,GACrC,IAAA,IAAIb,EAAGnB,EAAI,EAAGI,EAAIgB,UAAUC,OAAQrB,EAAII,EAAGJ,IAEvC,IAAA,IAAI0B,KADTP,EAAIC,UAAUpB,GACOd,OAAOE,UAAUD,eAAeoC,KAAKJ,EAAGO,KAAIM,EAAEN,GAAKP,EAAEO,IAEvEM,OAAAA,GAEJyzB,EAASruB,MAAM,KAAMhG,YAGzB,SAASs0B,EAAOv0B,EAAGwD,GAClB3C,IAAAA,EAAI,GACH,IAAA,IAAIN,KAAKP,EAAOjC,OAAOE,UAAUD,eAAeoC,KAAKJ,EAAGO,IAAMiD,EAAEkR,QAAQnU,GAAK,IAC9EM,EAAEN,GAAKP,EAAEO,IACTP,GAAK,MAALA,GAAqD,mBAAjCjC,OAAOD,sBACtB,CAAA,IAAIe,EAAI,EAAb,IAAgB0B,EAAIxC,OAAOD,sBAAsBkC,GAAInB,EAAI0B,EAAEL,OAAQrB,IAC3D2E,EAAEkR,QAAQnU,EAAE1B,IAAM,GAAKd,OAAOE,UAAUE,qBAAqBiC,KAAKJ,EAAGO,EAAE1B,MACvEgC,EAAEN,EAAE1B,IAAMmB,EAAEO,EAAE1B,KAEnBgC,OAAAA,EAGJ,SAAS2zB,EAAWC,EAAY90B,EAAQQ,EAAKuX,GAC5ChW,IAAuH+B,EAAvH/B,EAAIzB,UAAUC,OAAQU,EAAIc,EAAI,EAAI/B,EAAkB,OAAT+X,EAAgBA,EAAO3Z,OAAOua,yBAAyB3Y,EAAQQ,GAAOuX,EACjH,GAAmB,iBAAZgd,SAAoD,mBAArBA,QAAQC,SAAyB/zB,EAAI8zB,QAAQC,SAASF,EAAY90B,EAAQQ,EAAKuX,QACpH,IAAK,IAAI7Y,EAAI41B,EAAWv0B,OAAS,EAAGrB,GAAK,EAAGA,KAAS4E,EAAIgxB,EAAW51B,MAAI+B,GAAKc,EAAI,EAAI+B,EAAE7C,GAAKc,EAAI,EAAI+B,EAAE9D,EAAQQ,EAAKS,GAAK6C,EAAE9D,EAAQQ,KAASS,GACzIc,OAAAA,EAAI,GAAKd,GAAK7C,OAAOmM,eAAevK,EAAQQ,EAAKS,GAAIA,EAGzD,SAASg0B,EAAQC,EAAYC,GACzB,OAAA,SAAUn1B,EAAQQ,GAAO20B,EAAUn1B,EAAQQ,EAAK00B,IAGpD,SAASE,EAAWC,EAAaC,GAChC,GAAmB,iBAAZP,SAAoD,mBAArBA,QAAQQ,SAAyB,OAAOR,QAAQQ,SAASF,EAAaC,GAG7G,SAASE,EAAUC,EAASC,EAAYnwB,EAAGowB,GAEvC,OAAA,IAAKpwB,IAAMA,EAAI0M,UAAU,SAAUuE,EAAStE,GACtC0jB,SAAAA,EAAUtwB,GAAa,IAAEouB,EAAKiC,EAAUvwB,KAAKE,IAAW,MAAOzB,GAAKqO,EAAOrO,IAC3EqhB,SAAAA,EAAS5f,GAAa,IAAEouB,EAAKiC,EAAS,MAAUrwB,IAAW,MAAOzB,GAAKqO,EAAOrO,IAC9E6vB,SAAAA,EAAKzoB,GAJT4qB,IAAMvwB,EAIa2F,EAAO5F,KAAOmR,EAAQvL,EAAO3F,QAJ1CA,EAIyD2F,EAAO3F,MAJhDA,aAAiBC,EAAID,EAAQ,IAAIC,EAAE,SAAUiR,GAAWA,EAAQlR,MAITK,KAAKiwB,EAAW1Q,GAClGwO,GAAMiC,EAAYA,EAAUrvB,MAAMmvB,EAASC,GAAc,KAAKtwB,UAI/D,SAAS0wB,EAAYL,EAASM,GAC7BC,IAAkG7xB,EAAGxC,EAAGT,EAAG+C,EAA3G+xB,EAAI,CAAE9lB,MAAO,EAAG+lB,KAAM,WAAiB/0B,GAAO,EAAPA,EAAE,GAAQ,MAAMA,EAAE,GAAWA,OAAAA,EAAE,IAAOg1B,KAAM,GAAIC,IAAK,IACzFlyB,OAAAA,EAAI,CAAEmB,KAAMgxB,EAAK,GAAaA,MAAAA,EAAK,GAAcA,OAAAA,EAAK,IAAwB,mBAAX90B,SAA0B2C,EAAE3C,OAAOI,UAAY,WAAoB,OAAA,OAAUuC,EAC9ImyB,SAAAA,EAAK92B,GAAY,OAAA,SAAU+B,GAAYqyB,OACvCA,SAAK2C,GACNlyB,GAAAA,EAAG,MAAM,IAAIxF,UAAU,mCACpBq3B,KAAAA,GAAG,IACF7xB,GAAAA,EAAI,EAAGxC,IAAMT,EAAY,EAARm1B,EAAG,GAAS10B,EAAC,OAAa00B,EAAG,GAAK10B,EAAC,SAAeT,EAAIS,EAAC,SAAeT,EAAET,KAAKkB,GAAI,GAAKA,EAAEyD,SAAWlE,EAAIA,EAAET,KAAKkB,EAAG00B,EAAG,KAAKhxB,KAAM,OAAOnE,EAEnJm1B,OADJ10B,EAAI,EAAGT,IAAGm1B,EAAK,CAAS,EAARA,EAAG,GAAQn1B,EAAEoE,QACzB+wB,EAAG,IACF,KAAA,EAAQ,KAAA,EAAGn1B,EAAIm1B,EAAI,MACnB,KAAA,EAAqB,OAAlBL,EAAE9lB,QAAgB,CAAE5K,MAAO+wB,EAAG,GAAIhxB,MAAM,GAC3C,KAAA,EAAG2wB,EAAE9lB,QAASvO,EAAI00B,EAAG,GAAIA,EAAK,CAAC,GAAI,SACnC,KAAA,EAAGA,EAAKL,EAAEG,IAAIG,MAAON,EAAEE,KAAKI,MAAO,SACxC,QACQ,KAAcp1B,GAAZA,EAAI80B,EAAEE,MAAY31B,OAAS,GAAKW,EAAEA,EAAEX,OAAS,MAAkB,IAAV81B,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEL,EAAI,EAAG,SAC7FK,GAAU,IAAVA,EAAG,MAAcn1B,GAAMm1B,EAAG,GAAKn1B,EAAE,IAAMm1B,EAAG,GAAKn1B,EAAE,IAAM,CAAE80B,EAAE9lB,MAAQmmB,EAAG,GAAI,MAC1EA,GAAU,IAAVA,EAAG,IAAYL,EAAE9lB,MAAQhP,EAAE,GAAI,CAAE80B,EAAE9lB,MAAQhP,EAAE,GAAIA,EAAIm1B,EAAI,MACzDn1B,GAAAA,GAAK80B,EAAE9lB,MAAQhP,EAAE,GAAI,CAAE80B,EAAE9lB,MAAQhP,EAAE,GAAI80B,EAAEG,IAAIhxB,KAAKkxB,GAAK,MACvDn1B,EAAE,IAAI80B,EAAEG,IAAIG,MAChBN,EAAEE,KAAKI,MAAO,SAEtBD,EAAKN,EAAKt1B,KAAKg1B,EAASO,GAC1B,MAAOnyB,GAAKwyB,EAAK,CAAC,EAAGxyB,GAAIlC,EAAI,EAAa,QAAEwC,EAAIjD,EAAI,EAClDm1B,GAAQ,EAARA,EAAG,GAAQ,MAAMA,EAAG,GAAW,MAAA,CAAE/wB,MAAO+wB,EAAG,GAAKA,EAAG,QAAK,EAAQhxB,MAAM,GArB9BquB,CAAK,CAACp0B,EAAG+B,MAwJ5D,QAAA,SAAA,EA/HM,IAAIk1B,EAAkBn4B,OAAOs2B,OAAU,SAAS8B,EAAGnyB,EAAGN,EAAG0yB,QACjDnqB,IAAPmqB,IAAkBA,EAAK1yB,GAC3B3F,OAAOmM,eAAeisB,EAAGC,EAAI,CAAEjsB,YAAY,EAAMJ,IAAK,WAAoB/F,OAAAA,EAAEN,OAC1E,SAASyyB,EAAGnyB,EAAGN,EAAG0yB,QACTnqB,IAAPmqB,IAAkBA,EAAK1yB,GAC3ByyB,EAAEC,GAAMpyB,EAAEN,IAGP,SAAS2yB,EAAaryB,EAAGmyB,GACvB,IAAA,IAAI51B,KAAKyD,EAAa,YAANzD,GAAoBxC,OAAOE,UAAUD,eAAeoC,KAAK+1B,EAAG51B,IAAI21B,EAAgBC,EAAGnyB,EAAGzD,GAGxG,SAAS+1B,EAASH,GACjBn2B,IAAAA,EAAsB,mBAAXiB,QAAyBA,OAAOI,SAAU2C,EAAIhE,GAAKm2B,EAAEn2B,GAAInB,EAAI,EACxEmF,GAAAA,EAAG,OAAOA,EAAE5D,KAAK+1B,GACjBA,GAAAA,GAAyB,iBAAbA,EAAEj2B,OAAqB,MAAO,CAC1C6E,KAAM,WAEK,OADHoxB,GAAKt3B,GAAKs3B,EAAEj2B,SAAQi2B,OAAI,GACrB,CAAElxB,MAAOkxB,GAAKA,EAAEt3B,KAAMmG,MAAOmxB,KAGtC,MAAA,IAAI73B,UAAU0B,EAAI,0BAA4B,mCAGjD,SAASu2B,EAAOJ,EAAGl3B,GAClB+E,IAAAA,EAAsB,mBAAX/C,QAAyBk1B,EAAEl1B,OAAOI,UAC7C,IAAC2C,EAAG,OAAOmyB,EACXt3B,IAAe+B,EAAY4C,EAA3B3E,EAAImF,EAAE5D,KAAK+1B,GAAOK,EAAK,GACvB,IACO,WAAO,IAANv3B,GAAgBA,KAAM,MAAQ2B,EAAI/B,EAAEkG,QAAQC,MAAMwxB,EAAG1xB,KAAKlE,EAAEqE,OAExE,MAAO0D,GAASnF,EAAI,CAAEmF,MAAOA,GACrB,QACA,IACI/H,IAAMA,EAAEoE,OAAShB,EAAInF,EAAC,SAAamF,EAAE5D,KAAKvB,GAE1C,QAAM2E,GAAAA,EAAG,MAAMA,EAAEmF,OAEtB6tB,OAAAA,EAIJ,SAASC,IACP,IAAA,IAAID,EAAK,GAAI33B,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IAC3C23B,EAAKA,EAAGloB,OAAOioB,EAAOt2B,UAAUpB,KAC7B23B,OAAAA,EAIJ,SAASE,IACP,IAAA,IAAI12B,EAAI,EAAGnB,EAAI,EAAG83B,EAAK12B,UAAUC,OAAQrB,EAAI83B,EAAI93B,IAAKmB,GAAKC,UAAUpB,GAAGqB,OACxE,IAAIU,EAAImD,MAAM/D,GAAI0D,EAAI,EAAtB,IAAyB7E,EAAI,EAAGA,EAAI83B,EAAI93B,IACzC,IAAK,IAAI0C,EAAItB,UAAUpB,GAAIyd,EAAI,EAAGsa,EAAKr1B,EAAErB,OAAQoc,EAAIsa,EAAIta,IAAK5Y,IAC1D9C,EAAE8C,GAAKnC,EAAE+a,GACV1b,OAAAA,EAGJ,SAASi2B,EAAc92B,EAAIF,GACzB,IAAA,IAAIhB,EAAI,EAAG83B,EAAK92B,EAAKK,OAAQoc,EAAIvc,EAAGG,OAAQrB,EAAI83B,EAAI93B,IAAKyd,IAC1Dvc,EAAGuc,GAAKzc,EAAKhB,GACVkB,OAAAA,EAGJ,SAAS+2B,EAAQ91B,GACb,OAAA,gBAAgB81B,GAAW,KAAK91B,EAAIA,EAAG,MAAQ,IAAI81B,EAAQ91B,GAG/D,SAAS+1B,EAAiB3B,EAASC,EAAYC,GAC9C,IAACr0B,OAAO+1B,cAAe,MAAM,IAAI14B,UAAU,wCAC3CsF,IAAgD/E,EAAhD+E,EAAI0xB,EAAUrvB,MAAMmvB,EAASC,GAAc,IAAQ10B,EAAI,GACpD9B,OAAAA,EAAI,GAAIk3B,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAWl3B,EAAEoC,OAAO+1B,eAAiB,WAAqB,OAAA,MAASn4B,EAC3Gk3B,SAAAA,EAAK92B,GAAS2E,EAAE3E,KAAIJ,EAAEI,GAAK,SAAU+B,GAAY,OAAA,IAAI4Q,QAAQ,SAAUrQ,EAAGE,GAAKd,EAAEmE,KAAK,CAAC7F,EAAG+B,EAAGO,EAAGE,IAAM,GAAKw1B,EAAOh4B,EAAG+B,OACrHi2B,SAAAA,EAAOh4B,EAAG+B,GAAS,KACdJ,EADqBgD,EAAE3E,GAAG+B,IACnBiE,iBAAiB6xB,EAAUllB,QAAQuE,QAAQvV,EAAEqE,MAAMjE,GAAGsE,KAAK4xB,EAASrlB,GAAUslB,EAAOx2B,EAAE,GAAG,GAAIC,GADpE,MAAO4C,GAAK2zB,EAAOx2B,EAAE,GAAG,GAAI6C,GAClE6vB,IAAKzyB,EACLs2B,SAAAA,EAAQjyB,GAASgyB,EAAO,OAAQhyB,GAChC4M,SAAAA,EAAO5M,GAASgyB,EAAO,QAAShyB,GAChCkyB,SAAAA,EAAOrzB,EAAG9C,GAAS8C,EAAE9C,GAAIL,EAAEkhB,QAASlhB,EAAET,QAAQ+2B,EAAOt2B,EAAE,GAAG,GAAIA,EAAE,GAAG,KAGzE,SAASy2B,EAAiBjB,GACzBt3B,IAAAA,EAAG0B,EACA1B,OAAAA,EAAI,GAAIk3B,EAAK,QAASA,EAAK,QAAS,SAAUvyB,GAAWA,MAAAA,IAAOuyB,EAAK,UAAWl3B,EAAEoC,OAAOI,UAAY,WAAqB,OAAA,MAASxC,EACjIk3B,SAAAA,EAAK92B,EAAG6E,GAAKjF,EAAEI,GAAKk3B,EAAEl3B,GAAK,SAAU+B,GAAY,OAACT,GAAKA,GAAK,CAAE0E,MAAO6xB,EAAQX,EAAEl3B,GAAG+B,IAAKgE,KAAY,WAAN/F,GAAmB6E,EAAIA,EAAE9C,GAAKA,GAAO8C,GAGxI,SAASuzB,EAAclB,GACtB,IAACl1B,OAAO+1B,cAAe,MAAM,IAAI14B,UAAU,wCAC3C0F,IAA6BnF,EAA7BmF,EAAImyB,EAAEl1B,OAAO+1B,eACVhzB,OAAAA,EAAIA,EAAE5D,KAAK+1B,IAAMA,EAAwB,mBAAbG,EAA0BA,EAASH,GAAKA,EAAEl1B,OAAOI,YAAaxC,EAAI,GAAIk3B,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAWl3B,EAAEoC,OAAO+1B,eAAiB,WAAqB,OAAA,MAASn4B,GACrMk3B,SAAAA,EAAK92B,GAAKJ,EAAEI,GAAKk3B,EAAEl3B,IAAM,SAAU+B,GAAY,OAAA,IAAI4Q,QAAQ,SAAUuE,EAAStE,IAC9EslB,SAAOhhB,EAAStE,EAAQpO,EAAGzC,GAAK4Q,QAAQuE,QAAQnV,GAAGsE,KAAK,SAAStE,GAAKmV,EAAQ,CAAElR,MAAOjE,EAAGgE,KAAMvB,KAASoO,IADJslB,CAAOhhB,EAAStE,GAA7B7Q,EAAIm1B,EAAEl3B,GAAG+B,IAA8BgE,KAAMhE,EAAEiE,WAI7I,SAASqyB,EAAqBC,EAAQC,GAElCD,OADHx5B,OAAOmM,eAAkBnM,OAAOmM,eAAeqtB,EAAQ,MAAO,CAAEtyB,MAAOuyB,IAAiBD,EAAOC,IAAMA,EAClGD,EAgCV,QAAA,gBAAA,EA7BD,IAAIE,EAAqB15B,OAAOs2B,OAAU,SAAS8B,EAAGn1B,GAClDjD,OAAOmM,eAAeisB,EAAG,UAAW,CAAEhsB,YAAY,EAAMlF,MAAOjE,KAC9D,SAASm1B,EAAGn1B,GACbm1B,EAAC,QAAcn1B,GAGZ,SAAS02B,EAAaC,GACrBA,GAAAA,GAAOA,EAAIC,WAAY,OAAOD,EAC9B/sB,IAAAA,EAAS,GACT+sB,GAAO,MAAPA,EAAa,IAAK,IAAIj0B,KAAKi0B,EAAe,YAANj0B,GAAmB3F,OAAOE,UAAUD,eAAeoC,KAAKu3B,EAAKj0B,IAAIwyB,EAAgBtrB,EAAQ+sB,EAAKj0B,GAE/HkH,OADP6sB,EAAmB7sB,EAAQ+sB,GACpB/sB,EAGJ,SAASitB,EAAgBF,GACpBA,OAAAA,GAAOA,EAAIC,WAAcD,EAAM,CAAEpyB,QAASoyB,GAG/C,SAASG,EAAuB7kB,EAAUiP,EAAOxS,EAAM5L,GACtD4L,GAAS,MAATA,IAAiB5L,EAAG,MAAM,IAAIxF,UAAU,iDACxC,GAAiB,mBAAV4jB,EAAuBjP,IAAaiP,IAAUpe,GAAKoe,EAAMrY,IAAIoJ,GAAW,MAAM,IAAI3U,UAAU,4EAChGoR,MAAS,MAATA,EAAe5L,EAAa,MAAT4L,EAAe5L,EAAE1D,KAAK6S,GAAYnP,EAAIA,EAAEmB,MAAQid,EAAMnY,IAAIkJ,GAGjF,SAAS8kB,EAAuB9kB,EAAUiP,EAAOjd,EAAOyK,EAAM5L,GAC7D4L,GAAS,MAATA,EAAc,MAAM,IAAIpR,UAAU,kCAClCoR,GAAS,MAATA,IAAiB5L,EAAG,MAAM,IAAIxF,UAAU,iDACxC,GAAiB,mBAAV4jB,EAAuBjP,IAAaiP,IAAUpe,GAAKoe,EAAMrY,IAAIoJ,GAAW,MAAM,IAAI3U,UAAU,2EAC/FoR,MAAS,MAATA,EAAe5L,EAAE1D,KAAK6S,EAAUhO,GAASnB,EAAIA,EAAEmB,MAAQA,EAAQid,EAAMxY,IAAIuJ,EAAUhO,GAASA;;AClKvG,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,eAAA,EAAA,QAAA,uBAAA,EAvEM,IAAM,EAAoB,IAAI,IAAI,CACrC,CAAC,MAAO,aACR,CAAC,MAAO,aACR,CAAC,MAAO,gBACR,CAAC,OAAQ,cACT,CAAC,MAAO,cACR,CAAC,MAAO,oBACR,CAAC,MAAO,mBACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,MAAO,aACR,CAAC,MAAO,mBACR,CAAC,MAAO,sBACR,CAAC,OAAQ,6EAIP,SAAU,EAAe,EAAoB,GACzC,IAAA,EAAI,EAAa,GACnB,GAAkB,iBAAX,EAAE,KAAmB,CACrB,IAAA,EAAsB,EAA0B,mBACvD,OAAO,eAAe,EAAG,OAAQ,CAC7B,MAAuB,iBAAT,EACR,EAI8B,iBAAvB,GAAmC,EAAmB,OAAS,EAClE,EACA,EAAK,KACf,UAAU,EACV,cAAc,EACd,YAAY,IAIb,OAAA,EAgBX,SAAS,EAAa,GACX,IAAA,EAAQ,EAAI,KAGf,GAFiB,IAAmC,IAA3B,EAAK,YAAY,OAEzB,EAAK,KAAM,CACtB,IAAA,EAAM,EAAK,MAAM,KAClB,MAAO,cACN,EAAO,EAAkB,IAAI,GAC/B,GACA,OAAO,eAAe,EAAM,OAAQ,CAChC,MAAO,EACP,UAAU,EACV,cAAc,EACd,YAAY,IAKjB,OAAA,EACV,QAAA,kBAAA;;AC2FA,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,UAAA,EAAA,IAAA,EAAA,QAAA,SAlKD,EAAA,QAAA,UAGM,EAAkB,CAEpB,YACA,aAUE,SAAgB,EAAU,GAkJ/B,OAAA,EAAA,EAAA,WAAA,UAAA,OAAA,EAAA,WAAA,OAAA,EAAA,EAAA,aAAA,KAAA,SAAA,GAjJG,MAAA,CAAA,EAAO,EAAU,IAAQ,EAAI,aACvB,EAAqB,EAAI,aAAc,EAAI,MAC3C,EAAc,QAGxB,SAAS,EAAU,GACR,QAAE,EAAM,aAGnB,SAAS,EAAc,GAMZ,OALO,EAAQ,EAAI,SACpB,EAAI,OAAO,MACP,EAAuB,EAAI,OAAO,OAEtC,IACO,IAAI,SAAA,GAAQ,OAAA,EAAe,EAAA,gBAAA,KAG5C,SAAS,EAAQ,GACN,OAAU,OAAV,EAGX,SAAe,EAAqB,EAAkB,GA2HrD,OAAA,EAAA,EAAA,WAAA,UAAA,OAAA,EAAA,WAAA,IAAA,EAAA,OAAA,EAAA,EAAA,aAAA,KAAA,SAAA,GAAA,OAAA,EAAA,OAAA,KAAA,EAxHO,OAAA,EAAG,OACG,EAAQ,EAA2B,EAAG,OACvC,OAAO,SAAA,GAAQ,MAAc,SAAd,EAAK,OAGZ,SAAT,EACA,CAAA,EAAO,GAEG,CAAA,EAAM,QAAQ,IAAI,EAAM,IAAI,MAR1C,CAAA,EAAA,GAwHP,KAAA,EA/GO,MAAA,CAAA,EAAO,EAAe,EADR,EAAA,UAgHrB,KAAA,EA5GG,MAAA,CAAA,EAAO,EAAe,EAAuB,EAAG,OAC3C,IAAI,SAAA,GAAQ,OAAA,EAAe,EAAA,gBAAA,YAGpC,SAAS,EAAe,GACb,OAAA,EAAM,OAAO,SAAA,GAAQ,OAAwC,IAAxC,EAAgB,QAAQ,EAAK,QAO7D,SAAS,EAAY,GAIZ,IAHC,IAAA,EAAQ,GAGL,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAC7B,IAAA,EAAO,EAAM,GACnB,EAAM,KAAK,GAGR,OAAA,EAIX,SAAS,EAAe,GAChB,GAAiC,mBAA1B,EAAK,iBACL,OAAA,EAAqB,GAG1B,IAAA,EAAQ,EAAK,mBAKf,OAAA,GAAS,EAAM,YACR,EAAa,GAGjB,EAAqB,GAGhC,SAAS,EAAW,GACT,OAAA,EAAM,OAAO,SAAC,EAAK,GAAU,OAAA,EAC7B,EAAA,UAAA,EACC,MAAM,QAAQ,GAAS,EAAQ,GAAS,CAAC,KAC9C,IAGP,SAAS,EAAqB,GACpB,IAAA,EAAO,EAAK,YACd,IAAC,EACM,OAAA,QAAQ,OAAU,EAAI,kBAE3B,IAAA,GAAM,EAAe,EAAA,gBAAA,GACpB,OAAA,QAAQ,QAAQ,GAI3B,SAAe,EAAU,GAiDxB,OAAA,EAAA,EAAA,WAAA,UAAA,OAAA,EAAA,WAAA,OAAA,EAAA,EAAA,aAAA,KAAA,SAAA,GAhDG,MAAA,CAAA,EAAO,EAAM,YAAc,EAAa,GAAS,EAAc,QAInE,SAAS,EAAa,GACZ,IAAA,EAAS,EAAM,eAEd,OAAA,IAAI,QAAqB,SAAC,EAAS,GAChC,IAAA,EAAkC,IAE/B,SAAA,IAAT,IAAA,EAAA,KAGI,EAAO,YAAY,SAAO,GAAY,OAAA,EAAA,EAAA,WAAA,OAAA,OAAA,EAAA,WAmCjD,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,KAAA,SAAA,GAAA,OAAA,EAAA,OAAA,KAAA,EAlCmB,GAAC,EAAM,OAAP,MAAA,CAAA,EAAA,GAkCnB,EAAA,MAAA,EAAA,KAAA,EA/BqC,OA+BrC,EAAA,KAAA,KAAA,CAAA,EAAA,EAAA,CAAA,IA/BqC,CAAA,EAAM,QAAQ,IAAI,IA+BvD,KAAA,EAAA,OA/B6B,EAAQ,EAAA,OACd,EAAQ,GA8B/B,CAAA,EAAA,GAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OA5BuB,EAAO,GA4B9B,CAAA,EAAA,GAAA,KAAA,EAAA,MAAA,CAAA,EAAA,GAAA,KAAA,EAzByB,EAAQ,QAAQ,IAAI,EAAM,IAAI,IACpC,EAAQ,KAAK,GAGb,IAqBnB,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,CAAA,SAnBc,SAAC,GACA,EAAO,KAIf,KAKR,SAAe,EAAc,GAS5B,OAAA,EAAA,EAAA,WAAA,UAAA,OAAA,EAAA,WAAA,OAAA,EAAA,EAAA,aAAA,KAAA,SAAA,GARG,MAAA,CAAA,EAAO,IAAI,QAAsB,SAAC,EAAS,GACvC,EAAM,KAAK,SAAC,GACF,IAAA,GAAM,EAAe,EAAA,gBAAA,EAAM,EAAM,UACvC,EAAQ,IACT,SAAC,GACA,EAAO;;AC/JnB,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,OAAA,eAAA,QAAA,YAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,aAAA,IAAA,EAAA,QAAA;;ACAA,aAEAvF,QAAQk4B,YAAa,EAErBl4B,QAAQ6F,QAAU,SAAUyyB,EAAMC,GAC5BD,GAAAA,GAAQC,EAAe,CACrBC,IAAAA,EAAqBn0B,MAAMc,QAAQozB,GAAiBA,EAAgBA,EAAc74B,MAAM,KACxF+4B,EAAWH,EAAK7qB,MAAQ,GACxBirB,GAAYJ,EAAK7zB,MAAQ,IAAI2L,cAC7BuoB,EAAeD,EAAS5zB,QAAQ,QAAS,IACtC0zB,OAAAA,EAAmBtoB,KAAK,SAAUzL,GACnCm0B,IAAAA,EAAYn0B,EAAKskB,OAAO3Y,cAExBwoB,MAAwB,MAAxBA,EAAUtqB,OAAO,GACZmqB,EAASroB,cAAc1C,SAASkrB,GAC9BA,EAAUlrB,SAAS,MAErBirB,IAAiBC,EAAU9zB,QAAQ,QAAS,IAG9C4zB,IAAaE,IAIjB,OAAA;;AC0IR,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,aAAA,EAAA,QAAA,cAAA,EAAA,QAAA,iBAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,eAAA,EAAA,QAAA,WAAA,EAAA,QAAA,mBAAA,EAAA,QAAA,WAAA,EAAA,QAAA,qBAAA,EAAA,QAAA,yBAAA,QAAA,wBAAA,QAAA,wBAAA,QAAA,2BAAA,QAAA,eAAA,QAAA,eAAA,QAAA,eAAA,QAAA,uBAAA,EApJD,IAAA,EAAA,EAAA,QAAA,gBAoJC,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAlKD,SAASC,EAAQxpB,GAA0VwpB,OAA7OA,EAArD,mBAAXt3B,QAAoD,iBAApBA,OAAOI,SAAmC,SAAiB0N,GAAc,cAAOA,GAA2B,SAAiBA,GAAcA,OAAAA,GAAyB,mBAAX9N,QAAyB8N,EAAIjM,cAAgB7B,QAAU8N,IAAQ9N,OAAOhD,UAAY,gBAAkB8Q,IAAyBA,GAEnX,SAASypB,EAAeC,EAAK55B,GAAY65B,OAAAA,EAAgBD,IAAQE,EAAsBF,EAAK55B,IAAM+5B,EAA4BH,EAAK55B,IAAMg6B,IAEzI,SAASA,IAA2B,MAAA,IAAIv6B,UAAU,6IAElD,SAASs6B,EAA4BzC,EAAG2C,GAAc,GAAC3C,EAAD,CAAgB,GAAa,iBAANA,EAAgB,OAAO4C,EAAkB5C,EAAG2C,GAAa75B,IAAAA,EAAIlB,OAAOE,UAAU0G,SAASvE,KAAK+1B,GAAGjoB,MAAM,GAAI,GAAqEjP,MAAvD,WAANA,GAAkBk3B,EAAErzB,cAAa7D,EAAIk3B,EAAErzB,YAAYqK,MAAgB,QAANlO,GAAqB,QAANA,EAAoB8E,MAAMlE,KAAKs2B,GAAc,cAANl3B,GAAqB,2CAA2CmsB,KAAKnsB,GAAW85B,EAAkB5C,EAAG2C,QAArG75B,GAEjT,SAAS85B,EAAkBN,EAAKO,IAAkB,MAAPA,GAAeA,EAAMP,EAAIv4B,UAAQ84B,EAAMP,EAAIv4B,QAAa,IAAA,IAAIrB,EAAI,EAAGo6B,EAAO,IAAIl1B,MAAMi1B,GAAMn6B,EAAIm6B,EAAKn6B,IAAOo6B,EAAKp6B,GAAK45B,EAAI55B,GAAao6B,OAAAA,EAEhL,SAASN,EAAsBF,EAAK55B,GAAS,GAAkB,oBAAXoC,QAA4BA,OAAOI,YAAYtD,OAAO06B,GAA7D,CAAgFS,IAAAA,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKptB,EAAe,IAAO,IAAA,IAAiCqtB,EAA7BC,EAAKd,EAAIx3B,OAAOI,cAAmB83B,GAAMG,EAAKC,EAAGx0B,QAAQC,QAAoBk0B,EAAKp0B,KAAKw0B,EAAGr0B,QAAYpG,GAAKq6B,EAAKh5B,SAAWrB,GAA3Ds6B,GAAK,IAAoE,MAAO35B,GAAO45B,GAAK,EAAMC,EAAK75B,EAAe,QAAM,IAAO25B,GAAsB,MAAhBI,EAAE,QAAoBA,EAAE,SAAwB,QAAMH,GAAAA,EAAI,MAAMC,GAAeH,OAAAA,GAEle,SAASR,EAAgBD,GAAW10B,GAAAA,MAAMc,QAAQ4zB,GAAM,OAAOA,EAIxD,IAAIe,EAAoB,oBAkJ9B,QAAA,kBAAA,EAjJM,IAAIC,EAAiB,iBAiJ3B,QAAA,eAAA,EAhJM,IAAIC,EAAiB,iBAgJ3B,QAAA,eAAA,EA/IM,IAAIC,EAAiB,iBA+I3B,QAAA,eAAA,EA7IM,IAAIC,EAA6B,SAAoCC,GAC1EA,EAAS91B,MAAMc,QAAQg1B,IAA6B,IAAlBA,EAAO35B,OAAe25B,EAAO,GAAKA,EAChEC,IAAAA,EAAgB/1B,MAAMc,QAAQg1B,GAAU,UAAUvrB,OAAOurB,EAAO36B,KAAK,OAAS26B,EAC3E,MAAA,CACLjc,KAAM4b,EACN1oB,QAAS,qBAAqBxC,OAAOwrB,KAwIxC,QAAA,2BAAA,EArIM,IAAIC,EAA0B,SAAiCC,GAC7D,MAAA,CACLpc,KAAM6b,EACN3oB,QAAS,uBAAuBxC,OAAO0rB,EAAS,YAkInD,QAAA,wBAAA,EA/HM,IAAIC,EAA0B,SAAiCC,GAC7D,MAAA,CACLtc,KAAM8b,EACN5oB,QAAS,wBAAwBxC,OAAO4rB,EAAS,YA4HpD,QAAA,wBAAA,EAzHM,IAAIC,EAA2B,CACpCvc,KAAM+b,EACN7oB,QAAS,kBAIJ,SAASspB,EAAapC,EAAM6B,GAC7BQ,IAAAA,EAA6B,2BAAdrC,EAAK7zB,OAAqC,EAAQ6zB,EAAAA,SAAAA,EAAM6B,GACpE,MAAA,CAACQ,EAAcA,EAAe,KAAOT,EAA2BC,IAElE,SAASS,EAActC,EAAMkC,EAASF,GACvCO,GAAAA,EAAUvC,EAAK/tB,MACbswB,GAAAA,EAAUL,IAAYK,EAAUP,GAAU,CACxChC,GAAAA,EAAK/tB,KAAO+vB,EAAS,MAAO,EAAC,EAAOD,EAAwBC,IAC5DhC,GAAAA,EAAK/tB,KAAOiwB,EAAS,MAAO,EAAC,EAAOD,EAAwBC,QAC3D,CAAA,GAAIK,EAAUL,IAAYlC,EAAK/tB,KAAOiwB,EAAS,MAAO,EAAC,EAAOD,EAAwBC,IAAe,GAAIK,EAAUP,IAAYhC,EAAK/tB,KAAO+vB,EAAS,MAAO,EAAC,EAAOD,EAAwBC,IAG7L,MAAA,EAAC,EAAM,MAGhB,SAASO,EAAUt1B,GACVA,OAAAA,MAAAA,EAGF,SAASu1B,EAAiBC,GAC3BC,IAAAA,EAAQD,EAAKC,MACbb,EAASY,EAAKZ,OACdK,EAAUO,EAAKP,QACfF,EAAUS,EAAKT,QACfW,EAAWF,EAAKE,SAChBC,EAAWH,EAAKG,SAEhB,SAACD,GAAYD,EAAMx6B,OAAS,GAAKy6B,GAAYC,GAAY,GAAKF,EAAMx6B,OAAS06B,IAI1EF,EAAMvX,MAAM,SAAU6U,GACvB6C,IAEAC,EADiBtC,EADD4B,EAAapC,EAAM6B,GACY,GACrB,GAI1BkB,EADkBvC,EADD8B,EAActC,EAAMkC,EAASF,GACG,GACrB,GAEzBc,OAAAA,GAAYC,IAMhB,SAASC,EAAqBxnB,GAC/B,MAAsC,mBAA/BA,EAAMwnB,qBACRxnB,EAAMwnB,4BAC0B,IAAvBxnB,EAAMynB,cACfznB,EAAMynB,aAKV,SAASC,EAAe1nB,GACzB,OAACA,EAAM2nB,aAMJp3B,MAAM9F,UAAU2R,KAAKxP,KAAKoT,EAAM2nB,aAAaC,MAAO,SAAUj3B,GAC5DA,MAAS,UAATA,GAA6B,2BAATA,MANlBqP,EAAM7T,UAAY6T,EAAM7T,OAAO+6B,MASrC,SAASW,EAAWzU,GAClB2R,MAAkB,WAAlBA,EAAQ3R,IAA+B,OAATA,GAA+B,SAAdA,EAAKlX,KAGtD,SAAS4rB,EAAmB9nB,GACjCA,EAAM+nB,iBAGR,SAASC,EAAKvwB,GACLA,OAA+B,IAA/BA,EAAUyJ,QAAQ,UAAqD,IAAnCzJ,EAAUyJ,QAAQ,YAG/D,SAAS+mB,EAAOxwB,GACPA,OAAgC,IAAhCA,EAAUyJ,QAAQ,SAGpB,SAASgnB,IACVzwB,IAAAA,EAAYhL,UAAUC,OAAS,QAAsB+L,IAAjBhM,UAAU,GAAmBA,UAAU,GAAK2I,OAAOkC,UAAUG,UAC9FuwB,OAAAA,EAAKvwB,IAAcwwB,EAAOxwB,GAa5B,SAAS0wB,IACT,IAAA,IAAIC,EAAO37B,UAAUC,OAAQ27B,EAAM,IAAI93B,MAAM63B,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC9ED,EAAIC,GAAQ77B,UAAU67B,GAGjB,OAAA,SAAUtoB,GACV,IAAA,IAAIuoB,EAAQ97B,UAAUC,OAAQqX,EAAO,IAAIxT,MAAMg4B,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGzkB,EAAKykB,EAAQ,GAAK/7B,UAAU+7B,GAGvBH,OAAAA,EAAIjsB,KAAK,SAAUqsB,GAKjBjB,OAJFA,EAAqBxnB,IAAUyoB,GAClCA,EAAGh2B,WAAM,EAAQ,CAACuN,GAAOlF,OAAOiJ,IAG3ByjB,EAAqBxnB,MAGjC,QAAA,yBAAA;;AC6qBA,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAhzBD,IAAA,EAAA,EAAA,QAAA,UACA,EAAA,EAAA,QAAA,eACA,EAAA,QAAA,iBACA,EAAA,QAAA,iBA6yBC,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,GAAA,SAAA,EAAA,GAAA,GAAA,mBAAA,QAAA,OAAA,KAAA,IAAA,EAAA,IAAA,QAAA,EAAA,IAAA,QAAA,OAAA,EAAA,SAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,SAAA,EAAA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,GAAA,OAAA,GAAA,iBAAA,GAAA,mBAAA,EAAA,MAAA,CAAA,QAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,EAAA,OAAA,gBAAA,OAAA,yBAAA,IAAA,IAAA,KAAA,EAAA,GAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,GAAA,CAAA,IAAA,EAAA,EAAA,OAAA,yBAAA,EAAA,GAAA,KAAA,IAAA,EAAA,KAAA,EAAA,KAAA,OAAA,eAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,OAAA,EAAA,QAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EA/0BD,SAAS0oB,EAAmBzD,GAAc0D,OAAAA,EAAmB1D,IAAQ2D,EAAiB3D,IAAQG,EAA4BH,IAAQ4D,IAElI,SAASA,IAA6B,MAAA,IAAI/9B,UAAU,wIAEpD,SAAS89B,EAAiBE,GAAY,GAAkB,oBAAXr7B,QAA0BA,OAAOI,YAAYtD,OAAOu+B,GAAO,OAAOv4B,MAAMlE,KAAKy8B,GAE1H,SAASH,EAAmB1D,GAAW10B,GAAAA,MAAMc,QAAQ4zB,GAAM,OAAOM,EAAkBN,GAEpF,SAASD,EAAeC,EAAK55B,GAAY65B,OAAAA,EAAgBD,IAAQE,EAAsBF,EAAK55B,IAAM+5B,EAA4BH,EAAK55B,IAAMg6B,IAEzI,SAASA,IAA2B,MAAA,IAAIv6B,UAAU,6IAElD,SAASs6B,EAA4BzC,EAAG2C,GAAc,GAAC3C,EAAD,CAAgB,GAAa,iBAANA,EAAgB,OAAO4C,EAAkB5C,EAAG2C,GAAa75B,IAAAA,EAAIlB,OAAOE,UAAU0G,SAASvE,KAAK+1B,GAAGjoB,MAAM,GAAI,GAAqEjP,MAAvD,WAANA,GAAkBk3B,EAAErzB,cAAa7D,EAAIk3B,EAAErzB,YAAYqK,MAAgB,QAANlO,GAAqB,QAANA,EAAoB8E,MAAMlE,KAAKs2B,GAAc,cAANl3B,GAAqB,2CAA2CmsB,KAAKnsB,GAAW85B,EAAkB5C,EAAG2C,QAArG75B,GAEjT,SAAS85B,EAAkBN,EAAKO,IAAkB,MAAPA,GAAeA,EAAMP,EAAIv4B,UAAQ84B,EAAMP,EAAIv4B,QAAa,IAAA,IAAIrB,EAAI,EAAGo6B,EAAO,IAAIl1B,MAAMi1B,GAAMn6B,EAAIm6B,EAAKn6B,IAAOo6B,EAAKp6B,GAAK45B,EAAI55B,GAAao6B,OAAAA,EAEhL,SAASN,EAAsBF,EAAK55B,GAAS,GAAkB,oBAAXoC,QAA4BA,OAAOI,YAAYtD,OAAO06B,GAA7D,CAAgFS,IAAAA,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKptB,EAAe,IAAO,IAAA,IAAiCqtB,EAA7BC,EAAKd,EAAIx3B,OAAOI,cAAmB83B,GAAMG,EAAKC,EAAGx0B,QAAQC,QAAoBk0B,EAAKp0B,KAAKw0B,EAAGr0B,QAAYpG,GAAKq6B,EAAKh5B,SAAWrB,GAA3Ds6B,GAAK,IAAoE,MAAO35B,GAAO45B,GAAK,EAAMC,EAAK75B,EAAe,QAAM,IAAO25B,GAAsB,MAAhBI,EAAE,QAAoBA,EAAE,SAAwB,QAAMH,GAAAA,EAAI,MAAMC,GAAeH,OAAAA,GAEle,SAASR,EAAgBD,GAAW10B,GAAAA,MAAMc,QAAQ4zB,GAAM,OAAOA,EAE/D,SAAS8D,EAAQC,EAAQC,GAAsBl9B,IAAAA,EAAOxB,OAAOwB,KAAKi9B,GAAaz+B,GAAAA,OAAOD,sBAAuB,CAAMgC,IAAAA,EAAU/B,OAAOD,sBAAsB0+B,GAAaC,IAAgB38B,EAAUA,EAAQ2P,OAAO,SAAUitB,GAAc3+B,OAAAA,OAAOua,yBAAyBkkB,EAAQE,GAAKvyB,cAAgB5K,EAAKuF,KAAKmB,MAAM1G,EAAMO,GAAmBP,OAAAA,EAE9U,SAASo9B,EAAch9B,GAAe,IAAA,IAAId,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IAAK,CAAMe,IAAAA,EAAyB,MAAhBK,UAAUpB,GAAaoB,UAAUpB,GAAK,GAAQA,EAAI,EAAK09B,EAAQx+B,OAAO6B,IAAS,GAAMP,QAAQ,SAAUc,GAAOy8B,EAAgBj9B,EAAQQ,EAAKP,EAAOO,MAAsBpC,OAAO8+B,0BAA6B9+B,OAAO++B,iBAAiBn9B,EAAQ5B,OAAO8+B,0BAA0Bj9B,IAAmB28B,EAAQx+B,OAAO6B,IAASP,QAAQ,SAAUc,GAAOpC,OAAOmM,eAAevK,EAAQQ,EAAKpC,OAAOua,yBAAyB1Y,EAAQO,MAAsBR,OAAAA,EAE7gB,SAASi9B,EAAgB7tB,EAAK5O,EAAK8E,GAAwK8J,OAA3J5O,KAAO4O,EAAOhR,OAAOmM,eAAe6E,EAAK5O,EAAK,CAAE8E,MAAOA,EAAOkF,YAAY,EAAMC,cAAc,EAAM0X,UAAU,IAAkB/S,EAAI5O,GAAO8E,EAAgB8J,EAE3M,SAASguB,EAAyBn9B,EAAQo9B,GAAgBp9B,GAAU,MAAVA,EAAgB,MAAO,GAAQD,IAA8DQ,EAAKtB,EAAnEc,EAASs9B,EAA8Br9B,EAAQo9B,GAA2Bj/B,GAAAA,OAAOD,sBAAuB,CAAMo/B,IAAAA,EAAmBn/B,OAAOD,sBAAsB8B,GAAcf,IAAAA,EAAI,EAAGA,EAAIq+B,EAAiBh9B,OAAQrB,IAAOsB,EAAM+8B,EAAiBr+B,GAAQm+B,EAAStoB,QAAQvU,IAAQ,GAAkBpC,OAAOE,UAAUE,qBAAqBiC,KAAKR,EAAQO,KAAgBR,EAAOQ,GAAOP,EAAOO,IAAiBR,OAAAA,EAEne,SAASs9B,EAA8Br9B,EAAQo9B,GAAgBp9B,GAAU,MAAVA,EAAgB,MAAO,GAAQD,IAAuDQ,EAAKtB,EAA5Dc,EAAS,GAAQw9B,EAAap/B,OAAOwB,KAAKK,GAA0Bf,IAAAA,EAAI,EAAGA,EAAIs+B,EAAWj9B,OAAQrB,IAAOsB,EAAMg9B,EAAWt+B,GAAQm+B,EAAStoB,QAAQvU,IAAQ,IAAaR,EAAOQ,GAAOP,EAAOO,IAAeR,OAAAA,EAsB1S,IAAIy9B,GAAwB,EAAW,EAAA,YAAA,SAAU3C,EAAMr3B,GACjDS,IAAAA,EAAW42B,EAAK52B,SAGhBw5B,EAAeC,EAFNP,EAAyBtC,EAAM,CAAC,cAGzC8C,EAAOF,EAAaE,KACpBp7B,EAAQ46B,EAAyBM,EAAc,CAAC,SAQ7C,OANaj6B,EAAAA,EAAAA,qBAAAA,EAAK,WAChB,MAAA,CACLm6B,KAAMA,IAEP,CAACA,IAEgBC,EAAMv2B,QAAAA,cAAczG,EAApB,SAA8B,KAAMqD,EAAS84B,EAAcA,EAAc,GAAIx6B,GAAQ,GAAI,CAC3Go7B,KAAMA,QAGVH,EAASK,YAAc,WAEvB,IAAIx5B,EAAe,CACjBy5B,UAAU,EACVC,kBAAmBC,EAFF,UAGjB5D,QAAS6D,EAAAA,EACT3D,QAAS,EACTS,UAAU,EACVC,SAAU,EACVkD,uBAAuB,EACvBC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,sBAAsB,EACtBC,UAAW,MAEbf,EAASn5B,aAAeA,EACxBm5B,EAASgB,UAAY,CAiBnBv6B,SAAUw6B,EAAU5vB,QAAAA,KAUpBorB,OAAQwE,EAAUC,QAAAA,UAAU,CAACD,EAAUE,QAAAA,OAAQF,EAAUG,QAAAA,QAAQH,EAAUE,QAAAA,UAK3E5D,SAAU0D,EAAUh0B,QAAAA,KAKpByzB,sBAAuBO,EAAUh0B,QAAAA,KAKjC0zB,QAASM,EAAUh0B,QAAAA,KAMnB2zB,WAAYK,EAAUh0B,QAAAA,KAKtB4zB,OAAQI,EAAUh0B,QAAAA,KAKlB6zB,qBAAsBG,EAAUh0B,QAAAA,KAKhC6vB,QAASmE,EAAUI,QAAAA,OAKnBzE,QAASqE,EAAUI,QAAAA,OAMnB7D,SAAUyD,EAAUI,QAAAA,OAKpBf,SAAUW,EAAUh0B,QAAAA,KAOpBszB,kBAAmBU,EAAU5vB,QAAAA,KAK7BiwB,mBAAoBL,EAAU5vB,QAAAA,KAO9BkwB,YAAaN,EAAU5vB,QAAAA,KAOvBmwB,YAAaP,EAAU5vB,QAAAA,KAOvBowB,WAAYR,EAAU5vB,QAAAA,KAgCtBqwB,OAAQT,EAAU5vB,QAAAA,KASlBswB,eAAgBV,EAAU5vB,QAAAA,KAS1BuwB,eAAgBX,EAAU5vB,QAAAA,KAO1B0vB,UAAWE,EAAU5vB,QAAAA,MAER2uB,IAAAA,EAAAA,EA+kBd,QAAA,QAAA,EA9gBD,IAAI6B,EAAe,CACjBC,WAAW,EACXC,oBAAoB,EACpBC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAc,GACdtH,cAAe,GACfuH,eAAgB,IA2EX,SAASlC,IACV7Q,IAAAA,EAAUxsB,UAAUC,OAAS,QAAsB+L,IAAjBhM,UAAU,GAAmBA,UAAU,GAAK,GAE9Ew/B,EAAwB9C,EAAcA,EAAc,GAAI14B,GAAewoB,GACvEoN,EAAS4F,EAAsB5F,OAC/B6D,EAAW+B,EAAsB/B,SACjCC,EAAoB8B,EAAsB9B,kBAC1C3D,EAAUyF,EAAsBzF,QAChCE,EAAUuF,EAAsBvF,QAChCS,EAAW8E,EAAsB9E,SACjCC,EAAW6E,EAAsB7E,SACjC+D,EAAcc,EAAsBd,YACpCC,EAAca,EAAsBb,YACpCC,EAAaY,EAAsBZ,WACnCC,EAASW,EAAsBX,OAC/BC,EAAiBU,EAAsBV,eACvCC,EAAiBS,EAAsBT,eACvCN,EAAqBe,EAAsBf,mBAC3CZ,EAAwB2B,EAAsB3B,sBAC9CC,EAAU0B,EAAsB1B,QAChCC,EAAayB,EAAsBzB,WACnCC,EAASwB,EAAsBxB,OAC/BC,EAAuBuB,EAAsBvB,qBAC7CC,EAAYsB,EAAsBtB,UAElCuB,GAAU,EAAO,EAAA,QAAA,MACjBC,GAAW,EAAO,EAAA,QAAA,MAGlBC,EAAepH,GADD,EAAWqH,EAAAA,YAAAA,EAASZ,GACS,GAC3C/c,EAAQ0d,EAAa,GACrBE,EAAWF,EAAa,GAExBV,EAAYhd,EAAMgd,UAClBC,EAAqBjd,EAAMid,mBAC3BI,EAAerd,EAAMqd,aAErBQ,GAAiB,EAAY,EAAA,aAAA,WAC3BJ,EAAS18B,UACX68B,EAAS,CACP37B,KAAM,eAERw7B,EAAS18B,QAAQgC,MAAQ,KACzB06B,EAAS18B,QAAQ+8B,UAElB,CAACF,IAEAG,EAAgB,WAEdd,GACF/gB,WAAW,WACLuhB,EAAS18B,UACC08B,EAAS18B,QAAQy3B,MAElBx6B,SACT4/B,EAAS,CACP37B,KAAM,gBAG0B,mBAAvBu6B,GACTA,OAIL,OAIG,EAAA,EAAA,WAAA,WAED,OADP91B,OAAOM,iBAAiB,QAAS+2B,GAAe,GACzC,WACLr3B,OAAOgB,oBAAoB,QAASq2B,GAAe,KAEpD,CAACN,EAAUR,EAAoBT,IAE9BwB,IAAAA,GAAc,EAAY,EAAA,aAAA,SAAU1sB,GAEjCksB,EAAQz8B,SAAYy8B,EAAQz8B,QAAQk9B,YAAY3sB,EAAM7T,UAIrC,KAAlB6T,EAAM4sB,SAAoC,KAAlB5sB,EAAM4sB,UAChC5sB,EAAM+nB,iBACNwE,OAED,CAACL,EAASC,IAETU,GAAY,EAAY,EAAA,aAAA,WAC1BP,EAAS,CACP37B,KAAM,WAEP,IACCm8B,GAAW,EAAY,EAAA,aAAA,WACzBR,EAAS,CACP37B,KAAM,UAEP,IAECo8B,GAAY,EAAY,EAAA,aAAA,WACtBxC,KAOA,EAAJ,EAAA,cACE3f,WAAW2hB,EAAgB,GAE3BA,MAED,CAACJ,EAAU5B,IACVyC,GAAiB,EAAO,EAAA,QAAA,IAExBC,EAAiB,SAAwBjtB,GACvCksB,EAAQz8B,SAAWy8B,EAAQz8B,QAAQy9B,SAASltB,EAAM7T,UAKtD6T,EAAM+nB,iBACNiF,EAAev9B,QAAU,MAGjB,EAAA,EAAA,WAAA,WAMD,OALH66B,IACFtf,SAAStV,iBAAiB,WAAYoyB,EAAtC,oBAA0D,GAC1D9c,SAAStV,iBAAiB,OAAQu3B,GAAgB,IAG7C,WACD3C,IACFtf,SAAS5U,oBAAoB,WAAY0xB,EAAzC,oBACA9c,SAAS5U,oBAAoB,OAAQ62B,MAGxC,CAACf,EAAS5B,IACT6C,IAAAA,GAAgB,EAAY,EAAA,aAAA,SAAUntB,GACxCA,EAAM+nB,iBAEN/nB,EAAMotB,UACNC,GAAgBrtB,GAChBgtB,EAAev9B,QAAU,GAAGqL,OAAO4tB,EAAmBsE,EAAev9B,SAAU,CAACuQ,EAAM7T,UAElF,EAAe6T,EAAAA,gBAAAA,IACjB5B,QAAQuE,QAAQwnB,EAAkBnqB,IAAQlO,KAAK,SAAUi6B,IACnD,EAAqB/rB,EAAAA,sBAAAA,KAAW0qB,IAIpC4B,EAAS,CACPP,aAAcA,EACdH,cAAc,EACdj7B,KAAM,oBAGJw6B,GACFA,EAAYnrB,OAIjB,CAACmqB,EAAmBgB,EAAaT,IAChC4C,GAAe,EAAY,EAAA,aAAA,SAAUttB,GACvCA,EAAM+nB,iBACN/nB,EAAMotB,UACNC,GAAgBrtB,GACZutB,IAAAA,GAAW,EAAevtB,EAAAA,gBAAAA,GAE1ButB,GAAAA,GAAYvtB,EAAM2nB,aAChB,IACF3nB,EAAM2nB,aAAa6F,WAAa,OAChC,MAAOC,IASJ,OAJHF,GAAYlC,GACdA,EAAWrrB,IAGN,GACN,CAACqrB,EAAYX,IACZgD,GAAgB,EAAY,EAAA,aAAA,SAAU1tB,GACxCA,EAAM+nB,iBACN/nB,EAAMotB,UACNC,GAAgBrtB,GAEZ2tB,IAAAA,EAAUX,EAAev9B,QAAQwM,OAAO,SAAU9P,GAC7C+/B,OAAAA,EAAQz8B,SAAWy8B,EAAQz8B,QAAQy9B,SAAS/gC,KAIjDyhC,EAAYD,EAAQzsB,QAAQlB,EAAM7T,SAEnB,IAAfyhC,GACFD,EAAQxsB,OAAOysB,EAAW,GAG5BZ,EAAev9B,QAAUk+B,EAErBA,EAAQjhC,OAAS,IAIrB4/B,EAAS,CACPV,cAAc,EACdj7B,KAAM,kBACNo7B,aAAc,MAGZ,EAAe/rB,EAAAA,gBAAAA,IAAUorB,GAC3BA,EAAYprB,KAEb,CAACksB,EAASd,EAAaV,IACtBmD,GAAW,EAAY,EAAA,aAAA,SAAU7tB,GACnCA,EAAM+nB,iBAEN/nB,EAAMotB,UACNC,GAAgBrtB,GAChBgtB,EAAev9B,QAAU,IAErB,EAAeuQ,EAAAA,gBAAAA,IACjB5B,QAAQuE,QAAQwnB,EAAkBnqB,IAAQlO,KAAK,SAAUo1B,GACnD,KAAA,EAAqBlnB,EAAAA,sBAAAA,IAAW0qB,EAAhC,CAIAjG,IAAAA,EAAgB,GAChBuH,EAAiB,GACrB9E,EAAMr7B,QAAQ,SAAU24B,GAClB6C,IACAyG,EAAiB9I,GADD,EAAaR,EAAAA,cAAAA,EAAM6B,GACY,GAC/CiB,EAAWwG,EAAe,GAC1BC,EAAcD,EAAe,GAG7BE,EAAkBhJ,GADD,EAAcR,EAAAA,eAAAA,EAAMkC,EAASF,GACG,GACjDe,EAAYyG,EAAgB,GAC5BC,EAAYD,EAAgB,GAE5BE,EAAevD,EAAYA,EAAUnG,GAAQ,KAE7C8C,GAAAA,GAAYC,IAAc2G,EAC5BzJ,EAAcnzB,KAAKkzB,OACd,CACD2J,IAAAA,EAAS,CAACJ,EAAaE,GAEvBC,IACFC,EAASA,EAAOrzB,OAAOozB,IAGzBlC,EAAe16B,KAAK,CAClBkzB,KAAMA,EACN2J,OAAQA,EAAOlyB,OAAO,SAAUjM,GACvBA,OAAAA,WAMVm3B,GAAY1C,EAAc/3B,OAAS,GAAKy6B,GAAYC,GAAY,GAAK3C,EAAc/3B,OAAS06B,KAE/F3C,EAAc54B,QAAQ,SAAU24B,GAC9BwH,EAAe16B,KAAK,CAClBkzB,KAAMA,EACN2J,OAAQ,CAACxH,EAAD,8BAGZlC,EAActjB,OAAO,IAGvBmrB,EAAS,CACP7H,cAAeA,EACfuH,eAAgBA,EAChBr7B,KAAM,aAGJ26B,GACFA,EAAO7G,EAAeuH,EAAgBhsB,GAGpCgsB,EAAet/B,OAAS,GAAK8+B,GAC/BA,EAAeQ,EAAgBhsB,GAG7BykB,EAAc/3B,OAAS,GAAK6+B,GAC9BA,EAAe9G,EAAezkB,MAKpCssB,EAAS,CACP37B,KAAM,WAEP,CAACw2B,EAAUd,EAAQK,EAASF,EAASY,EAAU+C,EAAmBmB,EAAQC,EAAgBC,EAAgBd,IAEzG0D,EAAiB,SAAwB3F,GACpCyB,OAAAA,EAAW,KAAOzB,GAGvB4F,EAAyB,SAAgC5F,GACpD+B,OAAAA,EAAa,KAAO4D,EAAe3F,IAGxC6F,GAAqB,SAA4B7F,GAC5CgC,OAAAA,EAAS,KAAO2D,EAAe3F,IAGpC4E,GAAkB,SAAyBrtB,GACzC0qB,GACF1qB,EAAMqtB,mBAINkB,IAAe,EAAQ,EAAA,SAAA,WAClB,OAAA,WACDC,IAAAA,EAAQ/hC,UAAUC,OAAS,QAAsB+L,IAAjBhM,UAAU,GAAmBA,UAAU,GAAK,GAC5EgiC,EAAeD,EAAME,OACrBA,OAA0B,IAAjBD,EAA0B,MAAQA,EAC3CE,EAAYH,EAAMG,UAClBC,EAAUJ,EAAMI,QAChBC,EAASL,EAAMK,OACfC,EAAUN,EAAMM,QAChB3D,EAAcqD,EAAMrD,YACpBE,EAAamD,EAAMnD,WACnBD,EAAcoD,EAAMpD,YACpBE,EAASkD,EAAMlD,OACfyD,EAAOxF,EAAyBiF,EAAO,CAAC,SAAU,YAAa,UAAW,SAAU,UAAW,cAAe,aAAc,cAAe,WAExIrF,OAAAA,EAAcA,EAAcC,EAAgB,CACjDuF,UAAWN,GAAuB,EAAqBM,EAAAA,sBAAAA,EAAWjC,IAClEkC,QAASP,GAAuB,EAAqBO,EAAAA,sBAAAA,EAAS/B,IAC9DgC,OAAQR,GAAuB,EAAqBQ,EAAAA,sBAAAA,EAAQ/B,IAC5DgC,QAASV,GAAe,EAAqBU,EAAAA,sBAAAA,EAAS/B,IACtD5B,YAAamD,IAAmB,EAAqBnD,EAAAA,sBAAAA,EAAagC,IAClE9B,WAAYiD,IAAmB,EAAqBjD,EAAAA,sBAAAA,EAAYiC,IAChElC,YAAakD,IAAmB,EAAqBlD,EAAAA,sBAAAA,EAAasC,IAClEpC,OAAQgD,IAAmB,EAAqBhD,EAAAA,sBAAAA,EAAQuC,KACvDa,EAAQxC,GAAWhC,GAAaM,EAE/B,GAF4C,CAC9CwE,SAAU,IACHD,KAEV,CAAC7C,EAASQ,EAAaG,EAAWC,EAAUC,EAAWI,EAAeG,EAAcI,EAAeG,EAAUrD,EAAYC,EAAQP,IAChI+E,IAAsB,EAAY,EAAA,aAAA,SAAUjvB,GAC9CA,EAAMqtB,mBACL,IACC6B,IAAgB,EAAQ,EAAA,SAAA,WACnB,OAAA,WACDC,IAAAA,EAAQ1iC,UAAUC,OAAS,QAAsB+L,IAAjBhM,UAAU,GAAmBA,UAAU,GAAK,GAC5E2iC,EAAeD,EAAMT,OACrBA,OAA0B,IAAjBU,EAA0B,MAAQA,EAC3CC,EAAWF,EAAME,SACjBP,EAAUK,EAAML,QAChBC,EAAOxF,EAAyB4F,EAAO,CAAC,SAAU,WAAY,YAe3DhG,OAAAA,EAAcA,EAAc,GAblBC,EAAgB,CAC/B/C,OAAQA,EACRc,SAAUA,EACVx2B,KAAM,OACN2+B,MAAO,CACLC,QAAS,QAEXF,SAAUjB,GAAe,EAAqBiB,EAAAA,sBAAAA,EAAUxB,IACxDiB,QAASV,GAAe,EAAqBU,EAAAA,sBAAAA,EAASG,KACtDO,aAAc,MACdR,UAAW,GACVN,EAAQvC,IAEyC4C,KAErD,CAAC5C,EAAU9F,EAAQc,EAAU0G,EAAU3D,IACtCuF,GAAY1D,EAAar/B,OACzBm/B,GAAe4D,GAAY,IAAK,EAAiB,EAAA,kBAAA,CACnDvI,MAAO6E,EACP1F,OAAQA,EACRK,QAASA,EACTF,QAASA,EACTW,SAAUA,EACVC,SAAUA,IAER0E,GAAe2D,GAAY,IAAM5D,GAC9B1C,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDmd,aAAcA,GACdC,aAAcA,GACdJ,UAAWA,IAAcxB,EACzBqE,aAAcA,GACdW,cAAeA,GACfhD,QAASA,EACTC,SAAUA,EACVpC,KAAMqE,EAAe7B,KAIzB,SAASF,EAAQ3d,EAAOtF,GAEdA,OAAAA,EAAOzY,MACR,IAAA,QACIw4B,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDgd,WAAW,IAGV,IAAA,OACIvC,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDgd,WAAW,IAGV,IAAA,aACIvC,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDid,oBAAoB,IAGnB,IAAA,cACIxC,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDid,oBAAoB,IAGnB,IAAA,kBAECC,IAAAA,EAAexiB,EAAOwiB,aACtBG,EAAe3iB,EAAO2iB,aACnB5C,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDqd,aAAcA,EACdH,aAAcA,IAGb,IAAA,WACIzC,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjD+V,cAAerb,EAAOqb,cACtBuH,eAAgB5iB,EAAO4iB,iBAGtB,IAAA,QACI7C,OAAAA,EAAcA,EAAc,GAAIza,GAAQ,GAAI,CACjDid,oBAAoB,EACpBC,cAAc,EACdG,aAAc,GACdtH,cAAe,GACfuH,eAAgB,KAGpB,QACStd,OAAAA;;ACxxBb,aAAA,IAAA,EAAA,MAAA,KAAA,kBAAA,OAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,OAAA,eAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,KAAA,qBAAA,OAAA,OAAA,SAAA,EAAA,GAAA,OAAA,eAAA,EAAA,UAAA,CAAA,YAAA,EAAA,MAAA,KAAA,SAAA,EAAA,GAAA,EAAA,QAAA,IAAA,EAAA,MAAA,KAAA,cAAA,SAAA,GAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,IAAA,EAAA,GAAA,GAAA,MAAA,EAAA,IAAA,IAAA,KAAA,EAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,EAAA,MAAA,KAAA,iBAAA,SAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,IAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IArDA,MAAA,EAAA,EAAA,QAAA,UACA,EAAA,QAAA,kBACA,EAAA,EAAA,QAAA,2BAEM,EAAY,GAAe,IAAI,QAAQ,CAAC,EAAS,KAC/C,MAAA,EAAS,IAAI,WACnB,EAAO,OAAS,MACd,EAAQ,CACN,KAAM,EAAK,KACX,KAAM,EAAK,KACX,KAAM,EAAO,WAGjB,EAAO,QAAW,CAAA,IAChB,EAAO,KAET,EAAO,cAAc,KAGjB,EAA0B,KACxB,MAAA,KAAE,EAAF,SAAQ,GAAa,EAAA,UAErB,EAAS,EAAA,YAAY,MAAA,WACL,QAAQ,IAAI,EAAc,IAAI,KAC5C,QAAQ,IACb,CAAC,KAEE,aACJ,EADI,cAEJ,EAFI,aAGJ,GACE,EAAA,YAAY,CAAC,OAAA,IAGf,OAAA,EAAA,QAAA,cAAA,EAAA,QAAA,SAAA,KACE,EAAA,QAAA,cAAA,MAAA,IAAS,KACT,EAAA,QAAA,cAAA,QAAA,IAAW,MACT,EACA,EAAA,QAAA,cAAA,IAAA,KAAA,2BAEE,EAAA,QAAA,cAAA,IAAA,KAAA,4DAGH,EAAS,IAAK,GACb,EAAA,QAAA,cAAA,MAAA,KACG,EAAQ,KADX,IACkB,EAAQ,KAAK,OAC7B,EAAA,QAAA,cAAA,MAAA,CAAK,MAAO,CAAE,MAAO,IAAK,OAAQ,KAAO,IAAK,EAAQ,WAOhE,QAAA,QAAe;;AClCf,aAAA,IAAA,EAAA,MAAA,KAAA,kBAAA,OAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,OAAA,eAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,OAAA,SAAA,EAAA,EAAA,EAAA,QAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,KAAA,qBAAA,OAAA,OAAA,SAAA,EAAA,GAAA,OAAA,eAAA,EAAA,UAAA,CAAA,YAAA,EAAA,MAAA,KAAA,SAAA,EAAA,GAAA,EAAA,QAAA,IAAA,EAAA,MAAA,KAAA,cAAA,SAAA,GAAA,GAAA,GAAA,EAAA,WAAA,OAAA,EAAA,IAAA,EAAA,GAAA,GAAA,MAAA,EAAA,IAAA,IAAA,KAAA,EAAA,YAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,EAAA,MAAA,KAAA,iBAAA,SAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,IAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAnBA,MAAA,EAAA,EAAA,QAAA,UACA,EAAA,EAAA,QAAA,yBACA,EAAA,EAAA,QAAA,2BACA,EAAA,EAAA,QAAA,0BAEM,EAAoB,KAClB,MAAA,MAAE,GAAU,EAAA,UAEd,OAAA,IAAU,EAAA,iBAAiB,QACtB,EAAA,QAAA,cAAC,EAAA,QAAO,MAEb,IAAU,EAAA,iBAAiB,UACtB,EAAA,QAAA,cAAC,EAAA,QAAS,MAGjB,EAAA,QAAA,cAAA,MAAA,KAAA,cAIJ,QAAA,QAAe;;ACPf,aAAA,IAAA,EAAA,MAAA,KAAA,iBAAA,SAAA,GAAA,OAAA,GAAA,EAAA,WAAA,EAAA,CAAA,QAAA,IAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAZA,MAAA,EAAA,EAAA,QAAA,UACA,EAAA,QAAA,aACA,EAAA,QAAA,gCACA,EAAA,EAAA,QAAA,UAEM,EAAO,SAAS,eAAe,QAC/B,EACJ,EAAA,QAAA,cAAC,EAAA,mBAAkB,KACjB,EAAA,QAAA,cAAC,EAAA,QAAG,OAIR,EAAA,OAAO,EAAK","file":"src.e6eed49f.js","sourceRoot":"..","sourcesContent":["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;ewindow).peerjs = peerjs;\n/** @deprecated Should use peerjs namespace */\n(window).Peer = Peer;\n","var binaryFeatures = {};\r\nbinaryFeatures.useBlobBuilder = (function () {\r\n try {\r\n new Blob([]);\r\n return false;\r\n } catch (e) {\r\n return true;\r\n }\r\n})();\r\n\r\nbinaryFeatures.useArrayBufferView = !binaryFeatures.useBlobBuilder && (function () {\r\n try {\r\n return (new Blob([new Uint8Array([])])).size === 0;\r\n } catch (e) {\r\n return true;\r\n }\r\n})();\r\n\r\nmodule.exports.binaryFeatures = binaryFeatures;\r\nvar BlobBuilder = module.exports.BlobBuilder;\r\nif (typeof window !== 'undefined') {\r\n BlobBuilder = module.exports.BlobBuilder = window.WebKitBlobBuilder ||\r\n window.MozBlobBuilder || window.MSBlobBuilder || window.BlobBuilder;\r\n}\r\n\r\nfunction BufferBuilder () {\r\n this._pieces = [];\r\n this._parts = [];\r\n}\r\n\r\nBufferBuilder.prototype.append = function (data) {\r\n if (typeof data === 'number') {\r\n this._pieces.push(data);\r\n } else {\r\n this.flush();\r\n this._parts.push(data);\r\n }\r\n};\r\n\r\nBufferBuilder.prototype.flush = function () {\r\n if (this._pieces.length > 0) {\r\n var buf = new Uint8Array(this._pieces);\r\n if (!binaryFeatures.useArrayBufferView) {\r\n buf = buf.buffer;\r\n }\r\n this._parts.push(buf);\r\n this._pieces = [];\r\n }\r\n};\r\n\r\nBufferBuilder.prototype.getBuffer = function () {\r\n this.flush();\r\n if (binaryFeatures.useBlobBuilder) {\r\n var builder = new BlobBuilder();\r\n for (var i = 0, ii = this._parts.length; i < ii; i++) {\r\n builder.append(this._parts[i]);\r\n }\r\n return builder.getBlob();\r\n } else {\r\n return new Blob(this._parts);\r\n }\r\n};\r\n\r\nmodule.exports.BufferBuilder = BufferBuilder;\r\n","var BufferBuilder = require('./bufferbuilder').BufferBuilder;\r\nvar binaryFeatures = require('./bufferbuilder').binaryFeatures;\r\n\r\nvar BinaryPack = {\r\n unpack: function (data) {\r\n var unpacker = new Unpacker(data);\r\n return unpacker.unpack();\r\n },\r\n pack: function (data) {\r\n var packer = new Packer();\r\n packer.pack(data);\r\n var buffer = packer.getBuffer();\r\n return buffer;\r\n }\r\n};\r\n\r\nmodule.exports = BinaryPack;\r\n\r\nfunction Unpacker (data) {\r\n // Data is ArrayBuffer\r\n this.index = 0;\r\n this.dataBuffer = data;\r\n this.dataView = new Uint8Array(this.dataBuffer);\r\n this.length = this.dataBuffer.byteLength;\r\n}\r\n\r\nUnpacker.prototype.unpack = function () {\r\n var type = this.unpack_uint8();\r\n if (type < 0x80) {\r\n return type;\r\n } else if ((type ^ 0xe0) < 0x20) {\r\n return (type ^ 0xe0) - 0x20;\r\n }\r\n\r\n var size;\r\n if ((size = type ^ 0xa0) <= 0x0f) {\r\n return this.unpack_raw(size);\r\n } else if ((size = type ^ 0xb0) <= 0x0f) {\r\n return this.unpack_string(size);\r\n } else if ((size = type ^ 0x90) <= 0x0f) {\r\n return this.unpack_array(size);\r\n } else if ((size = type ^ 0x80) <= 0x0f) {\r\n return this.unpack_map(size);\r\n }\r\n\r\n switch (type) {\r\n case 0xc0:\r\n return null;\r\n case 0xc1:\r\n return undefined;\r\n case 0xc2:\r\n return false;\r\n case 0xc3:\r\n return true;\r\n case 0xca:\r\n return this.unpack_float();\r\n case 0xcb:\r\n return this.unpack_double();\r\n case 0xcc:\r\n return this.unpack_uint8();\r\n case 0xcd:\r\n return this.unpack_uint16();\r\n case 0xce:\r\n return this.unpack_uint32();\r\n case 0xcf:\r\n return this.unpack_uint64();\r\n case 0xd0:\r\n return this.unpack_int8();\r\n case 0xd1:\r\n return this.unpack_int16();\r\n case 0xd2:\r\n return this.unpack_int32();\r\n case 0xd3:\r\n return this.unpack_int64();\r\n case 0xd4:\r\n return undefined;\r\n case 0xd5:\r\n return undefined;\r\n case 0xd6:\r\n return undefined;\r\n case 0xd7:\r\n return undefined;\r\n case 0xd8:\r\n size = this.unpack_uint16();\r\n return this.unpack_string(size);\r\n case 0xd9:\r\n size = this.unpack_uint32();\r\n return this.unpack_string(size);\r\n case 0xda:\r\n size = this.unpack_uint16();\r\n return this.unpack_raw(size);\r\n case 0xdb:\r\n size = this.unpack_uint32();\r\n return this.unpack_raw(size);\r\n case 0xdc:\r\n size = this.unpack_uint16();\r\n return this.unpack_array(size);\r\n case 0xdd:\r\n size = this.unpack_uint32();\r\n return this.unpack_array(size);\r\n case 0xde:\r\n size = this.unpack_uint16();\r\n return this.unpack_map(size);\r\n case 0xdf:\r\n size = this.unpack_uint32();\r\n return this.unpack_map(size);\r\n }\r\n};\r\n\r\nUnpacker.prototype.unpack_uint8 = function () {\r\n var byte = this.dataView[this.index] & 0xff;\r\n this.index++;\r\n return byte;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint16 = function () {\r\n var bytes = this.read(2);\r\n var uint16 =\r\n ((bytes[0] & 0xff) * 256) + (bytes[1] & 0xff);\r\n this.index += 2;\r\n return uint16;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint32 = function () {\r\n var bytes = this.read(4);\r\n var uint32 =\r\n ((bytes[0] * 256 +\r\n bytes[1]) * 256 +\r\n bytes[2]) * 256 +\r\n bytes[3];\r\n this.index += 4;\r\n return uint32;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint64 = function () {\r\n var bytes = this.read(8);\r\n var uint64 =\r\n ((((((bytes[0] * 256 +\r\n bytes[1]) * 256 +\r\n bytes[2]) * 256 +\r\n bytes[3]) * 256 +\r\n bytes[4]) * 256 +\r\n bytes[5]) * 256 +\r\n bytes[6]) * 256 +\r\n bytes[7];\r\n this.index += 8;\r\n return uint64;\r\n};\r\n\r\nUnpacker.prototype.unpack_int8 = function () {\r\n var uint8 = this.unpack_uint8();\r\n return (uint8 < 0x80) ? uint8 : uint8 - (1 << 8);\r\n};\r\n\r\nUnpacker.prototype.unpack_int16 = function () {\r\n var uint16 = this.unpack_uint16();\r\n return (uint16 < 0x8000) ? uint16 : uint16 - (1 << 16);\r\n};\r\n\r\nUnpacker.prototype.unpack_int32 = function () {\r\n var uint32 = this.unpack_uint32();\r\n return (uint32 < Math.pow(2, 31)) ? uint32\r\n : uint32 - Math.pow(2, 32);\r\n};\r\n\r\nUnpacker.prototype.unpack_int64 = function () {\r\n var uint64 = this.unpack_uint64();\r\n return (uint64 < Math.pow(2, 63)) ? uint64\r\n : uint64 - Math.pow(2, 64);\r\n};\r\n\r\nUnpacker.prototype.unpack_raw = function (size) {\r\n if (this.length < this.index + size) {\r\n throw new Error('BinaryPackFailure: index is out of range' +\r\n ' ' + this.index + ' ' + size + ' ' + this.length);\r\n }\r\n var buf = this.dataBuffer.slice(this.index, this.index + size);\r\n this.index += size;\r\n\r\n // buf = util.bufferToString(buf);\r\n\r\n return buf;\r\n};\r\n\r\nUnpacker.prototype.unpack_string = function (size) {\r\n var bytes = this.read(size);\r\n var i = 0;\r\n var str = '';\r\n var c;\r\n var code;\r\n\r\n while (i < size) {\r\n c = bytes[i];\r\n if (c < 128) {\r\n str += String.fromCharCode(c);\r\n i++;\r\n } else if ((c ^ 0xc0) < 32) {\r\n code = ((c ^ 0xc0) << 6) | (bytes[i + 1] & 63);\r\n str += String.fromCharCode(code);\r\n i += 2;\r\n } else {\r\n code = ((c & 15) << 12) | ((bytes[i + 1] & 63) << 6) |\r\n (bytes[i + 2] & 63);\r\n str += String.fromCharCode(code);\r\n i += 3;\r\n }\r\n }\r\n\r\n this.index += size;\r\n return str;\r\n};\r\n\r\nUnpacker.prototype.unpack_array = function (size) {\r\n var objects = new Array(size);\r\n for (var i = 0; i < size; i++) {\r\n objects[i] = this.unpack();\r\n }\r\n return objects;\r\n};\r\n\r\nUnpacker.prototype.unpack_map = function (size) {\r\n var map = {};\r\n for (var i = 0; i < size; i++) {\r\n var key = this.unpack();\r\n var value = this.unpack();\r\n map[key] = value;\r\n }\r\n return map;\r\n};\r\n\r\nUnpacker.prototype.unpack_float = function () {\r\n var uint32 = this.unpack_uint32();\r\n var sign = uint32 >> 31;\r\n var exp = ((uint32 >> 23) & 0xff) - 127;\r\n var fraction = (uint32 & 0x7fffff) | 0x800000;\r\n return (sign === 0 ? 1 : -1) *\r\n fraction * Math.pow(2, exp - 23);\r\n};\r\n\r\nUnpacker.prototype.unpack_double = function () {\r\n var h32 = this.unpack_uint32();\r\n var l32 = this.unpack_uint32();\r\n var sign = h32 >> 31;\r\n var exp = ((h32 >> 20) & 0x7ff) - 1023;\r\n var hfrac = (h32 & 0xfffff) | 0x100000;\r\n var frac = hfrac * Math.pow(2, exp - 20) +\r\n l32 * Math.pow(2, exp - 52);\r\n return (sign === 0 ? 1 : -1) * frac;\r\n};\r\n\r\nUnpacker.prototype.read = function (length) {\r\n var j = this.index;\r\n if (j + length <= this.length) {\r\n return this.dataView.subarray(j, j + length);\r\n } else {\r\n throw new Error('BinaryPackFailure: read index out of range');\r\n }\r\n};\r\n\r\nfunction Packer () {\r\n this.bufferBuilder = new BufferBuilder();\r\n}\r\n\r\nPacker.prototype.getBuffer = function () {\r\n return this.bufferBuilder.getBuffer();\r\n};\r\n\r\nPacker.prototype.pack = function (value) {\r\n var type = typeof (value);\r\n if (type === 'string') {\r\n this.pack_string(value);\r\n } else if (type === 'number') {\r\n if (Math.floor(value) === value) {\r\n this.pack_integer(value);\r\n } else {\r\n this.pack_double(value);\r\n }\r\n } else if (type === 'boolean') {\r\n if (value === true) {\r\n this.bufferBuilder.append(0xc3);\r\n } else if (value === false) {\r\n this.bufferBuilder.append(0xc2);\r\n }\r\n } else if (type === 'undefined') {\r\n this.bufferBuilder.append(0xc0);\r\n } else if (type === 'object') {\r\n if (value === null) {\r\n this.bufferBuilder.append(0xc0);\r\n } else {\r\n var constructor = value.constructor;\r\n if (constructor == Array) {\r\n this.pack_array(value);\r\n } else if (constructor == Blob || constructor == File || value instanceof Blob || value instanceof File) {\r\n this.pack_bin(value);\r\n } else if (constructor == ArrayBuffer) {\r\n if (binaryFeatures.useArrayBufferView) {\r\n this.pack_bin(new Uint8Array(value));\r\n } else {\r\n this.pack_bin(value);\r\n }\r\n } else if ('BYTES_PER_ELEMENT' in value) {\r\n if (binaryFeatures.useArrayBufferView) {\r\n this.pack_bin(new Uint8Array(value.buffer));\r\n } else {\r\n this.pack_bin(value.buffer);\r\n }\r\n } else if ((constructor == Object) || (constructor.toString().startsWith('class'))) {\r\n this.pack_object(value);\r\n } else if (constructor == Date) {\r\n this.pack_string(value.toString());\r\n } else if (typeof value.toBinaryPack === 'function') {\r\n this.bufferBuilder.append(value.toBinaryPack());\r\n } else {\r\n throw new Error('Type \"' + constructor.toString() + '\" not yet supported');\r\n }\r\n }\r\n } else {\r\n throw new Error('Type \"' + type + '\" not yet supported');\r\n }\r\n this.bufferBuilder.flush();\r\n};\r\n\r\nPacker.prototype.pack_bin = function (blob) {\r\n var length = blob.length || blob.byteLength || blob.size;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0xa0 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xda);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdb);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n this.bufferBuilder.append(blob);\r\n};\r\n\r\nPacker.prototype.pack_string = function (str) {\r\n var length = utf8Length(str);\r\n\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0xb0 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xd8);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xd9);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n this.bufferBuilder.append(str);\r\n};\r\n\r\nPacker.prototype.pack_array = function (ary) {\r\n var length = ary.length;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0x90 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xdc);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdd);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n for (var i = 0; i < length; i++) {\r\n this.pack(ary[i]);\r\n }\r\n};\r\n\r\nPacker.prototype.pack_integer = function (num) {\r\n if (num >= -0x20 && num <= 0x7f) {\r\n this.bufferBuilder.append(num & 0xff);\r\n } else if (num >= 0x00 && num <= 0xff) {\r\n this.bufferBuilder.append(0xcc);\r\n this.pack_uint8(num);\r\n } else if (num >= -0x80 && num <= 0x7f) {\r\n this.bufferBuilder.append(0xd0);\r\n this.pack_int8(num);\r\n } else if (num >= 0x0000 && num <= 0xffff) {\r\n this.bufferBuilder.append(0xcd);\r\n this.pack_uint16(num);\r\n } else if (num >= -0x8000 && num <= 0x7fff) {\r\n this.bufferBuilder.append(0xd1);\r\n this.pack_int16(num);\r\n } else if (num >= 0x00000000 && num <= 0xffffffff) {\r\n this.bufferBuilder.append(0xce);\r\n this.pack_uint32(num);\r\n } else if (num >= -0x80000000 && num <= 0x7fffffff) {\r\n this.bufferBuilder.append(0xd2);\r\n this.pack_int32(num);\r\n } else if (num >= -0x8000000000000000 && num <= 0x7FFFFFFFFFFFFFFF) {\r\n this.bufferBuilder.append(0xd3);\r\n this.pack_int64(num);\r\n } else if (num >= 0x0000000000000000 && num <= 0xFFFFFFFFFFFFFFFF) {\r\n this.bufferBuilder.append(0xcf);\r\n this.pack_uint64(num);\r\n } else {\r\n throw new Error('Invalid integer');\r\n }\r\n};\r\n\r\nPacker.prototype.pack_double = function (num) {\r\n var sign = 0;\r\n if (num < 0) {\r\n sign = 1;\r\n num = -num;\r\n }\r\n var exp = Math.floor(Math.log(num) / Math.LN2);\r\n var frac0 = num / Math.pow(2, exp) - 1;\r\n var frac1 = Math.floor(frac0 * Math.pow(2, 52));\r\n var b32 = Math.pow(2, 32);\r\n var h32 = (sign << 31) | ((exp + 1023) << 20) |\r\n (frac1 / b32) & 0x0fffff;\r\n var l32 = frac1 % b32;\r\n this.bufferBuilder.append(0xcb);\r\n this.pack_int32(h32);\r\n this.pack_int32(l32);\r\n};\r\n\r\nPacker.prototype.pack_object = function (obj) {\r\n var keys = Object.keys(obj);\r\n var length = keys.length;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0x80 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xde);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdf);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n this.pack(prop);\r\n this.pack(obj[prop]);\r\n }\r\n }\r\n};\r\n\r\nPacker.prototype.pack_uint8 = function (num) {\r\n this.bufferBuilder.append(num);\r\n};\r\n\r\nPacker.prototype.pack_uint16 = function (num) {\r\n this.bufferBuilder.append(num >> 8);\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_uint32 = function (num) {\r\n var n = num & 0xffffffff;\r\n this.bufferBuilder.append((n & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((n & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((n & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((n & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_uint64 = function (num) {\r\n var high = num / Math.pow(2, 32);\r\n var low = num % Math.pow(2, 32);\r\n this.bufferBuilder.append((high & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((high & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((high & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((high & 0x000000ff));\r\n this.bufferBuilder.append((low & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((low & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((low & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((low & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_int8 = function (num) {\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_int16 = function (num) {\r\n this.bufferBuilder.append((num & 0xff00) >> 8);\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_int32 = function (num) {\r\n this.bufferBuilder.append((num >>> 24) & 0xff);\r\n this.bufferBuilder.append((num & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((num & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((num & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_int64 = function (num) {\r\n var high = Math.floor(num / Math.pow(2, 32));\r\n var low = num % Math.pow(2, 32);\r\n this.bufferBuilder.append((high & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((high & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((high & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((high & 0x000000ff));\r\n this.bufferBuilder.append((low & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((low & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((low & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((low & 0x000000ff));\r\n};\r\n\r\nfunction _utf8Replace (m) {\r\n var code = m.charCodeAt(0);\r\n\r\n if (code <= 0x7ff) return '00';\r\n if (code <= 0xffff) return '000';\r\n if (code <= 0x1fffff) return '0000';\r\n if (code <= 0x3ffffff) return '00000';\r\n return '000000';\r\n}\r\n\r\nfunction utf8Length (str) {\r\n if (str.length > 600) {\r\n // Blob method faster for large strings\r\n return (new Blob([str])).size;\r\n } else {\r\n return str.replace(/[^\\u0000-\\u007F]/g, _utf8Replace).length;\r\n }\r\n}\r\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nlet logDisabled_ = true;\nlet deprecationWarnings_ = true;\n\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\nexport function extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n}\n\n// Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\nexport function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n const nativeAddEventListener = proto.addEventListener;\n proto.addEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n const wrappedCallback = (e) => {\n const modifiedEvent = wrapper(e);\n if (modifiedEvent) {\n if (cb.handleEvent) {\n cb.handleEvent(modifiedEvent);\n } else {\n cb(modifiedEvent);\n }\n }\n };\n this._eventMap = this._eventMap || {};\n if (!this._eventMap[eventNameToWrap]) {\n this._eventMap[eventNameToWrap] = new Map();\n }\n this._eventMap[eventNameToWrap].set(cb, wrappedCallback);\n return nativeAddEventListener.apply(this, [nativeEventName,\n wrappedCallback]);\n };\n\n const nativeRemoveEventListener = proto.removeEventListener;\n proto.removeEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap\n || !this._eventMap[eventNameToWrap]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (!this._eventMap[eventNameToWrap].has(cb)) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n const unwrappedCb = this._eventMap[eventNameToWrap].get(cb);\n this._eventMap[eventNameToWrap].delete(cb);\n if (this._eventMap[eventNameToWrap].size === 0) {\n delete this._eventMap[eventNameToWrap];\n }\n if (Object.keys(this._eventMap).length === 0) {\n delete this._eventMap;\n }\n return nativeRemoveEventListener.apply(this, [nativeEventName,\n unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get() {\n return this['_on' + eventNameToWrap];\n },\n set(cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n if (cb) {\n this.addEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\nexport function disableLog(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n}\n\n/**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\nexport function disableWarnings(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n}\n\nexport function log() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n}\n\n/**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\nexport function deprecated(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod +\n ' instead.');\n}\n\n/**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\nexport function detectBrowser(window) {\n // Returned result object.\n const result = {browser: null, version: null};\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n const {navigator} = window;\n\n if (navigator.mozGetUserMedia) { // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent,\n /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia ||\n (window.isSecureContext === false && window.webkitRTCPeerConnection &&\n !window.RTCIceGatherer)) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n // Chrome 74 removed webkitGetUserMedia on http as well so we need the\n // more complicated fallback to webkitRTCPeerConnection.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) { // Edge.\n result.browser = 'edge';\n result.version = extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n } else if (window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) { // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./, 1);\n result.supportsUnifiedPlan = window.RTCRtpTransceiver &&\n 'currentDirection' in window.RTCRtpTransceiver.prototype;\n } else { // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n}\n\n/**\n * Checks if something is an object.\n *\n * @param {*} val The something you want to check.\n * @return true if val is an object, false otherwise.\n */\nfunction isObject(val) {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\n/**\n * Remove all empty objects and undefined values\n * from a nested object -- an enhanced and vanilla version\n * of Lodash's `compact`.\n */\nexport function compactObject(data) {\n if (!isObject(data)) {\n return data;\n }\n\n return Object.keys(data).reduce(function(accumulator, key) {\n const isObj = isObject(data[key]);\n const value = isObj ? compactObject(data[key]) : data[key];\n const isEmptyObject = isObj && !Object.keys(value).length;\n if (value === undefined || isEmptyObject) {\n return accumulator;\n }\n return Object.assign(accumulator, {[key]: value});\n }, {});\n}\n\n/* iterates the stats graph recursively. */\nexport function walkStats(stats, base, resultSet) {\n if (!base || resultSet.has(base.id)) {\n return;\n }\n resultSet.set(base.id, base);\n Object.keys(base).forEach(name => {\n if (name.endsWith('Id')) {\n walkStats(stats, stats.get(base[name]), resultSet);\n } else if (name.endsWith('Ids')) {\n base[name].forEach(id => {\n walkStats(stats, stats.get(id), resultSet);\n });\n }\n });\n}\n\n/* filter getStats for a sender/receiver track. */\nexport function filterStats(result, track, outbound) {\n const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\n const filteredResult = new Map();\n if (track === null) {\n return filteredResult;\n }\n const trackStats = [];\n result.forEach(value => {\n if (value.type === 'track' &&\n value.trackIdentifier === track.id) {\n trackStats.push(value);\n }\n });\n trackStats.forEach(trackStat => {\n result.forEach(stats => {\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\n walkStats(result, stats, filteredResult);\n }\n });\n });\n return filteredResult;\n}\n\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\nconst logging = utils.log;\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n\n if (!navigator.mediaDevices) {\n return;\n }\n\n const constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n const cc = {};\n Object.keys(c).forEach(key => {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n const oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n let oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(mix => {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n const shimConstraints_ = function(constraints, func) {\n if (browserDetails.version >= 61) {\n return func(constraints);\n }\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && typeof constraints.audio === 'object') {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile & surface pro.\n let face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n const getSupportedFacingModeLies = browserDetails.version < 66;\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode &&\n !getSupportedFacingModeLies)) {\n delete constraints.video.facingMode;\n let matches;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n matches = ['back', 'rear'];\n } else if (face.exact === 'user' || face.ideal === 'user') {\n matches = ['front'];\n }\n if (matches) {\n // Look for matches in label, or use last cam for back (typical).\n return navigator.mediaDevices.enumerateDevices()\n .then(devices => {\n devices = devices.filter(d => d.kind === 'videoinput');\n let dev = devices.find(d => matches.some(match =>\n d.label.toLowerCase().includes(match)));\n if (!dev && devices.length && matches.includes('back')) {\n dev = devices[devices.length - 1]; // more likely the back cam\n }\n if (dev) {\n constraints.video.deviceId = face.exact ? {exact: dev.deviceId} :\n {ideal: dev.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n const shimError_ = function(e) {\n if (browserDetails.version >= 64) {\n return e;\n }\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n PermissionDismissedError: 'NotAllowedError',\n InvalidStateError: 'NotAllowedError',\n DevicesNotFoundError: 'NotFoundError',\n ConstraintNotSatisfiedError: 'OverconstrainedError',\n TrackStartError: 'NotReadableError',\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\n MediaDeviceKillSwitchOn: 'NotAllowedError',\n TabCaptureError: 'AbortError',\n ScreenCaptureError: 'AbortError',\n DeviceCaptureError: 'AbortError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint || e.constraintName,\n toString() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n const getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, c => {\n navigator.webkitGetUserMedia(c, onSuccess, e => {\n if (onError) {\n onError(shimError_(e));\n }\n });\n });\n };\n navigator.getUserMedia = getUserMedia_.bind(navigator);\n\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n if (navigator.mediaDevices.getUserMedia) {\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => {\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(track => {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n return stream;\n }, e => Promise.reject(shimError_(e))));\n };\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nexport function shimGetDisplayMedia(window, getSourceId) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n // getSourceId is a function that returns a promise resolving with\n // the sourceId of the screen/window/tab to be shared.\n if (typeof getSourceId !== 'function') {\n console.error('shimGetDisplayMedia: getSourceId argument is not ' +\n 'a function');\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n return getSourceId(constraints)\n .then(sourceId => {\n const widthSpecified = constraints.video && constraints.video.width;\n const heightSpecified = constraints.video &&\n constraints.video.height;\n const frameRateSpecified = constraints.video &&\n constraints.video.frameRate;\n constraints.video = {\n mandatory: {\n chromeMediaSource: 'desktop',\n chromeMediaSourceId: sourceId,\n maxFrameRate: frameRateSpecified || 3\n }\n };\n if (widthSpecified) {\n constraints.video.mandatory.maxWidth = widthSpecified;\n }\n if (heightSpecified) {\n constraints.video.mandatory.maxHeight = heightSpecified;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n });\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\n\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimMediaStream(window) {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n}\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get() {\n return this._ontrack;\n },\n set(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n }\n this.addEventListener('track', this._ontrack = f);\n },\n enumerable: true,\n configurable: true\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n if (!this._ontrackpoly) {\n this._ontrackpoly = (e) => {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', te => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === te.track.id);\n } else {\n receiver = {track: te.track};\n }\n\n const event = new Event('track');\n event.track = te.track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(track => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === track.id);\n } else {\n receiver = {track};\n }\n const event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n };\n this.addEventListener('addstream', this._ontrackpoly);\n }\n return origSetRemoteDescription.apply(this, arguments);\n };\n } else {\n // even if RTCRtpTransceiver is in window, it is only used and\n // emitted in unified-plan. Unfortunately this means we need\n // to unconditionally wrap the event.\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n if (!e.transceiver) {\n Object.defineProperty(e, 'transceiver',\n {value: {receiver: e.receiver}});\n }\n return e;\n });\n }\n}\n\nexport function shimGetSendersWithDtmf(window) {\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\n if (typeof window === 'object' && window.RTCPeerConnection &&\n !('getSenders' in window.RTCPeerConnection.prototype) &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype) {\n const shimSenderWithDtmf = function(pc, track) {\n return {\n track,\n get dtmf() {\n if (this._dtmf === undefined) {\n if (track.kind === 'audio') {\n this._dtmf = pc.createDTMFSender(track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n },\n _pc: pc\n };\n };\n\n // augment addTrack when getSenders is not available.\n if (!window.RTCPeerConnection.prototype.getSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n this._senders = this._senders || [];\n return this._senders.slice(); // return a copy of the internal state.\n };\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n let sender = origAddTrack.apply(this, arguments);\n if (!sender) {\n sender = shimSenderWithDtmf(this, track);\n this._senders.push(sender);\n }\n return sender;\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n origRemoveTrack.apply(this, arguments);\n const idx = this._senders.indexOf(sender);\n if (idx !== -1) {\n this._senders.splice(idx, 1);\n }\n };\n }\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._senders = this._senders || [];\n origAddStream.apply(this, [stream]);\n stream.getTracks().forEach(track => {\n this._senders.push(shimSenderWithDtmf(this, track));\n });\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._senders = this._senders || [];\n origRemoveStream.apply(this, [stream]);\n\n stream.getTracks().forEach(track => {\n const sender = this._senders.find(s => s.track === track);\n if (sender) { // remove sender\n this._senders.splice(this._senders.indexOf(sender), 1);\n }\n });\n };\n } else if (typeof window === 'object' && window.RTCPeerConnection &&\n 'getSenders' in window.RTCPeerConnection.prototype &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype &&\n window.RTCRtpSender &&\n !('dtmf' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = this._pc.createDTMFSender(this.track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n}\n\nexport function shimGetStats(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats.apply(this, arguments);\n }\n\n // When spec-style getStats is supported, return those when called with\n // either no arguments or the selector argument is null.\n if (origGetStats.length === 0 && (arguments.length === 0 ||\n typeof selector !== 'function')) {\n return origGetStats.apply(this, []);\n }\n\n const fixChromeStats_ = function(response) {\n const standardReport = {};\n const reports = response.result();\n reports.forEach(report => {\n const standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: {\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[report.type] || report.type\n };\n report.names().forEach(name => {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n const makeMapStats = function(stats) {\n return new Map(Object.keys(stats).map(key => [key, stats[key]]));\n };\n\n if (arguments.length >= 2) {\n const successCallbackWrapper_ = function(response) {\n onSucc(makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n selector]);\n }\n\n // promise-support\n return new Promise((resolve, reject) => {\n origGetStats.apply(this, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n }).then(onSucc, onErr);\n };\n}\n\nexport function shimSenderReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender && window.RTCRtpReceiver)) {\n return;\n }\n\n // shim sender stats.\n if (!('getStats' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n const sender = this;\n return this._pc.getStats().then(result =>\n /* Note: this will include stats of all senders that\n * send a track with the same id as sender.track as\n * it is not possible to identify the RTCRtpSender.\n */\n utils.filterStats(result, sender.track, true));\n };\n }\n\n // shim receiver stats.\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers =\n function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n const receiver = this;\n return this._pc.getStats().then(result =>\n utils.filterStats(result, receiver.track, false));\n };\n }\n\n if (!('getStats' in window.RTCRtpSender.prototype &&\n 'getStats' in window.RTCRtpReceiver.prototype)) {\n return;\n }\n\n // shim RTCPeerConnection.getStats(track).\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n if (arguments.length > 0 &&\n arguments[0] instanceof window.MediaStreamTrack) {\n const track = arguments[0];\n let sender;\n let receiver;\n let err;\n this.getSenders().forEach(s => {\n if (s.track === track) {\n if (sender) {\n err = true;\n } else {\n sender = s;\n }\n }\n });\n this.getReceivers().forEach(r => {\n if (r.track === track) {\n if (receiver) {\n err = true;\n } else {\n receiver = r;\n }\n }\n return r.track === track;\n });\n if (err || (sender && receiver)) {\n return Promise.reject(new DOMException(\n 'There are more than one sender or receiver for the track.',\n 'InvalidAccessError'));\n } else if (sender) {\n return sender.getStats();\n } else if (receiver) {\n return receiver.getStats();\n }\n return Promise.reject(new DOMException(\n 'There is no sender or receiver for the track.',\n 'InvalidAccessError'));\n }\n return origGetStats.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrackWithNative(window) {\n // shim addTrack/removeTrack with native variants in order to make\n // the interactions with legacy getLocalStreams behave as in other browsers.\n // Keeps a mapping stream.id => [stream, rtpsenders...]\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n return Object.keys(this._shimmedLocalStreams)\n .map(streamId => this._shimmedLocalStreams[streamId][0]);\n };\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (!stream) {\n return origAddTrack.apply(this, arguments);\n }\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n const sender = origAddTrack.apply(this, arguments);\n if (!this._shimmedLocalStreams[stream.id]) {\n this._shimmedLocalStreams[stream.id] = [stream, sender];\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\n this._shimmedLocalStreams[stream.id].push(sender);\n }\n return sender;\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n const existingSenders = this.getSenders();\n origAddStream.apply(this, arguments);\n const newSenders = this.getSenders()\n .filter(newSender => existingSenders.indexOf(newSender) === -1);\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n delete this._shimmedLocalStreams[stream.id];\n return origRemoveStream.apply(this, arguments);\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n if (sender) {\n Object.keys(this._shimmedLocalStreams).forEach(streamId => {\n const idx = this._shimmedLocalStreams[streamId].indexOf(sender);\n if (idx !== -1) {\n this._shimmedLocalStreams[streamId].splice(idx, 1);\n }\n if (this._shimmedLocalStreams[streamId].length === 1) {\n delete this._shimmedLocalStreams[streamId];\n }\n });\n }\n return origRemoveTrack.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrack(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // shim addTrack and removeTrack.\n if (window.RTCPeerConnection.prototype.addTrack &&\n browserDetails.version >= 65) {\n return shimAddTrackRemoveTrackWithNative(window);\n }\n\n // also shim pc.getLocalStreams when addTrack is shimmed\n // to return the original streams.\n const origGetLocalStreams = window.RTCPeerConnection.prototype\n .getLocalStreams;\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n const nativeStreams = origGetLocalStreams.apply(this);\n this._reverseStreams = this._reverseStreams || {};\n return nativeStreams.map(stream => this._reverseStreams[stream.id]);\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n // Add identity mapping for consistency with addTrack.\n // Unless this is being used with a stream from addTrack.\n if (!this._reverseStreams[stream.id]) {\n const newStream = new window.MediaStream(stream.getTracks());\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n stream = newStream;\n }\n origAddStream.apply(this, [stream]);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]);\n delete this._reverseStreams[(this._streams[stream.id] ?\n this._streams[stream.id].id : stream.id)];\n delete this._streams[stream.id];\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n const streams = [].slice.call(arguments, 1);\n if (streams.length !== 1 ||\n !streams[0].getTracks().find(t => t === track)) {\n // this is not fully correct but all we can manage without\n // [[associated MediaStreams]] internal slot.\n throw new DOMException(\n 'The adapter.js addTrack polyfill only supports a single ' +\n ' stream which is associated with the specified track.',\n 'NotSupportedError');\n }\n\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n const oldStream = this._streams[stream.id];\n if (oldStream) {\n // this is using odd Chrome behaviour, use with caution:\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\n // Note: we rely on the high-level addTrack/dtmf shim to\n // create the sender with a dtmf sender.\n oldStream.addTrack(track);\n\n // Trigger ONN async.\n Promise.resolve().then(() => {\n this.dispatchEvent(new Event('negotiationneeded'));\n });\n } else {\n const newStream = new window.MediaStream([track]);\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n this.addStream(newStream);\n }\n return this.getSenders().find(s => s.track === track);\n };\n\n // replace the internal stream id with the external one and\n // vice versa.\n function replaceInternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'),\n externalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n function replaceExternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'),\n internalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n ['createOffer', 'createAnswer'].forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n const args = arguments;\n const isLegacyCall = arguments.length &&\n typeof arguments[0] === 'function';\n if (isLegacyCall) {\n return nativeMethod.apply(this, [\n (description) => {\n const desc = replaceInternalStreamId(this, description);\n args[0].apply(null, [desc]);\n },\n (err) => {\n if (args[1]) {\n args[1].apply(null, err);\n }\n }, arguments[2]\n ]);\n }\n return nativeMethod.apply(this, arguments)\n .then(description => replaceInternalStreamId(this, description));\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n\n const origSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n if (!arguments.length || !arguments[0].type) {\n return origSetLocalDescription.apply(this, arguments);\n }\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\n return origSetLocalDescription.apply(this, arguments);\n };\n\n // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\n\n const origLocalDescription = Object.getOwnPropertyDescriptor(\n window.RTCPeerConnection.prototype, 'localDescription');\n Object.defineProperty(window.RTCPeerConnection.prototype,\n 'localDescription', {\n get() {\n const description = origLocalDescription.get.apply(this);\n if (description.type === '') {\n return description;\n }\n return replaceInternalStreamId(this, description);\n }\n });\n\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n // We can not yet check for sender instanceof RTCRtpSender\n // since we shim RTPSender. So we check if sender._pc is set.\n if (!sender._pc) {\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.', 'TypeError');\n }\n const isLocal = sender._pc === this;\n if (!isLocal) {\n throw new DOMException('Sender was not created by this connection.',\n 'InvalidAccessError');\n }\n\n // Search for the native stream the senders track belongs to.\n this._streams = this._streams || {};\n let stream;\n Object.keys(this._streams).forEach(streamid => {\n const hasTrack = this._streams[streamid].getTracks()\n .find(track => sender.track === track);\n if (hasTrack) {\n stream = this._streams[streamid];\n }\n });\n\n if (stream) {\n if (stream.getTracks().length === 1) {\n // if this is the last track of the stream, remove the stream. This\n // takes care of any shimmed _senders.\n this.removeStream(this._reverseStreams[stream.id]);\n } else {\n // relying on the same odd chrome behaviour as above.\n stream.removeTrack(sender.track);\n }\n this.dispatchEvent(new Event('negotiationneeded'));\n }\n };\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\n }\n if (!window.RTCPeerConnection) {\n return;\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n if (browserDetails.version < 53) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n}\n\n// Attempt to fix ONN in plan-b mode.\nexport function fixNegotiationNeeded(window, browserDetails) {\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => {\n const pc = e.target;\n if (browserDetails.version < 72 || (pc.getConfiguration &&\n pc.getConfiguration().sdpSemantics === 'plan-b')) {\n if (pc.signalingState !== 'stable') {\n return;\n }\n }\n return e;\n });\n}\n","/*\n * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n// Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\nexport function filterIceServers(iceServers, edgeVersion) {\n let hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(server => {\n if (server && (server.urls || server.url)) {\n let urls = server.urls || server.url;\n if (server.url && !server.urls) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n }\n const isString = typeof urls === 'string';\n if (isString) {\n urls = [urls];\n }\n urls = urls.filter(url => {\n // filter STUN unconditionally.\n if (url.indexOf('stun:') === 0) {\n return false;\n }\n\n const validTurn = url.startsWith('turn') &&\n !url.startsWith('turn:[') &&\n url.includes('transport=udp');\n if (validTurn && !hasTurn) {\n hasTurn = true;\n return true;\n }\n return validTurn && !hasTurn;\n });\n\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n}\n","/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// returns the session description.\nSDPUtils.getDescription = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parseInt(parts[1], 10),\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compability.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag\n candidate[parts[i]] = parts[i + 1];\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n var channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n if (codec.parameters[param]) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\nSDPUtils.parseSsrcGroup = function(line) {\n var parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(function(ssrc) {\n return parseInt(ssrc, 10);\n })\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\nSDPUtils.parseFingerprint = function(line) {\n var parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1]\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role.\n // Note2: 'algorithm' is not case sensitive except in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint)\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n var parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES paramters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n var maxptime = 0;\n caps.codecs.forEach(function(codec) {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n sdp += 'a=rtcp-mux\\r\\n';\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(function(extension) {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.substr(17).split(' ');\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10)\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n var rtcpParameters = {};\n\n // Gets the first SSRC. Note tha with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n var parts;\n var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(msidParts) {\n return msidParts.attribute === 'msid';\n });\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n var mline = SDPUtils.parseMLine(mediaSection);\n var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n var maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize: maxMessageSize\n };\n }\n var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n var parts = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:')[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize: maxMessageSize\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n var output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n'\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n'\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boilder plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n var sessionId;\n var version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n var user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.direction) {\n sdp += 'a=' + transceiver.direction + '\\r\\n';\n } else if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n // spec.\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n\n // for Chrome.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' ')\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n var parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5]\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n var lines = SDPUtils.splitLines(blob);\n for (var i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\n\nfunction fixStatsType(stat) {\n return {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[stat.type] || stat.type;\n}\n\nfunction writeMediaSection(transceiver, caps, type, stream, dtlsRole) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : dtlsRole || 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n var trackId = transceiver.rtpSender._initialTrackId ||\n transceiver.rtpSender.track.id;\n transceiver.rtpSender._initialTrackId = trackId;\n // spec.\n var msid = 'msid:' + (stream ? stream.id : '-') + ' ' +\n trackId + '\\r\\n';\n sdp += 'a=' + msid;\n // for Chrome. Legacy should no longer be required.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n\n // RTX\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n}\n\n// Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\nfunction filterIceServers(iceServers, edgeVersion) {\n var hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(function(server) {\n if (server && (server.urls || server.url)) {\n var urls = server.urls || server.url;\n if (server.url && !server.urls) {\n console.warn('RTCIceServer.url is deprecated! Use urls instead.');\n }\n var isString = typeof urls === 'string';\n if (isString) {\n urls = [urls];\n }\n urls = urls.filter(function(url) {\n var validTurn = url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1 &&\n url.indexOf('turn:[') === -1 &&\n !hasTurn;\n\n if (validTurn) {\n hasTurn = true;\n return true;\n }\n return url.indexOf('stun:') === 0 && edgeVersion >= 14393 &&\n url.indexOf('?transport=udp') === -1;\n });\n\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n}\n\n// Determines the intersection of local and remote capabilities.\nfunction getCommonCapabilities(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n\n var findCodecByPayloadType = function(pt, codecs) {\n pt = parseInt(pt, 10);\n for (var i = 0; i < codecs.length; i++) {\n if (codecs[i].payloadType === pt ||\n codecs[i].preferredPayloadType === pt) {\n return codecs[i];\n }\n }\n };\n\n var rtxCapabilityMatches = function(lRtx, rRtx, lCodecs, rCodecs) {\n var lCodec = findCodecByPayloadType(lRtx.parameters.apt, lCodecs);\n var rCodec = findCodecByPayloadType(rRtx.parameters.apt, rCodecs);\n return lCodec && rCodec &&\n lCodec.name.toLowerCase() === rCodec.name.toLowerCase();\n };\n\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate) {\n if (lCodec.name.toLowerCase() === 'rtx' &&\n lCodec.parameters && rCodec.parameters.apt) {\n // for RTX we need to find the local rtx that has a apt\n // which points to the same local codec as the remote one.\n if (!rtxCapabilityMatches(lCodec, rCodec,\n localCapabilities.codecs, remoteCapabilities.codecs)) {\n continue;\n }\n }\n rCodec = JSON.parse(JSON.stringify(rCodec)); // deepcopy\n // number of channels is the highest common number of channels\n rCodec.numChannels = Math.min(lCodec.numChannels,\n rCodec.numChannels);\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // determine common feedback mechanisms\n rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function(fb) {\n for (var j = 0; j < lCodec.rtcpFeedback.length; j++) {\n if (lCodec.rtcpFeedback[j].type === fb.type &&\n lCodec.rtcpFeedback[j].parameter === fb.parameter) {\n return true;\n }\n }\n return false;\n });\n // FIXME: also need to determine .parameters\n // see https://github.com/openpeer/ortc/issues/569\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions.forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n}\n\n// is action=setLocalDescription with type allowed in signalingState\nfunction isActionAllowedInSignalingState(action, type, signalingState) {\n return {\n offer: {\n setLocalDescription: ['stable', 'have-local-offer'],\n setRemoteDescription: ['stable', 'have-remote-offer']\n },\n answer: {\n setLocalDescription: ['have-remote-offer', 'have-local-pranswer'],\n setRemoteDescription: ['have-local-offer', 'have-remote-pranswer']\n }\n }[type][action].indexOf(signalingState) !== -1;\n}\n\nfunction maybeAddCandidate(iceTransport, candidate) {\n // Edge's internal representation adds some fields therefore\n // not all fieldѕ are taken into account.\n var alreadyAdded = iceTransport.getRemoteCandidates()\n .find(function(remoteCandidate) {\n return candidate.foundation === remoteCandidate.foundation &&\n candidate.ip === remoteCandidate.ip &&\n candidate.port === remoteCandidate.port &&\n candidate.priority === remoteCandidate.priority &&\n candidate.protocol === remoteCandidate.protocol &&\n candidate.type === remoteCandidate.type;\n });\n if (!alreadyAdded) {\n iceTransport.addRemoteCandidate(candidate);\n }\n return !alreadyAdded;\n}\n\n\nfunction makeError(name, description) {\n var e = new Error(description);\n e.name = name;\n // legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names\n e.code = {\n NotSupportedError: 9,\n InvalidStateError: 11,\n InvalidAccessError: 15,\n TypeError: undefined,\n OperationError: undefined\n }[name];\n return e;\n}\n\nmodule.exports = function(window, edgeVersion) {\n // https://w3c.github.io/mediacapture-main/#mediastream\n // Helper function to add the track to the stream and\n // dispatch the event ourselves.\n function addTrackToStreamAndFireEvent(track, stream) {\n stream.addTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('addtrack',\n {track: track}));\n }\n\n function removeTrackFromStreamAndFireEvent(track, stream) {\n stream.removeTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('removetrack',\n {track: track}));\n }\n\n function fireAddTrack(pc, track, receiver, streams) {\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.transceiver = {receiver: receiver};\n trackEvent.streams = streams;\n window.setTimeout(function() {\n pc._dispatchEvent('track', trackEvent);\n });\n }\n\n var RTCPeerConnection = function(config) {\n var pc = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n pc[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.canTrickleIceCandidates = null;\n\n this.needNegotiation = false;\n\n this.localStreams = [];\n this.remoteStreams = [];\n\n this._localDescription = null;\n this._remoteDescription = null;\n\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.connectionState = 'new';\n this.iceGatheringState = 'new';\n\n config = JSON.parse(JSON.stringify(config || {}));\n\n this.usingBundle = config.bundlePolicy === 'max-bundle';\n if (config.rtcpMuxPolicy === 'negotiate') {\n throw(makeError('NotSupportedError',\n 'rtcpMuxPolicy \\'negotiate\\' is not supported'));\n } else if (!config.rtcpMuxPolicy) {\n config.rtcpMuxPolicy = 'require';\n }\n\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n break;\n default:\n config.iceTransportPolicy = 'all';\n break;\n }\n\n switch (config.bundlePolicy) {\n case 'balanced':\n case 'max-compat':\n case 'max-bundle':\n break;\n default:\n config.bundlePolicy = 'balanced';\n break;\n }\n\n config.iceServers = filterIceServers(config.iceServers || [], edgeVersion);\n\n this._iceGatherers = [];\n if (config.iceCandidatePoolSize) {\n for (var i = config.iceCandidatePoolSize; i > 0; i--) {\n this._iceGatherers.push(new window.RTCIceGatherer({\n iceServers: config.iceServers,\n gatherPolicy: config.iceTransportPolicy\n }));\n }\n } else {\n config.iceCandidatePoolSize = 0;\n }\n\n this._config = config;\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n this._sdpSessionId = SDPUtils.generateSessionId();\n this._sdpSessionVersion = 0;\n\n this._dtlsRole = undefined; // role for a=setup to use in answers.\n\n this._isClosed = false;\n };\n\n Object.defineProperty(RTCPeerConnection.prototype, 'localDescription', {\n configurable: true,\n get: function() {\n return this._localDescription;\n }\n });\n Object.defineProperty(RTCPeerConnection.prototype, 'remoteDescription', {\n configurable: true,\n get: function() {\n return this._remoteDescription;\n }\n });\n\n // set up event handlers on prototype\n RTCPeerConnection.prototype.onicecandidate = null;\n RTCPeerConnection.prototype.onaddstream = null;\n RTCPeerConnection.prototype.ontrack = null;\n RTCPeerConnection.prototype.onremovestream = null;\n RTCPeerConnection.prototype.onsignalingstatechange = null;\n RTCPeerConnection.prototype.oniceconnectionstatechange = null;\n RTCPeerConnection.prototype.onconnectionstatechange = null;\n RTCPeerConnection.prototype.onicegatheringstatechange = null;\n RTCPeerConnection.prototype.onnegotiationneeded = null;\n RTCPeerConnection.prototype.ondatachannel = null;\n\n RTCPeerConnection.prototype._dispatchEvent = function(name, event) {\n if (this._isClosed) {\n return;\n }\n this.dispatchEvent(event);\n if (typeof this['on' + name] === 'function') {\n this['on' + name](event);\n }\n };\n\n RTCPeerConnection.prototype._emitGatheringStateChange = function() {\n var event = new Event('icegatheringstatechange');\n this._dispatchEvent('icegatheringstatechange', event);\n };\n\n RTCPeerConnection.prototype.getConfiguration = function() {\n return this._config;\n };\n\n RTCPeerConnection.prototype.getLocalStreams = function() {\n return this.localStreams;\n };\n\n RTCPeerConnection.prototype.getRemoteStreams = function() {\n return this.remoteStreams;\n };\n\n // internal helper to create a transceiver object.\n // (which is not yet the same as the WebRTC 1.0 transceiver)\n RTCPeerConnection.prototype._createTransceiver = function(kind, doNotAdd) {\n var hasBundleTransport = this.transceivers.length > 0;\n var transceiver = {\n track: null,\n iceGatherer: null,\n iceTransport: null,\n dtlsTransport: null,\n localCapabilities: null,\n remoteCapabilities: null,\n rtpSender: null,\n rtpReceiver: null,\n kind: kind,\n mid: null,\n sendEncodingParameters: null,\n recvEncodingParameters: null,\n stream: null,\n associatedRemoteMediaStreams: [],\n wantReceive: true\n };\n if (this.usingBundle && hasBundleTransport) {\n transceiver.iceTransport = this.transceivers[0].iceTransport;\n transceiver.dtlsTransport = this.transceivers[0].dtlsTransport;\n } else {\n var transports = this._createIceAndDtlsTransports();\n transceiver.iceTransport = transports.iceTransport;\n transceiver.dtlsTransport = transports.dtlsTransport;\n }\n if (!doNotAdd) {\n this.transceivers.push(transceiver);\n }\n return transceiver;\n };\n\n RTCPeerConnection.prototype.addTrack = function(track, stream) {\n if (this._isClosed) {\n throw makeError('InvalidStateError',\n 'Attempted to call addTrack on a closed peerconnection.');\n }\n\n var alreadyExists = this.transceivers.find(function(s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw makeError('InvalidAccessError', 'Track already exists.');\n }\n\n var transceiver;\n for (var i = 0; i < this.transceivers.length; i++) {\n if (!this.transceivers[i].track &&\n this.transceivers[i].kind === track.kind) {\n transceiver = this.transceivers[i];\n }\n }\n if (!transceiver) {\n transceiver = this._createTransceiver(track.kind);\n }\n\n this._maybeFireNegotiationNeeded();\n\n if (this.localStreams.indexOf(stream) === -1) {\n this.localStreams.push(stream);\n }\n\n transceiver.track = track;\n transceiver.stream = stream;\n transceiver.rtpSender = new window.RTCRtpSender(track,\n transceiver.dtlsTransport);\n return transceiver.rtpSender;\n };\n\n RTCPeerConnection.prototype.addStream = function(stream) {\n var pc = this;\n if (edgeVersion >= 15025) {\n stream.getTracks().forEach(function(track) {\n pc.addTrack(track, stream);\n });\n } else {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n // Fixed in 15025 (or earlier)\n var clonedStream = stream.clone();\n stream.getTracks().forEach(function(track, idx) {\n var clonedTrack = clonedStream.getTracks()[idx];\n track.addEventListener('enabled', function(event) {\n clonedTrack.enabled = event.enabled;\n });\n });\n clonedStream.getTracks().forEach(function(track) {\n pc.addTrack(track, clonedStream);\n });\n }\n };\n\n RTCPeerConnection.prototype.removeTrack = function(sender) {\n if (this._isClosed) {\n throw makeError('InvalidStateError',\n 'Attempted to call removeTrack on a closed peerconnection.');\n }\n\n if (!(sender instanceof window.RTCRtpSender)) {\n throw new TypeError('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.');\n }\n\n var transceiver = this.transceivers.find(function(t) {\n return t.rtpSender === sender;\n });\n\n if (!transceiver) {\n throw makeError('InvalidAccessError',\n 'Sender was not created by this connection.');\n }\n var stream = transceiver.stream;\n\n transceiver.rtpSender.stop();\n transceiver.rtpSender = null;\n transceiver.track = null;\n transceiver.stream = null;\n\n // remove the stream from the set of local streams\n var localStreams = this.transceivers.map(function(t) {\n return t.stream;\n });\n if (localStreams.indexOf(stream) === -1 &&\n this.localStreams.indexOf(stream) > -1) {\n this.localStreams.splice(this.localStreams.indexOf(stream), 1);\n }\n\n this._maybeFireNegotiationNeeded();\n };\n\n RTCPeerConnection.prototype.removeStream = function(stream) {\n var pc = this;\n stream.getTracks().forEach(function(track) {\n var sender = pc.getSenders().find(function(s) {\n return s.track === track;\n });\n if (sender) {\n pc.removeTrack(sender);\n }\n });\n };\n\n RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n\n RTCPeerConnection.prototype._createIceGatherer = function(sdpMLineIndex,\n usingBundle) {\n var pc = this;\n if (usingBundle && sdpMLineIndex > 0) {\n return this.transceivers[0].iceGatherer;\n } else if (this._iceGatherers.length) {\n return this._iceGatherers.shift();\n }\n var iceGatherer = new window.RTCIceGatherer({\n iceServers: this._config.iceServers,\n gatherPolicy: this._config.iceTransportPolicy\n });\n Object.defineProperty(iceGatherer, 'state',\n {value: 'new', writable: true}\n );\n\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = [];\n this.transceivers[sdpMLineIndex].bufferCandidates = function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n iceGatherer.state = end ? 'completed' : 'gathering';\n if (pc.transceivers[sdpMLineIndex].bufferedCandidateEvents !== null) {\n pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event);\n }\n };\n iceGatherer.addEventListener('localcandidate',\n this.transceivers[sdpMLineIndex].bufferCandidates);\n return iceGatherer;\n };\n\n // start gathering from an RTCIceGatherer.\n RTCPeerConnection.prototype._gather = function(mid, sdpMLineIndex) {\n var pc = this;\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n if (iceGatherer.onlocalcandidate) {\n return;\n }\n var bufferedCandidateEvents =\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents;\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = null;\n iceGatherer.removeEventListener('localcandidate',\n this.transceivers[sdpMLineIndex].bufferCandidates);\n iceGatherer.onlocalcandidate = function(evt) {\n if (pc.usingBundle && sdpMLineIndex > 0) {\n // if we know that we use bundle we can drop candidates with\n // ѕdpMLineIndex > 0. If we don't do this then our state gets\n // confused since we dispose the extra ice gatherer.\n return;\n }\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n var end = !cand || Object.keys(cand).length === 0;\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === 'new' || iceGatherer.state === 'gathering') {\n iceGatherer.state = 'completed';\n }\n } else {\n if (iceGatherer.state === 'new') {\n iceGatherer.state = 'gathering';\n }\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = 1;\n // also the usernameFragment. TODO: update SDP to take both variants.\n cand.ufrag = iceGatherer.getLocalParameters().usernameFragment;\n\n var serializedCandidate = SDPUtils.writeCandidate(cand);\n event.candidate = Object.assign(event.candidate,\n SDPUtils.parseCandidate(serializedCandidate));\n\n event.candidate.candidate = serializedCandidate;\n event.candidate.toJSON = function() {\n return {\n candidate: event.candidate.candidate,\n sdpMid: event.candidate.sdpMid,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n usernameFragment: event.candidate.usernameFragment\n };\n };\n }\n\n // update local description.\n var sections = SDPUtils.getMediaSections(pc._localDescription.sdp);\n if (!end) {\n sections[event.candidate.sdpMLineIndex] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n } else {\n sections[event.candidate.sdpMLineIndex] +=\n 'a=end-of-candidates\\r\\n';\n }\n pc._localDescription.sdp =\n SDPUtils.getDescription(pc._localDescription.sdp) +\n sections.join('');\n var complete = pc.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n if (pc.iceGatheringState !== 'gathering') {\n pc.iceGatheringState = 'gathering';\n pc._emitGatheringStateChange();\n }\n\n // Emit candidate. Also emit null candidate when all gatherers are\n // complete.\n if (!end) {\n pc._dispatchEvent('icecandidate', event);\n }\n if (complete) {\n pc._dispatchEvent('icecandidate', new Event('icecandidate'));\n pc.iceGatheringState = 'complete';\n pc._emitGatheringStateChange();\n }\n };\n\n // emit already gathered candidates.\n window.setTimeout(function() {\n bufferedCandidateEvents.forEach(function(e) {\n iceGatherer.onlocalcandidate(e);\n });\n }, 0);\n };\n\n // Create ICE transport and DTLS transport.\n RTCPeerConnection.prototype._createIceAndDtlsTransports = function() {\n var pc = this;\n var iceTransport = new window.RTCIceTransport(null);\n iceTransport.onicestatechange = function() {\n pc._updateIceConnectionState();\n pc._updateConnectionState();\n };\n\n var dtlsTransport = new window.RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n pc._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n Object.defineProperty(dtlsTransport, 'state',\n {value: 'failed', writable: true});\n pc._updateConnectionState();\n };\n\n return {\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Destroy ICE gatherer, ICE transport and DTLS transport.\n // Without triggering the callbacks.\n RTCPeerConnection.prototype._disposeIceAndDtlsTransports = function(\n sdpMLineIndex) {\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n if (iceGatherer) {\n delete iceGatherer.onlocalcandidate;\n delete this.transceivers[sdpMLineIndex].iceGatherer;\n }\n var iceTransport = this.transceivers[sdpMLineIndex].iceTransport;\n if (iceTransport) {\n delete iceTransport.onicestatechange;\n delete this.transceivers[sdpMLineIndex].iceTransport;\n }\n var dtlsTransport = this.transceivers[sdpMLineIndex].dtlsTransport;\n if (dtlsTransport) {\n delete dtlsTransport.ondtlsstatechange;\n delete dtlsTransport.onerror;\n delete this.transceivers[sdpMLineIndex].dtlsTransport;\n }\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName,\n compound: transceiver.rtcpParameters.compound\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver && params.codecs.length > 0) {\n // remove RTX field in Edge 14942\n if (transceiver.kind === 'video'\n && transceiver.recvEncodingParameters\n && edgeVersion < 15019) {\n transceiver.recvEncodingParameters.forEach(function(p) {\n delete p.rtx;\n });\n }\n if (transceiver.recvEncodingParameters.length) {\n params.encodings = transceiver.recvEncodingParameters;\n } else {\n params.encodings = [{}];\n }\n params.rtcp = {\n compound: transceiver.rtcpParameters.compound\n };\n if (transceiver.rtcpParameters.cname) {\n params.rtcp.cname = transceiver.rtcpParameters.cname;\n }\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n RTCPeerConnection.prototype.setLocalDescription = function(description) {\n var pc = this;\n\n // Note: pranswer is not supported.\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError',\n 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setLocalDescription',\n description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not set local ' + description.type +\n ' in state ' + pc.signalingState));\n }\n\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n pc.transceivers[sdpMLineIndex].localCapabilities = caps;\n });\n\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n });\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(pc._remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = pc.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n\n // treat bundle-only as not-rejected.\n var rejected = SDPUtils.isRejected(mediaSection) &&\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n\n if (!rejected && !transceiver.rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n\n if (!pc.usingBundle || sdpMLineIndex === 0) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n }\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n }\n\n // Calculate intersection of capabilities.\n var params = getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n pc._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n pc._localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n if (description.type === 'offer') {\n pc._updateSignalingState('have-local-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.setRemoteDescription = function(description) {\n var pc = this;\n\n // Note: pranswer is not supported.\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError',\n 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setRemoteDescription',\n description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not set remote ' + description.type +\n ' in state ' + pc.signalingState));\n }\n\n var streams = {};\n pc.remoteStreams.forEach(function(stream) {\n streams[stream.id] = stream;\n });\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n var usingBundle = SDPUtils.matchPrefix(sessionpart,\n 'a=group:BUNDLE ').length > 0;\n pc.usingBundle = usingBundle;\n var iceOptions = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-options:')[0];\n if (iceOptions) {\n pc.canTrickleIceCandidates = iceOptions.substr(14).split(' ')\n .indexOf('trickle') >= 0;\n } else {\n pc.canTrickleIceCandidates = false;\n }\n\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var kind = SDPUtils.getKind(mediaSection);\n // treat bundle-only as not-rejected.\n var rejected = SDPUtils.isRejected(mediaSection) &&\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n var protocol = lines[0].substr(2).split(' ')[2];\n\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n var remoteMsid = SDPUtils.parseMsid(mediaSection);\n\n var mid = SDPUtils.getMid(mediaSection) || SDPUtils.generateIdentifier();\n\n // Reject datachannels which are not implemented yet.\n if (rejected || (kind === 'application' && (protocol === 'DTLS/SCTP' ||\n protocol === 'UDP/DTLS/SCTP'))) {\n // TODO: this is dangerous in the case where a non-rejected m-line\n // becomes rejected.\n pc.transceivers[sdpMLineIndex] = {\n mid: mid,\n kind: kind,\n protocol: protocol,\n rejected: true\n };\n return;\n }\n\n if (!rejected && pc.transceivers[sdpMLineIndex] &&\n pc.transceivers[sdpMLineIndex].rejected) {\n // recycle a rejected transceiver.\n pc.transceivers[sdpMLineIndex] = pc._createTransceiver(kind, true);\n }\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var rtcpParameters = SDPUtils.parseRtcpParameters(mediaSection);\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates', sessionpart).length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === 1;\n });\n\n // Check if we can use BUNDLE and dispose transports.\n if ((description.type === 'offer' || description.type === 'answer') &&\n !rejected && usingBundle && sdpMLineIndex > 0 &&\n pc.transceivers[sdpMLineIndex]) {\n pc._disposeIceAndDtlsTransports(sdpMLineIndex);\n pc.transceivers[sdpMLineIndex].iceGatherer =\n pc.transceivers[0].iceGatherer;\n pc.transceivers[sdpMLineIndex].iceTransport =\n pc.transceivers[0].iceTransport;\n pc.transceivers[sdpMLineIndex].dtlsTransport =\n pc.transceivers[0].dtlsTransport;\n if (pc.transceivers[sdpMLineIndex].rtpSender) {\n pc.transceivers[sdpMLineIndex].rtpSender.setTransport(\n pc.transceivers[0].dtlsTransport);\n }\n if (pc.transceivers[sdpMLineIndex].rtpReceiver) {\n pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(\n pc.transceivers[0].dtlsTransport);\n }\n }\n if (description.type === 'offer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex] ||\n pc._createTransceiver(kind);\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\n usingBundle);\n }\n\n if (cands.length && transceiver.iceTransport.state === 'new') {\n if (isComplete && (!usingBundle || sdpMLineIndex === 0)) {\n transceiver.iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function(candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n localCapabilities = window.RTCRtpReceiver.getCapabilities(kind);\n\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n }\n\n sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n var isNewTrack = false;\n if (direction === 'sendrecv' || direction === 'sendonly') {\n isNewTrack = !transceiver.rtpReceiver;\n rtpReceiver = transceiver.rtpReceiver ||\n new window.RTCRtpReceiver(transceiver.dtlsTransport, kind);\n\n if (isNewTrack) {\n var stream;\n track = rtpReceiver.track;\n // FIXME: does not work with Plan B.\n if (remoteMsid && remoteMsid.stream === '-') {\n // no-op. a stream id of '-' means: no associated stream.\n } else if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n Object.defineProperty(streams[remoteMsid.stream], 'id', {\n get: function() {\n return remoteMsid.stream;\n }\n });\n }\n Object.defineProperty(track, 'id', {\n get: function() {\n return remoteMsid.track;\n }\n });\n stream = streams[remoteMsid.stream];\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n stream = streams.default;\n }\n if (stream) {\n addTrackToStreamAndFireEvent(track, stream);\n transceiver.associatedRemoteMediaStreams.push(stream);\n }\n receiverList.push([track, rtpReceiver, stream]);\n }\n } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track) {\n transceiver.associatedRemoteMediaStreams.forEach(function(s) {\n var nativeTrack = s.getTracks().find(function(t) {\n return t.id === transceiver.rtpReceiver.track.id;\n });\n if (nativeTrack) {\n removeTrackFromStreamAndFireEvent(nativeTrack, s);\n }\n });\n transceiver.associatedRemoteMediaStreams = [];\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.remoteCapabilities = remoteCapabilities;\n transceiver.rtpReceiver = rtpReceiver;\n transceiver.rtcpParameters = rtcpParameters;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n transceiver.recvEncodingParameters = recvEncodingParameters;\n\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n pc._transceive(pc.transceivers[sdpMLineIndex],\n false,\n isNewTrack);\n } else if (description.type === 'answer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n pc.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n pc.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n pc.transceivers[sdpMLineIndex].rtcpParameters = rtcpParameters;\n\n if (cands.length && iceTransport.state === 'new') {\n if ((isIceLite || isComplete) &&\n (!usingBundle || sdpMLineIndex === 0)) {\n iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function(candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n if (!usingBundle || sdpMLineIndex === 0) {\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n }\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n }\n\n // If the offer contained RTX but the answer did not,\n // remove RTX from sendEncodingParameters.\n var commonCapabilities = getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n var hasRtx = commonCapabilities.codecs.filter(function(c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n pc._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n }\n addTrackToStreamAndFireEvent(track, streams[remoteMsid.stream]);\n receiverList.push([track, rtpReceiver, streams[remoteMsid.stream]]);\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n addTrackToStreamAndFireEvent(track, streams.default);\n receiverList.push([track, rtpReceiver, streams.default]);\n }\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n if (pc._dtlsRole === undefined) {\n pc._dtlsRole = description.type === 'offer' ? 'active' : 'passive';\n }\n\n pc._remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n if (description.type === 'offer') {\n pc._updateSignalingState('have-remote-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n Object.keys(streams).forEach(function(sid) {\n var stream = streams[sid];\n if (stream.getTracks().length) {\n if (pc.remoteStreams.indexOf(stream) === -1) {\n pc.remoteStreams.push(stream);\n var event = new Event('addstream');\n event.stream = stream;\n window.setTimeout(function() {\n pc._dispatchEvent('addstream', event);\n });\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n if (stream.id !== item[2].id) {\n return;\n }\n fireAddTrack(pc, track, receiver, [stream]);\n });\n }\n });\n receiverList.forEach(function(item) {\n if (item[2]) {\n return;\n }\n fireAddTrack(pc, item[0], item[1], []);\n });\n\n // check whether addIceCandidate({}) was called within four seconds after\n // setRemoteDescription.\n window.setTimeout(function() {\n if (!(pc && pc.transceivers)) {\n return;\n }\n pc.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport &&\n transceiver.iceTransport.state === 'new' &&\n transceiver.iceTransport.getRemoteCandidates().length > 0) {\n console.warn('Timeout for addRemoteCandidate. Consider sending ' +\n 'an end-of-candidates notification');\n transceiver.iceTransport.addRemoteCandidate({});\n }\n });\n }, 4000);\n\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._isClosed = true;\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n RTCPeerConnection.prototype._updateSignalingState = function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this._dispatchEvent('signalingstatechange', event);\n };\n\n // Determine whether to fire the negotiationneeded event.\n RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function() {\n var pc = this;\n if (this.signalingState !== 'stable' || this.needNegotiation === true) {\n return;\n }\n this.needNegotiation = true;\n window.setTimeout(function() {\n if (pc.needNegotiation) {\n pc.needNegotiation = false;\n var event = new Event('negotiationneeded');\n pc._dispatchEvent('negotiationneeded', event);\n }\n }, 0);\n };\n\n // Update the ice connection state.\n RTCPeerConnection.prototype._updateIceConnectionState = function() {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport && !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n }\n });\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.checking > 0) {\n newState = 'checking';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n } else if (states.completed > 0) {\n newState = 'completed';\n }\n\n if (newState !== this.iceConnectionState) {\n this.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this._dispatchEvent('iceconnectionstatechange', event);\n }\n };\n\n // Update the connection state.\n RTCPeerConnection.prototype._updateConnectionState = function() {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport && transceiver.dtlsTransport &&\n !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n }\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n }\n\n if (newState !== this.connectionState) {\n this.connectionState = newState;\n var event = new Event('connectionstatechange');\n this._dispatchEvent('connectionstatechange', event);\n }\n };\n\n RTCPeerConnection.prototype.createOffer = function() {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createOffer after close'));\n }\n\n var numAudioTracks = pc.transceivers.filter(function(t) {\n return t.kind === 'audio';\n }).length;\n var numVideoTracks = pc.transceivers.filter(function(t) {\n return t.kind === 'video';\n }).length;\n\n // Determine number of audio and video tracks we need to send/recv.\n var offerOptions = arguments[0];\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n if (offerOptions.offerToReceiveAudio === true) {\n numAudioTracks = 1;\n } else if (offerOptions.offerToReceiveAudio === false) {\n numAudioTracks = 0;\n } else {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n if (offerOptions.offerToReceiveVideo === true) {\n numVideoTracks = 1;\n } else if (offerOptions.offerToReceiveVideo === false) {\n numVideoTracks = 0;\n } else {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n }\n\n pc.transceivers.forEach(function(transceiver) {\n if (transceiver.kind === 'audio') {\n numAudioTracks--;\n if (numAudioTracks < 0) {\n transceiver.wantReceive = false;\n }\n } else if (transceiver.kind === 'video') {\n numVideoTracks--;\n if (numVideoTracks < 0) {\n transceiver.wantReceive = false;\n }\n }\n });\n\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n pc._createTransceiver('audio');\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n pc._createTransceiver('video');\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\n pc._sdpSessionVersion++);\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = transceiver.track;\n var kind = transceiver.kind;\n var mid = transceiver.mid || SDPUtils.generateIdentifier();\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\n pc.usingBundle);\n }\n\n var localCapabilities = window.RTCRtpSender.getCapabilities(kind);\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n }\n localCapabilities.codecs.forEach(function(codec) {\n // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552\n // by adding level-asymmetry-allowed=1\n if (codec.name === 'H264' &&\n codec.parameters['level-asymmetry-allowed'] === undefined) {\n codec.parameters['level-asymmetry-allowed'] = '1';\n }\n\n // for subsequent offers, we might have to re-use the payload\n // type of the last offer.\n if (transceiver.remoteCapabilities &&\n transceiver.remoteCapabilities.codecs) {\n transceiver.remoteCapabilities.codecs.forEach(function(remoteCodec) {\n if (codec.name.toLowerCase() === remoteCodec.name.toLowerCase() &&\n codec.clockRate === remoteCodec.clockRate) {\n codec.preferredPayloadType = remoteCodec.payloadType;\n }\n });\n }\n });\n localCapabilities.headerExtensions.forEach(function(hdrExt) {\n var remoteExtensions = transceiver.remoteCapabilities &&\n transceiver.remoteCapabilities.headerExtensions || [];\n remoteExtensions.forEach(function(rHdrExt) {\n if (hdrExt.uri === rHdrExt.uri) {\n hdrExt.id = rHdrExt.id;\n }\n });\n });\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n // add RTX\n if (edgeVersion >= 15019 && kind === 'video' &&\n !sendEncodingParameters[0].rtx) {\n sendEncodingParameters[0].rtx = {\n ssrc: sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n\n if (transceiver.wantReceive) {\n transceiver.rtpReceiver = new window.RTCRtpReceiver(\n transceiver.dtlsTransport, kind);\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n });\n\n // always offer BUNDLE and dispose on return if not supported.\n if (pc._config.bundlePolicy !== 'max-compat') {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n sdp += 'a=ice-options:trickle\\r\\n';\n\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n sdp += writeMediaSection(transceiver, transceiver.localCapabilities,\n 'offer', transceiver.stream, pc._dtlsRole);\n sdp += 'a=rtcp-rsize\\r\\n';\n\n if (transceiver.iceGatherer && pc.iceGatheringState !== 'new' &&\n (sdpMLineIndex === 0 || !pc.usingBundle)) {\n transceiver.iceGatherer.getLocalCandidates().forEach(function(cand) {\n cand.component = 1;\n sdp += 'a=' + SDPUtils.writeCandidate(cand) + '\\r\\n';\n });\n\n if (transceiver.iceGatherer.state === 'completed') {\n sdp += 'a=end-of-candidates\\r\\n';\n }\n }\n });\n\n var desc = new window.RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.createAnswer = function() {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createAnswer after close'));\n }\n\n if (!(pc.signalingState === 'have-remote-offer' ||\n pc.signalingState === 'have-local-pranswer')) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createAnswer in signalingState ' + pc.signalingState));\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\n pc._sdpSessionVersion++);\n if (pc.usingBundle) {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n sdp += 'a=ice-options:trickle\\r\\n';\n\n var mediaSectionsInOffer = SDPUtils.getMediaSections(\n pc._remoteDescription.sdp).length;\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n if (sdpMLineIndex + 1 > mediaSectionsInOffer) {\n return;\n }\n if (transceiver.rejected) {\n if (transceiver.kind === 'application') {\n if (transceiver.protocol === 'DTLS/SCTP') { // legacy fmt\n sdp += 'm=application 0 DTLS/SCTP 5000\\r\\n';\n } else {\n sdp += 'm=application 0 ' + transceiver.protocol +\n ' webrtc-datachannel\\r\\n';\n }\n } else if (transceiver.kind === 'audio') {\n sdp += 'm=audio 0 UDP/TLS/RTP/SAVPF 0\\r\\n' +\n 'a=rtpmap:0 PCMU/8000\\r\\n';\n } else if (transceiver.kind === 'video') {\n sdp += 'm=video 0 UDP/TLS/RTP/SAVPF 120\\r\\n' +\n 'a=rtpmap:120 VP8/90000\\r\\n';\n }\n sdp += 'c=IN IP4 0.0.0.0\\r\\n' +\n 'a=inactive\\r\\n' +\n 'a=mid:' + transceiver.mid + '\\r\\n';\n return;\n }\n\n // FIXME: look at direction.\n if (transceiver.stream) {\n var localTrack;\n if (transceiver.kind === 'audio') {\n localTrack = transceiver.stream.getAudioTracks()[0];\n } else if (transceiver.kind === 'video') {\n localTrack = transceiver.stream.getVideoTracks()[0];\n }\n if (localTrack) {\n // add RTX\n if (edgeVersion >= 15019 && transceiver.kind === 'video' &&\n !transceiver.sendEncodingParameters[0].rtx) {\n transceiver.sendEncodingParameters[0].rtx = {\n ssrc: transceiver.sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n }\n\n // Calculate intersection of capabilities.\n var commonCapabilities = getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n var hasRtx = commonCapabilities.codecs.filter(function(c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n sdp += writeMediaSection(transceiver, commonCapabilities,\n 'answer', transceiver.stream, pc._dtlsRole);\n if (transceiver.rtcpParameters &&\n transceiver.rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n });\n\n var desc = new window.RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n var pc = this;\n var sections;\n if (candidate && !(candidate.sdpMLineIndex !== undefined ||\n candidate.sdpMid)) {\n return Promise.reject(new TypeError('sdpMLineIndex or sdpMid required'));\n }\n\n // TODO: needs to go into ops queue.\n return new Promise(function(resolve, reject) {\n if (!pc._remoteDescription) {\n return reject(makeError('InvalidStateError',\n 'Can not add ICE candidate without a remote description'));\n } else if (!candidate || candidate.candidate === '') {\n for (var j = 0; j < pc.transceivers.length; j++) {\n if (pc.transceivers[j].rejected) {\n continue;\n }\n pc.transceivers[j].iceTransport.addRemoteCandidate({});\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[j] += 'a=end-of-candidates\\r\\n';\n pc._remoteDescription.sdp =\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\n sections.join('');\n if (pc.usingBundle) {\n break;\n }\n }\n } else {\n var sdpMLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < pc.transceivers.length; i++) {\n if (pc.transceivers[i].mid === candidate.sdpMid) {\n sdpMLineIndex = i;\n break;\n }\n }\n }\n var transceiver = pc.transceivers[sdpMLineIndex];\n if (transceiver) {\n if (transceiver.rejected) {\n return resolve();\n }\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) {\n return resolve();\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component && cand.component !== 1) {\n return resolve();\n }\n // when using bundle, avoid adding candidates to the wrong\n // ice transport. And avoid adding candidates added in the SDP.\n if (sdpMLineIndex === 0 || (sdpMLineIndex > 0 &&\n transceiver.iceTransport !== pc.transceivers[0].iceTransport)) {\n if (!maybeAddCandidate(transceiver.iceTransport, cand)) {\n return reject(makeError('OperationError',\n 'Can not add ICE candidate'));\n }\n }\n\n // update the remoteDescription.\n var candidateString = candidate.candidate.trim();\n if (candidateString.indexOf('a=') === 0) {\n candidateString = candidateString.substr(2);\n }\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[sdpMLineIndex] += 'a=' +\n (cand.type ? candidateString : 'end-of-candidates')\n + '\\r\\n';\n pc._remoteDescription.sdp =\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\n sections.join('');\n } else {\n return reject(makeError('OperationError',\n 'Can not add ICE candidate'));\n }\n }\n resolve();\n });\n };\n\n RTCPeerConnection.prototype.getStats = function(selector) {\n if (selector && selector instanceof window.MediaStreamTrack) {\n var senderOrReceiver = null;\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.rtpSender &&\n transceiver.rtpSender.track === selector) {\n senderOrReceiver = transceiver.rtpSender;\n } else if (transceiver.rtpReceiver &&\n transceiver.rtpReceiver.track === selector) {\n senderOrReceiver = transceiver.rtpReceiver;\n }\n });\n if (!senderOrReceiver) {\n throw makeError('InvalidAccessError', 'Invalid selector.');\n }\n return senderOrReceiver.getStats();\n }\n\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n return Promise.all(promises).then(function(allStats) {\n var results = new Map();\n allStats.forEach(function(stats) {\n stats.forEach(function(stat) {\n results.set(stat.id, stat);\n });\n });\n return results;\n });\n };\n\n // fix low-level stat names and return Map instead of object.\n var ortcObjects = ['RTCRtpSender', 'RTCRtpReceiver', 'RTCIceGatherer',\n 'RTCIceTransport', 'RTCDtlsTransport'];\n ortcObjects.forEach(function(ortcObjectName) {\n var obj = window[ortcObjectName];\n if (obj && obj.prototype && obj.prototype.getStats) {\n var nativeGetstats = obj.prototype.getStats;\n obj.prototype.getStats = function() {\n return nativeGetstats.apply(this)\n .then(function(nativeStats) {\n var mapStats = new Map();\n Object.keys(nativeStats).forEach(function(id) {\n nativeStats[id].type = fixStatsType(nativeStats[id]);\n mapStats.set(id, nativeStats[id]);\n });\n return mapStats;\n });\n };\n }\n });\n\n // legacy callback shims. Should be moved to adapter.js some days.\n var methods = ['createOffer', 'createAnswer'];\n methods.forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[0] === 'function' ||\n typeof args[1] === 'function') { // legacy\n return nativeMethod.apply(this, [arguments[2]])\n .then(function(description) {\n if (typeof args[0] === 'function') {\n args[0].apply(null, [description]);\n }\n }, function(error) {\n if (typeof args[1] === 'function') {\n args[1].apply(null, [error]);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n methods = ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'];\n methods.forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[1] === 'function' ||\n typeof args[2] === 'function') { // legacy\n return nativeMethod.apply(this, arguments)\n .then(function() {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n }, function(error) {\n if (typeof args[2] === 'function') {\n args[2].apply(null, [error]);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // getStats is special. It doesn't have a spec legacy method yet we support\n // getStats(something, cb) without error callbacks.\n ['getStats'].forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[1] === 'function') {\n return nativeMethod.apply(this, arguments)\n .then(function() {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n return RTCPeerConnection;\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n const shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(e => Promise.reject(shimError_(e)));\n };\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window) {\n if (!('getDisplayMedia' in window.navigator)) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n window.navigator.getDisplayMedia.bind(window.navigator);\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nimport {filterIceServers} from './filtericeservers';\nimport shimRTCPeerConnection from 'rtcpeerconnection-shim';\n\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimPeerConnection(window, browserDetails) {\n if (window.RTCIceGatherer) {\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n return args;\n };\n }\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function RTCSessionDescription(args) {\n return args;\n };\n }\n // this adds an additional event listener to MediaStrackTrack that signals\n // when a tracks enabled property was changed. Workaround for a bug in\n // addStream, see below. No longer required in 15025+\n if (browserDetails.version < 15025) {\n const origMSTEnabled = Object.getOwnPropertyDescriptor(\n window.MediaStreamTrack.prototype, 'enabled');\n Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', {\n set(value) {\n origMSTEnabled.set.call(this, value);\n const ev = new Event('enabled');\n ev.enabled = value;\n this.dispatchEvent(ev);\n }\n });\n }\n }\n\n // ORTC defines the DTMF sender a bit different.\n // https://github.com/w3c/ortc/issues/714\n if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = new window.RTCDtmfSender(this);\n } else if (this.track.kind === 'video') {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n // Edge currently only implements the RTCDtmfSender, not the\n // RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*\n if (window.RTCDtmfSender && !window.RTCDTMFSender) {\n window.RTCDTMFSender = window.RTCDtmfSender;\n }\n\n const RTCPeerConnectionShim = shimRTCPeerConnection(window,\n browserDetails.version);\n window.RTCPeerConnection = function RTCPeerConnection(config) {\n if (config && config.iceServers) {\n config.iceServers = filterIceServers(config.iceServers,\n browserDetails.version);\n utils.log('ICE servers after filtering:', config.iceServers);\n }\n return new RTCPeerConnectionShim(config);\n };\n window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype;\n}\n\nexport function shimReplaceTrack(window) {\n // ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614\n if (window.RTCRtpSender &&\n !('replaceTrack' in window.RTCRtpSender.prototype)) {\n window.RTCRtpSender.prototype.replaceTrack =\n window.RTCRtpSender.prototype.setTrack;\n }\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n const MediaStreamTrack = window && window.MediaStreamTrack;\n\n navigator.getUserMedia = function(constraints, onSuccess, onError) {\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n utils.deprecated('navigator.getUserMedia',\n 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n\n if (!(browserDetails.version > 55 &&\n 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n const nativeGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n if (typeof c === 'object' && typeof c.audio === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeGetUserMedia(c);\n };\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\n const nativeGetSettings = MediaStreamTrack.prototype.getSettings;\n MediaStreamTrack.prototype.getSettings = function() {\n const obj = nativeGetSettings.apply(this, arguments);\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\n return obj;\n };\n }\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\n const nativeApplyConstraints =\n MediaStreamTrack.prototype.applyConstraints;\n MediaStreamTrack.prototype.applyConstraints = function(c) {\n if (this.kind === 'audio' && typeof c === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c, 'autoGainControl', 'mozAutoGainControl');\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeApplyConstraints.apply(this, [c]);\n };\n }\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window, preferredMediaSource) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n if (!(constraints && constraints.video)) {\n const err = new DOMException('getDisplayMedia without video ' +\n 'constraints is undefined');\n err.name = 'NotFoundError';\n // from https://heycam.github.io/webidl/#idl-DOMException-error-names\n err.code = 8;\n return Promise.reject(err);\n }\n if (constraints.video === true) {\n constraints.video = {mediaSource: preferredMediaSource};\n } else {\n constraints.video.mediaSource = preferredMediaSource;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCTrackEvent &&\n ('receiver' in window.RTCTrackEvent.prototype) &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (typeof window !== 'object' ||\n !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.mozRTCPeerConnection;\n }\n\n if (browserDetails.version < 53) {\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n\n const modernStatsTypes = {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n };\n\n const nativeGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n return nativeGetStats.apply(this, [selector || null])\n .then(stats => {\n if (browserDetails.version < 53 && !onSucc) {\n // Shim only promise getStats with spec-hyphens in type names\n // Leave callback version alone; misc old uses of forEach before Map\n try {\n stats.forEach(stat => {\n stat.type = modernStatsTypes[stat.type] || stat.type;\n });\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\n stats.forEach((stat, i) => {\n stats.set(i, Object.assign({}, stat, {\n type: modernStatsTypes[stat.type] || stat.type\n }));\n });\n }\n }\n return stats;\n })\n .then(onSucc, onErr);\n };\n}\n\nexport function shimSenderGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\n return;\n }\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n return this.track ? this._pc.getStats(this.track) :\n Promise.resolve(new Map());\n };\n}\n\nexport function shimReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\n return;\n }\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n return this._pc.getStats(this.track);\n };\n}\n\nexport function shimRemoveStream(window) {\n if (!window.RTCPeerConnection ||\n 'removeStream' in window.RTCPeerConnection.prototype) {\n return;\n }\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n utils.deprecated('removeStream', 'removeTrack');\n this.getSenders().forEach(sender => {\n if (sender.track && stream.getTracks().includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n}\n\nexport function shimRTCDataChannel(window) {\n // rename DataChannel to RTCDataChannel (native fix in FF60):\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\n if (window.DataChannel && !window.RTCDataChannel) {\n window.RTCDataChannel = window.DataChannel;\n }\n}\n\nexport function shimAddTransceiver(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver;\n if (origAddTransceiver) {\n window.RTCPeerConnection.prototype.addTransceiver =\n function addTransceiver() {\n this.setParametersPromises = [];\n const initParameters = arguments[1];\n const shouldPerformCheck = initParameters &&\n 'sendEncodings' in initParameters;\n if (shouldPerformCheck) {\n // If sendEncodings params are provided, validate grammar\n initParameters.sendEncodings.forEach((encodingParam) => {\n if ('rid' in encodingParam) {\n const ridRegex = /^[a-z0-9]{0,16}$/i;\n if (!ridRegex.test(encodingParam.rid)) {\n throw new TypeError('Invalid RID value provided.');\n }\n }\n if ('scaleResolutionDownBy' in encodingParam) {\n if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) {\n throw new RangeError('scale_resolution_down_by must be >= 1.0');\n }\n }\n if ('maxFramerate' in encodingParam) {\n if (!(parseFloat(encodingParam.maxFramerate) >= 0)) {\n throw new RangeError('max_framerate must be >= 0.0');\n }\n }\n });\n }\n const transceiver = origAddTransceiver.apply(this, arguments);\n if (shouldPerformCheck) {\n // Check if the init options were applied. If not we do this in an\n // asynchronous way and save the promise reference in a global object.\n // This is an ugly hack, but at the same time is way more robust than\n // checking the sender parameters before and after the createOffer\n // Also note that after the createoffer we are not 100% sure that\n // the params were asynchronously applied so we might miss the\n // opportunity to recreate offer.\n const {sender} = transceiver;\n const params = sender.getParameters();\n if (!('encodings' in params) ||\n // Avoid being fooled by patched getParameters() below.\n (params.encodings.length === 1 &&\n Object.keys(params.encodings[0]).length === 0)) {\n params.encodings = initParameters.sendEncodings;\n sender.sendEncodings = initParameters.sendEncodings;\n this.setParametersPromises.push(sender.setParameters(params)\n .then(() => {\n delete sender.sendEncodings;\n }).catch(() => {\n delete sender.sendEncodings;\n })\n );\n }\n }\n return transceiver;\n };\n }\n}\n\nexport function shimGetParameters(window) {\n if (!(typeof window === 'object' && window.RTCRtpSender)) {\n return;\n }\n const origGetParameters = window.RTCRtpSender.prototype.getParameters;\n if (origGetParameters) {\n window.RTCRtpSender.prototype.getParameters =\n function getParameters() {\n const params = origGetParameters.apply(this, arguments);\n if (!('encodings' in params)) {\n params.encodings = [].concat(this.sendEncodings || [{}]);\n }\n return params;\n };\n }\n}\n\nexport function shimCreateOffer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer = function createOffer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateOffer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimCreateAnswer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer;\n window.RTCPeerConnection.prototype.createAnswer = function createAnswer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateAnswer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateAnswer.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nimport * as utils from '../utils';\n\nexport function shimLocalStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n return this._localStreams;\n };\n }\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\n const _addTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n // Try to emulate Chrome's behaviour of adding in audio-video order.\n // Safari orders by track id.\n stream.getAudioTracks().forEach(track => _addTrack.call(this, track,\n stream));\n stream.getVideoTracks().forEach(track => _addTrack.call(this, track,\n stream));\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, ...streams) {\n if (streams) {\n streams.forEach((stream) => {\n if (!this._localStreams) {\n this._localStreams = [stream];\n } else if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n });\n }\n return _addTrack.apply(this, arguments);\n };\n }\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n const index = this._localStreams.indexOf(stream);\n if (index === -1) {\n return;\n }\n this._localStreams.splice(index, 1);\n const tracks = stream.getTracks();\n this.getSenders().forEach(sender => {\n if (tracks.includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n }\n}\n\nexport function shimRemoteStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getRemoteStreams =\n function getRemoteStreams() {\n return this._remoteStreams ? this._remoteStreams : [];\n };\n }\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\n get() {\n return this._onaddstream;\n },\n set(f) {\n if (this._onaddstream) {\n this.removeEventListener('addstream', this._onaddstream);\n this.removeEventListener('track', this._onaddstreampoly);\n }\n this.addEventListener('addstream', this._onaddstream = f);\n this.addEventListener('track', this._onaddstreampoly = (e) => {\n e.streams.forEach(stream => {\n if (!this._remoteStreams) {\n this._remoteStreams = [];\n }\n if (this._remoteStreams.includes(stream)) {\n return;\n }\n this._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n this.dispatchEvent(event);\n });\n });\n }\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n const pc = this;\n if (!this._onaddstreampoly) {\n this.addEventListener('track', this._onaddstreampoly = function(e) {\n e.streams.forEach(stream => {\n if (!pc._remoteStreams) {\n pc._remoteStreams = [];\n }\n if (pc._remoteStreams.indexOf(stream) >= 0) {\n return;\n }\n pc._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n pc.dispatchEvent(event);\n });\n });\n }\n return origSetRemoteDescription.apply(pc, arguments);\n };\n }\n}\n\nexport function shimCallbacksAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n const prototype = window.RTCPeerConnection.prototype;\n const origCreateOffer = prototype.createOffer;\n const origCreateAnswer = prototype.createAnswer;\n const setLocalDescription = prototype.setLocalDescription;\n const setRemoteDescription = prototype.setRemoteDescription;\n const addIceCandidate = prototype.addIceCandidate;\n\n prototype.createOffer =\n function createOffer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateOffer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.createAnswer =\n function createAnswer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateAnswer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n let withCallback = function(description, successCallback, failureCallback) {\n const promise = setLocalDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setLocalDescription = withCallback;\n\n withCallback = function(description, successCallback, failureCallback) {\n const promise = setRemoteDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setRemoteDescription = withCallback;\n\n withCallback = function(candidate, successCallback, failureCallback) {\n const promise = addIceCandidate.apply(this, [candidate]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.addIceCandidate = withCallback;\n}\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // shim not needed in Safari 12.1\n const mediaDevices = navigator.mediaDevices;\n const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n navigator.mediaDevices.getUserMedia = (constraints) => {\n return _getUserMedia(shimConstraints(constraints));\n };\n }\n\n if (!navigator.getUserMedia && navigator.mediaDevices &&\n navigator.mediaDevices.getUserMedia) {\n navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) {\n navigator.mediaDevices.getUserMedia(constraints)\n .then(cb, errcb);\n }.bind(navigator);\n }\n}\n\nexport function shimConstraints(constraints) {\n if (constraints && constraints.video !== undefined) {\n return Object.assign({},\n constraints,\n {video: utils.compactObject(constraints.video)}\n );\n }\n\n return constraints;\n}\n\nexport function shimRTCIceServerUrls(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\n const OrigPeerConnection = window.RTCPeerConnection;\n window.RTCPeerConnection =\n function RTCPeerConnection(pcConfig, pcConstraints) {\n if (pcConfig && pcConfig.iceServers) {\n const newIceServers = [];\n for (let i = 0; i < pcConfig.iceServers.length; i++) {\n let server = pcConfig.iceServers[i];\n if (!server.hasOwnProperty('urls') &&\n server.hasOwnProperty('url')) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n server = JSON.parse(JSON.stringify(server));\n server.urls = server.url;\n delete server.url;\n newIceServers.push(server);\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n return new OrigPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype;\n // wrap static methods. Currently just generateCertificate.\n if ('generateCertificate' in OrigPeerConnection) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get() {\n return OrigPeerConnection.generateCertificate;\n }\n });\n }\n}\n\nexport function shimTrackEventTransceiver(window) {\n // Add event.transceiver member over deprecated event.receiver\n if (typeof window === 'object' && window.RTCTrackEvent &&\n 'receiver' in window.RTCTrackEvent.prototype &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimCreateOfferLegacy(window) {\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer =\n function createOffer(offerOptions) {\n if (offerOptions) {\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveAudio =\n !!offerOptions.offerToReceiveAudio;\n }\n const audioTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'audio');\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\n if (audioTransceiver.direction === 'sendrecv') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('sendonly');\n } else {\n audioTransceiver.direction = 'sendonly';\n }\n } else if (audioTransceiver.direction === 'recvonly') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('inactive');\n } else {\n audioTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveAudio === true &&\n !audioTransceiver) {\n this.addTransceiver('audio');\n }\n\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveVideo =\n !!offerOptions.offerToReceiveVideo;\n }\n const videoTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'video');\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\n if (videoTransceiver.direction === 'sendrecv') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('sendonly');\n } else {\n videoTransceiver.direction = 'sendonly';\n }\n } else if (videoTransceiver.direction === 'recvonly') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('inactive');\n } else {\n videoTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveVideo === true &&\n !videoTransceiver) {\n this.addTransceiver('video');\n }\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimAudioContext(window) {\n if (typeof window !== 'object' || window.AudioContext) {\n return;\n }\n window.AudioContext = window.webkitAudioContext;\n}\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport SDPUtils from 'sdp';\nimport * as utils from './utils';\n\nexport function shimRTCIceCandidate(window) {\n // foundation is arbitrarily chosen as an indicator for full support for\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\n if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in\n window.RTCIceCandidate.prototype)) {\n return;\n }\n\n const NativeRTCIceCandidate = window.RTCIceCandidate;\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n // Remove the a= which shouldn't be part of the candidate string.\n if (typeof args === 'object' && args.candidate &&\n args.candidate.indexOf('a=') === 0) {\n args = JSON.parse(JSON.stringify(args));\n args.candidate = args.candidate.substr(2);\n }\n\n if (args.candidate && args.candidate.length) {\n // Augment the native candidate with the parsed fields.\n const nativeCandidate = new NativeRTCIceCandidate(args);\n const parsedCandidate = SDPUtils.parseCandidate(args.candidate);\n const augmentedCandidate = Object.assign(nativeCandidate,\n parsedCandidate);\n\n // Add a serializer that does not serialize the extra attributes.\n augmentedCandidate.toJSON = function toJSON() {\n return {\n candidate: augmentedCandidate.candidate,\n sdpMid: augmentedCandidate.sdpMid,\n sdpMLineIndex: augmentedCandidate.sdpMLineIndex,\n usernameFragment: augmentedCandidate.usernameFragment,\n };\n };\n return augmentedCandidate;\n }\n return new NativeRTCIceCandidate(args);\n };\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;\n\n // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n utils.wrapPeerConnectionEvent(window, 'icecandidate', e => {\n if (e.candidate) {\n Object.defineProperty(e, 'candidate', {\n value: new window.RTCIceCandidate(e.candidate),\n writable: 'false'\n });\n }\n return e;\n });\n}\n\nexport function shimMaxMessageSize(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n }\n });\n }\n\n const sctpInDescription = function(description) {\n if (!description || !description.sdp) {\n return false;\n }\n const sections = SDPUtils.splitSections(description.sdp);\n sections.shift();\n return sections.some(mediaSection => {\n const mLine = SDPUtils.parseMLine(mediaSection);\n return mLine && mLine.kind === 'application'\n && mLine.protocol.indexOf('SCTP') !== -1;\n });\n };\n\n const getRemoteFirefoxVersion = function(description) {\n // TODO: Is there a better solution for detecting Firefox?\n const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\n if (match === null || match.length < 2) {\n return -1;\n }\n const version = parseInt(match[1], 10);\n // Test for NaN (yes, this is ugly)\n return version !== version ? -1 : version;\n };\n\n const getCanSendMaxMessageSize = function(remoteIsFirefox) {\n // Every implementation we know can send at least 64 KiB.\n // Note: Although Chrome is technically able to send up to 256 KiB, the\n // data does not reach the other peer reliably.\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\n let canSendMaxMessageSize = 65536;\n if (browserDetails.browser === 'firefox') {\n if (browserDetails.version < 57) {\n if (remoteIsFirefox === -1) {\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\n // fragmentation.\n canSendMaxMessageSize = 16384;\n } else {\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\n // messages. Thus, supporting ~2 GiB when sending.\n canSendMaxMessageSize = 2147483637;\n }\n } else if (browserDetails.version < 60) {\n // Currently, all FF >= 57 will reset the remote maximum message size\n // to the default value when a data channel is created at a later\n // stage. :(\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n canSendMaxMessageSize =\n browserDetails.version === 57 ? 65535 : 65536;\n } else {\n // FF >= 60 supports sending ~2 GiB\n canSendMaxMessageSize = 2147483637;\n }\n }\n return canSendMaxMessageSize;\n };\n\n const getMaxMessageSize = function(description, remoteIsFirefox) {\n // Note: 65536 bytes is the default value from the SDP spec. Also,\n // every implementation we know supports receiving 65536 bytes.\n let maxMessageSize = 65536;\n\n // FF 57 has a slightly incorrect default remote max message size, so\n // we need to adjust it here to avoid a failure when sending.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\n if (browserDetails.browser === 'firefox'\n && browserDetails.version === 57) {\n maxMessageSize = 65535;\n }\n\n const match = SDPUtils.matchPrefix(description.sdp,\n 'a=max-message-size:');\n if (match.length > 0) {\n maxMessageSize = parseInt(match[0].substr(19), 10);\n } else if (browserDetails.browser === 'firefox' &&\n remoteIsFirefox !== -1) {\n // If the maximum message size is not present in the remote SDP and\n // both local and remote are Firefox, the remote peer can receive\n // ~2 GiB.\n maxMessageSize = 2147483637;\n }\n return maxMessageSize;\n };\n\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n this._sctp = null;\n // Chrome decided to not expose .sctp in plan-b mode.\n // As usual, adapter.js has to do an 'ugly worakaround'\n // to cover up the mess.\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) {\n const {sdpSemantics} = this.getConfiguration();\n if (sdpSemantics === 'plan-b') {\n Object.defineProperty(this, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (sctpInDescription(arguments[0])) {\n // Check if the remote is FF.\n const isFirefox = getRemoteFirefoxVersion(arguments[0]);\n\n // Get the maximum message size the local peer is capable of sending\n const canSendMMS = getCanSendMaxMessageSize(isFirefox);\n\n // Get the maximum message size of the remote peer.\n const remoteMMS = getMaxMessageSize(arguments[0], isFirefox);\n\n // Determine final maximum message size\n let maxMessageSize;\n if (canSendMMS === 0 && remoteMMS === 0) {\n maxMessageSize = Number.POSITIVE_INFINITY;\n } else if (canSendMMS === 0 || remoteMMS === 0) {\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\n } else {\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\n }\n\n // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\n // attribute.\n const sctp = {};\n Object.defineProperty(sctp, 'maxMessageSize', {\n get() {\n return maxMessageSize;\n }\n });\n this._sctp = sctp;\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n}\n\nexport function shimSendThrowTypeError(window) {\n if (!(window.RTCPeerConnection &&\n 'createDataChannel' in window.RTCPeerConnection.prototype)) {\n return;\n }\n\n // Note: Although Firefox >= 57 has a native implementation, the maximum\n // message size can be reset for all data channels at a later stage.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n\n function wrapDcSend(dc, pc) {\n const origDataChannelSend = dc.send;\n dc.send = function send() {\n const data = arguments[0];\n const length = data.length || data.size || data.byteLength;\n if (dc.readyState === 'open' &&\n pc.sctp && length > pc.sctp.maxMessageSize) {\n throw new TypeError('Message too large (can send a maximum of ' +\n pc.sctp.maxMessageSize + ' bytes)');\n }\n return origDataChannelSend.apply(dc, arguments);\n };\n }\n const origCreateDataChannel =\n window.RTCPeerConnection.prototype.createDataChannel;\n window.RTCPeerConnection.prototype.createDataChannel =\n function createDataChannel() {\n const dataChannel = origCreateDataChannel.apply(this, arguments);\n wrapDcSend(dataChannel, this);\n return dataChannel;\n };\n utils.wrapPeerConnectionEvent(window, 'datachannel', e => {\n wrapDcSend(e.channel, e.target);\n return e;\n });\n}\n\n\n/* shims RTCConnectionState by pretending it is the same as iceConnectionState.\n * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12\n * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect\n * since DTLS failures would be hidden. See\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827\n * for the Firefox tracking bug.\n */\nexport function shimConnectionState(window) {\n if (!window.RTCPeerConnection ||\n 'connectionState' in window.RTCPeerConnection.prototype) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n Object.defineProperty(proto, 'connectionState', {\n get() {\n return {\n completed: 'connected',\n checking: 'connecting'\n }[this.iceConnectionState] || this.iceConnectionState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(proto, 'onconnectionstatechange', {\n get() {\n return this._onconnectionstatechange || null;\n },\n set(cb) {\n if (this._onconnectionstatechange) {\n this.removeEventListener('connectionstatechange',\n this._onconnectionstatechange);\n delete this._onconnectionstatechange;\n }\n if (cb) {\n this.addEventListener('connectionstatechange',\n this._onconnectionstatechange = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n\n ['setLocalDescription', 'setRemoteDescription'].forEach((method) => {\n const origMethod = proto[method];\n proto[method] = function() {\n if (!this._connectionstatechangepoly) {\n this._connectionstatechangepoly = e => {\n const pc = e.target;\n if (pc._lastConnectionState !== pc.connectionState) {\n pc._lastConnectionState = pc.connectionState;\n const newEvent = new Event('connectionstatechange', e);\n pc.dispatchEvent(newEvent);\n }\n return e;\n };\n this.addEventListener('iceconnectionstatechange',\n this._connectionstatechangepoly);\n }\n return origMethod.apply(this, arguments);\n };\n });\n}\n\nexport function removeExtmapAllowMixed(window, browserDetails) {\n /* remove a=extmap-allow-mixed for webrtc.org < M71 */\n if (!window.RTCPeerConnection) {\n return;\n }\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) {\n return;\n }\n if (browserDetails.browser === 'safari' && browserDetails.version >= 605) {\n return;\n }\n const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription(desc) {\n if (desc && desc.sdp && desc.sdp.indexOf('\\na=extmap-allow-mixed') !== -1) {\n const sdp = desc.sdp.split('\\n').filter((line) => {\n return line.trim() !== 'a=extmap-allow-mixed';\n }).join('\\n');\n // Safari enforces read-only-ness of RTCSessionDescription fields.\n if (window.RTCSessionDescription &&\n desc instanceof window.RTCSessionDescription) {\n arguments[0] = new window.RTCSessionDescription({\n type: desc.type,\n sdp,\n });\n } else {\n desc.sdp = sdp;\n }\n }\n return nativeSRD.apply(this, arguments);\n };\n}\n\nexport function shimAddIceCandidateNullOrEmpty(window, browserDetails) {\n // Support for addIceCandidate(null or undefined)\n // as well as addIceCandidate({candidate: \"\", ...})\n // https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n // Note: must be called before other polyfills which change the signature.\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeAddIceCandidate =\n window.RTCPeerConnection.prototype.addIceCandidate;\n if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.addIceCandidate =\n function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions.\n // Native support for ignoring exists for Chrome M77+.\n // Safari ignores as well, exact version unknown but works in the same\n // version that also ignores addIceCandidate(null).\n if (((browserDetails.browser === 'chrome' && browserDetails.version < 78)\n || (browserDetails.browser === 'firefox'\n && browserDetails.version < 68)\n || (browserDetails.browser === 'safari'))\n && arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\nimport * as utils from './utils';\n\n // Browser shims.\nimport * as chromeShim from './chrome/chrome_shim';\nimport * as edgeShim from './edge/edge_shim';\nimport * as firefoxShim from './firefox/firefox_shim';\nimport * as safariShim from './safari/safari_shim';\nimport * as commonShim from './common_shim';\n\n// Shimming starts here.\nexport function adapterFactory({window} = {}, options = {\n shimChrome: true,\n shimFirefox: true,\n shimEdge: true,\n shimSafari: true,\n}) {\n // Utils.\n const logging = utils.log;\n const browserDetails = utils.detectBrowser(window);\n\n const adapter = {\n browserDetails,\n commonShim,\n extractVersion: utils.extractVersion,\n disableLog: utils.disableLog,\n disableWarnings: utils.disableWarnings\n };\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection ||\n !options.shimChrome) {\n logging('Chrome shim is not included in this adapter release.');\n return adapter;\n }\n if (browserDetails.version === null) {\n logging('Chrome shim can not determine version, not shimming.');\n return adapter;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = chromeShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n chromeShim.shimGetUserMedia(window, browserDetails);\n chromeShim.shimMediaStream(window, browserDetails);\n chromeShim.shimPeerConnection(window, browserDetails);\n chromeShim.shimOnTrack(window, browserDetails);\n chromeShim.shimAddTrackRemoveTrack(window, browserDetails);\n chromeShim.shimGetSendersWithDtmf(window, browserDetails);\n chromeShim.shimGetStats(window, browserDetails);\n chromeShim.shimSenderReceiverGetStats(window, browserDetails);\n chromeShim.fixNegotiationNeeded(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection ||\n !options.shimFirefox) {\n logging('Firefox shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = firefoxShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n firefoxShim.shimGetUserMedia(window, browserDetails);\n firefoxShim.shimPeerConnection(window, browserDetails);\n firefoxShim.shimOnTrack(window, browserDetails);\n firefoxShim.shimRemoveStream(window, browserDetails);\n firefoxShim.shimSenderGetStats(window, browserDetails);\n firefoxShim.shimReceiverGetStats(window, browserDetails);\n firefoxShim.shimRTCDataChannel(window, browserDetails);\n firefoxShim.shimAddTransceiver(window, browserDetails);\n firefoxShim.shimGetParameters(window, browserDetails);\n firefoxShim.shimCreateOffer(window, browserDetails);\n firefoxShim.shimCreateAnswer(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection || !options.shimEdge) {\n logging('MS edge shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia(window, browserDetails);\n edgeShim.shimGetDisplayMedia(window, browserDetails);\n edgeShim.shimPeerConnection(window, browserDetails);\n edgeShim.shimReplaceTrack(window, browserDetails);\n\n // the edge shim implements the full RTCIceCandidate object.\n\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'safari':\n if (!safariShim || !options.shimSafari) {\n logging('Safari shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = safariShim;\n\n // Must be called before shimCallbackAPI.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n safariShim.shimRTCIceServerUrls(window, browserDetails);\n safariShim.shimCreateOfferLegacy(window, browserDetails);\n safariShim.shimCallbacksAPI(window, browserDetails);\n safariShim.shimLocalStreamsAPI(window, browserDetails);\n safariShim.shimRemoteStreamsAPI(window, browserDetails);\n safariShim.shimTrackEventTransceiver(window, browserDetails);\n safariShim.shimGetUserMedia(window, browserDetails);\n safariShim.shimAudioContext(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n default:\n logging('Unsupported browser!');\n break;\n }\n\n return adapter;\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n\n'use strict';\n\nimport {adapterFactory} from './adapter_factory.js';\n\nconst adapter =\n adapterFactory({window: typeof window === 'undefined' ? undefined : window});\nexport default adapter;\n","import webRTCAdapter from \"webrtc-adapter\";\n\nexport { webRTCAdapter };\n","import { webRTCAdapter } from './adapter';\n\nexport const Supports = new class {\n readonly isIOS = ['iPad', 'iPhone', 'iPod'].includes(navigator.platform);\n readonly supportedBrowsers = ['firefox', 'chrome', 'safari'];\n\n readonly minFirefoxVersion = 59;\n readonly minChromeVersion = 72;\n readonly minSafariVersion = 605;\n\n isWebRTCSupported(): boolean {\n return typeof RTCPeerConnection !== 'undefined';\n }\n\n isBrowserSupported(): boolean {\n const browser = this.getBrowser();\n const version = this.getVersion();\n\n const validBrowser = this.supportedBrowsers.includes(browser);\n\n if (!validBrowser) return false;\n\n if (browser === 'chrome') return version >= this.minChromeVersion;\n if (browser === 'firefox') return version >= this.minFirefoxVersion;\n if (browser === 'safari') return !this.isIOS && version >= this.minSafariVersion;\n\n return false;\n }\n\n getBrowser(): string {\n return webRTCAdapter.browserDetails.browser;\n }\n\n getVersion(): number {\n return webRTCAdapter.browserDetails.version || 0;\n }\n\n isUnifiedPlanSupported(): boolean {\n const browser = this.getBrowser();\n const version = webRTCAdapter.browserDetails.version || 0;\n\n if (browser === 'chrome' && version < 72) return false;\n if (browser === 'firefox' && version >= 59) return true;\n if (!window.RTCRtpTransceiver || !('currentDirection' in RTCRtpTransceiver.prototype)) return false;\n\n let tempPc: RTCPeerConnection;\n let supported = false;\n\n try {\n tempPc = new RTCPeerConnection();\n tempPc.addTransceiver('audio');\n supported = true;\n } catch (e) { }\n finally {\n if (tempPc) {\n tempPc.close();\n }\n }\n\n return supported;\n }\n\n toString(): string {\n return `Supports: \n browser:${this.getBrowser()} \n version:${this.getVersion()} \n isIOS:${this.isIOS} \n isWebRTCSupported:${this.isWebRTCSupported()} \n isBrowserSupported:${this.isBrowserSupported()} \n isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`;\n }\n}","import * as BinaryPack from \"peerjs-js-binarypack\";\nimport { Supports } from './supports';\nimport { UtilSupportsObj } from '..';\n\nconst DEFAULT_CONFIG = {\n iceServers: [\n { urls: \"stun:stun.l.google.com:19302\" },\n { urls: \"turn:0.peerjs.com:3478\", username: \"peerjs\", credential: \"peerjsp\" }\n ],\n sdpSemantics: \"unified-plan\"\n};\n\nexport const util = new class {\n noop(): void { }\n\n readonly CLOUD_HOST = \"0.peerjs.com\";\n readonly CLOUD_PORT = 443;\n\n // Browsers that need chunking:\n readonly chunkedBrowsers = { Chrome: 1, chrome: 1 };\n readonly chunkedMTU = 16300; // The original 60000 bytes setting does not work when sending data from Firefox to Chrome, which is \"cut off\" after 16384 bytes and delivered individually.\n\n // Returns browser-agnostic default config\n readonly defaultConfig = DEFAULT_CONFIG;\n\n readonly browser = Supports.getBrowser();\n readonly browserVersion = Supports.getVersion();\n\n // Lists which features are supported\n readonly supports = (function () {\n const supported: UtilSupportsObj = {\n browser: Supports.isBrowserSupported(),\n webRTC: Supports.isWebRTCSupported(),\n audioVideo: false,\n data: false,\n binaryBlob: false,\n reliable: false,\n };\n\n if (!supported.webRTC) return supported;\n\n let pc: RTCPeerConnection;\n\n try {\n pc = new RTCPeerConnection(DEFAULT_CONFIG);\n\n supported.audioVideo = true;\n\n let dc: RTCDataChannel;\n\n try {\n dc = pc.createDataChannel(\"_PEERJSTEST\", { ordered: true });\n supported.data = true;\n supported.reliable = !!dc.ordered;\n\n // Binary test\n try {\n dc.binaryType = \"blob\";\n supported.binaryBlob = !Supports.isIOS;\n } catch (e) {\n }\n } catch (e) {\n } finally {\n if (dc) {\n dc.close();\n }\n }\n } catch (e) {\n } finally {\n if (pc) {\n pc.close();\n }\n }\n\n return supported;\n })();\n\n // Ensure alphanumeric ids\n validateId(id: string): boolean {\n // Allow empty ids\n return !id || /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(id);\n }\n\n pack = BinaryPack.pack;\n unpack = BinaryPack.unpack;\n\n // Binary stuff\n\n private _dataCount: number = 1;\n\n chunk(blob: Blob): { __peerData: number, n: number, total: number, data: Blob }[] {\n const chunks = [];\n const size = blob.size;\n const total = Math.ceil(size / util.chunkedMTU);\n\n let index = 0;\n let start = 0;\n\n while (start < size) {\n const end = Math.min(size, start + util.chunkedMTU);\n const b = blob.slice(start, end);\n\n const chunk = {\n __peerData: this._dataCount,\n n: index,\n data: b,\n total,\n };\n\n chunks.push(chunk);\n\n start = end;\n index++;\n }\n\n this._dataCount++;\n\n return chunks;\n }\n\n blobToArrayBuffer(blob: Blob, cb: (arg: ArrayBuffer | null) => void): FileReader {\n const fr = new FileReader();\n\n fr.onload = function (evt) {\n if (evt.target) {\n cb(evt.target.result as ArrayBuffer);\n }\n };\n\n fr.readAsArrayBuffer(blob);\n\n return fr;\n }\n\n binaryStringToArrayBuffer(binary: string): ArrayBuffer | SharedArrayBuffer {\n const byteArray = new Uint8Array(binary.length);\n\n for (let i = 0; i < binary.length; i++) {\n byteArray[i] = binary.charCodeAt(i) & 0xff;\n }\n\n return byteArray.buffer;\n }\n\n randomToken(): string {\n return Math.random()\n .toString(36)\n .substr(2);\n }\n\n isSecure(): boolean {\n return location.protocol === \"https:\";\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","const LOG_PREFIX = 'PeerJS: ';\n\n/*\nPrints log messages depending on the debug level passed in. Defaults to 0.\n0 Prints no logs.\n1 Prints only errors.\n2 Prints errors and warnings.\n3 Prints all logs.\n*/\nexport enum LogLevel {\n Disabled,\n Errors,\n Warnings,\n All\n}\n\nclass Logger {\n private _logLevel = LogLevel.Disabled;\n\n get logLevel(): LogLevel { return this._logLevel; }\n\n set logLevel(logLevel: LogLevel) { this._logLevel = logLevel; }\n\n log(...args: any[]) {\n if (this._logLevel >= LogLevel.All) {\n this._print(LogLevel.All, ...args);\n }\n }\n\n warn(...args: any[]) {\n if (this._logLevel >= LogLevel.Warnings) {\n this._print(LogLevel.Warnings, ...args);\n }\n }\n\n error(...args: any[]) {\n if (this._logLevel >= LogLevel.Errors) {\n this._print(LogLevel.Errors, ...args);\n }\n }\n\n setLogFunction(fn: (logLevel: LogLevel, ..._: any[]) => void): void {\n this._print = fn;\n }\n\n private _print(logLevel: LogLevel, ...rest: any[]): void {\n const copy = [LOG_PREFIX, ...rest];\n\n for (let i in copy) {\n if (copy[i] instanceof Error) {\n copy[i] = \"(\" + copy[i].name + \") \" + copy[i].message;\n\n }\n }\n\n if (logLevel >= LogLevel.All) {\n console.log(...copy);\n } else if (logLevel >= LogLevel.Warnings) {\n console.warn(\"WARNING\", ...copy);\n } else if (logLevel >= LogLevel.Errors) {\n console.error(\"ERROR\", ...copy);\n }\n }\n}\n\nexport default new Logger();","export enum ConnectionEventType {\n Open = \"open\",\n Stream = \"stream\",\n Data = \"data\",\n Close = \"close\",\n Error = \"error\",\n IceStateChanged = \"iceStateChanged\"\n}\n\nexport enum ConnectionType {\n Data = \"data\",\n Media = \"media\"\n}\n\nexport enum PeerEventType {\n Open = \"open\",\n Close = \"close\",\n Connection = \"connection\",\n Call = \"call\",\n Disconnected = \"disconnected\",\n Error = \"error\"\n}\n\nexport enum PeerErrorType {\n BrowserIncompatible = \"browser-incompatible\",\n Disconnected = \"disconnected\",\n InvalidID = \"invalid-id\",\n InvalidKey = \"invalid-key\",\n Network = \"network\",\n PeerUnavailable = \"peer-unavailable\",\n SslUnavailable = \"ssl-unavailable\",\n ServerError = \"server-error\",\n SocketError = \"socket-error\",\n SocketClosed = \"socket-closed\",\n UnavailableID = \"unavailable-id\",\n WebRTC = \"webrtc\"\n}\n\nexport enum SerializationType {\n Binary = \"binary\",\n BinaryUTF8 = \"binary-utf8\",\n JSON = \"json\"\n}\n\nexport enum SocketEventType {\n Message = \"message\",\n Disconnected = \"disconnected\",\n Error = \"error\",\n Close = \"close\"\n}\n\nexport enum ServerMessageType {\n Heartbeat = \"HEARTBEAT\",\n Candidate = \"CANDIDATE\",\n Offer = \"OFFER\",\n Answer = \"ANSWER\",\n Open = \"OPEN\", // The connection to the server is open.\n Error = \"ERROR\", // Server error.\n IdTaken = \"ID-TAKEN\", // The selected ID is taken.\n InvalidKey = \"INVALID-KEY\", // The given API key cannot be found.\n Leave = \"LEAVE\", // Another peer has closed its connection to this peer.\n Expire = \"EXPIRE\" // The offer sent to a peer has expired without response.\n\n}","import { EventEmitter } from \"eventemitter3\";\nimport logger from \"./logger\";\nimport { SocketEventType, ServerMessageType } from \"./enums\";\n\n/**\n * An abstraction on top of WebSockets to provide fastest\n * possible connection for peers.\n */\nexport class Socket extends EventEmitter {\n private _disconnected: boolean = true;\n private _id?: string;\n private _messagesQueue: Array = [];\n private _socket?: WebSocket;\n private _wsPingTimer?: any;\n private readonly _baseUrl: string;\n\n constructor(\n secure: any,\n host: string,\n port: number,\n path: string,\n key: string,\n private readonly pingInterval: number = 5000,\n ) {\n super();\n\n const wsProtocol = secure ? \"wss://\" : \"ws://\";\n\n this._baseUrl = wsProtocol + host + \":\" + port + path + \"peerjs?key=\" + key;\n }\n\n start(id: string, token: string): void {\n this._id = id;\n\n const wsUrl = `${this._baseUrl}&id=${id}&token=${token}`;\n\n if (!!this._socket || !this._disconnected) {\n return;\n }\n\n this._socket = new WebSocket(wsUrl);\n this._disconnected = false;\n\n this._socket.onmessage = (event) => {\n let data;\n\n try {\n data = JSON.parse(event.data);\n logger.log(\"Server message received:\", data);\n } catch (e) {\n logger.log(\"Invalid server message\", event.data);\n return;\n }\n\n this.emit(SocketEventType.Message, data);\n };\n\n this._socket.onclose = (event) => {\n if (this._disconnected) {\n return;\n }\n\n logger.log(\"Socket closed.\", event);\n\n this._cleanup();\n this._disconnected = true;\n\n this.emit(SocketEventType.Disconnected);\n };\n\n // Take care of the queue of connections if necessary and make sure Peer knows\n // socket is open.\n this._socket.onopen = () => {\n if (this._disconnected) {\n return;\n }\n\n this._sendQueuedMessages();\n\n logger.log(\"Socket open\");\n\n this._scheduleHeartbeat();\n };\n }\n\n private _scheduleHeartbeat(): void {\n this._wsPingTimer = setTimeout(() => {\n this._sendHeartbeat();\n }, this.pingInterval);\n }\n\n private _sendHeartbeat(): void {\n if (!this._wsOpen()) {\n logger.log(`Cannot send heartbeat, because socket closed`);\n return;\n }\n\n const message = JSON.stringify({ type: ServerMessageType.Heartbeat });\n\n this._socket!.send(message);\n\n this._scheduleHeartbeat();\n }\n\n /** Is the websocket currently open? */\n private _wsOpen(): boolean {\n return !!this._socket && this._socket.readyState === 1;\n }\n\n /** Send queued messages. */\n private _sendQueuedMessages(): void {\n //Create copy of queue and clear it,\n //because send method push the message back to queue if smth will go wrong\n const copiedQueue = [...this._messagesQueue];\n this._messagesQueue = [];\n\n for (const message of copiedQueue) {\n this.send(message);\n }\n }\n\n /** Exposed send for DC & Peer. */\n send(data: any): void {\n if (this._disconnected) {\n return;\n }\n\n // If we didn't get an ID yet, we can't yet send anything so we should queue\n // up these messages.\n if (!this._id) {\n this._messagesQueue.push(data);\n return;\n }\n\n if (!data.type) {\n this.emit(SocketEventType.Error, \"Invalid message\");\n return;\n }\n\n if (!this._wsOpen()) {\n return;\n }\n\n const message = JSON.stringify(data);\n\n this._socket!.send(message);\n }\n\n close(): void {\n if (this._disconnected) {\n return;\n }\n\n this._cleanup();\n\n this._disconnected = true;\n }\n\n private _cleanup(): void {\n if (this._socket) {\n this._socket.onopen = this._socket.onmessage = this._socket.onclose = null;\n this._socket.close();\n this._socket = undefined;\n }\n\n clearTimeout(this._wsPingTimer!);\n }\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { MediaConnection } from \"./mediaconnection\";\nimport { DataConnection } from \"./dataconnection\";\nimport { ConnectionType, PeerErrorType, ConnectionEventType, ServerMessageType } from \"./enums\";\nimport { BaseConnection } from \"./baseconnection\";\n\n/**\n * Manages all negotiations between Peers.\n */\nexport class Negotiator {\n constructor(readonly connection: BaseConnection) { }\n\n /** Returns a PeerConnection object set up correctly (for data, media). */\n startConnection(options: any) {\n const peerConnection = this._startPeerConnection();\n\n // Set the connection's PC.\n this.connection.peerConnection = peerConnection;\n\n if (this.connection.type === ConnectionType.Media && options._stream) {\n this._addTracksToConnection(options._stream, peerConnection);\n }\n\n // What do we need to do now?\n if (options.originator) {\n if (this.connection.type === ConnectionType.Data) {\n const dataConnection = this.connection;\n\n const config: RTCDataChannelInit = { ordered: !!options.reliable };\n\n const dataChannel = peerConnection.createDataChannel(\n dataConnection.label,\n config\n );\n dataConnection.initialize(dataChannel);\n }\n\n this._makeOffer();\n } else {\n this.handleSDP(\"OFFER\", options.sdp);\n }\n }\n\n /** Start a PC. */\n private _startPeerConnection(): RTCPeerConnection {\n logger.log(\"Creating RTCPeerConnection.\");\n\n const peerConnection = new RTCPeerConnection(this.connection.provider.options.config);\n\n this._setupListeners(peerConnection);\n\n return peerConnection;\n }\n\n /** Set up various WebRTC listeners. */\n private _setupListeners(\n peerConnection: RTCPeerConnection\n ) {\n const peerId = this.connection.peer;\n const connectionId = this.connection.connectionId;\n const connectionType = this.connection.type;\n const provider = this.connection.provider;\n\n // ICE CANDIDATES.\n logger.log(\"Listening for ICE candidates.\");\n\n peerConnection.onicecandidate = (evt) => {\n if (!evt.candidate || !evt.candidate.candidate) return;\n\n logger.log(`Received ICE candidates for ${peerId}:`, evt.candidate);\n\n provider.socket.send({\n type: ServerMessageType.Candidate,\n payload: {\n candidate: evt.candidate,\n type: connectionType,\n connectionId: connectionId\n },\n dst: peerId\n });\n };\n\n peerConnection.oniceconnectionstatechange = () => {\n switch (peerConnection.iceConnectionState) {\n case \"failed\":\n logger.log(\n \"iceConnectionState is failed, closing connections to \" +\n peerId\n );\n this.connection.emit(\n ConnectionEventType.Error,\n new Error(\"Negotiation of connection to \" + peerId + \" failed.\")\n );\n this.connection.close();\n break;\n case \"closed\":\n logger.log(\n \"iceConnectionState is closed, closing connections to \" +\n peerId\n );\n this.connection.emit(\n ConnectionEventType.Error,\n new Error(\"Connection to \" + peerId + \" closed.\")\n );\n this.connection.close();\n break;\n case \"disconnected\":\n logger.log(\n \"iceConnectionState changed to disconnected on the connection with \" +\n peerId\n );\n break;\n case \"completed\":\n peerConnection.onicecandidate = util.noop;\n break;\n }\n\n this.connection.emit(ConnectionEventType.IceStateChanged, peerConnection.iceConnectionState);\n };\n\n // DATACONNECTION.\n logger.log(\"Listening for data channel\");\n // Fired between offer and answer, so options should already be saved\n // in the options hash.\n peerConnection.ondatachannel = (evt) => {\n logger.log(\"Received data channel\");\n\n const dataChannel = evt.channel;\n const connection = (\n provider.getConnection(peerId, connectionId)\n );\n\n connection.initialize(dataChannel);\n };\n\n // MEDIACONNECTION.\n logger.log(\"Listening for remote stream\");\n\n peerConnection.ontrack = (evt) => {\n logger.log(\"Received remote stream\");\n\n const stream = evt.streams[0];\n const connection = provider.getConnection(peerId, connectionId);\n\n if (connection.type === ConnectionType.Media) {\n const mediaConnection = connection;\n\n this._addStreamToMediaConnection(stream, mediaConnection);\n }\n };\n }\n\n cleanup(): void {\n logger.log(\"Cleaning up PeerConnection to \" + this.connection.peer);\n\n const peerConnection = this.connection.peerConnection;\n\n if (!peerConnection) {\n return;\n }\n\n this.connection.peerConnection = null;\n\n //unsubscribe from all PeerConnection's events\n peerConnection.onicecandidate = peerConnection.oniceconnectionstatechange = peerConnection.ondatachannel = peerConnection.ontrack = () => { };\n\n const peerConnectionNotClosed = peerConnection.signalingState !== \"closed\";\n let dataChannelNotClosed = false;\n\n if (this.connection.type === ConnectionType.Data) {\n const dataConnection = this.connection;\n const dataChannel = dataConnection.dataChannel;\n\n if (dataChannel) {\n dataChannelNotClosed = !!dataChannel.readyState && dataChannel.readyState !== \"closed\";\n }\n }\n\n if (peerConnectionNotClosed || dataChannelNotClosed) {\n peerConnection.close();\n }\n }\n\n private async _makeOffer(): Promise {\n const peerConnection = this.connection.peerConnection;\n const provider = this.connection.provider;\n\n try {\n const offer = await peerConnection.createOffer(\n this.connection.options.constraints\n );\n\n logger.log(\"Created offer.\");\n\n if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {\n offer.sdp = this.connection.options.sdpTransform(offer.sdp) || offer.sdp;\n }\n\n try {\n await peerConnection.setLocalDescription(offer);\n\n logger.log(\"Set localDescription:\", offer, `for:${this.connection.peer}`);\n\n let payload: any = {\n sdp: offer,\n type: this.connection.type,\n connectionId: this.connection.connectionId,\n metadata: this.connection.metadata,\n browser: util.browser\n };\n\n if (this.connection.type === ConnectionType.Data) {\n const dataConnection = this.connection;\n\n payload = {\n ...payload,\n label: dataConnection.label,\n reliable: dataConnection.reliable,\n serialization: dataConnection.serialization\n };\n }\n\n provider.socket.send({\n type: ServerMessageType.Offer,\n payload,\n dst: this.connection.peer\n });\n } catch (err) {\n // TODO: investigate why _makeOffer is being called from the answer\n if (\n err !=\n \"OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer\"\n ) {\n provider.emitError(PeerErrorType.WebRTC, err);\n logger.log(\"Failed to setLocalDescription, \", err);\n }\n }\n } catch (err_1) {\n provider.emitError(PeerErrorType.WebRTC, err_1);\n logger.log(\"Failed to createOffer, \", err_1);\n }\n }\n\n private async _makeAnswer(): Promise {\n const peerConnection = this.connection.peerConnection;\n const provider = this.connection.provider;\n\n try {\n const answer = await peerConnection.createAnswer();\n logger.log(\"Created answer.\");\n\n if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {\n answer.sdp = this.connection.options.sdpTransform(answer.sdp) || answer.sdp;\n }\n\n try {\n await peerConnection.setLocalDescription(answer);\n\n logger.log(`Set localDescription:`, answer, `for:${this.connection.peer}`);\n\n provider.socket.send({\n type: ServerMessageType.Answer,\n payload: {\n sdp: answer,\n type: this.connection.type,\n connectionId: this.connection.connectionId,\n browser: util.browser\n },\n dst: this.connection.peer\n });\n } catch (err) {\n provider.emitError(PeerErrorType.WebRTC, err);\n logger.log(\"Failed to setLocalDescription, \", err);\n }\n } catch (err_1) {\n provider.emitError(PeerErrorType.WebRTC, err_1);\n logger.log(\"Failed to create answer, \", err_1);\n }\n }\n\n /** Handle an SDP. */\n async handleSDP(\n type: string,\n sdp: any\n ): Promise {\n sdp = new RTCSessionDescription(sdp);\n const peerConnection = this.connection.peerConnection;\n const provider = this.connection.provider;\n\n logger.log(\"Setting remote description\", sdp);\n\n const self = this;\n\n try {\n await peerConnection.setRemoteDescription(sdp);\n logger.log(`Set remoteDescription:${type} for:${this.connection.peer}`);\n if (type === \"OFFER\") {\n await self._makeAnswer();\n }\n } catch (err) {\n provider.emitError(PeerErrorType.WebRTC, err);\n logger.log(\"Failed to setRemoteDescription, \", err);\n }\n }\n\n /** Handle a candidate. */\n async handleCandidate(ice: any): Promise {\n logger.log(`handleCandidate:`, ice);\n\n const candidate = ice.candidate;\n const sdpMLineIndex = ice.sdpMLineIndex;\n const sdpMid = ice.sdpMid;\n const peerConnection = this.connection.peerConnection;\n const provider = this.connection.provider;\n\n try {\n await peerConnection.addIceCandidate(\n new RTCIceCandidate({\n sdpMid: sdpMid,\n sdpMLineIndex: sdpMLineIndex,\n candidate: candidate\n })\n );\n logger.log(`Added ICE candidate for:${this.connection.peer}`);\n } catch (err) {\n provider.emitError(PeerErrorType.WebRTC, err);\n logger.log(\"Failed to handleCandidate, \", err);\n }\n }\n\n private _addTracksToConnection(\n stream: MediaStream,\n peerConnection: RTCPeerConnection\n ): void {\n logger.log(`add tracks from stream ${stream.id} to peer connection`);\n\n if (!peerConnection.addTrack) {\n return logger.error(\n `Your browser does't support RTCPeerConnection#addTrack. Ignored.`\n );\n }\n\n stream.getTracks().forEach(track => {\n peerConnection.addTrack(track, stream);\n });\n }\n\n private _addStreamToMediaConnection(\n stream: MediaStream,\n mediaConnection: MediaConnection\n ): void {\n logger.log(\n `add stream ${stream.id} to media connection ${\n mediaConnection.connectionId\n }`\n );\n\n mediaConnection.addStream(stream);\n }\n}\n","import { EventEmitter } from \"eventemitter3\";\nimport { Peer } from \"./peer\";\nimport { ServerMessage } from \"./servermessage\";\nimport { ConnectionType } from \"./enums\";\n\nexport abstract class BaseConnection extends EventEmitter {\n protected _open = false;\n\n readonly metadata: any;\n connectionId: string;\n\n peerConnection: RTCPeerConnection;\n\n abstract get type(): ConnectionType;\n\n get open() {\n return this._open;\n }\n\n constructor(\n readonly peer: string,\n public provider: Peer,\n readonly options: any\n ) {\n super();\n\n this.metadata = options.metadata;\n }\n\n abstract close(): void;\n\n abstract handleMessage(message: ServerMessage): void;\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { Negotiator } from \"./negotiator\";\nimport { ConnectionType, ConnectionEventType, ServerMessageType } from \"./enums\";\nimport { Peer } from \"./peer\";\nimport { BaseConnection } from \"./baseconnection\";\nimport { ServerMessage } from \"./servermessage\";\nimport { AnswerOption } from \"..\";\n\n/**\n * Wraps the streaming interface between two Peers.\n */\nexport class MediaConnection extends BaseConnection {\n private static readonly ID_PREFIX = \"mc_\";\n\n private _negotiator: Negotiator;\n private _localStream: MediaStream;\n private _remoteStream: MediaStream;\n\n get type() {\n return ConnectionType.Media;\n }\n\n get localStream(): MediaStream { return this._localStream; }\n get remoteStream(): MediaStream { return this._remoteStream; }\n\n constructor(peerId: string, provider: Peer, options: any) {\n super(peerId, provider, options);\n\n this._localStream = this.options._stream;\n this.connectionId =\n this.options.connectionId ||\n MediaConnection.ID_PREFIX + util.randomToken();\n\n this._negotiator = new Negotiator(this);\n\n if (this._localStream) {\n this._negotiator.startConnection({\n _stream: this._localStream,\n originator: true\n });\n }\n }\n\n addStream(remoteStream) {\n logger.log(\"Receiving stream\", remoteStream);\n\n this._remoteStream = remoteStream;\n super.emit(ConnectionEventType.Stream, remoteStream); // Should we call this `open`?\n }\n\n handleMessage(message: ServerMessage): void {\n const type = message.type;\n const payload = message.payload;\n\n switch (message.type) {\n case ServerMessageType.Answer:\n // Forward to negotiator\n this._negotiator.handleSDP(type, payload.sdp);\n this._open = true;\n break;\n case ServerMessageType.Candidate:\n this._negotiator.handleCandidate(payload.candidate);\n break;\n default:\n logger.warn(`Unrecognized message type:${type} from peer:${this.peer}`);\n break;\n }\n }\n\n answer(stream: MediaStream, options: AnswerOption = {}): void {\n if (this._localStream) {\n logger.warn(\n \"Local stream already exists on this MediaConnection. Are you answering a call twice?\"\n );\n return;\n }\n\n this._localStream = stream;\n\n if (options && options.sdpTransform) {\n this.options.sdpTransform = options.sdpTransform;\n }\n\n this._negotiator.startConnection({ ...this.options._payload, _stream: stream });\n // Retrieve lost messages stored because PeerConnection not set up.\n const messages = this.provider._getMessages(this.connectionId);\n\n for (let message of messages) {\n this.handleMessage(message);\n }\n\n this._open = true;\n }\n\n /**\n * Exposed functionality for users.\n */\n\n /** Allows user to close connection. */\n close(): void {\n if (this._negotiator) {\n this._negotiator.cleanup();\n this._negotiator = null;\n }\n\n this._localStream = null;\n this._remoteStream = null;\n\n if (this.provider) {\n this.provider._removeConnection(this);\n\n this.provider = null;\n }\n\n if (this.options && this.options._stream) {\n this.options._stream = null;\n }\n\n if (!this.open) {\n return;\n }\n\n this._open = false;\n\n super.emit(ConnectionEventType.Close);\n }\n}\n","import { EventEmitter } from \"eventemitter3\";\nimport logger from \"./logger\";\n\nexport class EncodingQueue extends EventEmitter {\n readonly fileReader: FileReader = new FileReader();\n\n private _queue: Blob[] = [];\n private _processing: boolean = false;\n\n constructor() {\n super();\n\n this.fileReader.onload = (evt) => {\n this._processing = false;\n\n if (evt.target) {\n this.emit('done', evt.target.result as ArrayBuffer);\n }\n\n this.doNextTask();\n };\n\n this.fileReader.onerror = (evt) => {\n logger.error(`EncodingQueue error:`, evt);\n this._processing = false;\n this.destroy();\n this.emit('error', evt);\n }\n }\n\n get queue(): Blob[] {\n return this._queue;\n }\n\n get size(): number {\n return this.queue.length;\n }\n\n get processing(): boolean {\n return this._processing;\n }\n\n enque(blob: Blob): void {\n this.queue.push(blob);\n\n if (this.processing) return;\n\n this.doNextTask();\n }\n\n destroy(): void {\n this.fileReader.abort();\n this._queue = [];\n }\n\n private doNextTask(): void {\n if (this.size === 0) return;\n if (this.processing) return;\n\n this._processing = true;\n\n this.fileReader.readAsArrayBuffer(this.queue.shift());\n }\n}","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { Negotiator } from \"./negotiator\";\nimport {\n ConnectionType,\n ConnectionEventType,\n SerializationType,\n ServerMessageType\n} from \"./enums\";\nimport { Peer } from \"./peer\";\nimport { BaseConnection } from \"./baseconnection\";\nimport { ServerMessage } from \"./servermessage\";\nimport { EncodingQueue } from './encodingQueue';\nimport { DataConnection as IDataConnection } from '../index';\n\n/**\n * Wraps a DataChannel between two Peers.\n */\nexport class DataConnection extends BaseConnection implements IDataConnection {\n private static readonly ID_PREFIX = \"dc_\";\n private static readonly MAX_BUFFERED_AMOUNT = 8 * 1024 * 1024;\n\n private _negotiator: Negotiator;\n readonly label: string;\n readonly serialization: SerializationType;\n readonly reliable: boolean;\n stringify: (data: any) => string = JSON.stringify;\n parse: (data: string) => any = JSON.parse;\n\n get type() {\n return ConnectionType.Data;\n }\n\n private _buffer: any[] = [];\n private _bufferSize = 0;\n private _buffering = false;\n private _chunkedData: {\n [id: number]: {\n data: Blob[],\n count: number,\n total: number\n }\n } = {};\n\n private _dc: RTCDataChannel;\n private _encodingQueue = new EncodingQueue();\n\n get dataChannel(): RTCDataChannel {\n return this._dc;\n }\n\n get bufferSize(): number { return this._bufferSize; }\n\n constructor(peerId: string, provider: Peer, options: any) {\n super(peerId, provider, options);\n\n this.connectionId =\n this.options.connectionId || DataConnection.ID_PREFIX + util.randomToken();\n\n this.label = this.options.label || this.connectionId;\n this.serialization = this.options.serialization || SerializationType.Binary;\n this.reliable = !!this.options.reliable;\n\n this._encodingQueue.on('done', (ab: ArrayBuffer) => {\n this._bufferedSend(ab);\n });\n\n this._encodingQueue.on('error', () => {\n logger.error(`DC#${this.connectionId}: Error occured in encoding from blob to arraybuffer, close DC`);\n this.close();\n });\n\n this._negotiator = new Negotiator(this);\n\n this._negotiator.startConnection(\n this.options._payload || {\n originator: true\n }\n );\n }\n\n /** Called by the Negotiator when the DataChannel is ready. */\n initialize(dc: RTCDataChannel): void {\n this._dc = dc;\n this._configureDataChannel();\n }\n\n private _configureDataChannel(): void {\n if (!util.supports.binaryBlob || util.supports.reliable) {\n this.dataChannel.binaryType = \"arraybuffer\";\n }\n\n this.dataChannel.onopen = () => {\n logger.log(`DC#${this.connectionId} dc connection success`);\n this._open = true;\n this.emit(ConnectionEventType.Open);\n };\n\n this.dataChannel.onmessage = (e) => {\n logger.log(`DC#${this.connectionId} dc onmessage:`, e.data);\n this._handleDataMessage(e);\n };\n\n this.dataChannel.onclose = () => {\n logger.log(`DC#${this.connectionId} dc closed for:`, this.peer);\n this.close();\n };\n }\n\n // Handles a DataChannel message.\n private _handleDataMessage({ data }: { data: Blob | ArrayBuffer | string }): void {\n const datatype = data.constructor;\n\n const isBinarySerialization = this.serialization === SerializationType.Binary ||\n this.serialization === SerializationType.BinaryUTF8;\n\n let deserializedData: any = data;\n\n if (isBinarySerialization) {\n if (datatype === Blob) {\n // Datatype should never be blob\n util.blobToArrayBuffer(data as Blob, (ab) => {\n const unpackedData = util.unpack(ab);\n this.emit(ConnectionEventType.Data, unpackedData);\n });\n return;\n } else if (datatype === ArrayBuffer) {\n deserializedData = util.unpack(data as ArrayBuffer);\n } else if (datatype === String) {\n // String fallback for binary data for browsers that don't support binary yet\n const ab = util.binaryStringToArrayBuffer(data as string);\n deserializedData = util.unpack(ab);\n }\n } else if (this.serialization === SerializationType.JSON) {\n deserializedData = this.parse(data as string);\n }\n\n // Check if we've chunked--if so, piece things back together.\n // We're guaranteed that this isn't 0.\n if (deserializedData.__peerData) {\n this._handleChunk(deserializedData);\n return;\n }\n\n super.emit(ConnectionEventType.Data, deserializedData);\n }\n\n private _handleChunk(data: { __peerData: number, n: number, total: number, data: Blob }): void {\n const id = data.__peerData;\n const chunkInfo = this._chunkedData[id] || {\n data: [],\n count: 0,\n total: data.total\n };\n\n chunkInfo.data[data.n] = data.data;\n chunkInfo.count++;\n this._chunkedData[id] = chunkInfo;\n\n if (chunkInfo.total === chunkInfo.count) {\n // Clean up before making the recursive call to `_handleDataMessage`.\n delete this._chunkedData[id];\n\n // We've received all the chunks--time to construct the complete data.\n const data = new Blob(chunkInfo.data);\n this._handleDataMessage({ data });\n }\n }\n\n /**\n * Exposed functionality for users.\n */\n\n /** Allows user to close connection. */\n close(): void {\n this._buffer = [];\n this._bufferSize = 0;\n this._chunkedData = {};\n\n if (this._negotiator) {\n this._negotiator.cleanup();\n this._negotiator = null;\n }\n\n if (this.provider) {\n this.provider._removeConnection(this);\n\n this.provider = null;\n }\n\n if (this.dataChannel) {\n this.dataChannel.onopen = null;\n this.dataChannel.onmessage = null;\n this.dataChannel.onclose = null;\n this._dc = null;\n }\n\n if (this._encodingQueue) {\n this._encodingQueue.destroy();\n this._encodingQueue.removeAllListeners();\n this._encodingQueue = null;\n }\n\n if (!this.open) {\n return;\n }\n\n this._open = false;\n\n super.emit(ConnectionEventType.Close);\n }\n\n /** Allows user to send data. */\n send(data: any, chunked?: boolean): void {\n if (!this.open) {\n super.emit(\n ConnectionEventType.Error,\n new Error(\n \"Connection is not open. You should listen for the `open` event before sending messages.\"\n )\n );\n return;\n }\n\n if (this.serialization === SerializationType.JSON) {\n this._bufferedSend(this.stringify(data));\n } else if (\n this.serialization === SerializationType.Binary ||\n this.serialization === SerializationType.BinaryUTF8\n ) {\n const blob = util.pack(data);\n\n if (!chunked && blob.size > util.chunkedMTU) {\n this._sendChunks(blob);\n return;\n }\n\n if (!util.supports.binaryBlob) {\n // We only do this if we really need to (e.g. blobs are not supported),\n // because this conversion is costly.\n this._encodingQueue.enque(blob);\n } else {\n this._bufferedSend(blob);\n }\n } else {\n this._bufferedSend(data);\n }\n }\n\n private _bufferedSend(msg: any): void {\n if (this._buffering || !this._trySend(msg)) {\n this._buffer.push(msg);\n this._bufferSize = this._buffer.length;\n }\n }\n\n // Returns true if the send succeeds.\n private _trySend(msg: any): boolean {\n if (!this.open) {\n return false;\n }\n\n if (this.dataChannel.bufferedAmount > DataConnection.MAX_BUFFERED_AMOUNT) {\n this._buffering = true;\n setTimeout(() => {\n this._buffering = false;\n this._tryBuffer();\n }, 50);\n\n return false;\n }\n\n try {\n this.dataChannel.send(msg);\n } catch (e) {\n logger.error(`DC#:${this.connectionId} Error when sending:`, e);\n this._buffering = true;\n\n this.close();\n\n return false;\n }\n\n return true;\n }\n\n // Try to send the first message in the buffer.\n private _tryBuffer(): void {\n if (!this.open) {\n return;\n }\n\n if (this._buffer.length === 0) {\n return;\n }\n\n const msg = this._buffer[0];\n\n if (this._trySend(msg)) {\n this._buffer.shift();\n this._bufferSize = this._buffer.length;\n this._tryBuffer();\n }\n }\n\n private _sendChunks(blob: Blob): void {\n const blobs = util.chunk(blob);\n logger.log(`DC#${this.connectionId} Try to send ${blobs.length} chunks...`);\n\n for (let blob of blobs) {\n this.send(blob, true);\n }\n }\n\n handleMessage(message: ServerMessage): void {\n const payload = message.payload;\n\n switch (message.type) {\n case ServerMessageType.Answer:\n this._negotiator.handleSDP(message.type, payload.sdp);\n break;\n case ServerMessageType.Candidate:\n this._negotiator.handleCandidate(payload.candidate);\n break;\n default:\n logger.warn(\n \"Unrecognized message type:\",\n message.type,\n \"from peer:\",\n this.peer\n );\n break;\n }\n }\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\n\nexport class API {\n constructor(private readonly _options: any) { }\n\n private _buildUrl(method: string): string {\n const protocol = this._options.secure ? \"https://\" : \"http://\";\n let url =\n protocol +\n this._options.host +\n \":\" +\n this._options.port +\n this._options.path +\n this._options.key +\n \"/\" +\n method;\n const queryString = \"?ts=\" + new Date().getTime() + \"\" + Math.random();\n url += queryString;\n\n return url;\n }\n\n /** Get a unique ID from the server via XHR and initialize with it. */\n async retrieveId(): Promise {\n const url = this._buildUrl(\"id\");\n\n try {\n const response = await fetch(url);\n\n if (response.status !== 200) {\n throw new Error(`Error. Status:${response.status}`);\n }\n\n return response.text();\n } catch (error) {\n logger.error(\"Error retrieving ID\", error);\n\n let pathError = \"\";\n\n if (\n this._options.path === \"/\" &&\n this._options.host !== util.CLOUD_HOST\n ) {\n pathError =\n \" If you passed in a `path` to your self-hosted PeerServer, \" +\n \"you'll also need to pass in that same path when creating a new \" +\n \"Peer.\";\n }\n\n throw new Error(\"Could not get an ID from the server.\" + pathError);\n }\n }\n\n /** @deprecated */\n async listAllPeers(): Promise {\n const url = this._buildUrl(\"peers\");\n\n try {\n const response = await fetch(url);\n\n if (response.status !== 200) {\n if (response.status === 401) {\n let helpfulError = \"\";\n\n if (this._options.host === util.CLOUD_HOST) {\n helpfulError =\n \"It looks like you're using the cloud server. You can email \" +\n \"team@peerjs.com to enable peer listing for your API key.\";\n } else {\n helpfulError =\n \"You need to enable `allow_discovery` on your self-hosted \" +\n \"PeerServer to use this feature.\";\n }\n\n throw new Error(\"It doesn't look like you have permission to list peers IDs. \" +\n helpfulError);\n }\n\n throw new Error(`Error. Status:${response.status}`);\n }\n\n return response.json();\n } catch (error) {\n logger.error(\"Error retrieving list peers\", error);\n\n throw new Error(\"Could not get list peers from the server.\" + error);\n }\n }\n}\n","import { EventEmitter } from \"eventemitter3\";\nimport { util } from \"./util\";\nimport logger, { LogLevel } from \"./logger\";\nimport { Socket } from \"./socket\";\nimport { MediaConnection } from \"./mediaconnection\";\nimport { DataConnection } from \"./dataconnection\";\nimport {\n ConnectionType,\n PeerErrorType,\n PeerEventType,\n SocketEventType,\n ServerMessageType\n} from \"./enums\";\nimport { BaseConnection } from \"./baseconnection\";\nimport { ServerMessage } from \"./servermessage\";\nimport { API } from \"./api\";\nimport { PeerConnectOption, PeerJSOption } from \"..\";\n\nclass PeerOptions implements PeerJSOption {\n debug?: LogLevel; // 1: Errors, 2: Warnings, 3: All logs\n host?: string;\n port?: number;\n path?: string;\n key?: string;\n token?: string;\n config?: any;\n secure?: boolean;\n pingInterval?: number;\n logFunction?: (logLevel: LogLevel, ...rest: any[]) => void;\n}\n\n/**\n * A peer who can initiate connections with other peers.\n */\nexport class Peer extends EventEmitter {\n private static readonly DEFAULT_KEY = \"peerjs\";\n\n private readonly _options: PeerOptions;\n private readonly _api: API;\n private readonly _socket: Socket;\n\n private _id: string | null = null;\n private _lastServerId: string | null = null;\n\n // States.\n private _destroyed = false; // Connections have been killed\n private _disconnected = false; // Connection to PeerServer killed but P2P connections still active\n private _open = false; // Sockets and such are not yet open.\n private readonly _connections: Map = new Map(); // All connections for this peer.\n private readonly _lostMessages: Map = new Map(); // src => [list of messages]\n\n get id() {\n return this._id;\n }\n\n get options() {\n return this._options;\n }\n\n get open() {\n return this._open;\n }\n\n get socket() {\n return this._socket;\n }\n\n /**\n * @deprecated \n * Return type will change from Object to Map \n */\n get connections(): Object {\n const plainConnections = Object.create(null);\n\n for (let [k, v] of this._connections) {\n plainConnections[k] = v;\n }\n\n return plainConnections;\n }\n\n get destroyed() {\n return this._destroyed;\n }\n get disconnected() {\n return this._disconnected;\n }\n\n constructor(id?: string | PeerOptions, options?: PeerOptions) {\n super();\n\n let userId: string | undefined;\n\n // Deal with overloading\n if (id && id.constructor == Object) {\n options = id as PeerOptions;\n } else if (id) {\n userId = id.toString();\n }\n\n // Configurize options\n options = {\n debug: 0, // 1: Errors, 2: Warnings, 3: All logs\n host: util.CLOUD_HOST,\n port: util.CLOUD_PORT,\n path: \"/\",\n key: Peer.DEFAULT_KEY,\n token: util.randomToken(),\n config: util.defaultConfig,\n ...options\n };\n this._options = options;\n\n // Detect relative URL host.\n if (this._options.host === \"/\") {\n this._options.host = window.location.hostname;\n }\n\n // Set path correctly.\n if (this._options.path) {\n if (this._options.path[0] !== \"/\") {\n this._options.path = \"/\" + this._options.path;\n }\n if (this._options.path[this._options.path.length - 1] !== \"/\") {\n this._options.path += \"/\";\n }\n }\n\n // Set whether we use SSL to same as current host\n if (this._options.secure === undefined && this._options.host !== util.CLOUD_HOST) {\n this._options.secure = util.isSecure();\n } else if (this._options.host == util.CLOUD_HOST) {\n this._options.secure = true;\n }\n // Set a custom log function if present\n if (this._options.logFunction) {\n logger.setLogFunction(this._options.logFunction);\n }\n\n logger.logLevel = this._options.debug || 0;\n\n this._api = new API(options);\n this._socket = this._createServerConnection();\n\n // Sanity checks\n // Ensure WebRTC supported\n if (!util.supports.audioVideo && !util.supports.data) {\n this._delayedAbort(\n PeerErrorType.BrowserIncompatible,\n \"The current browser does not support WebRTC\"\n );\n return;\n }\n\n // Ensure alphanumeric id\n if (!!userId && !util.validateId(userId)) {\n this._delayedAbort(PeerErrorType.InvalidID, `ID \"${userId}\" is invalid`);\n return;\n }\n\n if (userId) {\n this._initialize(userId);\n } else {\n this._api.retrieveId()\n .then(id => this._initialize(id))\n .catch(error => this._abort(PeerErrorType.ServerError, error));\n }\n }\n\n private _createServerConnection(): Socket {\n const socket = new Socket(\n this._options.secure,\n this._options.host!,\n this._options.port!,\n this._options.path!,\n this._options.key!,\n this._options.pingInterval\n );\n\n socket.on(SocketEventType.Message, (data: ServerMessage) => {\n this._handleMessage(data);\n });\n\n socket.on(SocketEventType.Error, (error: string) => {\n this._abort(PeerErrorType.SocketError, error);\n });\n\n socket.on(SocketEventType.Disconnected, () => {\n if (this.disconnected) {\n return;\n }\n\n this.emitError(PeerErrorType.Network, \"Lost connection to server.\");\n this.disconnect();\n });\n\n socket.on(SocketEventType.Close, () => {\n if (this.disconnected) {\n return;\n }\n\n this._abort(PeerErrorType.SocketClosed, \"Underlying socket is already closed.\");\n });\n\n return socket;\n }\n\n /** Initialize a connection with the server. */\n private _initialize(id: string): void {\n this._id = id;\n this.socket.start(id, this._options.token!);\n }\n\n /** Handles messages from the server. */\n private _handleMessage(message: ServerMessage): void {\n const type = message.type;\n const payload = message.payload;\n const peerId = message.src;\n\n switch (type) {\n case ServerMessageType.Open: // The connection to the server is open.\n this._lastServerId = this.id;\n this._open = true;\n this.emit(PeerEventType.Open, this.id);\n break;\n case ServerMessageType.Error: // Server error.\n this._abort(PeerErrorType.ServerError, payload.msg);\n break;\n case ServerMessageType.IdTaken: // The selected ID is taken.\n this._abort(PeerErrorType.UnavailableID, `ID \"${this.id}\" is taken`);\n break;\n case ServerMessageType.InvalidKey: // The given API key cannot be found.\n this._abort(PeerErrorType.InvalidKey, `API KEY \"${this._options.key}\" is invalid`);\n break;\n case ServerMessageType.Leave: // Another peer has closed its connection to this peer.\n logger.log(`Received leave message from ${peerId}`);\n this._cleanupPeer(peerId);\n this._connections.delete(peerId);\n break;\n case ServerMessageType.Expire: // The offer sent to a peer has expired without response.\n this.emitError(PeerErrorType.PeerUnavailable, `Could not connect to peer ${peerId}`);\n break;\n case ServerMessageType.Offer: {\n // we should consider switching this to CALL/CONNECT, but this is the least breaking option.\n const connectionId = payload.connectionId;\n let connection = this.getConnection(peerId, connectionId);\n\n if (connection) {\n connection.close();\n logger.warn(`Offer received for existing Connection ID:${connectionId}`);\n }\n\n // Create a new connection.\n if (payload.type === ConnectionType.Media) {\n connection = new MediaConnection(peerId, this, {\n connectionId: connectionId,\n _payload: payload,\n metadata: payload.metadata\n });\n this._addConnection(peerId, connection);\n this.emit(PeerEventType.Call, connection);\n } else if (payload.type === ConnectionType.Data) {\n connection = new DataConnection(peerId, this, {\n connectionId: connectionId,\n _payload: payload,\n metadata: payload.metadata,\n label: payload.label,\n serialization: payload.serialization,\n reliable: payload.reliable\n });\n this._addConnection(peerId, connection);\n this.emit(PeerEventType.Connection, connection);\n } else {\n logger.warn(`Received malformed connection type:${payload.type}`);\n return;\n }\n\n // Find messages.\n const messages = this._getMessages(connectionId);\n for (let message of messages) {\n connection.handleMessage(message);\n }\n\n break;\n }\n default: {\n if (!payload) {\n logger.warn(`You received a malformed message from ${peerId} of type ${type}`);\n return;\n }\n\n const connectionId = payload.connectionId;\n const connection = this.getConnection(peerId, connectionId);\n\n if (connection && connection.peerConnection) {\n // Pass it on.\n connection.handleMessage(message);\n } else if (connectionId) {\n // Store for possible later use\n this._storeMessage(connectionId, message);\n } else {\n logger.warn(\"You received an unrecognized message:\", message);\n }\n break;\n }\n }\n }\n\n /** Stores messages without a set up connection, to be claimed later. */\n private _storeMessage(connectionId: string, message: ServerMessage): void {\n if (!this._lostMessages.has(connectionId)) {\n this._lostMessages.set(connectionId, []);\n }\n\n this._lostMessages.get(connectionId).push(message);\n }\n\n /** Retrieve messages from lost message store */\n //TODO Change it to private\n public _getMessages(connectionId: string): ServerMessage[] {\n const messages = this._lostMessages.get(connectionId);\n\n if (messages) {\n this._lostMessages.delete(connectionId);\n return messages;\n }\n\n return [];\n }\n\n /**\n * Returns a DataConnection to the specified peer. See documentation for a\n * complete list of options.\n */\n connect(peer: string, options: PeerConnectOption = {}): DataConnection {\n if (this.disconnected) {\n logger.warn(\n \"You cannot connect to a new Peer because you called \" +\n \".disconnect() on this Peer and ended your connection with the \" +\n \"server. You can create a new Peer to reconnect, or call reconnect \" +\n \"on this peer if you believe its ID to still be available.\"\n );\n this.emitError(\n PeerErrorType.Disconnected,\n \"Cannot connect to new Peer after disconnecting from server.\"\n );\n return;\n }\n\n const dataConnection = new DataConnection(peer, this, options);\n this._addConnection(peer, dataConnection);\n return dataConnection;\n }\n\n /**\n * Returns a MediaConnection to the specified peer. See documentation for a\n * complete list of options.\n */\n call(peer: string, stream: MediaStream, options: any = {}): MediaConnection {\n if (this.disconnected) {\n logger.warn(\n \"You cannot connect to a new Peer because you called \" +\n \".disconnect() on this Peer and ended your connection with the \" +\n \"server. You can create a new Peer to reconnect.\"\n );\n this.emitError(\n PeerErrorType.Disconnected,\n \"Cannot connect to new Peer after disconnecting from server.\"\n );\n return;\n }\n\n if (!stream) {\n logger.error(\n \"To call a peer, you must provide a stream from your browser's `getUserMedia`.\"\n );\n return;\n }\n\n options._stream = stream;\n\n const mediaConnection = new MediaConnection(peer, this, options);\n this._addConnection(peer, mediaConnection);\n return mediaConnection;\n }\n\n /** Add a data/media connection to this peer. */\n private _addConnection(peerId: string, connection: BaseConnection): void {\n logger.log(`add connection ${connection.type}:${connection.connectionId} to peerId:${peerId}`);\n\n if (!this._connections.has(peerId)) {\n this._connections.set(peerId, []);\n }\n this._connections.get(peerId).push(connection);\n }\n\n //TODO should be private\n _removeConnection(connection: BaseConnection): void {\n const connections = this._connections.get(connection.peer);\n\n if (connections) {\n const index = connections.indexOf(connection);\n\n if (index !== -1) {\n connections.splice(index, 1);\n }\n }\n\n //remove from lost messages\n this._lostMessages.delete(connection.connectionId);\n }\n\n /** Retrieve a data/media connection for this peer. */\n getConnection(peerId: string, connectionId: string): null | BaseConnection {\n const connections = this._connections.get(peerId);\n if (!connections) {\n return null;\n }\n\n for (let connection of connections) {\n if (connection.connectionId === connectionId) {\n return connection;\n }\n }\n\n return null;\n }\n\n private _delayedAbort(type: PeerErrorType, message: string | Error): void {\n setTimeout(() => {\n this._abort(type, message);\n }, 0);\n }\n\n /**\n * Emits an error message and destroys the Peer.\n * The Peer is not destroyed if it's in a disconnected state, in which case\n * it retains its disconnected state and its existing connections.\n */\n private _abort(type: PeerErrorType, message: string | Error): void {\n logger.error(\"Aborting!\");\n\n this.emitError(type, message);\n\n if (!this._lastServerId) {\n this.destroy();\n } else {\n this.disconnect();\n }\n }\n\n /** Emits a typed error message. */\n emitError(type: PeerErrorType, err: string | Error): void {\n logger.error(\"Error:\", err);\n\n let error: Error & { type?: PeerErrorType };\n\n if (typeof err === \"string\") {\n error = new Error(err);\n } else {\n error = err as Error;\n }\n\n error.type = type;\n\n this.emit(PeerEventType.Error, error);\n }\n\n /**\n * Destroys the Peer: closes all active connections as well as the connection\n * to the server.\n * Warning: The peer can no longer create or accept connections after being\n * destroyed.\n */\n destroy(): void {\n if (this.destroyed) {\n return;\n }\n\n logger.log(`Destroy peer with ID:${this.id}`);\n\n this.disconnect();\n this._cleanup();\n\n this._destroyed = true;\n\n this.emit(PeerEventType.Close);\n }\n\n /** Disconnects every connection on this peer. */\n private _cleanup(): void {\n for (let peerId of this._connections.keys()) {\n this._cleanupPeer(peerId);\n this._connections.delete(peerId);\n }\n\n this.socket.removeAllListeners();\n }\n\n /** Closes all connections to this peer. */\n private _cleanupPeer(peerId: string): void {\n const connections = this._connections.get(peerId);\n\n if (!connections) return;\n\n for (let connection of connections) {\n connection.close();\n }\n }\n\n /**\n * Disconnects the Peer's connection to the PeerServer. Does not close any\n * active connections.\n * Warning: The peer can no longer create or accept connections after being\n * disconnected. It also cannot reconnect to the server.\n */\n disconnect(): void {\n if (this.disconnected) {\n return;\n }\n\n const currentId = this.id;\n\n logger.log(`Disconnect peer with ID:${currentId}`);\n\n this._disconnected = true;\n this._open = false;\n\n this.socket.close();\n\n this._lastServerId = currentId;\n this._id = null;\n\n this.emit(PeerEventType.Disconnected, currentId);\n }\n\n /** Attempts to reconnect with the same ID. */\n reconnect(): void {\n if (this.disconnected && !this.destroyed) {\n logger.log(`Attempting reconnection to server with ID ${this._lastServerId}`);\n this._disconnected = false;\n this._initialize(this._lastServerId!);\n } else if (this.destroyed) {\n throw new Error(\"This peer cannot reconnect to the server. It has already been destroyed.\");\n } else if (!this.disconnected && !this.open) {\n // Do nothing. We're still connecting the first time.\n logger.error(\"In a hurry? We're still trying to make the initial connection!\");\n } else {\n throw new Error(`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`);\n }\n }\n\n /**\n * Get a list of available peer IDs. If you're running your own server, you'll\n * want to set allow_discovery: true in the PeerServer options. If you're using\n * the cloud server, email team@peerjs.com to get the functionality enabled for\n * your key.\n */\n listAllPeers(cb = (_: any[]) => { }): void {\n this._api.listAllPeers()\n .then(peers => cb(peers))\n .catch(error => this._abort(PeerErrorType.ServerError, error));\n }\n}\n","// This alphabet uses `A-Za-z0-9_-` symbols. The genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet =\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\n\nexport { urlAlphabet }\n","// This file replaces `index.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nimport { urlAlphabet } from './url-alphabet/index.js'\n\nif (process.env.NODE_ENV !== 'production') {\n // All bundlers will remove this block in the production bundle.\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\n\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\n\nlet customRandom = (alphabet, size, getRandom) => {\n // First, a bitmask is necessary to generate the ID. The bitmask makes bytes\n // values closer to the alphabet size. The bitmask calculates the closest\n // `2^31 - 1` number, which exceeds the alphabet size.\n // For example, the bitmask for the alphabet size 30 is 31 (00011111).\n // `Math.clz32` is not used, because it is not available in browsers.\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n // Though, the bitmask solution is not perfect since the bytes exceeding\n // the alphabet size are refused. Therefore, to reliably generate the ID,\n // the random bytes redundancy has to be satisfied.\n\n // Note: every hardware random generator call is performance expensive,\n // because the system call for entropy collection takes a lot of time.\n // So, to avoid additional system calls, extra bytes are requested in advance.\n\n // Next, a step determines how many random bytes to generate.\n // The number of random bytes gets decided upon the ID size, mask,\n // alphabet size, and magic number 1.6 (using 1.6 peaks at performance\n // according to benchmarks).\n\n // `-~f => Math.ceil(f)` if f is a float\n // `-~i => i + 1` if i is an integer\n let step = -~((1.6 * mask * size) / alphabet.length)\n\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let j = step\n while (j--) {\n // Adding `|| ''` refuses a random byte that exceeds the alphabet size.\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\n\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\n\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n while (size--) {\n // It is incorrect to use bytes exceeding the alphabet size.\n // The following mask reduces the random byte in the 0-255 value\n // range to the 0-63 value range. Therefore, adding hacks, such\n // as empty string fallback or magic numbers, is unneccessary because\n // the bitmask trims bytes down to the alphabet size.\n let byte = bytes[size] & 63\n if (byte < 36) {\n // `0-9a-z`\n id += byte.toString(36)\n } else if (byte < 62) {\n // `A-Z`\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\n\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","function chunkSubstr(str: string, size: number) {\n const numChunks = Math.ceil(str.length / size)\n const chunks = new Array(numChunks)\n\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = str.substr(o, size)\n }\n\n return chunks\n}\n\nconst buff_to_base64 = (buff) => btoa(String.fromCharCode.apply(null, buff));\n\nconst base64_to_buf = (b64) =>\n Uint8Array.from(atob(b64), (c) => c.charCodeAt(null));\n\nconst enc = new TextEncoder();\nconst dec = new TextDecoder();\n\nconst getPasswordKey = (password: string) =>\n window.crypto.subtle.importKey(\"raw\", enc.encode(password), \"PBKDF2\", false, [\n \"deriveKey\",\n ]);\n\nconst deriveKey = (passwordKey: CryptoKey, salt: Uint8Array, keyUsage: KeyUsage[]) =>\n window.crypto.subtle.deriveKey(\n {\n name: \"PBKDF2\",\n salt: salt,\n iterations: 50000,\n hash: \"SHA-256\",\n },\n passwordKey,\n { name: \"AES-GCM\", length: 256 },\n false,\n keyUsage\n );\n\nexport async function encrypt(secretData: string, password: string) {\n const parts = chunkSubstr(secretData, 1000000);\n const salt = window.crypto.getRandomValues(new Uint8Array(16));\n const passwordKey = await getPasswordKey(password);\n const resultParts = await Promise.all(parts.map(async (part) => {\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n const aesKey = await deriveKey(passwordKey, salt, [\"encrypt\"]);\n const encryptedContent = await window.crypto.subtle.encrypt(\n {\n name: \"AES-GCM\",\n iv: iv,\n },\n aesKey,\n enc.encode(part)\n );\n\n const encryptedContentArr = new Uint8Array(encryptedContent);\n let buff = new Uint8Array(\n salt.byteLength + iv.byteLength + encryptedContentArr.byteLength\n );\n buff.set(salt, 0);\n buff.set(iv, salt.byteLength);\n buff.set(encryptedContentArr, salt.byteLength + iv.byteLength);\n //const base64Buff = buff_to_base64(buff);\n return buff;\n }));\n return resultParts;\n}\n\nexport async function decrypt(encryptedData: Uint8Array[], password: string) {\n try {\n const passwordKey = await getPasswordKey(password);\n const parts = await Promise.all(encryptedData.map(async (part) => {\n const encryptedDataBuff = part;\n const salt = encryptedDataBuff.slice(0, 16);\n const iv = encryptedDataBuff.slice(16, 16 + 12);\n const data = encryptedDataBuff.slice(16 + 12);\n const aesKey = await deriveKey(passwordKey, salt, [\"decrypt\"]);\n const decryptedContent = await window.crypto.subtle.decrypt(\n {\n name: \"AES-GCM\",\n iv: iv,\n },\n aesKey,\n data\n );\n return dec.decode(decryptedContent);\n }));\n return JSON.parse(parts.join(''));\n } catch (e) {\n console.log(`Error - ${e}`);\n return \"\";\n }\n}\n","import { useCallback } from 'react';\nimport { encrypt, decrypt } from '../utils/crypto';\n\n\nconst useCrypto = (secret: string) => {\n const doEncrypt = useCallback(async (data: any) => {\n const raw = JSON.stringify(data);\n const result = await encrypt(raw, secret);\n return result;\n }, [secret]);\n\n const doDecrypt = useCallback(async (data: string[]) => {\n return decrypt(data, secret);\n }, [secret]);\n\n return {\n encrypt: doEncrypt,\n decrypt: doDecrypt,\n };\n}\n\nexport default useCrypto;\n","import React, { createContext, useMemo, useState, useCallback, useEffect } from 'react';\nimport Peer, { DataConnection } from 'peerjs';\nimport { nanoid } from 'nanoid';\nimport useCrypto from '../hooks/useCrypto';\n\nenum States {\n WAITING,\n CONNECTING,\n CONNECTED,\n}\n\ninterface ConnectionContextValue {\n clientInfo: any;\n state: States;\n messages: any[];\n send: (message: any) => Promise;\n connect: (connectionInfo: any) => Promise;\n}\n\ninterface Message {\n id: string;\n packages: number;\n content: string;\n}\n\nfunction dataURItoBlob(dataURI: string) {\n var mime = dataURI.split(',')[0].split(':')[1].split(';')[0];\n var binary = atob(dataURI.split(',')[1]);\n var array = [];\n for (var i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n }\n const blob = new Blob([new Uint8Array(array)], {type: mime});\n return URL.createObjectURL(blob);\n}\n\nconst ConnectionContext = createContext(undefined as any);\n\nconst ConnectionProvider: React.FC = ({ children }) => {\n const [secret, setSecret] = useState(nanoid());\n const { encrypt, decrypt } = useCrypto(secret);\n const id = useMemo(() => nanoid(), []);\n const peer = useMemo(() => new Peer(id), [id]);\n const [connection, setConnection] = useState(undefined);\n const [messages, setMessages] = useState([]);\n const [state, setState] = useState(States.WAITING);\n const clientInfo = useMemo(() => ({\n id,\n secret,\n }), [id]);\n\n const send = useCallback(async (message: any) => {\n if (!connection) return;\n setMessages(current => [\n ...current,\n {\n ...message,\n body: dataURItoBlob(message.body),\n },\n ]);\n connection.send(await encrypt(message)); \n }, [connection, encrypt]);\n\n const connect = useCallback(async (clientInfo: any) => {\n setState(States.CONNECTING);\n const newConnection = peer.connect(clientInfo.id);\n newConnection.on('open', () => {\n setSecret(clientInfo.secret);\n setState(States.CONNECTED);\n setConnection(newConnection);\n console.log('connected', newConnection);\n });\n }, [peer]);\n\n useEffect(() => {\n const onConnect = (newConnection: DataConnection) => {\n setState(States.CONNECTED);\n setConnection(newConnection);\n console.log('connected', newConnection);\n };\n peer.on('connection', onConnect);\n\n return () => {\n peer.off('connection', onConnect);\n };\n }, [peer]);\n\n useEffect(() => {\n if (!connection) {\n return;\n }\n const handleData = async (encrypted: any) => {\n const message = await decrypt(encrypted);\n setMessages(current => [\n ...current,\n {\n ...message,\n body: dataURItoBlob(message.body),\n },\n ]);\n };\n connection.on('data', handleData);\n return () => {\n connection.off('data', handleData);\n }\n }, [connection, decrypt]);\n\n\n return (\n \n {children}\n \n );\n};\n\nexport { States, ConnectionProvider };\n\nexport default ConnectionContext;\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = {\n d: _propTypes2.default.string.isRequired,\n fill: _propTypes2.default.string.isRequired,\n transformX: _propTypes2.default.number.isRequired,\n transformY: _propTypes2.default.number.isRequired\n};\n\nvar defaultProps = {};\n\nvar QRCodeCell = function QRCodeCell(_ref) {\n var d = _ref.d,\n fill = _ref.fill,\n transformX = _ref.transformX,\n transformY = _ref.transformY;\n return _react2.default.createElement(\"path\", {\n d: d,\n fill: fill,\n transform: \"matrix(\" + [1, 0, 0, 1, transformX, transformY] + \")\"\n });\n};\n\nQRCodeCell.propTypes = propTypes;\nQRCodeCell.defaultProps = defaultProps;\n\nexports.default = QRCodeCell;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n children: _propTypes2.default.array.isRequired,\n size: _propTypes2.default.number.isRequired,\n style: _propTypes2.default.object,\n xmlns: _propTypes2.default.string\n};\n\nvar defaultProps = {\n style: undefined,\n xmlns: \"http://www.w3.org/2000/svg\"\n};\n\nvar QRCodeSurface = function QRCodeSurface(_ref) {\n var children = _ref.children,\n size = _ref.size,\n style = _ref.style,\n xmlns = _ref.xmlns,\n props = _objectWithoutProperties(_ref, [\"children\", \"size\", \"style\", \"xmlns\"]);\n\n return _react2.default.createElement(\n \"svg\",\n _extends({}, props, { height: size, style: style, width: size, xmlns: xmlns }),\n children\n );\n};\n\nQRCodeSurface.propTypes = propTypes;\nQRCodeSurface.defaultProps = defaultProps;\n\nexports.default = QRCodeSurface;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _QRCode = require(\"qr.js/lib/QRCode\");\n\nvar _QRCode2 = _interopRequireDefault(_QRCode);\n\nvar _ErrorCorrectLevel = require(\"qr.js/lib/ErrorCorrectLevel\");\n\nvar _ErrorCorrectLevel2 = _interopRequireDefault(_ErrorCorrectLevel);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QRCodeCell = require(\"./components/QRCodeCell\");\n\nvar _QRCodeCell2 = _interopRequireDefault(_QRCodeCell);\n\nvar _QRCodeSurface = require(\"./components/QRCodeSurface\");\n\nvar _QRCodeSurface2 = _interopRequireDefault(_QRCodeSurface);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } // A `qr.js` doesn't handle error level of zero (M) so we need to do it right, thus the deep require.\n\n\nvar propTypes = {\n bgColor: _propTypes2.default.string,\n fgColor: _propTypes2.default.string,\n level: _propTypes2.default.oneOf([\"L\", \"M\", \"Q\", \"H\"]),\n size: _propTypes2.default.number,\n value: _propTypes2.default.string.isRequired\n};\n\nvar defaultProps = {\n bgColor: \"#FFFFFF\",\n fgColor: \"#000000\",\n level: \"L\",\n size: 256\n};\n\nvar QRCode = function QRCode(_ref) {\n var bgColor = _ref.bgColor,\n fgColor = _ref.fgColor,\n level = _ref.level,\n size = _ref.size,\n value = _ref.value,\n props = _objectWithoutProperties(_ref, [\"bgColor\", \"fgColor\", \"level\", \"size\", \"value\"]);\n\n // We'll use type === -1 to force QRCode to automatically pick the best type.\n var qrcode = new _QRCode2.default(-1, _ErrorCorrectLevel2.default[level]);\n qrcode.addData(value);\n qrcode.make();\n var cells = qrcode.modules;\n var tileSize = size / cells.length;\n return _react2.default.createElement(\n _QRCodeSurface2.default,\n _extends({}, props, { size: size, style: { height: size, width: size } }),\n cells.map(function (row, rowIndex) {\n return row.map(function (cell, cellIndex) {\n var fill = cell ? fgColor : bgColor;\n var qrItemWidth = Math.ceil((cellIndex + 1) * tileSize) - Math.floor(cellIndex * tileSize);\n var qrItemHeight = Math.ceil((rowIndex + 1) * tileSize) - Math.floor(rowIndex * tileSize);\n var d = \"M 0 0 L \" + qrItemWidth + \" 0 L \" + qrItemWidth + \" \" + qrItemHeight + \" L 0 \" + qrItemHeight + \" Z\";\n var transformX = Math.round(cellIndex * tileSize);\n var transformY = Math.round(rowIndex * tileSize);\n return _react2.default.createElement(_QRCodeCell2.default\n /* eslint-disable react/no-array-index-key */\n , { key: \"rectangle-\" + rowIndex + \"-\" + cellIndex\n /* eslint-enable react/no-array-index-key */\n , d: d,\n fill: fill,\n transformX: transformX,\n transformY: transformY\n });\n });\n })\n );\n};\n\nQRCode.propTypes = propTypes;\nQRCode.defaultProps = defaultProps;\n\nexports.default = (0, _react.memo)(QRCode);","'use strict';\n\nfunction NoVideoInputDevicesError() {\n this.name = 'NoVideoInputDevicesError';\n this.message = 'No video input devices found';\n}\nNoVideoInputDevicesError.prototype = new Error();\n\nmodule.exports = {\n NoVideoInputDevicesError: NoVideoInputDevicesError\n};","'use strict';\n\nvar _require = require('./errors'),\n NoVideoInputDevicesError = _require.NoVideoInputDevicesError;\n\nfunction defaultDeviceIdChooser(filteredDevices, videoDevices, facingMode) {\n if (filteredDevices.length > 0) {\n return filteredDevices[0].deviceId;\n }\n if (videoDevices.length == 1 || facingMode == 'user') {\n return videoDevices[0].deviceId;\n }\n return videoDevices[1].deviceId;\n}\n\nvar getFacingModePattern = function getFacingModePattern(facingMode) {\n return facingMode == 'environment' ? /rear|back|environment/ig : /front|user|face/ig;\n};\n\nfunction getDeviceId(facingMode) {\n var chooseDeviceId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDeviceIdChooser;\n\n // Get manual deviceId from available devices.\n return new Promise(function (resolve, reject) {\n var enumerateDevices = void 0;\n try {\n enumerateDevices = navigator.mediaDevices.enumerateDevices();\n } catch (err) {\n reject(new NoVideoInputDevicesError());\n }\n enumerateDevices.then(function (devices) {\n // Filter out non-videoinputs\n var videoDevices = devices.filter(function (device) {\n return device.kind == 'videoinput';\n });\n\n if (videoDevices.length < 1) {\n reject(new NoVideoInputDevicesError());\n return;\n }\n\n var pattern = getFacingModePattern(facingMode);\n\n // Filter out video devices without the pattern\n var filteredDevices = videoDevices.filter(function (_ref) {\n var label = _ref.label;\n return pattern.test(label);\n });\n\n resolve(chooseDeviceId(filteredDevices, videoDevices, facingMode));\n });\n });\n}\n\nmodule.exports = { getDeviceId: getDeviceId, getFacingModePattern: getFacingModePattern };","\"use strict\";\n\nmodule.exports = function havePropsChanged(prevProps, nextProps, keys) {\n var changedProps = [];\n keys.forEach(function (key) {\n if (prevProps[key] != nextProps[key]) {\n changedProps.push(key);\n }\n });\n return changedProps;\n};","\"use strict\";\n\n/**\n * From https://gist.github.com/nolanlawson/10340255\n */\nmodule.exports = function createBlob(parts, properties) {\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== \"TypeError\") {\n throw e;\n }\n var BlobBuilder = window.BlobBuilder || window.MSBlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder;\n var builder = new BlobBuilder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n};","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nlet logDisabled_ = true;\nlet deprecationWarnings_ = true;\n\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\nexport function extractVersion(uastring, expr, pos) {\n const match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n}\n\n// Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\nexport function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n const nativeAddEventListener = proto.addEventListener;\n proto.addEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n const wrappedCallback = (e) => {\n const modifiedEvent = wrapper(e);\n if (modifiedEvent) {\n if (cb.handleEvent) {\n cb.handleEvent(modifiedEvent);\n } else {\n cb(modifiedEvent);\n }\n }\n };\n this._eventMap = this._eventMap || {};\n if (!this._eventMap[eventNameToWrap]) {\n this._eventMap[eventNameToWrap] = new Map();\n }\n this._eventMap[eventNameToWrap].set(cb, wrappedCallback);\n return nativeAddEventListener.apply(this, [nativeEventName,\n wrappedCallback]);\n };\n\n const nativeRemoveEventListener = proto.removeEventListener;\n proto.removeEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap\n || !this._eventMap[eventNameToWrap]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (!this._eventMap[eventNameToWrap].has(cb)) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n const unwrappedCb = this._eventMap[eventNameToWrap].get(cb);\n this._eventMap[eventNameToWrap].delete(cb);\n if (this._eventMap[eventNameToWrap].size === 0) {\n delete this._eventMap[eventNameToWrap];\n }\n if (Object.keys(this._eventMap).length === 0) {\n delete this._eventMap;\n }\n return nativeRemoveEventListener.apply(this, [nativeEventName,\n unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get() {\n return this['_on' + eventNameToWrap];\n },\n set(cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n if (cb) {\n this.addEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\nexport function disableLog(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n}\n\n/**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\nexport function disableWarnings(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n}\n\nexport function log() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n}\n\n/**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\nexport function deprecated(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod +\n ' instead.');\n}\n\n/**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\nexport function detectBrowser(window) {\n // Returned result object.\n const result = {browser: null, version: null};\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n const {navigator} = window;\n\n if (navigator.mozGetUserMedia) { // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent,\n /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia ||\n (window.isSecureContext === false && window.webkitRTCPeerConnection &&\n !window.RTCIceGatherer)) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n // Chrome 74 removed webkitGetUserMedia on http as well so we need the\n // more complicated fallback to webkitRTCPeerConnection.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) { // Edge.\n result.browser = 'edge';\n result.version = extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n } else if (window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) { // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./, 1);\n result.supportsUnifiedPlan = window.RTCRtpTransceiver &&\n 'currentDirection' in window.RTCRtpTransceiver.prototype;\n } else { // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n}\n\n/**\n * Checks if something is an object.\n *\n * @param {*} val The something you want to check.\n * @return true if val is an object, false otherwise.\n */\nfunction isObject(val) {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\n/**\n * Remove all empty objects and undefined values\n * from a nested object -- an enhanced and vanilla version\n * of Lodash's `compact`.\n */\nexport function compactObject(data) {\n if (!isObject(data)) {\n return data;\n }\n\n return Object.keys(data).reduce(function(accumulator, key) {\n const isObj = isObject(data[key]);\n const value = isObj ? compactObject(data[key]) : data[key];\n const isEmptyObject = isObj && !Object.keys(value).length;\n if (value === undefined || isEmptyObject) {\n return accumulator;\n }\n return Object.assign(accumulator, {[key]: value});\n }, {});\n}\n\n/* iterates the stats graph recursively. */\nexport function walkStats(stats, base, resultSet) {\n if (!base || resultSet.has(base.id)) {\n return;\n }\n resultSet.set(base.id, base);\n Object.keys(base).forEach(name => {\n if (name.endsWith('Id')) {\n walkStats(stats, stats.get(base[name]), resultSet);\n } else if (name.endsWith('Ids')) {\n base[name].forEach(id => {\n walkStats(stats, stats.get(id), resultSet);\n });\n }\n });\n}\n\n/* filter getStats for a sender/receiver track. */\nexport function filterStats(result, track, outbound) {\n const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\n const filteredResult = new Map();\n if (track === null) {\n return filteredResult;\n }\n const trackStats = [];\n result.forEach(value => {\n if (value.type === 'track' &&\n value.trackIdentifier === track.id) {\n trackStats.push(value);\n }\n });\n trackStats.forEach(trackStat => {\n result.forEach(stats => {\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\n walkStats(result, stats, filteredResult);\n }\n });\n });\n return filteredResult;\n}\n\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\nconst logging = utils.log;\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n\n if (!navigator.mediaDevices) {\n return;\n }\n\n const constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n const cc = {};\n Object.keys(c).forEach(key => {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n const oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n let oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(mix => {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n const shimConstraints_ = function(constraints, func) {\n if (browserDetails.version >= 61) {\n return func(constraints);\n }\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && typeof constraints.audio === 'object') {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile & surface pro.\n let face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n const getSupportedFacingModeLies = browserDetails.version < 66;\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode &&\n !getSupportedFacingModeLies)) {\n delete constraints.video.facingMode;\n let matches;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n matches = ['back', 'rear'];\n } else if (face.exact === 'user' || face.ideal === 'user') {\n matches = ['front'];\n }\n if (matches) {\n // Look for matches in label, or use last cam for back (typical).\n return navigator.mediaDevices.enumerateDevices()\n .then(devices => {\n devices = devices.filter(d => d.kind === 'videoinput');\n let dev = devices.find(d => matches.some(match =>\n d.label.toLowerCase().includes(match)));\n if (!dev && devices.length && matches.includes('back')) {\n dev = devices[devices.length - 1]; // more likely the back cam\n }\n if (dev) {\n constraints.video.deviceId = face.exact ? {exact: dev.deviceId} :\n {ideal: dev.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n const shimError_ = function(e) {\n if (browserDetails.version >= 64) {\n return e;\n }\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n PermissionDismissedError: 'NotAllowedError',\n InvalidStateError: 'NotAllowedError',\n DevicesNotFoundError: 'NotFoundError',\n ConstraintNotSatisfiedError: 'OverconstrainedError',\n TrackStartError: 'NotReadableError',\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\n MediaDeviceKillSwitchOn: 'NotAllowedError',\n TabCaptureError: 'AbortError',\n ScreenCaptureError: 'AbortError',\n DeviceCaptureError: 'AbortError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint || e.constraintName,\n toString() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n const getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, c => {\n navigator.webkitGetUserMedia(c, onSuccess, e => {\n if (onError) {\n onError(shimError_(e));\n }\n });\n });\n };\n navigator.getUserMedia = getUserMedia_.bind(navigator);\n\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n if (navigator.mediaDevices.getUserMedia) {\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => {\n if (c.audio && !stream.getAudioTracks().length ||\n c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(track => {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n return stream;\n }, e => Promise.reject(shimError_(e))));\n };\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\nexport function shimGetDisplayMedia(window, getSourceId) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n // getSourceId is a function that returns a promise resolving with\n // the sourceId of the screen/window/tab to be shared.\n if (typeof getSourceId !== 'function') {\n console.error('shimGetDisplayMedia: getSourceId argument is not ' +\n 'a function');\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n return getSourceId(constraints)\n .then(sourceId => {\n const widthSpecified = constraints.video && constraints.video.width;\n const heightSpecified = constraints.video &&\n constraints.video.height;\n const frameRateSpecified = constraints.video &&\n constraints.video.frameRate;\n constraints.video = {\n mandatory: {\n chromeMediaSource: 'desktop',\n chromeMediaSourceId: sourceId,\n maxFrameRate: frameRateSpecified || 3\n }\n };\n if (widthSpecified) {\n constraints.video.mandatory.maxWidth = widthSpecified;\n }\n if (heightSpecified) {\n constraints.video.mandatory.maxHeight = heightSpecified;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n });\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nimport * as utils from '../utils.js';\n\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimMediaStream(window) {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n}\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get() {\n return this._ontrack;\n },\n set(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n }\n this.addEventListener('track', this._ontrack = f);\n },\n enumerable: true,\n configurable: true\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n if (!this._ontrackpoly) {\n this._ontrackpoly = (e) => {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', te => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === te.track.id);\n } else {\n receiver = {track: te.track};\n }\n\n const event = new Event('track');\n event.track = te.track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(track => {\n let receiver;\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = this.getReceivers()\n .find(r => r.track && r.track.id === track.id);\n } else {\n receiver = {track};\n }\n const event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.transceiver = {receiver};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n });\n };\n this.addEventListener('addstream', this._ontrackpoly);\n }\n return origSetRemoteDescription.apply(this, arguments);\n };\n } else {\n // even if RTCRtpTransceiver is in window, it is only used and\n // emitted in unified-plan. Unfortunately this means we need\n // to unconditionally wrap the event.\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n if (!e.transceiver) {\n Object.defineProperty(e, 'transceiver',\n {value: {receiver: e.receiver}});\n }\n return e;\n });\n }\n}\n\nexport function shimGetSendersWithDtmf(window) {\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\n if (typeof window === 'object' && window.RTCPeerConnection &&\n !('getSenders' in window.RTCPeerConnection.prototype) &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype) {\n const shimSenderWithDtmf = function(pc, track) {\n return {\n track,\n get dtmf() {\n if (this._dtmf === undefined) {\n if (track.kind === 'audio') {\n this._dtmf = pc.createDTMFSender(track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n },\n _pc: pc\n };\n };\n\n // augment addTrack when getSenders is not available.\n if (!window.RTCPeerConnection.prototype.getSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n this._senders = this._senders || [];\n return this._senders.slice(); // return a copy of the internal state.\n };\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n let sender = origAddTrack.apply(this, arguments);\n if (!sender) {\n sender = shimSenderWithDtmf(this, track);\n this._senders.push(sender);\n }\n return sender;\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n origRemoveTrack.apply(this, arguments);\n const idx = this._senders.indexOf(sender);\n if (idx !== -1) {\n this._senders.splice(idx, 1);\n }\n };\n }\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._senders = this._senders || [];\n origAddStream.apply(this, [stream]);\n stream.getTracks().forEach(track => {\n this._senders.push(shimSenderWithDtmf(this, track));\n });\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._senders = this._senders || [];\n origRemoveStream.apply(this, [stream]);\n\n stream.getTracks().forEach(track => {\n const sender = this._senders.find(s => s.track === track);\n if (sender) { // remove sender\n this._senders.splice(this._senders.indexOf(sender), 1);\n }\n });\n };\n } else if (typeof window === 'object' && window.RTCPeerConnection &&\n 'getSenders' in window.RTCPeerConnection.prototype &&\n 'createDTMFSender' in window.RTCPeerConnection.prototype &&\n window.RTCRtpSender &&\n !('dtmf' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = this._pc.createDTMFSender(this.track);\n } else {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n}\n\nexport function shimGetStats(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats.apply(this, arguments);\n }\n\n // When spec-style getStats is supported, return those when called with\n // either no arguments or the selector argument is null.\n if (origGetStats.length === 0 && (arguments.length === 0 ||\n typeof selector !== 'function')) {\n return origGetStats.apply(this, []);\n }\n\n const fixChromeStats_ = function(response) {\n const standardReport = {};\n const reports = response.result();\n reports.forEach(report => {\n const standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: {\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[report.type] || report.type\n };\n report.names().forEach(name => {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n const makeMapStats = function(stats) {\n return new Map(Object.keys(stats).map(key => [key, stats[key]]));\n };\n\n if (arguments.length >= 2) {\n const successCallbackWrapper_ = function(response) {\n onSucc(makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n selector]);\n }\n\n // promise-support\n return new Promise((resolve, reject) => {\n origGetStats.apply(this, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n }).then(onSucc, onErr);\n };\n}\n\nexport function shimSenderReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender && window.RTCRtpReceiver)) {\n return;\n }\n\n // shim sender stats.\n if (!('getStats' in window.RTCRtpSender.prototype)) {\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n const sender = this;\n return this._pc.getStats().then(result =>\n /* Note: this will include stats of all senders that\n * send a track with the same id as sender.track as\n * it is not possible to identify the RTCRtpSender.\n */\n utils.filterStats(result, sender.track, true));\n };\n }\n\n // shim receiver stats.\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers =\n function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n const receiver = this;\n return this._pc.getStats().then(result =>\n utils.filterStats(result, receiver.track, false));\n };\n }\n\n if (!('getStats' in window.RTCRtpSender.prototype &&\n 'getStats' in window.RTCRtpReceiver.prototype)) {\n return;\n }\n\n // shim RTCPeerConnection.getStats(track).\n const origGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n if (arguments.length > 0 &&\n arguments[0] instanceof window.MediaStreamTrack) {\n const track = arguments[0];\n let sender;\n let receiver;\n let err;\n this.getSenders().forEach(s => {\n if (s.track === track) {\n if (sender) {\n err = true;\n } else {\n sender = s;\n }\n }\n });\n this.getReceivers().forEach(r => {\n if (r.track === track) {\n if (receiver) {\n err = true;\n } else {\n receiver = r;\n }\n }\n return r.track === track;\n });\n if (err || (sender && receiver)) {\n return Promise.reject(new DOMException(\n 'There are more than one sender or receiver for the track.',\n 'InvalidAccessError'));\n } else if (sender) {\n return sender.getStats();\n } else if (receiver) {\n return receiver.getStats();\n }\n return Promise.reject(new DOMException(\n 'There is no sender or receiver for the track.',\n 'InvalidAccessError'));\n }\n return origGetStats.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrackWithNative(window) {\n // shim addTrack/removeTrack with native variants in order to make\n // the interactions with legacy getLocalStreams behave as in other browsers.\n // Keeps a mapping stream.id => [stream, rtpsenders...]\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n return Object.keys(this._shimmedLocalStreams)\n .map(streamId => this._shimmedLocalStreams[streamId][0]);\n };\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (!stream) {\n return origAddTrack.apply(this, arguments);\n }\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n const sender = origAddTrack.apply(this, arguments);\n if (!this._shimmedLocalStreams[stream.id]) {\n this._shimmedLocalStreams[stream.id] = [stream, sender];\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\n this._shimmedLocalStreams[stream.id].push(sender);\n }\n return sender;\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n const existingSenders = this.getSenders();\n origAddStream.apply(this, arguments);\n const newSenders = this.getSenders()\n .filter(newSender => existingSenders.indexOf(newSender) === -1);\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n delete this._shimmedLocalStreams[stream.id];\n return origRemoveStream.apply(this, arguments);\n };\n\n const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n if (sender) {\n Object.keys(this._shimmedLocalStreams).forEach(streamId => {\n const idx = this._shimmedLocalStreams[streamId].indexOf(sender);\n if (idx !== -1) {\n this._shimmedLocalStreams[streamId].splice(idx, 1);\n }\n if (this._shimmedLocalStreams[streamId].length === 1) {\n delete this._shimmedLocalStreams[streamId];\n }\n });\n }\n return origRemoveTrack.apply(this, arguments);\n };\n}\n\nexport function shimAddTrackRemoveTrack(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // shim addTrack and removeTrack.\n if (window.RTCPeerConnection.prototype.addTrack &&\n browserDetails.version >= 65) {\n return shimAddTrackRemoveTrackWithNative(window);\n }\n\n // also shim pc.getLocalStreams when addTrack is shimmed\n // to return the original streams.\n const origGetLocalStreams = window.RTCPeerConnection.prototype\n .getLocalStreams;\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n const nativeStreams = origGetLocalStreams.apply(this);\n this._reverseStreams = this._reverseStreams || {};\n return nativeStreams.map(stream => this._reverseStreams[stream.id]);\n };\n\n const origAddStream = window.RTCPeerConnection.prototype.addStream;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n stream.getTracks().forEach(track => {\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n });\n // Add identity mapping for consistency with addTrack.\n // Unless this is being used with a stream from addTrack.\n if (!this._reverseStreams[stream.id]) {\n const newStream = new window.MediaStream(stream.getTracks());\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n stream = newStream;\n }\n origAddStream.apply(this, [stream]);\n };\n\n const origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n\n origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]);\n delete this._reverseStreams[(this._streams[stream.id] ?\n this._streams[stream.id].id : stream.id)];\n delete this._streams[stream.id];\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, stream) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n const streams = [].slice.call(arguments, 1);\n if (streams.length !== 1 ||\n !streams[0].getTracks().find(t => t === track)) {\n // this is not fully correct but all we can manage without\n // [[associated MediaStreams]] internal slot.\n throw new DOMException(\n 'The adapter.js addTrack polyfill only supports a single ' +\n ' stream which is associated with the specified track.',\n 'NotSupportedError');\n }\n\n const alreadyExists = this.getSenders().find(s => s.track === track);\n if (alreadyExists) {\n throw new DOMException('Track already exists.',\n 'InvalidAccessError');\n }\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n const oldStream = this._streams[stream.id];\n if (oldStream) {\n // this is using odd Chrome behaviour, use with caution:\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\n // Note: we rely on the high-level addTrack/dtmf shim to\n // create the sender with a dtmf sender.\n oldStream.addTrack(track);\n\n // Trigger ONN async.\n Promise.resolve().then(() => {\n this.dispatchEvent(new Event('negotiationneeded'));\n });\n } else {\n const newStream = new window.MediaStream([track]);\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n this.addStream(newStream);\n }\n return this.getSenders().find(s => s.track === track);\n };\n\n // replace the internal stream id with the external one and\n // vice versa.\n function replaceInternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'),\n externalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n function replaceExternalStreamId(pc, description) {\n let sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(internalId => {\n const externalStream = pc._reverseStreams[internalId];\n const internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'),\n internalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp\n });\n }\n ['createOffer', 'createAnswer'].forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n const args = arguments;\n const isLegacyCall = arguments.length &&\n typeof arguments[0] === 'function';\n if (isLegacyCall) {\n return nativeMethod.apply(this, [\n (description) => {\n const desc = replaceInternalStreamId(this, description);\n args[0].apply(null, [desc]);\n },\n (err) => {\n if (args[1]) {\n args[1].apply(null, err);\n }\n }, arguments[2]\n ]);\n }\n return nativeMethod.apply(this, arguments)\n .then(description => replaceInternalStreamId(this, description));\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n\n const origSetLocalDescription =\n window.RTCPeerConnection.prototype.setLocalDescription;\n window.RTCPeerConnection.prototype.setLocalDescription =\n function setLocalDescription() {\n if (!arguments.length || !arguments[0].type) {\n return origSetLocalDescription.apply(this, arguments);\n }\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\n return origSetLocalDescription.apply(this, arguments);\n };\n\n // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\n\n const origLocalDescription = Object.getOwnPropertyDescriptor(\n window.RTCPeerConnection.prototype, 'localDescription');\n Object.defineProperty(window.RTCPeerConnection.prototype,\n 'localDescription', {\n get() {\n const description = origLocalDescription.get.apply(this);\n if (description.type === '') {\n return description;\n }\n return replaceInternalStreamId(this, description);\n }\n });\n\n window.RTCPeerConnection.prototype.removeTrack =\n function removeTrack(sender) {\n if (this.signalingState === 'closed') {\n throw new DOMException(\n 'The RTCPeerConnection\\'s signalingState is \\'closed\\'.',\n 'InvalidStateError');\n }\n // We can not yet check for sender instanceof RTCRtpSender\n // since we shim RTPSender. So we check if sender._pc is set.\n if (!sender._pc) {\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.', 'TypeError');\n }\n const isLocal = sender._pc === this;\n if (!isLocal) {\n throw new DOMException('Sender was not created by this connection.',\n 'InvalidAccessError');\n }\n\n // Search for the native stream the senders track belongs to.\n this._streams = this._streams || {};\n let stream;\n Object.keys(this._streams).forEach(streamid => {\n const hasTrack = this._streams[streamid].getTracks()\n .find(track => sender.track === track);\n if (hasTrack) {\n stream = this._streams[streamid];\n }\n });\n\n if (stream) {\n if (stream.getTracks().length === 1) {\n // if this is the last track of the stream, remove the stream. This\n // takes care of any shimmed _senders.\n this.removeStream(this._reverseStreams[stream.id]);\n } else {\n // relying on the same odd chrome behaviour as above.\n stream.removeTrack(sender.track);\n }\n this.dispatchEvent(new Event('negotiationneeded'));\n }\n };\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\n }\n if (!window.RTCPeerConnection) {\n return;\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n if (browserDetails.version < 53) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n}\n\n// Attempt to fix ONN in plan-b mode.\nexport function fixNegotiationNeeded(window, browserDetails) {\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => {\n const pc = e.target;\n if (browserDetails.version < 72 || (pc.getConfiguration &&\n pc.getConfiguration().sdpSemantics === 'plan-b')) {\n if (pc.signalingState !== 'stable') {\n return;\n }\n }\n return e;\n });\n}\n","/*\n * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n// Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\nexport function filterIceServers(iceServers, edgeVersion) {\n let hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(server => {\n if (server && (server.urls || server.url)) {\n let urls = server.urls || server.url;\n if (server.url && !server.urls) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n }\n const isString = typeof urls === 'string';\n if (isString) {\n urls = [urls];\n }\n urls = urls.filter(url => {\n // filter STUN unconditionally.\n if (url.indexOf('stun:') === 0) {\n return false;\n }\n\n const validTurn = url.startsWith('turn') &&\n !url.startsWith('turn:[') &&\n url.includes('transport=udp');\n if (validTurn && !hasTurn) {\n hasTurn = true;\n return true;\n }\n return validTurn && !hasTurn;\n });\n\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n}\n","/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// returns the session description.\nSDPUtils.getDescription = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parseInt(parts[1], 10),\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compability.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag\n candidate[parts[i]] = parts[i + 1];\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n var channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n if (codec.parameters[param]) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\nSDPUtils.parseSsrcGroup = function(line) {\n var parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(function(ssrc) {\n return parseInt(ssrc, 10);\n })\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\nSDPUtils.parseFingerprint = function(line) {\n var parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1]\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role.\n // Note2: 'algorithm' is not case sensitive except in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint)\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n var parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES paramters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n var maxptime = 0;\n caps.codecs.forEach(function(codec) {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n sdp += 'a=rtcp-mux\\r\\n';\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(function(extension) {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.substr(17).split(' ');\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10)\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n var rtcpParameters = {};\n\n // Gets the first SSRC. Note tha with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n var parts;\n var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(msidParts) {\n return msidParts.attribute === 'msid';\n });\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n var mline = SDPUtils.parseMLine(mediaSection);\n var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n var maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize: maxMessageSize\n };\n }\n var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n var parts = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:')[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize: maxMessageSize\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n var output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n'\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n'\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boilder plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n var sessionId;\n var version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n var user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.direction) {\n sdp += 'a=' + transceiver.direction + '\\r\\n';\n } else if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n // spec.\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n\n // for Chrome.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' ')\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n var parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5]\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n var lines = SDPUtils.splitLines(blob);\n for (var i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\n\nfunction fixStatsType(stat) {\n return {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[stat.type] || stat.type;\n}\n\nfunction writeMediaSection(transceiver, caps, type, stream, dtlsRole) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : dtlsRole || 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n var trackId = transceiver.rtpSender._initialTrackId ||\n transceiver.rtpSender.track.id;\n transceiver.rtpSender._initialTrackId = trackId;\n // spec.\n var msid = 'msid:' + (stream ? stream.id : '-') + ' ' +\n trackId + '\\r\\n';\n sdp += 'a=' + msid;\n // for Chrome. Legacy should no longer be required.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n\n // RTX\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n}\n\n// Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\nfunction filterIceServers(iceServers, edgeVersion) {\n var hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(function(server) {\n if (server && (server.urls || server.url)) {\n var urls = server.urls || server.url;\n if (server.url && !server.urls) {\n console.warn('RTCIceServer.url is deprecated! Use urls instead.');\n }\n var isString = typeof urls === 'string';\n if (isString) {\n urls = [urls];\n }\n urls = urls.filter(function(url) {\n var validTurn = url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1 &&\n url.indexOf('turn:[') === -1 &&\n !hasTurn;\n\n if (validTurn) {\n hasTurn = true;\n return true;\n }\n return url.indexOf('stun:') === 0 && edgeVersion >= 14393 &&\n url.indexOf('?transport=udp') === -1;\n });\n\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n}\n\n// Determines the intersection of local and remote capabilities.\nfunction getCommonCapabilities(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n\n var findCodecByPayloadType = function(pt, codecs) {\n pt = parseInt(pt, 10);\n for (var i = 0; i < codecs.length; i++) {\n if (codecs[i].payloadType === pt ||\n codecs[i].preferredPayloadType === pt) {\n return codecs[i];\n }\n }\n };\n\n var rtxCapabilityMatches = function(lRtx, rRtx, lCodecs, rCodecs) {\n var lCodec = findCodecByPayloadType(lRtx.parameters.apt, lCodecs);\n var rCodec = findCodecByPayloadType(rRtx.parameters.apt, rCodecs);\n return lCodec && rCodec &&\n lCodec.name.toLowerCase() === rCodec.name.toLowerCase();\n };\n\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate) {\n if (lCodec.name.toLowerCase() === 'rtx' &&\n lCodec.parameters && rCodec.parameters.apt) {\n // for RTX we need to find the local rtx that has a apt\n // which points to the same local codec as the remote one.\n if (!rtxCapabilityMatches(lCodec, rCodec,\n localCapabilities.codecs, remoteCapabilities.codecs)) {\n continue;\n }\n }\n rCodec = JSON.parse(JSON.stringify(rCodec)); // deepcopy\n // number of channels is the highest common number of channels\n rCodec.numChannels = Math.min(lCodec.numChannels,\n rCodec.numChannels);\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // determine common feedback mechanisms\n rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function(fb) {\n for (var j = 0; j < lCodec.rtcpFeedback.length; j++) {\n if (lCodec.rtcpFeedback[j].type === fb.type &&\n lCodec.rtcpFeedback[j].parameter === fb.parameter) {\n return true;\n }\n }\n return false;\n });\n // FIXME: also need to determine .parameters\n // see https://github.com/openpeer/ortc/issues/569\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions.forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n}\n\n// is action=setLocalDescription with type allowed in signalingState\nfunction isActionAllowedInSignalingState(action, type, signalingState) {\n return {\n offer: {\n setLocalDescription: ['stable', 'have-local-offer'],\n setRemoteDescription: ['stable', 'have-remote-offer']\n },\n answer: {\n setLocalDescription: ['have-remote-offer', 'have-local-pranswer'],\n setRemoteDescription: ['have-local-offer', 'have-remote-pranswer']\n }\n }[type][action].indexOf(signalingState) !== -1;\n}\n\nfunction maybeAddCandidate(iceTransport, candidate) {\n // Edge's internal representation adds some fields therefore\n // not all fieldѕ are taken into account.\n var alreadyAdded = iceTransport.getRemoteCandidates()\n .find(function(remoteCandidate) {\n return candidate.foundation === remoteCandidate.foundation &&\n candidate.ip === remoteCandidate.ip &&\n candidate.port === remoteCandidate.port &&\n candidate.priority === remoteCandidate.priority &&\n candidate.protocol === remoteCandidate.protocol &&\n candidate.type === remoteCandidate.type;\n });\n if (!alreadyAdded) {\n iceTransport.addRemoteCandidate(candidate);\n }\n return !alreadyAdded;\n}\n\n\nfunction makeError(name, description) {\n var e = new Error(description);\n e.name = name;\n // legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names\n e.code = {\n NotSupportedError: 9,\n InvalidStateError: 11,\n InvalidAccessError: 15,\n TypeError: undefined,\n OperationError: undefined\n }[name];\n return e;\n}\n\nmodule.exports = function(window, edgeVersion) {\n // https://w3c.github.io/mediacapture-main/#mediastream\n // Helper function to add the track to the stream and\n // dispatch the event ourselves.\n function addTrackToStreamAndFireEvent(track, stream) {\n stream.addTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('addtrack',\n {track: track}));\n }\n\n function removeTrackFromStreamAndFireEvent(track, stream) {\n stream.removeTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('removetrack',\n {track: track}));\n }\n\n function fireAddTrack(pc, track, receiver, streams) {\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.transceiver = {receiver: receiver};\n trackEvent.streams = streams;\n window.setTimeout(function() {\n pc._dispatchEvent('track', trackEvent);\n });\n }\n\n var RTCPeerConnection = function(config) {\n var pc = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n pc[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.canTrickleIceCandidates = null;\n\n this.needNegotiation = false;\n\n this.localStreams = [];\n this.remoteStreams = [];\n\n this._localDescription = null;\n this._remoteDescription = null;\n\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.connectionState = 'new';\n this.iceGatheringState = 'new';\n\n config = JSON.parse(JSON.stringify(config || {}));\n\n this.usingBundle = config.bundlePolicy === 'max-bundle';\n if (config.rtcpMuxPolicy === 'negotiate') {\n throw(makeError('NotSupportedError',\n 'rtcpMuxPolicy \\'negotiate\\' is not supported'));\n } else if (!config.rtcpMuxPolicy) {\n config.rtcpMuxPolicy = 'require';\n }\n\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n break;\n default:\n config.iceTransportPolicy = 'all';\n break;\n }\n\n switch (config.bundlePolicy) {\n case 'balanced':\n case 'max-compat':\n case 'max-bundle':\n break;\n default:\n config.bundlePolicy = 'balanced';\n break;\n }\n\n config.iceServers = filterIceServers(config.iceServers || [], edgeVersion);\n\n this._iceGatherers = [];\n if (config.iceCandidatePoolSize) {\n for (var i = config.iceCandidatePoolSize; i > 0; i--) {\n this._iceGatherers.push(new window.RTCIceGatherer({\n iceServers: config.iceServers,\n gatherPolicy: config.iceTransportPolicy\n }));\n }\n } else {\n config.iceCandidatePoolSize = 0;\n }\n\n this._config = config;\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n this._sdpSessionId = SDPUtils.generateSessionId();\n this._sdpSessionVersion = 0;\n\n this._dtlsRole = undefined; // role for a=setup to use in answers.\n\n this._isClosed = false;\n };\n\n Object.defineProperty(RTCPeerConnection.prototype, 'localDescription', {\n configurable: true,\n get: function() {\n return this._localDescription;\n }\n });\n Object.defineProperty(RTCPeerConnection.prototype, 'remoteDescription', {\n configurable: true,\n get: function() {\n return this._remoteDescription;\n }\n });\n\n // set up event handlers on prototype\n RTCPeerConnection.prototype.onicecandidate = null;\n RTCPeerConnection.prototype.onaddstream = null;\n RTCPeerConnection.prototype.ontrack = null;\n RTCPeerConnection.prototype.onremovestream = null;\n RTCPeerConnection.prototype.onsignalingstatechange = null;\n RTCPeerConnection.prototype.oniceconnectionstatechange = null;\n RTCPeerConnection.prototype.onconnectionstatechange = null;\n RTCPeerConnection.prototype.onicegatheringstatechange = null;\n RTCPeerConnection.prototype.onnegotiationneeded = null;\n RTCPeerConnection.prototype.ondatachannel = null;\n\n RTCPeerConnection.prototype._dispatchEvent = function(name, event) {\n if (this._isClosed) {\n return;\n }\n this.dispatchEvent(event);\n if (typeof this['on' + name] === 'function') {\n this['on' + name](event);\n }\n };\n\n RTCPeerConnection.prototype._emitGatheringStateChange = function() {\n var event = new Event('icegatheringstatechange');\n this._dispatchEvent('icegatheringstatechange', event);\n };\n\n RTCPeerConnection.prototype.getConfiguration = function() {\n return this._config;\n };\n\n RTCPeerConnection.prototype.getLocalStreams = function() {\n return this.localStreams;\n };\n\n RTCPeerConnection.prototype.getRemoteStreams = function() {\n return this.remoteStreams;\n };\n\n // internal helper to create a transceiver object.\n // (which is not yet the same as the WebRTC 1.0 transceiver)\n RTCPeerConnection.prototype._createTransceiver = function(kind, doNotAdd) {\n var hasBundleTransport = this.transceivers.length > 0;\n var transceiver = {\n track: null,\n iceGatherer: null,\n iceTransport: null,\n dtlsTransport: null,\n localCapabilities: null,\n remoteCapabilities: null,\n rtpSender: null,\n rtpReceiver: null,\n kind: kind,\n mid: null,\n sendEncodingParameters: null,\n recvEncodingParameters: null,\n stream: null,\n associatedRemoteMediaStreams: [],\n wantReceive: true\n };\n if (this.usingBundle && hasBundleTransport) {\n transceiver.iceTransport = this.transceivers[0].iceTransport;\n transceiver.dtlsTransport = this.transceivers[0].dtlsTransport;\n } else {\n var transports = this._createIceAndDtlsTransports();\n transceiver.iceTransport = transports.iceTransport;\n transceiver.dtlsTransport = transports.dtlsTransport;\n }\n if (!doNotAdd) {\n this.transceivers.push(transceiver);\n }\n return transceiver;\n };\n\n RTCPeerConnection.prototype.addTrack = function(track, stream) {\n if (this._isClosed) {\n throw makeError('InvalidStateError',\n 'Attempted to call addTrack on a closed peerconnection.');\n }\n\n var alreadyExists = this.transceivers.find(function(s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw makeError('InvalidAccessError', 'Track already exists.');\n }\n\n var transceiver;\n for (var i = 0; i < this.transceivers.length; i++) {\n if (!this.transceivers[i].track &&\n this.transceivers[i].kind === track.kind) {\n transceiver = this.transceivers[i];\n }\n }\n if (!transceiver) {\n transceiver = this._createTransceiver(track.kind);\n }\n\n this._maybeFireNegotiationNeeded();\n\n if (this.localStreams.indexOf(stream) === -1) {\n this.localStreams.push(stream);\n }\n\n transceiver.track = track;\n transceiver.stream = stream;\n transceiver.rtpSender = new window.RTCRtpSender(track,\n transceiver.dtlsTransport);\n return transceiver.rtpSender;\n };\n\n RTCPeerConnection.prototype.addStream = function(stream) {\n var pc = this;\n if (edgeVersion >= 15025) {\n stream.getTracks().forEach(function(track) {\n pc.addTrack(track, stream);\n });\n } else {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n // Fixed in 15025 (or earlier)\n var clonedStream = stream.clone();\n stream.getTracks().forEach(function(track, idx) {\n var clonedTrack = clonedStream.getTracks()[idx];\n track.addEventListener('enabled', function(event) {\n clonedTrack.enabled = event.enabled;\n });\n });\n clonedStream.getTracks().forEach(function(track) {\n pc.addTrack(track, clonedStream);\n });\n }\n };\n\n RTCPeerConnection.prototype.removeTrack = function(sender) {\n if (this._isClosed) {\n throw makeError('InvalidStateError',\n 'Attempted to call removeTrack on a closed peerconnection.');\n }\n\n if (!(sender instanceof window.RTCRtpSender)) {\n throw new TypeError('Argument 1 of RTCPeerConnection.removeTrack ' +\n 'does not implement interface RTCRtpSender.');\n }\n\n var transceiver = this.transceivers.find(function(t) {\n return t.rtpSender === sender;\n });\n\n if (!transceiver) {\n throw makeError('InvalidAccessError',\n 'Sender was not created by this connection.');\n }\n var stream = transceiver.stream;\n\n transceiver.rtpSender.stop();\n transceiver.rtpSender = null;\n transceiver.track = null;\n transceiver.stream = null;\n\n // remove the stream from the set of local streams\n var localStreams = this.transceivers.map(function(t) {\n return t.stream;\n });\n if (localStreams.indexOf(stream) === -1 &&\n this.localStreams.indexOf(stream) > -1) {\n this.localStreams.splice(this.localStreams.indexOf(stream), 1);\n }\n\n this._maybeFireNegotiationNeeded();\n };\n\n RTCPeerConnection.prototype.removeStream = function(stream) {\n var pc = this;\n stream.getTracks().forEach(function(track) {\n var sender = pc.getSenders().find(function(s) {\n return s.track === track;\n });\n if (sender) {\n pc.removeTrack(sender);\n }\n });\n };\n\n RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n\n RTCPeerConnection.prototype._createIceGatherer = function(sdpMLineIndex,\n usingBundle) {\n var pc = this;\n if (usingBundle && sdpMLineIndex > 0) {\n return this.transceivers[0].iceGatherer;\n } else if (this._iceGatherers.length) {\n return this._iceGatherers.shift();\n }\n var iceGatherer = new window.RTCIceGatherer({\n iceServers: this._config.iceServers,\n gatherPolicy: this._config.iceTransportPolicy\n });\n Object.defineProperty(iceGatherer, 'state',\n {value: 'new', writable: true}\n );\n\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = [];\n this.transceivers[sdpMLineIndex].bufferCandidates = function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n iceGatherer.state = end ? 'completed' : 'gathering';\n if (pc.transceivers[sdpMLineIndex].bufferedCandidateEvents !== null) {\n pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event);\n }\n };\n iceGatherer.addEventListener('localcandidate',\n this.transceivers[sdpMLineIndex].bufferCandidates);\n return iceGatherer;\n };\n\n // start gathering from an RTCIceGatherer.\n RTCPeerConnection.prototype._gather = function(mid, sdpMLineIndex) {\n var pc = this;\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n if (iceGatherer.onlocalcandidate) {\n return;\n }\n var bufferedCandidateEvents =\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents;\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = null;\n iceGatherer.removeEventListener('localcandidate',\n this.transceivers[sdpMLineIndex].bufferCandidates);\n iceGatherer.onlocalcandidate = function(evt) {\n if (pc.usingBundle && sdpMLineIndex > 0) {\n // if we know that we use bundle we can drop candidates with\n // ѕdpMLineIndex > 0. If we don't do this then our state gets\n // confused since we dispose the extra ice gatherer.\n return;\n }\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n var end = !cand || Object.keys(cand).length === 0;\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === 'new' || iceGatherer.state === 'gathering') {\n iceGatherer.state = 'completed';\n }\n } else {\n if (iceGatherer.state === 'new') {\n iceGatherer.state = 'gathering';\n }\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = 1;\n // also the usernameFragment. TODO: update SDP to take both variants.\n cand.ufrag = iceGatherer.getLocalParameters().usernameFragment;\n\n var serializedCandidate = SDPUtils.writeCandidate(cand);\n event.candidate = Object.assign(event.candidate,\n SDPUtils.parseCandidate(serializedCandidate));\n\n event.candidate.candidate = serializedCandidate;\n event.candidate.toJSON = function() {\n return {\n candidate: event.candidate.candidate,\n sdpMid: event.candidate.sdpMid,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n usernameFragment: event.candidate.usernameFragment\n };\n };\n }\n\n // update local description.\n var sections = SDPUtils.getMediaSections(pc._localDescription.sdp);\n if (!end) {\n sections[event.candidate.sdpMLineIndex] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n } else {\n sections[event.candidate.sdpMLineIndex] +=\n 'a=end-of-candidates\\r\\n';\n }\n pc._localDescription.sdp =\n SDPUtils.getDescription(pc._localDescription.sdp) +\n sections.join('');\n var complete = pc.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n if (pc.iceGatheringState !== 'gathering') {\n pc.iceGatheringState = 'gathering';\n pc._emitGatheringStateChange();\n }\n\n // Emit candidate. Also emit null candidate when all gatherers are\n // complete.\n if (!end) {\n pc._dispatchEvent('icecandidate', event);\n }\n if (complete) {\n pc._dispatchEvent('icecandidate', new Event('icecandidate'));\n pc.iceGatheringState = 'complete';\n pc._emitGatheringStateChange();\n }\n };\n\n // emit already gathered candidates.\n window.setTimeout(function() {\n bufferedCandidateEvents.forEach(function(e) {\n iceGatherer.onlocalcandidate(e);\n });\n }, 0);\n };\n\n // Create ICE transport and DTLS transport.\n RTCPeerConnection.prototype._createIceAndDtlsTransports = function() {\n var pc = this;\n var iceTransport = new window.RTCIceTransport(null);\n iceTransport.onicestatechange = function() {\n pc._updateIceConnectionState();\n pc._updateConnectionState();\n };\n\n var dtlsTransport = new window.RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n pc._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n Object.defineProperty(dtlsTransport, 'state',\n {value: 'failed', writable: true});\n pc._updateConnectionState();\n };\n\n return {\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Destroy ICE gatherer, ICE transport and DTLS transport.\n // Without triggering the callbacks.\n RTCPeerConnection.prototype._disposeIceAndDtlsTransports = function(\n sdpMLineIndex) {\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n if (iceGatherer) {\n delete iceGatherer.onlocalcandidate;\n delete this.transceivers[sdpMLineIndex].iceGatherer;\n }\n var iceTransport = this.transceivers[sdpMLineIndex].iceTransport;\n if (iceTransport) {\n delete iceTransport.onicestatechange;\n delete this.transceivers[sdpMLineIndex].iceTransport;\n }\n var dtlsTransport = this.transceivers[sdpMLineIndex].dtlsTransport;\n if (dtlsTransport) {\n delete dtlsTransport.ondtlsstatechange;\n delete dtlsTransport.onerror;\n delete this.transceivers[sdpMLineIndex].dtlsTransport;\n }\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName,\n compound: transceiver.rtcpParameters.compound\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver && params.codecs.length > 0) {\n // remove RTX field in Edge 14942\n if (transceiver.kind === 'video'\n && transceiver.recvEncodingParameters\n && edgeVersion < 15019) {\n transceiver.recvEncodingParameters.forEach(function(p) {\n delete p.rtx;\n });\n }\n if (transceiver.recvEncodingParameters.length) {\n params.encodings = transceiver.recvEncodingParameters;\n } else {\n params.encodings = [{}];\n }\n params.rtcp = {\n compound: transceiver.rtcpParameters.compound\n };\n if (transceiver.rtcpParameters.cname) {\n params.rtcp.cname = transceiver.rtcpParameters.cname;\n }\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n RTCPeerConnection.prototype.setLocalDescription = function(description) {\n var pc = this;\n\n // Note: pranswer is not supported.\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError',\n 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setLocalDescription',\n description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not set local ' + description.type +\n ' in state ' + pc.signalingState));\n }\n\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n pc.transceivers[sdpMLineIndex].localCapabilities = caps;\n });\n\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n });\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(pc._remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = pc.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n\n // treat bundle-only as not-rejected.\n var rejected = SDPUtils.isRejected(mediaSection) &&\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n\n if (!rejected && !transceiver.rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n\n if (!pc.usingBundle || sdpMLineIndex === 0) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n }\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n }\n\n // Calculate intersection of capabilities.\n var params = getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n pc._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n pc._localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n if (description.type === 'offer') {\n pc._updateSignalingState('have-local-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.setRemoteDescription = function(description) {\n var pc = this;\n\n // Note: pranswer is not supported.\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError',\n 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setRemoteDescription',\n description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not set remote ' + description.type +\n ' in state ' + pc.signalingState));\n }\n\n var streams = {};\n pc.remoteStreams.forEach(function(stream) {\n streams[stream.id] = stream;\n });\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n var usingBundle = SDPUtils.matchPrefix(sessionpart,\n 'a=group:BUNDLE ').length > 0;\n pc.usingBundle = usingBundle;\n var iceOptions = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-options:')[0];\n if (iceOptions) {\n pc.canTrickleIceCandidates = iceOptions.substr(14).split(' ')\n .indexOf('trickle') >= 0;\n } else {\n pc.canTrickleIceCandidates = false;\n }\n\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var kind = SDPUtils.getKind(mediaSection);\n // treat bundle-only as not-rejected.\n var rejected = SDPUtils.isRejected(mediaSection) &&\n SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n var protocol = lines[0].substr(2).split(' ')[2];\n\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n var remoteMsid = SDPUtils.parseMsid(mediaSection);\n\n var mid = SDPUtils.getMid(mediaSection) || SDPUtils.generateIdentifier();\n\n // Reject datachannels which are not implemented yet.\n if (rejected || (kind === 'application' && (protocol === 'DTLS/SCTP' ||\n protocol === 'UDP/DTLS/SCTP'))) {\n // TODO: this is dangerous in the case where a non-rejected m-line\n // becomes rejected.\n pc.transceivers[sdpMLineIndex] = {\n mid: mid,\n kind: kind,\n protocol: protocol,\n rejected: true\n };\n return;\n }\n\n if (!rejected && pc.transceivers[sdpMLineIndex] &&\n pc.transceivers[sdpMLineIndex].rejected) {\n // recycle a rejected transceiver.\n pc.transceivers[sdpMLineIndex] = pc._createTransceiver(kind, true);\n }\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var rtcpParameters = SDPUtils.parseRtcpParameters(mediaSection);\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates', sessionpart).length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === 1;\n });\n\n // Check if we can use BUNDLE and dispose transports.\n if ((description.type === 'offer' || description.type === 'answer') &&\n !rejected && usingBundle && sdpMLineIndex > 0 &&\n pc.transceivers[sdpMLineIndex]) {\n pc._disposeIceAndDtlsTransports(sdpMLineIndex);\n pc.transceivers[sdpMLineIndex].iceGatherer =\n pc.transceivers[0].iceGatherer;\n pc.transceivers[sdpMLineIndex].iceTransport =\n pc.transceivers[0].iceTransport;\n pc.transceivers[sdpMLineIndex].dtlsTransport =\n pc.transceivers[0].dtlsTransport;\n if (pc.transceivers[sdpMLineIndex].rtpSender) {\n pc.transceivers[sdpMLineIndex].rtpSender.setTransport(\n pc.transceivers[0].dtlsTransport);\n }\n if (pc.transceivers[sdpMLineIndex].rtpReceiver) {\n pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(\n pc.transceivers[0].dtlsTransport);\n }\n }\n if (description.type === 'offer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex] ||\n pc._createTransceiver(kind);\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\n usingBundle);\n }\n\n if (cands.length && transceiver.iceTransport.state === 'new') {\n if (isComplete && (!usingBundle || sdpMLineIndex === 0)) {\n transceiver.iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function(candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n localCapabilities = window.RTCRtpReceiver.getCapabilities(kind);\n\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n }\n\n sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n var isNewTrack = false;\n if (direction === 'sendrecv' || direction === 'sendonly') {\n isNewTrack = !transceiver.rtpReceiver;\n rtpReceiver = transceiver.rtpReceiver ||\n new window.RTCRtpReceiver(transceiver.dtlsTransport, kind);\n\n if (isNewTrack) {\n var stream;\n track = rtpReceiver.track;\n // FIXME: does not work with Plan B.\n if (remoteMsid && remoteMsid.stream === '-') {\n // no-op. a stream id of '-' means: no associated stream.\n } else if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n Object.defineProperty(streams[remoteMsid.stream], 'id', {\n get: function() {\n return remoteMsid.stream;\n }\n });\n }\n Object.defineProperty(track, 'id', {\n get: function() {\n return remoteMsid.track;\n }\n });\n stream = streams[remoteMsid.stream];\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n stream = streams.default;\n }\n if (stream) {\n addTrackToStreamAndFireEvent(track, stream);\n transceiver.associatedRemoteMediaStreams.push(stream);\n }\n receiverList.push([track, rtpReceiver, stream]);\n }\n } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track) {\n transceiver.associatedRemoteMediaStreams.forEach(function(s) {\n var nativeTrack = s.getTracks().find(function(t) {\n return t.id === transceiver.rtpReceiver.track.id;\n });\n if (nativeTrack) {\n removeTrackFromStreamAndFireEvent(nativeTrack, s);\n }\n });\n transceiver.associatedRemoteMediaStreams = [];\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.remoteCapabilities = remoteCapabilities;\n transceiver.rtpReceiver = rtpReceiver;\n transceiver.rtcpParameters = rtcpParameters;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n transceiver.recvEncodingParameters = recvEncodingParameters;\n\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n pc._transceive(pc.transceivers[sdpMLineIndex],\n false,\n isNewTrack);\n } else if (description.type === 'answer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n pc.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n pc.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n pc.transceivers[sdpMLineIndex].rtcpParameters = rtcpParameters;\n\n if (cands.length && iceTransport.state === 'new') {\n if ((isIceLite || isComplete) &&\n (!usingBundle || sdpMLineIndex === 0)) {\n iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function(candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n if (!usingBundle || sdpMLineIndex === 0) {\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n }\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n }\n\n // If the offer contained RTX but the answer did not,\n // remove RTX from sendEncodingParameters.\n var commonCapabilities = getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n var hasRtx = commonCapabilities.codecs.filter(function(c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n pc._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n }\n addTrackToStreamAndFireEvent(track, streams[remoteMsid.stream]);\n receiverList.push([track, rtpReceiver, streams[remoteMsid.stream]]);\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n addTrackToStreamAndFireEvent(track, streams.default);\n receiverList.push([track, rtpReceiver, streams.default]);\n }\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n if (pc._dtlsRole === undefined) {\n pc._dtlsRole = description.type === 'offer' ? 'active' : 'passive';\n }\n\n pc._remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n if (description.type === 'offer') {\n pc._updateSignalingState('have-remote-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n Object.keys(streams).forEach(function(sid) {\n var stream = streams[sid];\n if (stream.getTracks().length) {\n if (pc.remoteStreams.indexOf(stream) === -1) {\n pc.remoteStreams.push(stream);\n var event = new Event('addstream');\n event.stream = stream;\n window.setTimeout(function() {\n pc._dispatchEvent('addstream', event);\n });\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n if (stream.id !== item[2].id) {\n return;\n }\n fireAddTrack(pc, track, receiver, [stream]);\n });\n }\n });\n receiverList.forEach(function(item) {\n if (item[2]) {\n return;\n }\n fireAddTrack(pc, item[0], item[1], []);\n });\n\n // check whether addIceCandidate({}) was called within four seconds after\n // setRemoteDescription.\n window.setTimeout(function() {\n if (!(pc && pc.transceivers)) {\n return;\n }\n pc.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport &&\n transceiver.iceTransport.state === 'new' &&\n transceiver.iceTransport.getRemoteCandidates().length > 0) {\n console.warn('Timeout for addRemoteCandidate. Consider sending ' +\n 'an end-of-candidates notification');\n transceiver.iceTransport.addRemoteCandidate({});\n }\n });\n }, 4000);\n\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._isClosed = true;\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n RTCPeerConnection.prototype._updateSignalingState = function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this._dispatchEvent('signalingstatechange', event);\n };\n\n // Determine whether to fire the negotiationneeded event.\n RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function() {\n var pc = this;\n if (this.signalingState !== 'stable' || this.needNegotiation === true) {\n return;\n }\n this.needNegotiation = true;\n window.setTimeout(function() {\n if (pc.needNegotiation) {\n pc.needNegotiation = false;\n var event = new Event('negotiationneeded');\n pc._dispatchEvent('negotiationneeded', event);\n }\n }, 0);\n };\n\n // Update the ice connection state.\n RTCPeerConnection.prototype._updateIceConnectionState = function() {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport && !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n }\n });\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.checking > 0) {\n newState = 'checking';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n } else if (states.completed > 0) {\n newState = 'completed';\n }\n\n if (newState !== this.iceConnectionState) {\n this.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this._dispatchEvent('iceconnectionstatechange', event);\n }\n };\n\n // Update the connection state.\n RTCPeerConnection.prototype._updateConnectionState = function() {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.iceTransport && transceiver.dtlsTransport &&\n !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n }\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n }\n\n if (newState !== this.connectionState) {\n this.connectionState = newState;\n var event = new Event('connectionstatechange');\n this._dispatchEvent('connectionstatechange', event);\n }\n };\n\n RTCPeerConnection.prototype.createOffer = function() {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createOffer after close'));\n }\n\n var numAudioTracks = pc.transceivers.filter(function(t) {\n return t.kind === 'audio';\n }).length;\n var numVideoTracks = pc.transceivers.filter(function(t) {\n return t.kind === 'video';\n }).length;\n\n // Determine number of audio and video tracks we need to send/recv.\n var offerOptions = arguments[0];\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n if (offerOptions.offerToReceiveAudio === true) {\n numAudioTracks = 1;\n } else if (offerOptions.offerToReceiveAudio === false) {\n numAudioTracks = 0;\n } else {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n if (offerOptions.offerToReceiveVideo === true) {\n numVideoTracks = 1;\n } else if (offerOptions.offerToReceiveVideo === false) {\n numVideoTracks = 0;\n } else {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n }\n\n pc.transceivers.forEach(function(transceiver) {\n if (transceiver.kind === 'audio') {\n numAudioTracks--;\n if (numAudioTracks < 0) {\n transceiver.wantReceive = false;\n }\n } else if (transceiver.kind === 'video') {\n numVideoTracks--;\n if (numVideoTracks < 0) {\n transceiver.wantReceive = false;\n }\n }\n });\n\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n pc._createTransceiver('audio');\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n pc._createTransceiver('video');\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\n pc._sdpSessionVersion++);\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = transceiver.track;\n var kind = transceiver.kind;\n var mid = transceiver.mid || SDPUtils.generateIdentifier();\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex,\n pc.usingBundle);\n }\n\n var localCapabilities = window.RTCRtpSender.getCapabilities(kind);\n // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(\n function(codec) {\n return codec.name !== 'rtx';\n });\n }\n localCapabilities.codecs.forEach(function(codec) {\n // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552\n // by adding level-asymmetry-allowed=1\n if (codec.name === 'H264' &&\n codec.parameters['level-asymmetry-allowed'] === undefined) {\n codec.parameters['level-asymmetry-allowed'] = '1';\n }\n\n // for subsequent offers, we might have to re-use the payload\n // type of the last offer.\n if (transceiver.remoteCapabilities &&\n transceiver.remoteCapabilities.codecs) {\n transceiver.remoteCapabilities.codecs.forEach(function(remoteCodec) {\n if (codec.name.toLowerCase() === remoteCodec.name.toLowerCase() &&\n codec.clockRate === remoteCodec.clockRate) {\n codec.preferredPayloadType = remoteCodec.payloadType;\n }\n });\n }\n });\n localCapabilities.headerExtensions.forEach(function(hdrExt) {\n var remoteExtensions = transceiver.remoteCapabilities &&\n transceiver.remoteCapabilities.headerExtensions || [];\n remoteExtensions.forEach(function(rHdrExt) {\n if (hdrExt.uri === rHdrExt.uri) {\n hdrExt.id = rHdrExt.id;\n }\n });\n });\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n // add RTX\n if (edgeVersion >= 15019 && kind === 'video' &&\n !sendEncodingParameters[0].rtx) {\n sendEncodingParameters[0].rtx = {\n ssrc: sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n\n if (transceiver.wantReceive) {\n transceiver.rtpReceiver = new window.RTCRtpReceiver(\n transceiver.dtlsTransport, kind);\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n });\n\n // always offer BUNDLE and dispose on return if not supported.\n if (pc._config.bundlePolicy !== 'max-compat') {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n sdp += 'a=ice-options:trickle\\r\\n';\n\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n sdp += writeMediaSection(transceiver, transceiver.localCapabilities,\n 'offer', transceiver.stream, pc._dtlsRole);\n sdp += 'a=rtcp-rsize\\r\\n';\n\n if (transceiver.iceGatherer && pc.iceGatheringState !== 'new' &&\n (sdpMLineIndex === 0 || !pc.usingBundle)) {\n transceiver.iceGatherer.getLocalCandidates().forEach(function(cand) {\n cand.component = 1;\n sdp += 'a=' + SDPUtils.writeCandidate(cand) + '\\r\\n';\n });\n\n if (transceiver.iceGatherer.state === 'completed') {\n sdp += 'a=end-of-candidates\\r\\n';\n }\n }\n });\n\n var desc = new window.RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.createAnswer = function() {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createAnswer after close'));\n }\n\n if (!(pc.signalingState === 'have-remote-offer' ||\n pc.signalingState === 'have-local-pranswer')) {\n return Promise.reject(makeError('InvalidStateError',\n 'Can not call createAnswer in signalingState ' + pc.signalingState));\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId,\n pc._sdpSessionVersion++);\n if (pc.usingBundle) {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n sdp += 'a=ice-options:trickle\\r\\n';\n\n var mediaSectionsInOffer = SDPUtils.getMediaSections(\n pc._remoteDescription.sdp).length;\n pc.transceivers.forEach(function(transceiver, sdpMLineIndex) {\n if (sdpMLineIndex + 1 > mediaSectionsInOffer) {\n return;\n }\n if (transceiver.rejected) {\n if (transceiver.kind === 'application') {\n if (transceiver.protocol === 'DTLS/SCTP') { // legacy fmt\n sdp += 'm=application 0 DTLS/SCTP 5000\\r\\n';\n } else {\n sdp += 'm=application 0 ' + transceiver.protocol +\n ' webrtc-datachannel\\r\\n';\n }\n } else if (transceiver.kind === 'audio') {\n sdp += 'm=audio 0 UDP/TLS/RTP/SAVPF 0\\r\\n' +\n 'a=rtpmap:0 PCMU/8000\\r\\n';\n } else if (transceiver.kind === 'video') {\n sdp += 'm=video 0 UDP/TLS/RTP/SAVPF 120\\r\\n' +\n 'a=rtpmap:120 VP8/90000\\r\\n';\n }\n sdp += 'c=IN IP4 0.0.0.0\\r\\n' +\n 'a=inactive\\r\\n' +\n 'a=mid:' + transceiver.mid + '\\r\\n';\n return;\n }\n\n // FIXME: look at direction.\n if (transceiver.stream) {\n var localTrack;\n if (transceiver.kind === 'audio') {\n localTrack = transceiver.stream.getAudioTracks()[0];\n } else if (transceiver.kind === 'video') {\n localTrack = transceiver.stream.getVideoTracks()[0];\n }\n if (localTrack) {\n // add RTX\n if (edgeVersion >= 15019 && transceiver.kind === 'video' &&\n !transceiver.sendEncodingParameters[0].rtx) {\n transceiver.sendEncodingParameters[0].rtx = {\n ssrc: transceiver.sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n }\n\n // Calculate intersection of capabilities.\n var commonCapabilities = getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n var hasRtx = commonCapabilities.codecs.filter(function(c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n sdp += writeMediaSection(transceiver, commonCapabilities,\n 'answer', transceiver.stream, pc._dtlsRole);\n if (transceiver.rtcpParameters &&\n transceiver.rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n });\n\n var desc = new window.RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n var pc = this;\n var sections;\n if (candidate && !(candidate.sdpMLineIndex !== undefined ||\n candidate.sdpMid)) {\n return Promise.reject(new TypeError('sdpMLineIndex or sdpMid required'));\n }\n\n // TODO: needs to go into ops queue.\n return new Promise(function(resolve, reject) {\n if (!pc._remoteDescription) {\n return reject(makeError('InvalidStateError',\n 'Can not add ICE candidate without a remote description'));\n } else if (!candidate || candidate.candidate === '') {\n for (var j = 0; j < pc.transceivers.length; j++) {\n if (pc.transceivers[j].rejected) {\n continue;\n }\n pc.transceivers[j].iceTransport.addRemoteCandidate({});\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[j] += 'a=end-of-candidates\\r\\n';\n pc._remoteDescription.sdp =\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\n sections.join('');\n if (pc.usingBundle) {\n break;\n }\n }\n } else {\n var sdpMLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < pc.transceivers.length; i++) {\n if (pc.transceivers[i].mid === candidate.sdpMid) {\n sdpMLineIndex = i;\n break;\n }\n }\n }\n var transceiver = pc.transceivers[sdpMLineIndex];\n if (transceiver) {\n if (transceiver.rejected) {\n return resolve();\n }\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) {\n return resolve();\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component && cand.component !== 1) {\n return resolve();\n }\n // when using bundle, avoid adding candidates to the wrong\n // ice transport. And avoid adding candidates added in the SDP.\n if (sdpMLineIndex === 0 || (sdpMLineIndex > 0 &&\n transceiver.iceTransport !== pc.transceivers[0].iceTransport)) {\n if (!maybeAddCandidate(transceiver.iceTransport, cand)) {\n return reject(makeError('OperationError',\n 'Can not add ICE candidate'));\n }\n }\n\n // update the remoteDescription.\n var candidateString = candidate.candidate.trim();\n if (candidateString.indexOf('a=') === 0) {\n candidateString = candidateString.substr(2);\n }\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[sdpMLineIndex] += 'a=' +\n (cand.type ? candidateString : 'end-of-candidates')\n + '\\r\\n';\n pc._remoteDescription.sdp =\n SDPUtils.getDescription(pc._remoteDescription.sdp) +\n sections.join('');\n } else {\n return reject(makeError('OperationError',\n 'Can not add ICE candidate'));\n }\n }\n resolve();\n });\n };\n\n RTCPeerConnection.prototype.getStats = function(selector) {\n if (selector && selector instanceof window.MediaStreamTrack) {\n var senderOrReceiver = null;\n this.transceivers.forEach(function(transceiver) {\n if (transceiver.rtpSender &&\n transceiver.rtpSender.track === selector) {\n senderOrReceiver = transceiver.rtpSender;\n } else if (transceiver.rtpReceiver &&\n transceiver.rtpReceiver.track === selector) {\n senderOrReceiver = transceiver.rtpReceiver;\n }\n });\n if (!senderOrReceiver) {\n throw makeError('InvalidAccessError', 'Invalid selector.');\n }\n return senderOrReceiver.getStats();\n }\n\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n return Promise.all(promises).then(function(allStats) {\n var results = new Map();\n allStats.forEach(function(stats) {\n stats.forEach(function(stat) {\n results.set(stat.id, stat);\n });\n });\n return results;\n });\n };\n\n // fix low-level stat names and return Map instead of object.\n var ortcObjects = ['RTCRtpSender', 'RTCRtpReceiver', 'RTCIceGatherer',\n 'RTCIceTransport', 'RTCDtlsTransport'];\n ortcObjects.forEach(function(ortcObjectName) {\n var obj = window[ortcObjectName];\n if (obj && obj.prototype && obj.prototype.getStats) {\n var nativeGetstats = obj.prototype.getStats;\n obj.prototype.getStats = function() {\n return nativeGetstats.apply(this)\n .then(function(nativeStats) {\n var mapStats = new Map();\n Object.keys(nativeStats).forEach(function(id) {\n nativeStats[id].type = fixStatsType(nativeStats[id]);\n mapStats.set(id, nativeStats[id]);\n });\n return mapStats;\n });\n };\n }\n });\n\n // legacy callback shims. Should be moved to adapter.js some days.\n var methods = ['createOffer', 'createAnswer'];\n methods.forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[0] === 'function' ||\n typeof args[1] === 'function') { // legacy\n return nativeMethod.apply(this, [arguments[2]])\n .then(function(description) {\n if (typeof args[0] === 'function') {\n args[0].apply(null, [description]);\n }\n }, function(error) {\n if (typeof args[1] === 'function') {\n args[1].apply(null, [error]);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n methods = ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'];\n methods.forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[1] === 'function' ||\n typeof args[2] === 'function') { // legacy\n return nativeMethod.apply(this, arguments)\n .then(function() {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n }, function(error) {\n if (typeof args[2] === 'function') {\n args[2].apply(null, [error]);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // getStats is special. It doesn't have a spec legacy method yet we support\n // getStats(something, cb) without error callbacks.\n ['getStats'].forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n if (typeof args[1] === 'function') {\n return nativeMethod.apply(this, arguments)\n .then(function() {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n return RTCPeerConnection;\n};\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n const shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n const origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(e => Promise.reject(shimError_(e)));\n };\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window) {\n if (!('getDisplayMedia' in window.navigator)) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n window.navigator.getDisplayMedia.bind(window.navigator);\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nimport {filterIceServers} from './filtericeservers';\nimport shimRTCPeerConnection from 'rtcpeerconnection-shim';\n\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimPeerConnection(window, browserDetails) {\n if (window.RTCIceGatherer) {\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n return args;\n };\n }\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function RTCSessionDescription(args) {\n return args;\n };\n }\n // this adds an additional event listener to MediaStrackTrack that signals\n // when a tracks enabled property was changed. Workaround for a bug in\n // addStream, see below. No longer required in 15025+\n if (browserDetails.version < 15025) {\n const origMSTEnabled = Object.getOwnPropertyDescriptor(\n window.MediaStreamTrack.prototype, 'enabled');\n Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', {\n set(value) {\n origMSTEnabled.set.call(this, value);\n const ev = new Event('enabled');\n ev.enabled = value;\n this.dispatchEvent(ev);\n }\n });\n }\n }\n\n // ORTC defines the DTMF sender a bit different.\n // https://github.com/w3c/ortc/issues/714\n if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get() {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = new window.RTCDtmfSender(this);\n } else if (this.track.kind === 'video') {\n this._dtmf = null;\n }\n }\n return this._dtmf;\n }\n });\n }\n // Edge currently only implements the RTCDtmfSender, not the\n // RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*\n if (window.RTCDtmfSender && !window.RTCDTMFSender) {\n window.RTCDTMFSender = window.RTCDtmfSender;\n }\n\n const RTCPeerConnectionShim = shimRTCPeerConnection(window,\n browserDetails.version);\n window.RTCPeerConnection = function RTCPeerConnection(config) {\n if (config && config.iceServers) {\n config.iceServers = filterIceServers(config.iceServers,\n browserDetails.version);\n utils.log('ICE servers after filtering:', config.iceServers);\n }\n return new RTCPeerConnectionShim(config);\n };\n window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype;\n}\n\nexport function shimReplaceTrack(window) {\n // ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614\n if (window.RTCRtpSender &&\n !('replaceTrack' in window.RTCRtpSender.prototype)) {\n window.RTCRtpSender.prototype.replaceTrack =\n window.RTCRtpSender.prototype.setTrack;\n }\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\n\nexport function shimGetUserMedia(window, browserDetails) {\n const navigator = window && window.navigator;\n const MediaStreamTrack = window && window.MediaStreamTrack;\n\n navigator.getUserMedia = function(constraints, onSuccess, onError) {\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n utils.deprecated('navigator.getUserMedia',\n 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n\n if (!(browserDetails.version > 55 &&\n 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\n const remap = function(obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n const nativeGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n if (typeof c === 'object' && typeof c.audio === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeGetUserMedia(c);\n };\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\n const nativeGetSettings = MediaStreamTrack.prototype.getSettings;\n MediaStreamTrack.prototype.getSettings = function() {\n const obj = nativeGetSettings.apply(this, arguments);\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\n return obj;\n };\n }\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\n const nativeApplyConstraints =\n MediaStreamTrack.prototype.applyConstraints;\n MediaStreamTrack.prototype.applyConstraints = function(c) {\n if (this.kind === 'audio' && typeof c === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c, 'autoGainControl', 'mozAutoGainControl');\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\n }\n return nativeApplyConstraints.apply(this, [c]);\n };\n }\n }\n}\n","/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nexport function shimGetDisplayMedia(window, preferredMediaSource) {\n if (window.navigator.mediaDevices &&\n 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n if (!(window.navigator.mediaDevices)) {\n return;\n }\n window.navigator.mediaDevices.getDisplayMedia =\n function getDisplayMedia(constraints) {\n if (!(constraints && constraints.video)) {\n const err = new DOMException('getDisplayMedia without video ' +\n 'constraints is undefined');\n err.name = 'NotFoundError';\n // from https://heycam.github.io/webidl/#idl-DOMException-error-names\n err.code = 8;\n return Promise.reject(err);\n }\n if (constraints.video === true) {\n constraints.video = {mediaSource: preferredMediaSource};\n } else {\n constraints.video.mediaSource = preferredMediaSource;\n }\n return window.navigator.mediaDevices.getUserMedia(constraints);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport * as utils from '../utils';\nexport {shimGetUserMedia} from './getusermedia';\nexport {shimGetDisplayMedia} from './getdisplaymedia';\n\nexport function shimOnTrack(window) {\n if (typeof window === 'object' && window.RTCTrackEvent &&\n ('receiver' in window.RTCTrackEvent.prototype) &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimPeerConnection(window, browserDetails) {\n if (typeof window !== 'object' ||\n !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.mozRTCPeerConnection;\n }\n\n if (browserDetails.version < 53) {\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n const nativeMethod = window.RTCPeerConnection.prototype[method];\n const methodObj = {[method]() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n window.RTCIceCandidate :\n window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n }};\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n }\n\n const modernStatsTypes = {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n };\n\n const nativeGetStats = window.RTCPeerConnection.prototype.getStats;\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n const [selector, onSucc, onErr] = arguments;\n return nativeGetStats.apply(this, [selector || null])\n .then(stats => {\n if (browserDetails.version < 53 && !onSucc) {\n // Shim only promise getStats with spec-hyphens in type names\n // Leave callback version alone; misc old uses of forEach before Map\n try {\n stats.forEach(stat => {\n stat.type = modernStatsTypes[stat.type] || stat.type;\n });\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\n stats.forEach((stat, i) => {\n stats.set(i, Object.assign({}, stat, {\n type: modernStatsTypes[stat.type] || stat.type\n }));\n });\n }\n }\n return stats;\n })\n .then(onSucc, onErr);\n };\n}\n\nexport function shimSenderGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\n return;\n }\n const origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n const senders = origGetSenders.apply(this, []);\n senders.forEach(sender => sender._pc = this);\n return senders;\n };\n }\n\n const origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n const sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n window.RTCRtpSender.prototype.getStats = function getStats() {\n return this.track ? this._pc.getStats(this.track) :\n Promise.resolve(new Map());\n };\n}\n\nexport function shimReceiverGetStats(window) {\n if (!(typeof window === 'object' && window.RTCPeerConnection &&\n window.RTCRtpSender)) {\n return;\n }\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\n return;\n }\n const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n const receivers = origGetReceivers.apply(this, []);\n receivers.forEach(receiver => receiver._pc = this);\n return receivers;\n };\n }\n utils.wrapPeerConnectionEvent(window, 'track', e => {\n e.receiver._pc = e.srcElement;\n return e;\n });\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n return this._pc.getStats(this.track);\n };\n}\n\nexport function shimRemoveStream(window) {\n if (!window.RTCPeerConnection ||\n 'removeStream' in window.RTCPeerConnection.prototype) {\n return;\n }\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n utils.deprecated('removeStream', 'removeTrack');\n this.getSenders().forEach(sender => {\n if (sender.track && stream.getTracks().includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n}\n\nexport function shimRTCDataChannel(window) {\n // rename DataChannel to RTCDataChannel (native fix in FF60):\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\n if (window.DataChannel && !window.RTCDataChannel) {\n window.RTCDataChannel = window.DataChannel;\n }\n}\n\nexport function shimAddTransceiver(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver;\n if (origAddTransceiver) {\n window.RTCPeerConnection.prototype.addTransceiver =\n function addTransceiver() {\n this.setParametersPromises = [];\n const initParameters = arguments[1];\n const shouldPerformCheck = initParameters &&\n 'sendEncodings' in initParameters;\n if (shouldPerformCheck) {\n // If sendEncodings params are provided, validate grammar\n initParameters.sendEncodings.forEach((encodingParam) => {\n if ('rid' in encodingParam) {\n const ridRegex = /^[a-z0-9]{0,16}$/i;\n if (!ridRegex.test(encodingParam.rid)) {\n throw new TypeError('Invalid RID value provided.');\n }\n }\n if ('scaleResolutionDownBy' in encodingParam) {\n if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) {\n throw new RangeError('scale_resolution_down_by must be >= 1.0');\n }\n }\n if ('maxFramerate' in encodingParam) {\n if (!(parseFloat(encodingParam.maxFramerate) >= 0)) {\n throw new RangeError('max_framerate must be >= 0.0');\n }\n }\n });\n }\n const transceiver = origAddTransceiver.apply(this, arguments);\n if (shouldPerformCheck) {\n // Check if the init options were applied. If not we do this in an\n // asynchronous way and save the promise reference in a global object.\n // This is an ugly hack, but at the same time is way more robust than\n // checking the sender parameters before and after the createOffer\n // Also note that after the createoffer we are not 100% sure that\n // the params were asynchronously applied so we might miss the\n // opportunity to recreate offer.\n const {sender} = transceiver;\n const params = sender.getParameters();\n if (!('encodings' in params) ||\n // Avoid being fooled by patched getParameters() below.\n (params.encodings.length === 1 &&\n Object.keys(params.encodings[0]).length === 0)) {\n params.encodings = initParameters.sendEncodings;\n sender.sendEncodings = initParameters.sendEncodings;\n this.setParametersPromises.push(sender.setParameters(params)\n .then(() => {\n delete sender.sendEncodings;\n }).catch(() => {\n delete sender.sendEncodings;\n })\n );\n }\n }\n return transceiver;\n };\n }\n}\n\nexport function shimGetParameters(window) {\n if (!(typeof window === 'object' && window.RTCRtpSender)) {\n return;\n }\n const origGetParameters = window.RTCRtpSender.prototype.getParameters;\n if (origGetParameters) {\n window.RTCRtpSender.prototype.getParameters =\n function getParameters() {\n const params = origGetParameters.apply(this, arguments);\n if (!('encodings' in params)) {\n params.encodings = [].concat(this.sendEncodings || [{}]);\n }\n return params;\n };\n }\n}\n\nexport function shimCreateOffer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer = function createOffer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateOffer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimCreateAnswer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(typeof window === 'object' && window.RTCPeerConnection)) {\n return;\n }\n const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer;\n window.RTCPeerConnection.prototype.createAnswer = function createAnswer() {\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises)\n .then(() => {\n return origCreateAnswer.apply(this, arguments);\n })\n .finally(() => {\n this.setParametersPromises = [];\n });\n }\n return origCreateAnswer.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nimport * as utils from '../utils';\n\nexport function shimLocalStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getLocalStreams =\n function getLocalStreams() {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n return this._localStreams;\n };\n }\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\n const _addTrack = window.RTCPeerConnection.prototype.addTrack;\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n // Try to emulate Chrome's behaviour of adding in audio-video order.\n // Safari orders by track id.\n stream.getAudioTracks().forEach(track => _addTrack.call(this, track,\n stream));\n stream.getVideoTracks().forEach(track => _addTrack.call(this, track,\n stream));\n };\n\n window.RTCPeerConnection.prototype.addTrack =\n function addTrack(track, ...streams) {\n if (streams) {\n streams.forEach((stream) => {\n if (!this._localStreams) {\n this._localStreams = [stream];\n } else if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n });\n }\n return _addTrack.apply(this, arguments);\n };\n }\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.removeStream =\n function removeStream(stream) {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n const index = this._localStreams.indexOf(stream);\n if (index === -1) {\n return;\n }\n this._localStreams.splice(index, 1);\n const tracks = stream.getTracks();\n this.getSenders().forEach(sender => {\n if (tracks.includes(sender.track)) {\n this.removeTrack(sender);\n }\n });\n };\n }\n}\n\nexport function shimRemoteStreamsAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getRemoteStreams =\n function getRemoteStreams() {\n return this._remoteStreams ? this._remoteStreams : [];\n };\n }\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\n get() {\n return this._onaddstream;\n },\n set(f) {\n if (this._onaddstream) {\n this.removeEventListener('addstream', this._onaddstream);\n this.removeEventListener('track', this._onaddstreampoly);\n }\n this.addEventListener('addstream', this._onaddstream = f);\n this.addEventListener('track', this._onaddstreampoly = (e) => {\n e.streams.forEach(stream => {\n if (!this._remoteStreams) {\n this._remoteStreams = [];\n }\n if (this._remoteStreams.includes(stream)) {\n return;\n }\n this._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n this.dispatchEvent(event);\n });\n });\n }\n });\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n const pc = this;\n if (!this._onaddstreampoly) {\n this.addEventListener('track', this._onaddstreampoly = function(e) {\n e.streams.forEach(stream => {\n if (!pc._remoteStreams) {\n pc._remoteStreams = [];\n }\n if (pc._remoteStreams.indexOf(stream) >= 0) {\n return;\n }\n pc._remoteStreams.push(stream);\n const event = new Event('addstream');\n event.stream = stream;\n pc.dispatchEvent(event);\n });\n });\n }\n return origSetRemoteDescription.apply(pc, arguments);\n };\n }\n}\n\nexport function shimCallbacksAPI(window) {\n if (typeof window !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n const prototype = window.RTCPeerConnection.prototype;\n const origCreateOffer = prototype.createOffer;\n const origCreateAnswer = prototype.createAnswer;\n const setLocalDescription = prototype.setLocalDescription;\n const setRemoteDescription = prototype.setRemoteDescription;\n const addIceCandidate = prototype.addIceCandidate;\n\n prototype.createOffer =\n function createOffer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateOffer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.createAnswer =\n function createAnswer(successCallback, failureCallback) {\n const options = (arguments.length >= 2) ? arguments[2] : arguments[0];\n const promise = origCreateAnswer.apply(this, [options]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n let withCallback = function(description, successCallback, failureCallback) {\n const promise = setLocalDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setLocalDescription = withCallback;\n\n withCallback = function(description, successCallback, failureCallback) {\n const promise = setRemoteDescription.apply(this, [description]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.setRemoteDescription = withCallback;\n\n withCallback = function(candidate, successCallback, failureCallback) {\n const promise = addIceCandidate.apply(this, [candidate]);\n if (!failureCallback) {\n return promise;\n }\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n prototype.addIceCandidate = withCallback;\n}\n\nexport function shimGetUserMedia(window) {\n const navigator = window && window.navigator;\n\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // shim not needed in Safari 12.1\n const mediaDevices = navigator.mediaDevices;\n const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n navigator.mediaDevices.getUserMedia = (constraints) => {\n return _getUserMedia(shimConstraints(constraints));\n };\n }\n\n if (!navigator.getUserMedia && navigator.mediaDevices &&\n navigator.mediaDevices.getUserMedia) {\n navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) {\n navigator.mediaDevices.getUserMedia(constraints)\n .then(cb, errcb);\n }.bind(navigator);\n }\n}\n\nexport function shimConstraints(constraints) {\n if (constraints && constraints.video !== undefined) {\n return Object.assign({},\n constraints,\n {video: utils.compactObject(constraints.video)}\n );\n }\n\n return constraints;\n}\n\nexport function shimRTCIceServerUrls(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\n const OrigPeerConnection = window.RTCPeerConnection;\n window.RTCPeerConnection =\n function RTCPeerConnection(pcConfig, pcConstraints) {\n if (pcConfig && pcConfig.iceServers) {\n const newIceServers = [];\n for (let i = 0; i < pcConfig.iceServers.length; i++) {\n let server = pcConfig.iceServers[i];\n if (!server.hasOwnProperty('urls') &&\n server.hasOwnProperty('url')) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n server = JSON.parse(JSON.stringify(server));\n server.urls = server.url;\n delete server.url;\n newIceServers.push(server);\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n return new OrigPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype;\n // wrap static methods. Currently just generateCertificate.\n if ('generateCertificate' in OrigPeerConnection) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get() {\n return OrigPeerConnection.generateCertificate;\n }\n });\n }\n}\n\nexport function shimTrackEventTransceiver(window) {\n // Add event.transceiver member over deprecated event.receiver\n if (typeof window === 'object' && window.RTCTrackEvent &&\n 'receiver' in window.RTCTrackEvent.prototype &&\n !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get() {\n return {receiver: this.receiver};\n }\n });\n }\n}\n\nexport function shimCreateOfferLegacy(window) {\n const origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n window.RTCPeerConnection.prototype.createOffer =\n function createOffer(offerOptions) {\n if (offerOptions) {\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveAudio =\n !!offerOptions.offerToReceiveAudio;\n }\n const audioTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'audio');\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\n if (audioTransceiver.direction === 'sendrecv') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('sendonly');\n } else {\n audioTransceiver.direction = 'sendonly';\n }\n } else if (audioTransceiver.direction === 'recvonly') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('inactive');\n } else {\n audioTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveAudio === true &&\n !audioTransceiver) {\n this.addTransceiver('audio');\n }\n\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveVideo =\n !!offerOptions.offerToReceiveVideo;\n }\n const videoTransceiver = this.getTransceivers().find(transceiver =>\n transceiver.receiver.track.kind === 'video');\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\n if (videoTransceiver.direction === 'sendrecv') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('sendonly');\n } else {\n videoTransceiver.direction = 'sendonly';\n }\n } else if (videoTransceiver.direction === 'recvonly') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('inactive');\n } else {\n videoTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveVideo === true &&\n !videoTransceiver) {\n this.addTransceiver('video');\n }\n }\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nexport function shimAudioContext(window) {\n if (typeof window !== 'object' || window.AudioContext) {\n return;\n }\n window.AudioContext = window.webkitAudioContext;\n}\n","/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n'use strict';\n\nimport SDPUtils from 'sdp';\nimport * as utils from './utils';\n\nexport function shimRTCIceCandidate(window) {\n // foundation is arbitrarily chosen as an indicator for full support for\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\n if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in\n window.RTCIceCandidate.prototype)) {\n return;\n }\n\n const NativeRTCIceCandidate = window.RTCIceCandidate;\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n // Remove the a= which shouldn't be part of the candidate string.\n if (typeof args === 'object' && args.candidate &&\n args.candidate.indexOf('a=') === 0) {\n args = JSON.parse(JSON.stringify(args));\n args.candidate = args.candidate.substr(2);\n }\n\n if (args.candidate && args.candidate.length) {\n // Augment the native candidate with the parsed fields.\n const nativeCandidate = new NativeRTCIceCandidate(args);\n const parsedCandidate = SDPUtils.parseCandidate(args.candidate);\n const augmentedCandidate = Object.assign(nativeCandidate,\n parsedCandidate);\n\n // Add a serializer that does not serialize the extra attributes.\n augmentedCandidate.toJSON = function toJSON() {\n return {\n candidate: augmentedCandidate.candidate,\n sdpMid: augmentedCandidate.sdpMid,\n sdpMLineIndex: augmentedCandidate.sdpMLineIndex,\n usernameFragment: augmentedCandidate.usernameFragment,\n };\n };\n return augmentedCandidate;\n }\n return new NativeRTCIceCandidate(args);\n };\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype;\n\n // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n utils.wrapPeerConnectionEvent(window, 'icecandidate', e => {\n if (e.candidate) {\n Object.defineProperty(e, 'candidate', {\n value: new window.RTCIceCandidate(e.candidate),\n writable: 'false'\n });\n }\n return e;\n });\n}\n\nexport function shimMaxMessageSize(window, browserDetails) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n }\n });\n }\n\n const sctpInDescription = function(description) {\n if (!description || !description.sdp) {\n return false;\n }\n const sections = SDPUtils.splitSections(description.sdp);\n sections.shift();\n return sections.some(mediaSection => {\n const mLine = SDPUtils.parseMLine(mediaSection);\n return mLine && mLine.kind === 'application'\n && mLine.protocol.indexOf('SCTP') !== -1;\n });\n };\n\n const getRemoteFirefoxVersion = function(description) {\n // TODO: Is there a better solution for detecting Firefox?\n const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\n if (match === null || match.length < 2) {\n return -1;\n }\n const version = parseInt(match[1], 10);\n // Test for NaN (yes, this is ugly)\n return version !== version ? -1 : version;\n };\n\n const getCanSendMaxMessageSize = function(remoteIsFirefox) {\n // Every implementation we know can send at least 64 KiB.\n // Note: Although Chrome is technically able to send up to 256 KiB, the\n // data does not reach the other peer reliably.\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\n let canSendMaxMessageSize = 65536;\n if (browserDetails.browser === 'firefox') {\n if (browserDetails.version < 57) {\n if (remoteIsFirefox === -1) {\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\n // fragmentation.\n canSendMaxMessageSize = 16384;\n } else {\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\n // messages. Thus, supporting ~2 GiB when sending.\n canSendMaxMessageSize = 2147483637;\n }\n } else if (browserDetails.version < 60) {\n // Currently, all FF >= 57 will reset the remote maximum message size\n // to the default value when a data channel is created at a later\n // stage. :(\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n canSendMaxMessageSize =\n browserDetails.version === 57 ? 65535 : 65536;\n } else {\n // FF >= 60 supports sending ~2 GiB\n canSendMaxMessageSize = 2147483637;\n }\n }\n return canSendMaxMessageSize;\n };\n\n const getMaxMessageSize = function(description, remoteIsFirefox) {\n // Note: 65536 bytes is the default value from the SDP spec. Also,\n // every implementation we know supports receiving 65536 bytes.\n let maxMessageSize = 65536;\n\n // FF 57 has a slightly incorrect default remote max message size, so\n // we need to adjust it here to avoid a failure when sending.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\n if (browserDetails.browser === 'firefox'\n && browserDetails.version === 57) {\n maxMessageSize = 65535;\n }\n\n const match = SDPUtils.matchPrefix(description.sdp,\n 'a=max-message-size:');\n if (match.length > 0) {\n maxMessageSize = parseInt(match[0].substr(19), 10);\n } else if (browserDetails.browser === 'firefox' &&\n remoteIsFirefox !== -1) {\n // If the maximum message size is not present in the remote SDP and\n // both local and remote are Firefox, the remote peer can receive\n // ~2 GiB.\n maxMessageSize = 2147483637;\n }\n return maxMessageSize;\n };\n\n const origSetRemoteDescription =\n window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription() {\n this._sctp = null;\n // Chrome decided to not expose .sctp in plan-b mode.\n // As usual, adapter.js has to do an 'ugly worakaround'\n // to cover up the mess.\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) {\n const {sdpSemantics} = this.getConfiguration();\n if (sdpSemantics === 'plan-b') {\n Object.defineProperty(this, 'sctp', {\n get() {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (sctpInDescription(arguments[0])) {\n // Check if the remote is FF.\n const isFirefox = getRemoteFirefoxVersion(arguments[0]);\n\n // Get the maximum message size the local peer is capable of sending\n const canSendMMS = getCanSendMaxMessageSize(isFirefox);\n\n // Get the maximum message size of the remote peer.\n const remoteMMS = getMaxMessageSize(arguments[0], isFirefox);\n\n // Determine final maximum message size\n let maxMessageSize;\n if (canSendMMS === 0 && remoteMMS === 0) {\n maxMessageSize = Number.POSITIVE_INFINITY;\n } else if (canSendMMS === 0 || remoteMMS === 0) {\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\n } else {\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\n }\n\n // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\n // attribute.\n const sctp = {};\n Object.defineProperty(sctp, 'maxMessageSize', {\n get() {\n return maxMessageSize;\n }\n });\n this._sctp = sctp;\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n}\n\nexport function shimSendThrowTypeError(window) {\n if (!(window.RTCPeerConnection &&\n 'createDataChannel' in window.RTCPeerConnection.prototype)) {\n return;\n }\n\n // Note: Although Firefox >= 57 has a native implementation, the maximum\n // message size can be reset for all data channels at a later stage.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n\n function wrapDcSend(dc, pc) {\n const origDataChannelSend = dc.send;\n dc.send = function send() {\n const data = arguments[0];\n const length = data.length || data.size || data.byteLength;\n if (dc.readyState === 'open' &&\n pc.sctp && length > pc.sctp.maxMessageSize) {\n throw new TypeError('Message too large (can send a maximum of ' +\n pc.sctp.maxMessageSize + ' bytes)');\n }\n return origDataChannelSend.apply(dc, arguments);\n };\n }\n const origCreateDataChannel =\n window.RTCPeerConnection.prototype.createDataChannel;\n window.RTCPeerConnection.prototype.createDataChannel =\n function createDataChannel() {\n const dataChannel = origCreateDataChannel.apply(this, arguments);\n wrapDcSend(dataChannel, this);\n return dataChannel;\n };\n utils.wrapPeerConnectionEvent(window, 'datachannel', e => {\n wrapDcSend(e.channel, e.target);\n return e;\n });\n}\n\n\n/* shims RTCConnectionState by pretending it is the same as iceConnectionState.\n * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12\n * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect\n * since DTLS failures would be hidden. See\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827\n * for the Firefox tracking bug.\n */\nexport function shimConnectionState(window) {\n if (!window.RTCPeerConnection ||\n 'connectionState' in window.RTCPeerConnection.prototype) {\n return;\n }\n const proto = window.RTCPeerConnection.prototype;\n Object.defineProperty(proto, 'connectionState', {\n get() {\n return {\n completed: 'connected',\n checking: 'connecting'\n }[this.iceConnectionState] || this.iceConnectionState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(proto, 'onconnectionstatechange', {\n get() {\n return this._onconnectionstatechange || null;\n },\n set(cb) {\n if (this._onconnectionstatechange) {\n this.removeEventListener('connectionstatechange',\n this._onconnectionstatechange);\n delete this._onconnectionstatechange;\n }\n if (cb) {\n this.addEventListener('connectionstatechange',\n this._onconnectionstatechange = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n\n ['setLocalDescription', 'setRemoteDescription'].forEach((method) => {\n const origMethod = proto[method];\n proto[method] = function() {\n if (!this._connectionstatechangepoly) {\n this._connectionstatechangepoly = e => {\n const pc = e.target;\n if (pc._lastConnectionState !== pc.connectionState) {\n pc._lastConnectionState = pc.connectionState;\n const newEvent = new Event('connectionstatechange', e);\n pc.dispatchEvent(newEvent);\n }\n return e;\n };\n this.addEventListener('iceconnectionstatechange',\n this._connectionstatechangepoly);\n }\n return origMethod.apply(this, arguments);\n };\n });\n}\n\nexport function removeExtmapAllowMixed(window, browserDetails) {\n /* remove a=extmap-allow-mixed for webrtc.org < M71 */\n if (!window.RTCPeerConnection) {\n return;\n }\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) {\n return;\n }\n if (browserDetails.browser === 'safari' && browserDetails.version >= 605) {\n return;\n }\n const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription;\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function setRemoteDescription(desc) {\n if (desc && desc.sdp && desc.sdp.indexOf('\\na=extmap-allow-mixed') !== -1) {\n const sdp = desc.sdp.split('\\n').filter((line) => {\n return line.trim() !== 'a=extmap-allow-mixed';\n }).join('\\n');\n // Safari enforces read-only-ness of RTCSessionDescription fields.\n if (window.RTCSessionDescription &&\n desc instanceof window.RTCSessionDescription) {\n arguments[0] = new window.RTCSessionDescription({\n type: desc.type,\n sdp,\n });\n } else {\n desc.sdp = sdp;\n }\n }\n return nativeSRD.apply(this, arguments);\n };\n}\n\nexport function shimAddIceCandidateNullOrEmpty(window, browserDetails) {\n // Support for addIceCandidate(null or undefined)\n // as well as addIceCandidate({candidate: \"\", ...})\n // https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n // Note: must be called before other polyfills which change the signature.\n if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) {\n return;\n }\n const nativeAddIceCandidate =\n window.RTCPeerConnection.prototype.addIceCandidate;\n if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) {\n return;\n }\n window.RTCPeerConnection.prototype.addIceCandidate =\n function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n return Promise.resolve();\n }\n // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions.\n // Native support for ignoring exists for Chrome M77+.\n // Safari ignores as well, exact version unknown but works in the same\n // version that also ignores addIceCandidate(null).\n if (((browserDetails.browser === 'chrome' && browserDetails.version < 78)\n || (browserDetails.browser === 'firefox'\n && browserDetails.version < 68)\n || (browserDetails.browser === 'safari'))\n && arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n return nativeAddIceCandidate.apply(this, arguments);\n };\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\nimport * as utils from './utils';\n\n // Browser shims.\nimport * as chromeShim from './chrome/chrome_shim';\nimport * as edgeShim from './edge/edge_shim';\nimport * as firefoxShim from './firefox/firefox_shim';\nimport * as safariShim from './safari/safari_shim';\nimport * as commonShim from './common_shim';\n\n// Shimming starts here.\nexport function adapterFactory({window} = {}, options = {\n shimChrome: true,\n shimFirefox: true,\n shimEdge: true,\n shimSafari: true,\n}) {\n // Utils.\n const logging = utils.log;\n const browserDetails = utils.detectBrowser(window);\n\n const adapter = {\n browserDetails,\n commonShim,\n extractVersion: utils.extractVersion,\n disableLog: utils.disableLog,\n disableWarnings: utils.disableWarnings\n };\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection ||\n !options.shimChrome) {\n logging('Chrome shim is not included in this adapter release.');\n return adapter;\n }\n if (browserDetails.version === null) {\n logging('Chrome shim can not determine version, not shimming.');\n return adapter;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = chromeShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n chromeShim.shimGetUserMedia(window, browserDetails);\n chromeShim.shimMediaStream(window, browserDetails);\n chromeShim.shimPeerConnection(window, browserDetails);\n chromeShim.shimOnTrack(window, browserDetails);\n chromeShim.shimAddTrackRemoveTrack(window, browserDetails);\n chromeShim.shimGetSendersWithDtmf(window, browserDetails);\n chromeShim.shimGetStats(window, browserDetails);\n chromeShim.shimSenderReceiverGetStats(window, browserDetails);\n chromeShim.fixNegotiationNeeded(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection ||\n !options.shimFirefox) {\n logging('Firefox shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = firefoxShim;\n\n // Must be called before shimPeerConnection.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n firefoxShim.shimGetUserMedia(window, browserDetails);\n firefoxShim.shimPeerConnection(window, browserDetails);\n firefoxShim.shimOnTrack(window, browserDetails);\n firefoxShim.shimRemoveStream(window, browserDetails);\n firefoxShim.shimSenderGetStats(window, browserDetails);\n firefoxShim.shimReceiverGetStats(window, browserDetails);\n firefoxShim.shimRTCDataChannel(window, browserDetails);\n firefoxShim.shimAddTransceiver(window, browserDetails);\n firefoxShim.shimGetParameters(window, browserDetails);\n firefoxShim.shimCreateOffer(window, browserDetails);\n firefoxShim.shimCreateAnswer(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimConnectionState(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection || !options.shimEdge) {\n logging('MS edge shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia(window, browserDetails);\n edgeShim.shimGetDisplayMedia(window, browserDetails);\n edgeShim.shimPeerConnection(window, browserDetails);\n edgeShim.shimReplaceTrack(window, browserDetails);\n\n // the edge shim implements the full RTCIceCandidate object.\n\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n break;\n case 'safari':\n if (!safariShim || !options.shimSafari) {\n logging('Safari shim is not included in this adapter release.');\n return adapter;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n adapter.browserShim = safariShim;\n\n // Must be called before shimCallbackAPI.\n commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);\n\n safariShim.shimRTCIceServerUrls(window, browserDetails);\n safariShim.shimCreateOfferLegacy(window, browserDetails);\n safariShim.shimCallbacksAPI(window, browserDetails);\n safariShim.shimLocalStreamsAPI(window, browserDetails);\n safariShim.shimRemoteStreamsAPI(window, browserDetails);\n safariShim.shimTrackEventTransceiver(window, browserDetails);\n safariShim.shimGetUserMedia(window, browserDetails);\n safariShim.shimAudioContext(window, browserDetails);\n\n commonShim.shimRTCIceCandidate(window, browserDetails);\n commonShim.shimMaxMessageSize(window, browserDetails);\n commonShim.shimSendThrowTypeError(window, browserDetails);\n commonShim.removeExtmapAllowMixed(window, browserDetails);\n break;\n default:\n logging('Unsupported browser!');\n break;\n }\n\n return adapter;\n}\n","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n/* eslint-env node */\n\n'use strict';\n\nimport {adapterFactory} from './adapter_factory.js';\n\nconst adapter =\n adapterFactory({window: typeof window === 'undefined' ? undefined : window});\nexport default adapter;\n","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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 _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar Component = React.Component;\n\nvar PropTypes = require('prop-types');\n\nvar _require = require('./getDeviceId'),\n getDeviceId = _require.getDeviceId,\n getFacingModePattern = _require.getFacingModePattern;\n\nvar havePropsChanged = require('./havePropsChanged');\nvar createBlob = require('./createBlob');\n\n// Require adapter to support older browser implementations\nrequire('webrtc-adapter');\n\n// Inline worker.js as a string value of workerBlob.\n// eslint-disable-next-line\nvar workerBlob = createBlob([\"!function(o,e){\\\"object\\\"==typeof exports&&\\\"object\\\"==typeof module?module.exports=e():\\\"function\\\"==typeof define&&define.amd?define([],e):\\\"object\\\"==typeof exports?exports.jsQR=e():o.jsQR=e()}(\\\"undefined\\\"!=typeof self?self:this,function(){return function(o){function e(t){if(r[t])return r[t].exports;var c=r[t]={i:t,l:!1,exports:{}};return o[t].call(c.exports,c,c.exports,e),c.l=!0,c.exports}var r={};return e.m=o,e.c=r,e.d=function(o,r,t){e.o(o,r)||Object.defineProperty(o,r,{configurable:!1,enumerable:!0,get:t})},e.n=function(o){var r=o&&o.__esModule?function(){return o.default}:function(){return o};return e.d(r,\\\"a\\\",r),r},e.o=function(o,e){return Object.prototype.hasOwnProperty.call(o,e)},e.p=\\\"\\\",e(e.s=3)}([function(o,e,r){\\\"use strict\\\";Object.defineProperty(e,\\\"__esModule\\\",{value:!0});var t=function(){function o(o,e){this.width=e,this.height=o.length/e,this.data=o}return o.createEmpty=function(e,r){return new o(new Uint8ClampedArray(e*r),e)},o.prototype.get=function(o,e){return!(o<0||o>=this.width||e<0||e>=this.height)&&!!this.data[e*this.width+o]},o.prototype.set=function(o,e,r){this.data[e*this.width+o]=r?1:0},o.prototype.setRegion=function(o,e,r,t,c){for(var s=e;s=this.size&&(t=(t^this.primitive)&this.size-1);for(var s=0;s1&&0===e[0]){for(var t=1;tc.length&&(n=[c,r],r=n[0],c=n[1]);for(var s=new Uint8ClampedArray(c.length),a=c.length-r.length,d=0;dr?r:o}function c(o,e,r,c){if(o.length!==e*r*4)throw new Error(\\\"Malformed data passed to binarizer.\\\");for(var l=new n(e,r),i=0;i0&&v>0)){var x=(w.get(v,P-1)+2*w.get(v-1,P)+w.get(v-1,P-1))/4;p6&&(r.setRegion(e-11,0,3,6,!0),r.setRegion(0,e-11,6,3,!0)),r}function a(o,e,r){for(var t=w[r.dataMask],a=o.height,d=s(e),n=[],l=0,i=0,B=!0,k=a-1;k>0;k-=2){6===k&&k--;for(var u=0;u=0;a--)for(var d=e-9;d>=e-11;d--)s=c(o.get(d,a),s);for(var n=0,d=5;d>=0;d--)for(var a=e-9;a>=e-11;a--)n=c(o.get(d,a),n);for(var l,i=1/0,B=0,k=m.VERSIONS;B=0;s--)6!==s&&(e=c(o.get(8,s),e));for(var a=o.height,d=0,s=a-1;s>=a-7;s--)d=c(o.get(8,s),d);for(var r=a-8;r1)for(var B=t.ecBlocks[0].numBlocks,k=t.ecBlocks[1].numBlocks,d=0;d0;)for(var u=0,C=c;u=3;){var a=o.readBits(10);if(a>=1e3)throw new Error(\\\"Invalid numeric value above 999\\\");var d=Math.floor(a/100),n=Math.floor(a/10)%10,l=a%10;r.push(48+d,48+n,48+l),t+=d.toString()+n.toString()+l.toString(),s-=3}if(2===s){var a=o.readBits(7);if(a>=100)throw new Error(\\\"Invalid numeric value above 99\\\");var d=Math.floor(a/10),n=a%10;r.push(48+d,48+n),t+=d.toString()+n.toString()}else if(1===s){var a=o.readBits(4);if(a>=10)throw new Error(\\\"Invalid numeric value above 9\\\");r.push(48+a),t+=a.toString()}return{bytes:r,text:t}}function c(o,e){for(var r=[],t=\\\"\\\",c=[9,11,13][e],s=o.readBits(c);s>=2;){var a=o.readBits(11),d=Math.floor(a/45),n=a%45;r.push(k[d].charCodeAt(0),k[n].charCodeAt(0)),t+=k[d]+k[n],s-=2}if(1===s){var d=o.readBits(6);r.push(k[d].charCodeAt(0)),t+=k[d]}return{bytes:r,text:t}}function s(o,e){for(var r=[],t=\\\"\\\",c=[8,16,16][e],s=o.readBits(c),a=0;a>8,255&n),t+=String.fromCharCode(i.shiftJISTable[n])}return{bytes:r,text:t}}function d(o,e){for(var r=new l.BitStream(o),d=e<=9?0:e<=26?1:2,i={text:\\\"\\\",bytes:[],chunks:[]};r.available()>=4;){var k=r.readBits(4);if(k===B.Terminator)return i;if(k===B.ECI)0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(7)}):0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(14)}):0===r.readBits(1)?i.chunks.push({type:n.ECI,assignmentNumber:r.readBits(21)}):i.chunks.push({type:n.ECI,assignmentNumber:-1});else if(k===B.Numeric){var u=t(r,d);i.text+=u.text,(w=i.bytes).push.apply(w,u.bytes),i.chunks.push({type:n.Numeric,text:u.text})}else if(k===B.Alphanumeric){var C=c(r,d);i.text+=C.text,(P=i.bytes).push.apply(P,C.bytes),i.chunks.push({type:n.Alphanumeric,text:C.text})}else if(k===B.Byte){var m=s(r,d);i.text+=m.text,(v=i.bytes).push.apply(v,m.bytes),i.chunks.push({type:n.Byte,bytes:m.bytes,text:m.text})}else if(k===B.Kanji){var f=a(r,d);i.text+=f.text,(h=i.bytes).push.apply(h,f.bytes),i.chunks.push({type:n.Kanji,bytes:f.bytes,text:f.text})}}var w,P,v,h}Object.defineProperty(e,\\\"__esModule\\\",{value:!0});var n,l=r(7),i=r(8);!function(o){o.Numeric=\\\"numeric\\\",o.Alphanumeric=\\\"alphanumeric\\\",o.Byte=\\\"byte\\\",o.Kanji=\\\"kanji\\\",o.ECI=\\\"eci\\\"}(n=e.Mode||(e.Mode={}));var B;!function(o){o[o.Terminator=0]=\\\"Terminator\\\",o[o.Numeric=1]=\\\"Numeric\\\",o[o.Alphanumeric=2]=\\\"Alphanumeric\\\",o[o.Byte=4]=\\\"Byte\\\",o[o.Kanji=8]=\\\"Kanji\\\",o[o.ECI=7]=\\\"ECI\\\"}(B||(B={}));var k=[\\\"0\\\",\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"A\\\",\\\"B\\\",\\\"C\\\",\\\"D\\\",\\\"E\\\",\\\"F\\\",\\\"G\\\",\\\"H\\\",\\\"I\\\",\\\"J\\\",\\\"K\\\",\\\"L\\\",\\\"M\\\",\\\"N\\\",\\\"O\\\",\\\"P\\\",\\\"Q\\\",\\\"R\\\",\\\"S\\\",\\\"T\\\",\\\"U\\\",\\\"V\\\",\\\"W\\\",\\\"X\\\",\\\"Y\\\",\\\"Z\\\",\\\" \\\",\\\"$\\\",\\\"%\\\",\\\"*\\\",\\\"+\\\",\\\"-\\\",\\\".\\\",\\\"/\\\",\\\":\\\"];e.decode=d},function(o,e,r){\\\"use strict\\\";Object.defineProperty(e,\\\"__esModule\\\",{value:!0});var t=function(){function o(o){this.byteOffset=0,this.bitOffset=0,this.bytes=o}return o.prototype.readBits=function(o){if(o<1||o>32||o>this.available())throw new Error(\\\"Cannot read \\\"+o.toString()+\\\" bits\\\");var e=0;if(this.bitOffset>0){var r=8-this.bitOffset,t=o>8-t<>c,o-=t,this.bitOffset+=t,8===this.bitOffset&&(this.bitOffset=0,this.byteOffset++)}if(o>0){for(;o>=8;)e=e<<8|255&this.bytes[this.byteOffset],this.byteOffset++,o-=8;if(o>0){var c=8-o,s=255>>c<>c,this.bitOffset+=o}}return e},o.prototype.available=function(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset},o}();e.BitStream=t},function(o,e,r){\\\"use strict\\\";Object.defineProperty(e,\\\"__esModule\\\",{value:!0}),e.shiftJISTable={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:165,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:8254,33088:12288,33089:12289,33090:12290,33091:65292,33092:65294,33093:12539,33094:65306,33095:65307,33096:65311,33097:65281,33098:12443,33099:12444,33100:180,33101:65344,33102:168,33103:65342,33104:65507,33105:65343,33106:12541,33107:12542,33108:12445,33109:12446,33110:12291,33111:20189,33112:12293,33113:12294,33114:12295,33115:12540,33116:8213,33117:8208,33118:65295,33119:92,33120:12316,33121:8214,33122:65372,33123:8230,33124:8229,33125:8216,33126:8217,33127:8220,33128:8221,33129:65288,33130:65289,33131:12308,33132:12309,33133:65339,33134:65341,33135:65371,33136:65373,33137:12296,33138:12297,33139:12298,33140:12299,33141:12300,33142:12301,33143:12302,33144:12303,33145:12304,33146:12305,33147:65291,33148:8722,33149:177,33150:215,33152:247,33153:65309,33154:8800,33155:65308,33156:65310,33157:8806,33158:8807,33159:8734,33160:8756,33161:9794,33162:9792,33163:176,33164:8242,33165:8243,33166:8451,33167:65509,33168:65284,33169:162,33170:163,33171:65285,33172:65283,33173:65286,33174:65290,33175:65312,33176:167,33177:9734,33178:9733,33179:9675,33180:9679,33181:9678,33182:9671,33183:9670,33184:9633,33185:9632,33186:9651,33187:9650,33188:9661,33189:9660,33190:8251,33191:12306,33192:8594,33193:8592,33194:8593,33195:8595,33196:12307,33208:8712,33209:8715,33210:8838,33211:8839,33212:8834,33213:8835,33214:8746,33215:8745,33224:8743,33225:8744,33226:172,33227:8658,33228:8660,33229:8704,33230:8707,33242:8736,33243:8869,33244:8978,33245:8706,33246:8711,33247:8801,33248:8786,33249:8810,33250:8811,33251:8730,33252:8765,33253:8733,33254:8757,33255:8747,33256:8748,33264:8491,33265:8240,33266:9839,33267:9837,33268:9834,33269:8224,33270:8225,33271:182,33276:9711,33359:65296,33360:65297,33361:65298,33362:65299,33363:65300,33364:65301,33365:65302,33366:65303,33367:65304,33368:65305,33376:65313,33377:65314,33378:65315,33379:65316,33380:65317,33381:65318,33382:65319,33383:65320,33384:65321,33385:65322,33386:65323,33387:65324,33388:65325,33389:65326,33390:65327,33391:65328,33392:65329,33393:65330,33394:65331,33395:65332,33396:65333,33397:65334,33398:65335,33399:65336,33400:65337,33401:65338,33409:65345,33410:65346,33411:65347,33412:65348,33413:65349,33414:65350,33415:65351,33416:65352,33417:65353,33418:65354,33419:65355,33420:65356,33421:65357,33422:65358,33423:65359,33424:65360,33425:65361,33426:65362,33427:65363,33428:65364,33429:65365,33430:65366,33431:65367,33432:65368,33433:65369,33434:65370,33439:12353,33440:12354,33441:12355,33442:12356,33443:12357,33444:12358,33445:12359,33446:12360,33447:12361,33448:12362,33449:12363,33450:12364,33451:12365,33452:12366,33453:12367,33454:12368,33455:12369,33456:12370,33457:12371,33458:12372,33459:12373,33460:12374,33461:12375,33462:12376,33463:12377,33464:12378,33465:12379,33466:12380,33467:12381,33468:12382,33469:12383,33470:12384,33471:12385,33472:12386,33473:12387,33474:12388,33475:12389,33476:12390,33477:12391,33478:12392,33479:12393,33480:12394,33481:12395,33482:12396,33483:12397,33484:12398,33485:12399,33486:12400,33487:12401,33488:12402,33489:12403,33490:12404,33491:12405,33492:12406,33493:12407,33494:12408,33495:12409,33496:12410,33497:12411,33498:12412,33499:12413,33500:12414,33501:12415,33502:12416,33503:12417,33504:12418,33505:12419,33506:12420,33507:12421,33508:12422,33509:12423,33510:12424,33511:12425,33512:12426,33513:12427,33514:12428,33515:12429,33516:12430,33517:12431,33518:12432,33519:12433,33520:12434,33521:12435,33600:12449,33601:12450,33602:12451,33603:12452,33604:12453,33605:12454,33606:12455,33607:12456,33608:12457,33609:12458,33610:12459,33611:12460,33612:12461,33613:12462,33614:12463,33615:12464,33616:12465,33617:12466,33618:12467,33619:12468,33620:12469,33621:12470,33622:12471,33623:12472,33624:12473,33625:12474,33626:12475,33627:12476,33628:12477,33629:12478,33630:12479,33631:12480,33632:12481,33633:12482,33634:12483,33635:12484,33636:12485,33637:12486,33638:12487,33639:12488,33640:12489,33641:12490,33642:12491,33643:12492,33644:12493,33645:12494,33646:12495,33647:12496,33648:12497,33649:12498,33650:12499,33651:12500,33652:12501,33653:12502,33654:12503,33655:12504,33656:12505,33657:12506,33658:12507,33659:12508,33660:12509,33661:12510,33662:12511,33664:12512,33665:12513,33666:12514,33667:12515,33668:12516,33669:12517,33670:12518,33671:12519,33672:12520,33673:12521,33674:12522,33675:12523,33676:12524,33677:12525,33678:12526,33679:12527,33680:12528,33681:12529,33682:12530,33683:12531,33684:12532,33685:12533,33686:12534,33695:913,33696:914,33697:915,33698:916,33699:917,33700:918,33701:919,33702:920,33703:921,33704:922,33705:923,33706:924,33707:925,33708:926,33709:927,33710:928,33711:929,33712:931,33713:932,33714:933,33715:934,33716:935,33717:936,33718:937,33727:945,33728:946,33729:947,33730:948,33731:949,33732:950,33733:951,33734:952,33735:953,33736:954,33737:955,33738:956,33739:957,33740:958,33741:959,33742:960,33743:961,33744:963,33745:964,33746:965,33747:966,33748:967,33749:968,33750:969,33856:1040,33857:1041,33858:1042,33859:1043,33860:1044,33861:1045,33862:1025,33863:1046,33864:1047,33865:1048,33866:1049,33867:1050,33868:1051,33869:1052,33870:1053,33871:1054,33872:1055,33873:1056,33874:1057,33875:1058,33876:1059,33877:1060,33878:1061,33879:1062,33880:1063,33881:1064,33882:1065,33883:1066,33884:1067,33885:1068,33886:1069,33887:1070,33888:1071,33904:1072,33905:1073,33906:1074,33907:1075,33908:1076,33909:1077,33910:1105,33911:1078,33912:1079,33913:1080,33914:1081,33915:1082,33916:1083,33917:1084,33918:1085,33920:1086,33921:1087,33922:1088,33923:1089,33924:1090,33925:1091,33926:1092,33927:1093,33928:1094,33929:1095,33930:1096,33931:1097,33932:1098,33933:1099,33934:1100,33935:1101,33936:1102,33937:1103,33951:9472,33952:9474,33953:9484,33954:9488,33955:9496,33956:9492,33957:9500,33958:9516,33959:9508,33960:9524,33961:9532,33962:9473,33963:9475,33964:9487,33965:9491,33966:9499,33967:9495,33968:9507,33969:9523,33970:9515,33971:9531,33972:9547,33973:9504,33974:9519,33975:9512,33976:9527,33977:9535,33978:9501,33979:9520,33980:9509,33981:9528,33982:9538,34975:20124,34976:21782,34977:23043,34978:38463,34979:21696,34980:24859,34981:25384,34982:23030,34983:36898,34984:33909,34985:33564,34986:31312,34987:24746,34988:25569,34989:28197,34990:26093,34991:33894,34992:33446,34993:39925,34994:26771,34995:22311,34996:26017,34997:25201,34998:23451,34999:22992,35e3:34427,35001:39156,35002:32098,35003:32190,35004:39822,35005:25110,35006:31903,35007:34999,35008:23433,35009:24245,35010:25353,35011:26263,35012:26696,35013:38343,35014:38797,35015:26447,35016:20197,35017:20234,35018:20301,35019:20381,35020:20553,35021:22258,35022:22839,35023:22996,35024:23041,35025:23561,35026:24799,35027:24847,35028:24944,35029:26131,35030:26885,35031:28858,35032:30031,35033:30064,35034:31227,35035:32173,35036:32239,35037:32963,35038:33806,35039:34915,35040:35586,35041:36949,35042:36986,35043:21307,35044:20117,35045:20133,35046:22495,35047:32946,35048:37057,35049:30959,35050:19968,35051:22769,35052:28322,35053:36920,35054:31282,35055:33576,35056:33419,35057:39983,35058:20801,35059:21360,35060:21693,35061:21729,35062:22240,35063:23035,35064:24341,35065:39154,35066:28139,35067:32996,35068:34093,35136:38498,35137:38512,35138:38560,35139:38907,35140:21515,35141:21491,35142:23431,35143:28879,35144:32701,35145:36802,35146:38632,35147:21359,35148:40284,35149:31418,35150:19985,35151:30867,35152:33276,35153:28198,35154:22040,35155:21764,35156:27421,35157:34074,35158:39995,35159:23013,35160:21417,35161:28006,35162:29916,35163:38287,35164:22082,35165:20113,35166:36939,35167:38642,35168:33615,35169:39180,35170:21473,35171:21942,35172:23344,35173:24433,35174:26144,35175:26355,35176:26628,35177:27704,35178:27891,35179:27945,35180:29787,35181:30408,35182:31310,35183:38964,35184:33521,35185:34907,35186:35424,35187:37613,35188:28082,35189:30123,35190:30410,35191:39365,35192:24742,35193:35585,35194:36234,35195:38322,35196:27022,35197:21421,35198:20870,35200:22290,35201:22576,35202:22852,35203:23476,35204:24310,35205:24616,35206:25513,35207:25588,35208:27839,35209:28436,35210:28814,35211:28948,35212:29017,35213:29141,35214:29503,35215:32257,35216:33398,35217:33489,35218:34199,35219:36960,35220:37467,35221:40219,35222:22633,35223:26044,35224:27738,35225:29989,35226:20985,35227:22830,35228:22885,35229:24448,35230:24540,35231:25276,35232:26106,35233:27178,35234:27431,35235:27572,35236:29579,35237:32705,35238:35158,35239:40236,35240:40206,35241:40644,35242:23713,35243:27798,35244:33659,35245:20740,35246:23627,35247:25014,35248:33222,35249:26742,35250:29281,35251:20057,35252:20474,35253:21368,35254:24681,35255:28201,35256:31311,35257:38899,35258:19979,35259:21270,35260:20206,35261:20309,35262:20285,35263:20385,35264:20339,35265:21152,35266:21487,35267:22025,35268:22799,35269:23233,35270:23478,35271:23521,35272:31185,35273:26247,35274:26524,35275:26550,35276:27468,35277:27827,35278:28779,35279:29634,35280:31117,35281:31166,35282:31292,35283:31623,35284:33457,35285:33499,35286:33540,35287:33655,35288:33775,35289:33747,35290:34662,35291:35506,35292:22057,35293:36008,35294:36838,35295:36942,35296:38686,35297:34442,35298:20420,35299:23784,35300:25105,35301:29273,35302:30011,35303:33253,35304:33469,35305:34558,35306:36032,35307:38597,35308:39187,35309:39381,35310:20171,35311:20250,35312:35299,35313:22238,35314:22602,35315:22730,35316:24315,35317:24555,35318:24618,35319:24724,35320:24674,35321:25040,35322:25106,35323:25296,35324:25913,35392:39745,35393:26214,35394:26800,35395:28023,35396:28784,35397:30028,35398:30342,35399:32117,35400:33445,35401:34809,35402:38283,35403:38542,35404:35997,35405:20977,35406:21182,35407:22806,35408:21683,35409:23475,35410:23830,35411:24936,35412:27010,35413:28079,35414:30861,35415:33995,35416:34903,35417:35442,35418:37799,35419:39608,35420:28012,35421:39336,35422:34521,35423:22435,35424:26623,35425:34510,35426:37390,35427:21123,35428:22151,35429:21508,35430:24275,35431:25313,35432:25785,35433:26684,35434:26680,35435:27579,35436:29554,35437:30906,35438:31339,35439:35226,35440:35282,35441:36203,35442:36611,35443:37101,35444:38307,35445:38548,35446:38761,35447:23398,35448:23731,35449:27005,35450:38989,35451:38990,35452:25499,35453:31520,35454:27179,35456:27263,35457:26806,35458:39949,35459:28511,35460:21106,35461:21917,35462:24688,35463:25324,35464:27963,35465:28167,35466:28369,35467:33883,35468:35088,35469:36676,35470:19988,35471:39993,35472:21494,35473:26907,35474:27194,35475:38788,35476:26666,35477:20828,35478:31427,35479:33970,35480:37340,35481:37772,35482:22107,35483:40232,35484:26658,35485:33541,35486:33841,35487:31909,35488:21e3,35489:33477,35490:29926,35491:20094,35492:20355,35493:20896,35494:23506,35495:21002,35496:21208,35497:21223,35498:24059,35499:21914,35500:22570,35501:23014,35502:23436,35503:23448,35504:23515,35505:24178,35506:24185,35507:24739,35508:24863,35509:24931,35510:25022,35511:25563,35512:25954,35513:26577,35514:26707,35515:26874,35516:27454,35517:27475,35518:27735,35519:28450,35520:28567,35521:28485,35522:29872,35523:29976,35524:30435,35525:30475,35526:31487,35527:31649,35528:31777,35529:32233,35530:32566,35531:32752,35532:32925,35533:33382,35534:33694,35535:35251,35536:35532,35537:36011,35538:36996,35539:37969,35540:38291,35541:38289,35542:38306,35543:38501,35544:38867,35545:39208,35546:33304,35547:20024,35548:21547,35549:23736,35550:24012,35551:29609,35552:30284,35553:30524,35554:23721,35555:32747,35556:36107,35557:38593,35558:38929,35559:38996,35560:39e3,35561:20225,35562:20238,35563:21361,35564:21916,35565:22120,35566:22522,35567:22855,35568:23305,35569:23492,35570:23696,35571:24076,35572:24190,35573:24524,35574:25582,35575:26426,35576:26071,35577:26082,35578:26399,35579:26827,35580:26820,35648:27231,35649:24112,35650:27589,35651:27671,35652:27773,35653:30079,35654:31048,35655:23395,35656:31232,35657:32e3,35658:24509,35659:35215,35660:35352,35661:36020,35662:36215,35663:36556,35664:36637,35665:39138,35666:39438,35667:39740,35668:20096,35669:20605,35670:20736,35671:22931,35672:23452,35673:25135,35674:25216,35675:25836,35676:27450,35677:29344,35678:30097,35679:31047,35680:32681,35681:34811,35682:35516,35683:35696,35684:25516,35685:33738,35686:38816,35687:21513,35688:21507,35689:21931,35690:26708,35691:27224,35692:35440,35693:30759,35694:26485,35695:40653,35696:21364,35697:23458,35698:33050,35699:34384,35700:36870,35701:19992,35702:20037,35703:20167,35704:20241,35705:21450,35706:21560,35707:23470,35708:24339,35709:24613,35710:25937,35712:26429,35713:27714,35714:27762,35715:27875,35716:28792,35717:29699,35718:31350,35719:31406,35720:31496,35721:32026,35722:31998,35723:32102,35724:26087,35725:29275,35726:21435,35727:23621,35728:24040,35729:25298,35730:25312,35731:25369,35732:28192,35733:34394,35734:35377,35735:36317,35736:37624,35737:28417,35738:31142,35739:39770,35740:20136,35741:20139,35742:20140,35743:20379,35744:20384,35745:20689,35746:20807,35747:31478,35748:20849,35749:20982,35750:21332,35751:21281,35752:21375,35753:21483,35754:21932,35755:22659,35756:23777,35757:24375,35758:24394,35759:24623,35760:24656,35761:24685,35762:25375,35763:25945,35764:27211,35765:27841,35766:29378,35767:29421,35768:30703,35769:33016,35770:33029,35771:33288,35772:34126,35773:37111,35774:37857,35775:38911,35776:39255,35777:39514,35778:20208,35779:20957,35780:23597,35781:26241,35782:26989,35783:23616,35784:26354,35785:26997,35786:29577,35787:26704,35788:31873,35789:20677,35790:21220,35791:22343,35792:24062,35793:37670,35794:26020,35795:27427,35796:27453,35797:29748,35798:31105,35799:31165,35800:31563,35801:32202,35802:33465,35803:33740,35804:34943,35805:35167,35806:35641,35807:36817,35808:37329,35809:21535,35810:37504,35811:20061,35812:20534,35813:21477,35814:21306,35815:29399,35816:29590,35817:30697,35818:33510,35819:36527,35820:39366,35821:39368,35822:39378,35823:20855,35824:24858,35825:34398,35826:21936,35827:31354,35828:20598,35829:23507,35830:36935,35831:38533,35832:20018,35833:27355,35834:37351,35835:23633,35836:23624,35904:25496,35905:31391,35906:27795,35907:38772,35908:36705,35909:31402,35910:29066,35911:38536,35912:31874,35913:26647,35914:32368,35915:26705,35916:37740,35917:21234,35918:21531,35919:34219,35920:35347,35921:32676,35922:36557,35923:37089,35924:21350,35925:34952,35926:31041,35927:20418,35928:20670,35929:21009,35930:20804,35931:21843,35932:22317,35933:29674,35934:22411,35935:22865,35936:24418,35937:24452,35938:24693,35939:24950,35940:24935,35941:25001,35942:25522,35943:25658,35944:25964,35945:26223,35946:26690,35947:28179,35948:30054,35949:31293,35950:31995,35951:32076,35952:32153,35953:32331,35954:32619,35955:33550,35956:33610,35957:34509,35958:35336,35959:35427,35960:35686,35961:36605,35962:38938,35963:40335,35964:33464,35965:36814,35966:39912,35968:21127,35969:25119,35970:25731,35971:28608,35972:38553,35973:26689,35974:20625,35975:27424,35976:27770,35977:28500,35978:31348,35979:32080,35980:34880,35981:35363,35982:26376,35983:20214,35984:20537,35985:20518,35986:20581,35987:20860,35988:21048,35989:21091,35990:21927,35991:22287,35992:22533,35993:23244,35994:24314,35995:25010,35996:25080,35997:25331,35998:25458,35999:26908,36e3:27177,36001:29309,36002:29356,36003:29486,36004:30740,36005:30831,36006:32121,36007:30476,36008:32937,36009:35211,36010:35609,36011:36066,\\n36012:36562,36013:36963,36014:37749,36015:38522,36016:38997,36017:39443,36018:40568,36019:20803,36020:21407,36021:21427,36022:24187,36023:24358,36024:28187,36025:28304,36026:29572,36027:29694,36028:32067,36029:33335,36030:35328,36031:35578,36032:38480,36033:20046,36034:20491,36035:21476,36036:21628,36037:22266,36038:22993,36039:23396,36040:24049,36041:24235,36042:24359,36043:25144,36044:25925,36045:26543,36046:28246,36047:29392,36048:31946,36049:34996,36050:32929,36051:32993,36052:33776,36053:34382,36054:35463,36055:36328,36056:37431,36057:38599,36058:39015,36059:40723,36060:20116,36061:20114,36062:20237,36063:21320,36064:21577,36065:21566,36066:23087,36067:24460,36068:24481,36069:24735,36070:26791,36071:27278,36072:29786,36073:30849,36074:35486,36075:35492,36076:35703,36077:37264,36078:20062,36079:39881,36080:20132,36081:20348,36082:20399,36083:20505,36084:20502,36085:20809,36086:20844,36087:21151,36088:21177,36089:21246,36090:21402,36091:21475,36092:21521,36160:21518,36161:21897,36162:22353,36163:22434,36164:22909,36165:23380,36166:23389,36167:23439,36168:24037,36169:24039,36170:24055,36171:24184,36172:24195,36173:24218,36174:24247,36175:24344,36176:24658,36177:24908,36178:25239,36179:25304,36180:25511,36181:25915,36182:26114,36183:26179,36184:26356,36185:26477,36186:26657,36187:26775,36188:27083,36189:27743,36190:27946,36191:28009,36192:28207,36193:28317,36194:30002,36195:30343,36196:30828,36197:31295,36198:31968,36199:32005,36200:32024,36201:32094,36202:32177,36203:32789,36204:32771,36205:32943,36206:32945,36207:33108,36208:33167,36209:33322,36210:33618,36211:34892,36212:34913,36213:35611,36214:36002,36215:36092,36216:37066,36217:37237,36218:37489,36219:30783,36220:37628,36221:38308,36222:38477,36224:38917,36225:39321,36226:39640,36227:40251,36228:21083,36229:21163,36230:21495,36231:21512,36232:22741,36233:25335,36234:28640,36235:35946,36236:36703,36237:40633,36238:20811,36239:21051,36240:21578,36241:22269,36242:31296,36243:37239,36244:40288,36245:40658,36246:29508,36247:28425,36248:33136,36249:29969,36250:24573,36251:24794,36252:39592,36253:29403,36254:36796,36255:27492,36256:38915,36257:20170,36258:22256,36259:22372,36260:22718,36261:23130,36262:24680,36263:25031,36264:26127,36265:26118,36266:26681,36267:26801,36268:28151,36269:30165,36270:32058,36271:33390,36272:39746,36273:20123,36274:20304,36275:21449,36276:21766,36277:23919,36278:24038,36279:24046,36280:26619,36281:27801,36282:29811,36283:30722,36284:35408,36285:37782,36286:35039,36287:22352,36288:24231,36289:25387,36290:20661,36291:20652,36292:20877,36293:26368,36294:21705,36295:22622,36296:22971,36297:23472,36298:24425,36299:25165,36300:25505,36301:26685,36302:27507,36303:28168,36304:28797,36305:37319,36306:29312,36307:30741,36308:30758,36309:31085,36310:25998,36311:32048,36312:33756,36313:35009,36314:36617,36315:38555,36316:21092,36317:22312,36318:26448,36319:32618,36320:36001,36321:20916,36322:22338,36323:38442,36324:22586,36325:27018,36326:32948,36327:21682,36328:23822,36329:22524,36330:30869,36331:40442,36332:20316,36333:21066,36334:21643,36335:25662,36336:26152,36337:26388,36338:26613,36339:31364,36340:31574,36341:32034,36342:37679,36343:26716,36344:39853,36345:31545,36346:21273,36347:20874,36348:21047,36416:23519,36417:25334,36418:25774,36419:25830,36420:26413,36421:27578,36422:34217,36423:38609,36424:30352,36425:39894,36426:25420,36427:37638,36428:39851,36429:30399,36430:26194,36431:19977,36432:20632,36433:21442,36434:23665,36435:24808,36436:25746,36437:25955,36438:26719,36439:29158,36440:29642,36441:29987,36442:31639,36443:32386,36444:34453,36445:35715,36446:36059,36447:37240,36448:39184,36449:26028,36450:26283,36451:27531,36452:20181,36453:20180,36454:20282,36455:20351,36456:21050,36457:21496,36458:21490,36459:21987,36460:22235,36461:22763,36462:22987,36463:22985,36464:23039,36465:23376,36466:23629,36467:24066,36468:24107,36469:24535,36470:24605,36471:25351,36472:25903,36473:23388,36474:26031,36475:26045,36476:26088,36477:26525,36478:27490,36480:27515,36481:27663,36482:29509,36483:31049,36484:31169,36485:31992,36486:32025,36487:32043,36488:32930,36489:33026,36490:33267,36491:35222,36492:35422,36493:35433,36494:35430,36495:35468,36496:35566,36497:36039,36498:36060,36499:38604,36500:39164,36501:27503,36502:20107,36503:20284,36504:20365,36505:20816,36506:23383,36507:23546,36508:24904,36509:25345,36510:26178,36511:27425,36512:28363,36513:27835,36514:29246,36515:29885,36516:30164,36517:30913,36518:31034,36519:32780,36520:32819,36521:33258,36522:33940,36523:36766,36524:27728,36525:40575,36526:24335,36527:35672,36528:40235,36529:31482,36530:36600,36531:23437,36532:38635,36533:19971,36534:21489,36535:22519,36536:22833,36537:23241,36538:23460,36539:24713,36540:28287,36541:28422,36542:30142,36543:36074,36544:23455,36545:34048,36546:31712,36547:20594,36548:26612,36549:33437,36550:23649,36551:34122,36552:32286,36553:33294,36554:20889,36555:23556,36556:25448,36557:36198,36558:26012,36559:29038,36560:31038,36561:32023,36562:32773,36563:35613,36564:36554,36565:36974,36566:34503,36567:37034,36568:20511,36569:21242,36570:23610,36571:26451,36572:28796,36573:29237,36574:37196,36575:37320,36576:37675,36577:33509,36578:23490,36579:24369,36580:24825,36581:20027,36582:21462,36583:23432,36584:25163,36585:26417,36586:27530,36587:29417,36588:29664,36589:31278,36590:33131,36591:36259,36592:37202,36593:39318,36594:20754,36595:21463,36596:21610,36597:23551,36598:25480,36599:27193,36600:32172,36601:38656,36602:22234,36603:21454,36604:21608,36672:23447,36673:23601,36674:24030,36675:20462,36676:24833,36677:25342,36678:27954,36679:31168,36680:31179,36681:32066,36682:32333,36683:32722,36684:33261,36685:33311,36686:33936,36687:34886,36688:35186,36689:35728,36690:36468,36691:36655,36692:36913,36693:37195,36694:37228,36695:38598,36696:37276,36697:20160,36698:20303,36699:20805,36700:21313,36701:24467,36702:25102,36703:26580,36704:27713,36705:28171,36706:29539,36707:32294,36708:37325,36709:37507,36710:21460,36711:22809,36712:23487,36713:28113,36714:31069,36715:32302,36716:31899,36717:22654,36718:29087,36719:20986,36720:34899,36721:36848,36722:20426,36723:23803,36724:26149,36725:30636,36726:31459,36727:33308,36728:39423,36729:20934,36730:24490,36731:26092,36732:26991,36733:27529,36734:28147,36736:28310,36737:28516,36738:30462,36739:32020,36740:24033,36741:36981,36742:37255,36743:38918,36744:20966,36745:21021,36746:25152,36747:26257,36748:26329,36749:28186,36750:24246,36751:32210,36752:32626,36753:26360,36754:34223,36755:34295,36756:35576,36757:21161,36758:21465,36759:22899,36760:24207,36761:24464,36762:24661,36763:37604,36764:38500,36765:20663,36766:20767,36767:21213,36768:21280,36769:21319,36770:21484,36771:21736,36772:21830,36773:21809,36774:22039,36775:22888,36776:22974,36777:23100,36778:23477,36779:23558,36780:23567,36781:23569,36782:23578,36783:24196,36784:24202,36785:24288,36786:24432,36787:25215,36788:25220,36789:25307,36790:25484,36791:25463,36792:26119,36793:26124,36794:26157,36795:26230,36796:26494,36797:26786,36798:27167,36799:27189,36800:27836,36801:28040,36802:28169,36803:28248,36804:28988,36805:28966,36806:29031,36807:30151,36808:30465,36809:30813,36810:30977,36811:31077,36812:31216,36813:31456,36814:31505,36815:31911,36816:32057,36817:32918,36818:33750,36819:33931,36820:34121,36821:34909,36822:35059,36823:35359,36824:35388,36825:35412,36826:35443,36827:35937,36828:36062,36829:37284,36830:37478,36831:37758,36832:37912,36833:38556,36834:38808,36835:19978,36836:19976,36837:19998,36838:20055,36839:20887,36840:21104,36841:22478,36842:22580,36843:22732,36844:23330,36845:24120,36846:24773,36847:25854,36848:26465,36849:26454,36850:27972,36851:29366,36852:30067,36853:31331,36854:33976,36855:35698,36856:37304,36857:37664,36858:22065,36859:22516,36860:39166,36928:25325,36929:26893,36930:27542,36931:29165,36932:32340,36933:32887,36934:33394,36935:35302,36936:39135,36937:34645,36938:36785,36939:23611,36940:20280,36941:20449,36942:20405,36943:21767,36944:23072,36945:23517,36946:23529,36947:24515,36948:24910,36949:25391,36950:26032,36951:26187,36952:26862,36953:27035,36954:28024,36955:28145,36956:30003,36957:30137,36958:30495,36959:31070,36960:31206,36961:32051,36962:33251,36963:33455,36964:34218,36965:35242,36966:35386,36967:36523,36968:36763,36969:36914,36970:37341,36971:38663,36972:20154,36973:20161,36974:20995,36975:22645,36976:22764,36977:23563,36978:29978,36979:23613,36980:33102,36981:35338,36982:36805,36983:38499,36984:38765,36985:31525,36986:35535,36987:38920,36988:37218,36989:22259,36990:21416,36992:36887,36993:21561,36994:22402,36995:24101,36996:25512,36997:27700,36998:28810,36999:30561,37e3:31883,37001:32736,37002:34928,37003:36930,37004:37204,37005:37648,37006:37656,37007:38543,37008:29790,37009:39620,37010:23815,37011:23913,37012:25968,37013:26530,37014:36264,37015:38619,37016:25454,37017:26441,37018:26905,37019:33733,37020:38935,37021:38592,37022:35070,37023:28548,37024:25722,37025:23544,37026:19990,37027:28716,37028:30045,37029:26159,37030:20932,37031:21046,37032:21218,37033:22995,37034:24449,37035:24615,37036:25104,37037:25919,37038:25972,37039:26143,37040:26228,37041:26866,37042:26646,37043:27491,37044:28165,37045:29298,37046:29983,37047:30427,37048:31934,37049:32854,37050:22768,37051:35069,37052:35199,37053:35488,37054:35475,37055:35531,37056:36893,37057:37266,37058:38738,37059:38745,37060:25993,37061:31246,37062:33030,37063:38587,37064:24109,37065:24796,37066:25114,37067:26021,37068:26132,37069:26512,37070:30707,37071:31309,37072:31821,37073:32318,37074:33034,37075:36012,37076:36196,37077:36321,37078:36447,37079:30889,37080:20999,37081:25305,37082:25509,37083:25666,37084:25240,37085:35373,37086:31363,37087:31680,37088:35500,37089:38634,37090:32118,37091:33292,37092:34633,37093:20185,37094:20808,37095:21315,37096:21344,37097:23459,37098:23554,37099:23574,37100:24029,37101:25126,37102:25159,37103:25776,37104:26643,37105:26676,37106:27849,37107:27973,37108:27927,37109:26579,37110:28508,37111:29006,37112:29053,37113:26059,37114:31359,37115:31661,37116:32218,37184:32330,37185:32680,37186:33146,37187:33307,37188:33337,37189:34214,37190:35438,37191:36046,37192:36341,37193:36984,37194:36983,37195:37549,37196:37521,37197:38275,37198:39854,37199:21069,37200:21892,37201:28472,37202:28982,37203:20840,37204:31109,37205:32341,37206:33203,37207:31950,37208:22092,37209:22609,37210:23720,37211:25514,37212:26366,37213:26365,37214:26970,37215:29401,37216:30095,37217:30094,37218:30990,37219:31062,37220:31199,37221:31895,37222:32032,37223:32068,37224:34311,37225:35380,37226:38459,37227:36961,37228:40736,37229:20711,37230:21109,37231:21452,37232:21474,37233:20489,37234:21930,37235:22766,37236:22863,37237:29245,37238:23435,37239:23652,37240:21277,37241:24803,37242:24819,37243:25436,37244:25475,37245:25407,37246:25531,37248:25805,37249:26089,37250:26361,37251:24035,37252:27085,37253:27133,37254:28437,37255:29157,37256:20105,37257:30185,37258:30456,37259:31379,37260:31967,37261:32207,37262:32156,37263:32865,37264:33609,37265:33624,37266:33900,37267:33980,37268:34299,37269:35013,37270:36208,37271:36865,37272:36973,37273:37783,37274:38684,37275:39442,37276:20687,37277:22679,37278:24974,37279:33235,37280:34101,37281:36104,37282:36896,37283:20419,37284:20596,37285:21063,37286:21363,37287:24687,37288:25417,37289:26463,37290:28204,37291:36275,37292:36895,37293:20439,37294:23646,37295:36042,37296:26063,37297:32154,37298:21330,37299:34966,37300:20854,37301:25539,37302:23384,37303:23403,37304:23562,37305:25613,37306:26449,37307:36956,37308:20182,37309:22810,37310:22826,37311:27760,37312:35409,37313:21822,37314:22549,37315:22949,37316:24816,37317:25171,37318:26561,37319:33333,37320:26965,37321:38464,37322:39364,37323:39464,37324:20307,37325:22534,37326:23550,37327:32784,37328:23729,37329:24111,37330:24453,37331:24608,37332:24907,37333:25140,37334:26367,37335:27888,37336:28382,37337:32974,37338:33151,37339:33492,37340:34955,37341:36024,37342:36864,37343:36910,37344:38538,37345:40667,37346:39899,37347:20195,37348:21488,37349:22823,37350:31532,37351:37261,37352:38988,37353:40441,37354:28381,37355:28711,37356:21331,37357:21828,37358:23429,37359:25176,37360:25246,37361:25299,37362:27810,37363:28655,37364:29730,37365:35351,37366:37944,37367:28609,37368:35582,37369:33592,37370:20967,37371:34552,37372:21482,37440:21481,37441:20294,37442:36948,37443:36784,37444:22890,37445:33073,37446:24061,37447:31466,37448:36799,37449:26842,37450:35895,37451:29432,37452:40008,37453:27197,37454:35504,37455:20025,37456:21336,37457:22022,37458:22374,37459:25285,37460:25506,37461:26086,37462:27470,37463:28129,37464:28251,37465:28845,37466:30701,37467:31471,37468:31658,37469:32187,37470:32829,37471:32966,37472:34507,37473:35477,37474:37723,37475:22243,37476:22727,37477:24382,37478:26029,37479:26262,37480:27264,37481:27573,37482:30007,37483:35527,37484:20516,37485:30693,37486:22320,37487:24347,37488:24677,37489:26234,37490:27744,37491:30196,37492:31258,37493:32622,37494:33268,37495:34584,37496:36933,37497:39347,37498:31689,37499:30044,37500:31481,37501:31569,37502:33988,37504:36880,37505:31209,37506:31378,37507:33590,37508:23265,37509:30528,37510:20013,37511:20210,37512:23449,37513:24544,37514:25277,37515:26172,37516:26609,37517:27880,37518:34411,37519:34935,37520:35387,37521:37198,37522:37619,37523:39376,37524:27159,37525:28710,37526:29482,37527:33511,37528:33879,37529:36015,37530:19969,37531:20806,37532:20939,37533:21899,37534:23541,37535:24086,37536:24115,37537:24193,37538:24340,37539:24373,37540:24427,37541:24500,37542:25074,37543:25361,37544:26274,37545:26397,37546:28526,37547:29266,37548:30010,37549:30522,37550:32884,37551:33081,37552:33144,37553:34678,37554:35519,37555:35548,37556:36229,37557:36339,37558:37530,37559:38263,37560:38914,37561:40165,37562:21189,37563:25431,37564:30452,37565:26389,37566:27784,37567:29645,37568:36035,37569:37806,37570:38515,37571:27941,37572:22684,37573:26894,37574:27084,37575:36861,37576:37786,37577:30171,37578:36890,37579:22618,37580:26626,37581:25524,37582:27131,37583:20291,37584:28460,37585:26584,37586:36795,37587:34086,37588:32180,37589:37716,37590:26943,37591:28528,37592:22378,37593:22775,37594:23340,37595:32044,37596:29226,37597:21514,37598:37347,37599:40372,37600:20141,37601:20302,37602:20572,37603:20597,37604:21059,37605:35998,37606:21576,37607:22564,37608:23450,37609:24093,37610:24213,37611:24237,37612:24311,37613:24351,37614:24716,37615:25269,37616:25402,37617:25552,37618:26799,37619:27712,37620:30855,37621:31118,37622:31243,37623:32224,37624:33351,37625:35330,37626:35558,37627:36420,37628:36883,37696:37048,37697:37165,37698:37336,37699:40718,37700:27877,37701:25688,37702:25826,37703:25973,37704:28404,37705:30340,37706:31515,37707:36969,37708:37841,37709:28346,37710:21746,37711:24505,37712:25764,37713:36685,37714:36845,37715:37444,37716:20856,37717:22635,37718:22825,37719:23637,37720:24215,37721:28155,37722:32399,37723:29980,37724:36028,37725:36578,37726:39003,37727:28857,37728:20253,37729:27583,37730:28593,37731:3e4,37732:38651,37733:20814,37734:21520,37735:22581,37736:22615,37737:22956,37738:23648,37739:24466,37740:26007,37741:26460,37742:28193,37743:30331,37744:33759,37745:36077,37746:36884,37747:37117,37748:37709,37749:30757,37750:30778,37751:21162,37752:24230,37753:22303,37754:22900,37755:24594,37756:20498,37757:20826,37758:20908,37760:20941,37761:20992,37762:21776,37763:22612,37764:22616,37765:22871,37766:23445,37767:23798,37768:23947,37769:24764,37770:25237,37771:25645,37772:26481,37773:26691,37774:26812,37775:26847,37776:30423,37777:28120,37778:28271,37779:28059,37780:28783,37781:29128,37782:24403,37783:30168,37784:31095,37785:31561,37786:31572,37787:31570,37788:31958,37789:32113,37790:21040,37791:33891,37792:34153,37793:34276,37794:35342,37795:35588,37796:35910,37797:36367,37798:36867,37799:36879,37800:37913,37801:38518,37802:38957,37803:39472,37804:38360,37805:20685,37806:21205,37807:21516,37808:22530,37809:23566,37810:24999,37811:25758,37812:27934,37813:30643,37814:31461,37815:33012,37816:33796,37817:36947,37818:37509,37819:23776,37820:40199,37821:21311,37822:24471,37823:24499,37824:28060,37825:29305,37826:30563,37827:31167,37828:31716,37829:27602,37830:29420,37831:35501,37832:26627,37833:27233,37834:20984,37835:31361,37836:26932,37837:23626,37838:40182,37839:33515,37840:23493,37841:37193,37842:28702,37843:22136,37844:23663,37845:24775,37846:25958,37847:27788,37848:35930,37849:36929,37850:38931,37851:21585,37852:26311,37853:37389,37854:22856,37855:37027,37856:20869,37857:20045,37858:20970,37859:34201,37860:35598,37861:28760,37862:25466,37863:37707,37864:26978,37865:39348,37866:32260,37867:30071,37868:21335,37869:26976,37870:36575,37871:38627,37872:27741,37873:20108,37874:23612,37875:24336,37876:36841,37877:21250,37878:36049,37879:32905,37880:34425,37881:24319,37882:26085,37883:20083,37884:20837,37952:22914,37953:23615,37954:38894,37955:20219,37956:22922,37957:24525,37958:35469,37959:28641,37960:31152,37961:31074,37962:23527,37963:33905,37964:29483,37965:29105,37966:24180,37967:24565,37968:25467,37969:25754,37970:29123,37971:31896,37972:20035,37973:24316,37974:20043,37975:22492,37976:22178,37977:24745,37978:28611,37979:32013,37980:33021,37981:33075,37982:33215,37983:36786,37984:35223,37985:34468,37986:24052,37987:25226,37988:25773,37989:35207,37990:26487,37991:27874,37992:27966,37993:29750,37994:30772,37995:23110,37996:32629,37997:33453,37998:39340,37999:20467,38e3:24259,38001:25309,38002:25490,38003:25943,38004:26479,38005:30403,38006:29260,38007:32972,38008:32954,38009:36649,38010:37197,38011:20493,38012:22521,38013:23186,38014:26757,38016:26995,38017:29028,38018:29437,38019:36023,38020:22770,38021:36064,38022:38506,38023:36889,38024:34687,38025:31204,38026:30695,38027:33833,38028:20271,38029:21093,38030:21338,38031:25293,38032:26575,38033:27850,38034:30333,38035:31636,38036:31893,38037:33334,38038:34180,38039:36843,38040:26333,38041:28448,38042:29190,38043:32283,38044:33707,38045:39361,38046:40614,38047:20989,38048:31665,38049:30834,38050:31672,38051:32903,38052:31560,38053:27368,38054:24161,38055:32908,38056:30033,38057:30048,38058:20843,38059:37474,38060:28300,38061:30330,38062:37271,38063:39658,38064:20240,38065:32624,38066:25244,38067:31567,38068:38309,38069:40169,38070:22138,38071:22617,38072:34532,38073:38588,38074:20276,38075:21028,38076:21322,38077:21453,38078:21467,38079:24070,38080:25644,38081:26001,38082:26495,38083:27710,38084:27726,38085:29256,38086:29359,38087:29677,38088:30036,38089:32321,38090:33324,38091:34281,38092:36009,38093:31684,38094:37318,38095:29033,38096:38930,38097:39151,38098:25405,38099:26217,38100:30058,38101:30436,38102:30928,38103:34115,38104:34542,38105:21290,38106:21329,38107:21542,38108:22915,38109:24199,38110:24444,38111:24754,38112:25161,38113:25209,38114:25259,38115:26e3,38116:27604,38117:27852,38118:30130,38119:30382,38120:30865,38121:31192,38122:32203,38123:32631,38124:32933,38125:34987,38126:35513,38127:36027,38128:36991,38129:38750,38130:39131,38131:27147,38132:31800,38133:20633,38134:23614,38135:24494,38136:26503,38137:27608,38138:29749,38139:30473,38140:32654,38208:40763,38209:26570,38210:31255,38211:21305,38212:30091,38213:39661,38214:24422,38215:33181,38216:33777,38217:32920,38218:24380,38219:24517,38220:30050,38221:31558,38222:36924,38223:26727,38224:23019,38225:23195,38226:32016,38227:30334,38228:35628,38229:20469,38230:24426,38231:27161,38232:27703,38233:28418,38234:29922,38235:31080,38236:34920,38237:35413,38238:35961,38239:24287,38240:25551,38241:30149,38242:31186,38243:33495,38244:37672,38245:37618,38246:33948,38247:34541,38248:39981,38249:21697,38250:24428,38251:25996,38252:27996,38253:28693,38254:36007,38255:36051,38256:38971,38257:25935,38258:29942,38259:19981,38260:20184,38261:22496,38262:22827,38263:23142,38264:23500,38265:20904,38266:24067,38267:24220,38268:24598,38269:25206,38270:25975,38272:26023,38273:26222,38274:28014,38275:29238,38276:31526,38277:33104,38278:33178,38279:33433,38280:35676,38281:36e3,38282:36070,38283:36212,38284:38428,38285:38468,38286:20398,38287:25771,38288:27494,38289:33310,38290:33889,38291:34154,38292:37096,38293:23553,38294:26963,38295:39080,38296:33914,38297:34135,38298:20239,38299:21103,38300:24489,38301:24133,38302:26381,38303:31119,38304:33145,38305:35079,38306:35206,38307:28149,38308:24343,38309:25173,38310:27832,38311:20175,38312:29289,38313:39826,38314:20998,38315:21563,38316:22132,38317:22707,38318:24996,38319:25198,38320:28954,38321:22894,38322:31881,38323:31966,38324:32027,38325:38640,38326:25991,38327:32862,38328:19993,38329:20341,38330:20853,38331:22592,38332:24163,38333:24179,38334:24330,38335:26564,38336:20006,38337:34109,38338:38281,38339:38491,38340:31859,38341:38913,38342:20731,38343:22721,38344:30294,38345:30887,38346:21029,38347:30629,38348:34065,38349:31622,38350:20559,38351:22793,38352:29255,38353:31687,38354:32232,38355:36794,38356:36820,38357:36941,38358:20415,38359:21193,38360:23081,38361:24321,38362:38829,38363:20445,38364:33303,38365:37610,38366:22275,38367:25429,38368:27497,38369:29995,38370:35036,38371:36628,38372:31298,38373:21215,38374:22675,38375:24917,38376:25098,38377:26286,38378:27597,38379:31807,38380:33769,38381:20515,38382:20472,38383:21253,38384:21574,38385:22577,38386:22857,38387:23453,38388:23792,38389:23791,38390:23849,38391:24214,38392:25265,38393:25447,38394:25918,38395:26041,38396:26379,38464:27861,38465:27873,38466:28921,38467:30770,38468:32299,38469:32990,38470:33459,38471:33804,38472:34028,38473:34562,38474:35090,38475:35370,38476:35914,38477:37030,38478:37586,38479:39165,38480:40179,38481:40300,38482:20047,38483:20129,38484:20621,38485:21078,38486:22346,38487:22952,38488:24125,38489:24536,38490:24537,38491:25151,38492:26292,38493:26395,38494:26576,38495:26834,38496:20882,38497:32033,38498:32938,38499:33192,38500:35584,38501:35980,38502:36031,38503:37502,38504:38450,38505:21536,38506:38956,38507:21271,38508:20693,38509:21340,38510:22696,38511:25778,38512:26420,38513:29287,38514:30566,38515:31302,38516:37350,38517:21187,38518:27809,38519:27526,38520:22528,38521:24140,38522:22868,38523:26412,38524:32763,38525:20961,38526:30406,38528:25705,38529:30952,38530:39764,38531:40635,38532:22475,38533:22969,38534:26151,38535:26522,38536:27598,38537:21737,38538:27097,38539:24149,38540:33180,38541:26517,38542:39850,38543:26622,38544:40018,38545:26717,38546:20134,38547:20451,38548:21448,38549:25273,38550:26411,38551:27819,38552:36804,38553:20397,38554:32365,38555:40639,38556:19975,38557:24930,38558:28288,38559:28459,38560:34067,38561:21619,38562:26410,38563:39749,38564:24051,38565:31637,38566:23724,38567:23494,38568:34588,38569:28234,38570:34001,38571:31252,38572:33032,38573:22937,38574:31885,38575:27665,38576:30496,38577:21209,38578:22818,38579:28961,38580:29279,38581:30683,38582:38695,38583:40289,38584:26891,38585:23167,38586:23064,38587:20901,38588:21517,38589:21629,38590:26126,38591:30431,38592:36855,38593:37528,38594:40180,38595:23018,38596:29277,38597:28357,38598:20813,38599:26825,38600:32191,38601:32236,38602:38754,38603:40634,38604:25720,38605:27169,38606:33538,38607:22916,38608:23391,38609:27611,38610:29467,38611:30450,38612:32178,38613:32791,38614:33945,38615:20786,38616:26408,38617:40665,38618:30446,38619:26466,38620:21247,38621:39173,38622:23588,38623:25147,38624:31870,38625:36016,38626:21839,38627:24758,38628:32011,38629:38272,38630:21249,38631:20063,38632:20918,38633:22812,38634:29242,38635:32822,38636:37326,38637:24357,38638:30690,38639:21380,38640:24441,38641:32004,38642:34220,38643:35379,38644:36493,38645:38742,38646:26611,38647:34222,38648:37971,38649:24841,38650:24840,38651:27833,38652:30290,38720:35565,38721:36664,38722:21807,38723:20305,38724:20778,38725:21191,38726:21451,38727:23461,38728:24189,38729:24736,38730:24962,38731:25558,38732:26377,38733:26586,38734:28263,38735:28044,38736:29494,38737:29495,38738:30001,38739:31056,38740:35029,38741:35480,38742:36938,38743:37009,38744:37109,38745:38596,38746:34701,38747:22805,38748:20104,38749:20313,38750:19982,38751:35465,38752:36671,38753:38928,38754:20653,38755:24188,38756:22934,38757:23481,38758:24248,38759:25562,38760:25594,38761:25793,38762:26332,38763:26954,38764:27096,38765:27915,38766:28342,38767:29076,38768:29992,38769:31407,38770:32650,38771:32768,38772:33865,38773:33993,38774:35201,38775:35617,38776:36362,38777:36965,38778:38525,38779:39178,38780:24958,38781:25233,38782:27442,38784:27779,38785:28020,38786:32716,38787:32764,38788:28096,38789:32645,38790:34746,38791:35064,38792:26469,38793:33713,38794:38972,38795:38647,38796:27931,38797:32097,38798:33853,38799:37226,38800:20081,38801:21365,38802:23888,38803:27396,38804:28651,38805:34253,38806:34349,38807:35239,38808:21033,38809:21519,38810:23653,38811:26446,38812:26792,38813:29702,38814:29827,38815:30178,38816:35023,38817:35041,38818:37324,38819:38626,38820:38520,38821:24459,38822:29575,38823:31435,38824:33870,38825:25504,38826:30053,38827:21129,38828:27969,38829:28316,38830:29705,38831:30041,38832:30827,38833:31890,38834:38534,38835:31452,38836:40845,38837:20406,38838:24942,38839:26053,38840:34396,38841:20102,38842:20142,38843:20698,38844:20001,38845:20940,38846:23534,38847:26009,38848:26753,38849:28092,38850:29471,38851:30274,38852:30637,38853:31260,38854:31975,38855:33391,38856:35538,38857:36988,38858:37327,38859:38517,38860:38936,38861:21147,38862:32209,38863:20523,38864:21400,38865:26519,38866:28107,38867:29136,38868:29747,38869:33256,38870:36650,38871:38563,38872:40023,38873:40607,38874:29792,38875:22593,38876:28057,38877:32047,38878:39006,38879:20196,38880:20278,38881:20363,38882:20919,38883:21169,38884:23994,38885:24604,38886:29618,38887:31036,38888:33491,38889:37428,38890:38583,38891:38646,38892:38666,38893:40599,38894:40802,38895:26278,38896:27508,38897:21015,38898:21155,38899:28872,38900:35010,38901:24265,38902:24651,38903:24976,38904:28451,38905:29001,38906:31806,38907:32244,38908:32879,38976:34030,38977:36899,38978:37676,38979:21570,38980:39791,38981:27347,38982:28809,38983:36034,38984:36335,38985:38706,38986:21172,38987:23105,38988:24266,38989:24324,38990:26391,38991:27004,38992:27028,38993:28010,38994:28431,38995:29282,38996:29436,38997:31725,38998:32769,38999:32894,39e3:34635,39001:37070,39002:20845,39003:40595,39004:31108,39005:32907,39006:37682,39007:35542,39008:20525,39009:21644,39010:35441,39011:27498,39012:36036,39013:33031,39014:24785,39015:26528,39016:40434,39017:20121,39018:20120,39019:39952,39020:35435,39021:34241,39022:34152,39023:26880,39024:28286,39025:30871,39026:33109,39071:24332,39072:19984,39073:19989,39074:20010,39075:20017,39076:20022,39077:20028,39078:20031,39079:20034,39080:20054,39081:20056,39082:20098,39083:20101,39084:35947,39085:20106,39086:33298,39087:24333,39088:20110,39089:20126,39090:20127,39091:20128,39092:20130,39093:20144,39094:20147,39095:20150,39096:20174,39097:20173,39098:20164,39099:20166,39100:20162,39101:20183,39102:20190,39103:20205,39104:20191,39105:20215,39106:20233,39107:20314,39108:20272,39109:20315,39110:20317,39111:20311,39112:20295,39113:20342,39114:20360,39115:20367,39116:20376,39117:20347,39118:20329,39119:20336,39120:20369,39121:20335,39122:20358,39123:20374,39124:20760,39125:20436,39126:20447,39127:20430,39128:20440,39129:20443,39130:20433,39131:20442,39132:20432,39133:20452,39134:20453,39135:20506,39136:20520,39137:20500,39138:20522,39139:20517,39140:20485,39141:20252,39142:20470,39143:20513,39144:20521,39145:20524,39146:20478,39147:20463,39148:20497,39149:20486,39150:20547,39151:20551,39152:26371,39153:20565,39154:20560,39155:20552,39156:20570,39157:20566,39158:20588,39159:20600,39160:20608,39161:20634,39162:20613,39163:20660,39164:20658,39232:20681,39233:20682,39234:20659,39235:20674,39236:20694,39237:20702,39238:20709,39239:20717,39240:20707,39241:20718,39242:20729,39243:20725,39244:20745,39245:20737,39246:20738,39247:20758,39248:20757,39249:20756,39250:20762,39251:20769,39252:20794,39253:20791,39254:20796,39255:20795,39256:20799,39257:20800,39258:20818,39259:20812,39260:20820,39261:20834,39262:31480,39263:20841,39264:20842,39265:20846,39266:20864,39267:20866,39268:22232,39269:20876,39270:20873,39271:20879,39272:20881,39273:20883,39274:20885,39275:20886,39276:20900,39277:20902,39278:20898,39279:20905,39280:20906,39281:20907,39282:20915,39283:20913,39284:20914,39285:20912,39286:20917,39287:20925,39288:20933,39289:20937,39290:20955,39291:20960,39292:34389,39293:20969,39294:20973,39296:20976,39297:20981,39298:20990,39299:20996,39300:21003,39301:21012,39302:21006,39303:21031,39304:21034,39305:21038,39306:21043,39307:21049,39308:21071,39309:21060,39310:21067,39311:21068,39312:21086,39313:21076,39314:21098,39315:21108,39316:21097,39317:21107,39318:21119,39319:21117,39320:21133,39321:21140,39322:21138,39323:21105,39324:21128,39325:21137,39326:36776,39327:36775,39328:21164,39329:21165,39330:21180,39331:21173,39332:21185,39333:21197,39334:21207,39335:21214,39336:21219,39337:21222,39338:39149,39339:21216,39340:21235,39341:21237,39342:21240,39343:21241,39344:21254,39345:21256,39346:30008,39347:21261,39348:21264,39349:21263,39350:21269,39351:21274,39352:21283,39353:21295,39354:21297,39355:21299,39356:21304,39357:21312,39358:21318,39359:21317,39360:19991,39361:21321,39362:21325,39363:20950,39364:21342,39365:21353,39366:21358,39367:22808,39368:21371,39369:21367,39370:21378,39371:21398,39372:21408,39373:21414,39374:21413,39375:21422,39376:21424,39377:21430,39378:21443,39379:31762,39380:38617,39381:21471,39382:26364,39383:29166,39384:21486,39385:21480,39386:21485,39387:21498,39388:21505,39389:21565,39390:21568,39391:21548,39392:21549,39393:21564,39394:21550,39395:21558,39396:21545,39397:21533,39398:21582,39399:21647,39400:21621,39401:21646,39402:21599,39403:21617,39404:21623,39405:21616,39406:21650,39407:21627,39408:21632,39409:21622,39410:21636,39411:21648,39412:21638,39413:21703,39414:21666,39415:21688,39416:21669,39417:21676,39418:21700,39419:21704,39420:21672,39488:21675,39489:21698,39490:21668,39491:21694,39492:21692,39493:21720,39494:21733,39495:21734,39496:21775,39497:21780,39498:21757,39499:21742,39500:21741,39501:21754,39502:21730,39503:21817,39504:21824,39505:21859,39506:21836,39507:21806,39508:21852,39509:21829,39510:21846,39511:21847,39512:21816,39513:21811,39514:21853,39515:21913,39516:21888,39517:21679,39518:21898,39519:21919,39520:21883,39521:21886,39522:21912,39523:21918,39524:21934,39525:21884,39526:21891,39527:21929,39528:21895,39529:21928,39530:21978,39531:21957,39532:21983,39533:21956,39534:21980,39535:21988,39536:21972,39537:22036,39538:22007,39539:22038,39540:22014,39541:22013,39542:22043,39543:22009,39544:22094,39545:22096,39546:29151,39547:22068,39548:22070,39549:22066,39550:22072,39552:22123,39553:22116,39554:22063,39555:22124,39556:22122,39557:22150,39558:22144,39559:22154,39560:22176,39561:22164,39562:22159,39563:22181,39564:22190,39565:22198,39566:22196,39567:22210,39568:22204,39569:22209,39570:22211,39571:22208,39572:22216,39573:22222,39574:22225,39575:22227,39576:22231,39577:22254,39578:22265,39579:22272,39580:22271,39581:22276,39582:22281,39583:22280,39584:22283,39585:22285,39586:22291,39587:22296,39588:22294,39589:21959,39590:22300,39591:22310,39592:22327,39593:22328,39594:22350,39595:22331,39596:22336,39597:22351,39598:22377,39599:22464,39600:22408,39601:22369,39602:22399,39603:22409,39604:22419,39605:22432,39606:22451,39607:22436,39608:22442,39609:22448,39610:22467,39611:22470,39612:22484,39613:22482,39614:22483,39615:22538,39616:22486,39617:22499,39618:22539,39619:22553,39620:22557,39621:22642,39622:22561,39623:22626,39624:22603,39625:22640,39626:27584,39627:22610,39628:22589,39629:22649,39630:22661,39631:22713,39632:22687,39633:22699,39634:22714,39635:22750,39636:22715,39637:22712,39638:22702,39639:22725,39640:22739,39641:22737,39642:22743,39643:22745,39644:22744,39645:22757,39646:22748,39647:22756,39648:22751,39649:22767,39650:22778,39651:22777,39652:22779,39653:22780,39654:22781,39655:22786,39656:22794,39657:22800,39658:22811,39659:26790,39660:22821,39661:22828,39662:22829,39663:22834,39664:22840,39665:22846,39666:31442,39667:22869,39668:22864,39669:22862,39670:22874,39671:22872,39672:22882,39673:22880,\\n39674:22887,39675:22892,39676:22889,39744:22904,39745:22913,39746:22941,39747:20318,39748:20395,39749:22947,39750:22962,39751:22982,39752:23016,39753:23004,39754:22925,39755:23001,39756:23002,39757:23077,39758:23071,39759:23057,39760:23068,39761:23049,39762:23066,39763:23104,39764:23148,39765:23113,39766:23093,39767:23094,39768:23138,39769:23146,39770:23194,39771:23228,39772:23230,39773:23243,39774:23234,39775:23229,39776:23267,39777:23255,39778:23270,39779:23273,39780:23254,39781:23290,39782:23291,39783:23308,39784:23307,39785:23318,39786:23346,39787:23248,39788:23338,39789:23350,39790:23358,39791:23363,39792:23365,39793:23360,39794:23377,39795:23381,39796:23386,39797:23387,39798:23397,39799:23401,39800:23408,39801:23411,39802:23413,39803:23416,39804:25992,39805:23418,39806:23424,39808:23427,39809:23462,39810:23480,39811:23491,39812:23495,39813:23497,39814:23508,39815:23504,39816:23524,39817:23526,39818:23522,39819:23518,39820:23525,39821:23531,39822:23536,39823:23542,39824:23539,39825:23557,39826:23559,39827:23560,39828:23565,39829:23571,39830:23584,39831:23586,39832:23592,39833:23608,39834:23609,39835:23617,39836:23622,39837:23630,39838:23635,39839:23632,39840:23631,39841:23409,39842:23660,39843:23662,39844:20066,39845:23670,39846:23673,39847:23692,39848:23697,39849:23700,39850:22939,39851:23723,39852:23739,39853:23734,39854:23740,39855:23735,39856:23749,39857:23742,39858:23751,39859:23769,39860:23785,39861:23805,39862:23802,39863:23789,39864:23948,39865:23786,39866:23819,39867:23829,39868:23831,39869:23900,39870:23839,39871:23835,39872:23825,39873:23828,39874:23842,39875:23834,39876:23833,39877:23832,39878:23884,39879:23890,39880:23886,39881:23883,39882:23916,39883:23923,39884:23926,39885:23943,39886:23940,39887:23938,39888:23970,39889:23965,39890:23980,39891:23982,39892:23997,39893:23952,39894:23991,39895:23996,39896:24009,39897:24013,39898:24019,39899:24018,39900:24022,39901:24027,39902:24043,39903:24050,39904:24053,39905:24075,39906:24090,39907:24089,39908:24081,39909:24091,39910:24118,39911:24119,39912:24132,39913:24131,39914:24128,39915:24142,39916:24151,39917:24148,39918:24159,39919:24162,39920:24164,39921:24135,39922:24181,39923:24182,39924:24186,39925:40636,39926:24191,39927:24224,39928:24257,39929:24258,39930:24264,39931:24272,39932:24271,4e4:24278,40001:24291,40002:24285,40003:24282,40004:24283,40005:24290,40006:24289,40007:24296,40008:24297,40009:24300,40010:24305,40011:24307,40012:24304,40013:24308,40014:24312,40015:24318,40016:24323,40017:24329,40018:24413,40019:24412,40020:24331,40021:24337,40022:24342,40023:24361,40024:24365,40025:24376,40026:24385,40027:24392,40028:24396,40029:24398,40030:24367,40031:24401,40032:24406,40033:24407,40034:24409,40035:24417,40036:24429,40037:24435,40038:24439,40039:24451,40040:24450,40041:24447,40042:24458,40043:24456,40044:24465,40045:24455,40046:24478,40047:24473,40048:24472,40049:24480,40050:24488,40051:24493,40052:24508,40053:24534,40054:24571,40055:24548,40056:24568,40057:24561,40058:24541,40059:24755,40060:24575,40061:24609,40062:24672,40064:24601,40065:24592,40066:24617,40067:24590,40068:24625,40069:24603,40070:24597,40071:24619,40072:24614,40073:24591,40074:24634,40075:24666,40076:24641,40077:24682,40078:24695,40079:24671,40080:24650,40081:24646,40082:24653,40083:24675,40084:24643,40085:24676,40086:24642,40087:24684,40088:24683,40089:24665,40090:24705,40091:24717,40092:24807,40093:24707,40094:24730,40095:24708,40096:24731,40097:24726,40098:24727,40099:24722,40100:24743,40101:24715,40102:24801,40103:24760,40104:24800,40105:24787,40106:24756,40107:24560,40108:24765,40109:24774,40110:24757,40111:24792,40112:24909,40113:24853,40114:24838,40115:24822,40116:24823,40117:24832,40118:24820,40119:24826,40120:24835,40121:24865,40122:24827,40123:24817,40124:24845,40125:24846,40126:24903,40127:24894,40128:24872,40129:24871,40130:24906,40131:24895,40132:24892,40133:24876,40134:24884,40135:24893,40136:24898,40137:24900,40138:24947,40139:24951,40140:24920,40141:24921,40142:24922,40143:24939,40144:24948,40145:24943,40146:24933,40147:24945,40148:24927,40149:24925,40150:24915,40151:24949,40152:24985,40153:24982,40154:24967,40155:25004,40156:24980,40157:24986,40158:24970,40159:24977,40160:25003,40161:25006,40162:25036,40163:25034,40164:25033,40165:25079,40166:25032,40167:25027,40168:25030,40169:25018,40170:25035,40171:32633,40172:25037,40173:25062,40174:25059,40175:25078,40176:25082,40177:25076,40178:25087,40179:25085,40180:25084,40181:25086,40182:25088,40183:25096,40184:25097,40185:25101,40186:25100,40187:25108,40188:25115,40256:25118,40257:25121,40258:25130,40259:25134,40260:25136,40261:25138,40262:25139,40263:25153,40264:25166,40265:25182,40266:25187,40267:25179,40268:25184,40269:25192,40270:25212,40271:25218,40272:25225,40273:25214,40274:25234,40275:25235,40276:25238,40277:25300,40278:25219,40279:25236,40280:25303,40281:25297,40282:25275,40283:25295,40284:25343,40285:25286,40286:25812,40287:25288,40288:25308,40289:25292,40290:25290,40291:25282,40292:25287,40293:25243,40294:25289,40295:25356,40296:25326,40297:25329,40298:25383,40299:25346,40300:25352,40301:25327,40302:25333,40303:25424,40304:25406,40305:25421,40306:25628,40307:25423,40308:25494,40309:25486,40310:25472,40311:25515,40312:25462,40313:25507,40314:25487,40315:25481,40316:25503,40317:25525,40318:25451,40320:25449,40321:25534,40322:25577,40323:25536,40324:25542,40325:25571,40326:25545,40327:25554,40328:25590,40329:25540,40330:25622,40331:25652,40332:25606,40333:25619,40334:25638,40335:25654,40336:25885,40337:25623,40338:25640,40339:25615,40340:25703,40341:25711,40342:25718,40343:25678,40344:25898,40345:25749,40346:25747,40347:25765,40348:25769,40349:25736,40350:25788,40351:25818,40352:25810,40353:25797,40354:25799,40355:25787,40356:25816,40357:25794,40358:25841,40359:25831,40360:33289,40361:25824,40362:25825,40363:25260,40364:25827,40365:25839,40366:25900,40367:25846,40368:25844,40369:25842,40370:25850,40371:25856,40372:25853,40373:25880,40374:25884,40375:25861,40376:25892,40377:25891,40378:25899,40379:25908,40380:25909,40381:25911,40382:25910,40383:25912,40384:30027,40385:25928,40386:25942,40387:25941,40388:25933,40389:25944,40390:25950,40391:25949,40392:25970,40393:25976,40394:25986,40395:25987,40396:35722,40397:26011,40398:26015,40399:26027,40400:26039,40401:26051,40402:26054,40403:26049,40404:26052,40405:26060,40406:26066,40407:26075,40408:26073,40409:26080,40410:26081,40411:26097,40412:26482,40413:26122,40414:26115,40415:26107,40416:26483,40417:26165,40418:26166,40419:26164,40420:26140,40421:26191,40422:26180,40423:26185,40424:26177,40425:26206,40426:26205,40427:26212,40428:26215,40429:26216,40430:26207,40431:26210,40432:26224,40433:26243,40434:26248,40435:26254,40436:26249,40437:26244,40438:26264,40439:26269,40440:26305,40441:26297,40442:26313,40443:26302,40444:26300,40512:26308,40513:26296,40514:26326,40515:26330,40516:26336,40517:26175,40518:26342,40519:26345,40520:26352,40521:26357,40522:26359,40523:26383,40524:26390,40525:26398,40526:26406,40527:26407,40528:38712,40529:26414,40530:26431,40531:26422,40532:26433,40533:26424,40534:26423,40535:26438,40536:26462,40537:26464,40538:26457,40539:26467,40540:26468,40541:26505,40542:26480,40543:26537,40544:26492,40545:26474,40546:26508,40547:26507,40548:26534,40549:26529,40550:26501,40551:26551,40552:26607,40553:26548,40554:26604,40555:26547,40556:26601,40557:26552,40558:26596,40559:26590,40560:26589,40561:26594,40562:26606,40563:26553,40564:26574,40565:26566,40566:26599,40567:27292,40568:26654,40569:26694,40570:26665,40571:26688,40572:26701,40573:26674,40574:26702,40576:26803,40577:26667,40578:26713,40579:26723,40580:26743,40581:26751,40582:26783,40583:26767,40584:26797,40585:26772,40586:26781,40587:26779,40588:26755,40589:27310,40590:26809,40591:26740,40592:26805,40593:26784,40594:26810,40595:26895,40596:26765,40597:26750,40598:26881,40599:26826,40600:26888,40601:26840,40602:26914,40603:26918,40604:26849,40605:26892,40606:26829,40607:26836,40608:26855,40609:26837,40610:26934,40611:26898,40612:26884,40613:26839,40614:26851,40615:26917,40616:26873,40617:26848,40618:26863,40619:26920,40620:26922,40621:26906,40622:26915,40623:26913,40624:26822,40625:27001,40626:26999,40627:26972,40628:27e3,40629:26987,40630:26964,40631:27006,40632:26990,40633:26937,40634:26996,40635:26941,40636:26969,40637:26928,40638:26977,40639:26974,40640:26973,40641:27009,40642:26986,40643:27058,40644:27054,40645:27088,40646:27071,40647:27073,40648:27091,40649:27070,40650:27086,40651:23528,40652:27082,40653:27101,40654:27067,40655:27075,40656:27047,40657:27182,40658:27025,40659:27040,40660:27036,40661:27029,40662:27060,40663:27102,40664:27112,40665:27138,40666:27163,40667:27135,40668:27402,40669:27129,40670:27122,40671:27111,40672:27141,40673:27057,40674:27166,40675:27117,40676:27156,40677:27115,40678:27146,40679:27154,40680:27329,40681:27171,40682:27155,40683:27204,40684:27148,40685:27250,40686:27190,40687:27256,40688:27207,40689:27234,40690:27225,40691:27238,40692:27208,40693:27192,40694:27170,40695:27280,40696:27277,40697:27296,40698:27268,40699:27298,40700:27299,40768:27287,40769:34327,40770:27323,40771:27331,40772:27330,40773:27320,40774:27315,40775:27308,40776:27358,40777:27345,40778:27359,40779:27306,40780:27354,40781:27370,40782:27387,40783:27397,40784:34326,40785:27386,40786:27410,40787:27414,40788:39729,40789:27423,40790:27448,40791:27447,40792:30428,40793:27449,40794:39150,40795:27463,40796:27459,40797:27465,40798:27472,40799:27481,40800:27476,40801:27483,40802:27487,40803:27489,40804:27512,40805:27513,40806:27519,40807:27520,40808:27524,40809:27523,40810:27533,40811:27544,40812:27541,40813:27550,40814:27556,40815:27562,40816:27563,40817:27567,40818:27570,40819:27569,40820:27571,40821:27575,40822:27580,40823:27590,40824:27595,40825:27603,40826:27615,40827:27628,40828:27627,40829:27635,40830:27631,40832:40638,40833:27656,40834:27667,40835:27668,40836:27675,40837:27684,40838:27683,40839:27742,40840:27733,40841:27746,40842:27754,40843:27778,40844:27789,40845:27802,40846:27777,40847:27803,40848:27774,40849:27752,40850:27763,40851:27794,40852:27792,40853:27844,40854:27889,40855:27859,40856:27837,40857:27863,40858:27845,40859:27869,40860:27822,40861:27825,40862:27838,40863:27834,40864:27867,40865:27887,40866:27865,40867:27882,40868:27935,40869:34893,40870:27958,40871:27947,40872:27965,40873:27960,40874:27929,40875:27957,40876:27955,40877:27922,40878:27916,40879:28003,40880:28051,40881:28004,40882:27994,40883:28025,40884:27993,40885:28046,40886:28053,40887:28644,40888:28037,40889:28153,40890:28181,40891:28170,40892:28085,40893:28103,40894:28134,40895:28088,40896:28102,40897:28140,40898:28126,40899:28108,40900:28136,40901:28114,40902:28101,40903:28154,40904:28121,40905:28132,40906:28117,40907:28138,40908:28142,40909:28205,40910:28270,40911:28206,40912:28185,40913:28274,40914:28255,40915:28222,40916:28195,40917:28267,40918:28203,40919:28278,40920:28237,40921:28191,40922:28227,40923:28218,40924:28238,40925:28196,40926:28415,40927:28189,40928:28216,40929:28290,40930:28330,40931:28312,40932:28361,40933:28343,40934:28371,40935:28349,40936:28335,40937:28356,40938:28338,40939:28372,40940:28373,40941:28303,40942:28325,40943:28354,40944:28319,40945:28481,40946:28433,40947:28748,40948:28396,40949:28408,40950:28414,40951:28479,40952:28402,40953:28465,40954:28399,40955:28466,40956:28364,161:65377,162:65378,163:65379,164:65380,165:65381,166:65382,167:65383,168:65384,169:65385,170:65386,171:65387,172:65388,173:65389,174:65390,175:65391,176:65392,177:65393,178:65394,179:65395,180:65396,181:65397,182:65398,183:65399,184:65400,185:65401,186:65402,187:65403,188:65404,189:65405,190:65406,191:65407,192:65408,193:65409,194:65410,195:65411,196:65412,197:65413,198:65414,199:65415,200:65416,201:65417,202:65418,203:65419,204:65420,205:65421,206:65422,207:65423,208:65424,209:65425,210:65426,211:65427,212:65428,213:65429,214:65430,215:65431,216:65432,217:65433,218:65434,219:65435,220:65436,221:65437,222:65438,223:65439,57408:28478,57409:28435,57410:28407,57411:28550,57412:28538,57413:28536,57414:28545,57415:28544,57416:28527,57417:28507,57418:28659,57419:28525,57420:28546,57421:28540,57422:28504,57423:28558,57424:28561,57425:28610,57426:28518,57427:28595,57428:28579,57429:28577,57430:28580,57431:28601,57432:28614,57433:28586,57434:28639,57435:28629,57436:28652,57437:28628,57438:28632,57439:28657,57440:28654,57441:28635,57442:28681,57443:28683,57444:28666,57445:28689,57446:28673,57447:28687,57448:28670,57449:28699,57450:28698,57451:28532,57452:28701,57453:28696,57454:28703,57455:28720,57456:28734,57457:28722,57458:28753,57459:28771,57460:28825,57461:28818,57462:28847,57463:28913,57464:28844,57465:28856,57466:28851,57467:28846,57468:28895,57469:28875,57470:28893,57472:28889,57473:28937,57474:28925,57475:28956,57476:28953,57477:29029,57478:29013,57479:29064,57480:29030,57481:29026,57482:29004,57483:29014,57484:29036,57485:29071,57486:29179,57487:29060,57488:29077,57489:29096,57490:29100,57491:29143,57492:29113,57493:29118,57494:29138,57495:29129,57496:29140,57497:29134,57498:29152,57499:29164,57500:29159,57501:29173,57502:29180,57503:29177,57504:29183,57505:29197,57506:29200,57507:29211,57508:29224,57509:29229,57510:29228,57511:29232,57512:29234,57513:29243,57514:29244,57515:29247,57516:29248,57517:29254,57518:29259,57519:29272,57520:29300,57521:29310,57522:29314,57523:29313,57524:29319,57525:29330,57526:29334,57527:29346,57528:29351,57529:29369,57530:29362,57531:29379,57532:29382,57533:29380,57534:29390,57535:29394,57536:29410,57537:29408,57538:29409,57539:29433,57540:29431,57541:20495,57542:29463,57543:29450,57544:29468,57545:29462,57546:29469,57547:29492,57548:29487,57549:29481,57550:29477,57551:29502,57552:29518,57553:29519,57554:40664,57555:29527,57556:29546,57557:29544,57558:29552,57559:29560,57560:29557,57561:29563,57562:29562,57563:29640,57564:29619,57565:29646,57566:29627,57567:29632,57568:29669,57569:29678,57570:29662,57571:29858,57572:29701,57573:29807,57574:29733,57575:29688,57576:29746,57577:29754,57578:29781,57579:29759,57580:29791,57581:29785,57582:29761,57583:29788,57584:29801,57585:29808,57586:29795,57587:29802,57588:29814,57589:29822,57590:29835,57591:29854,57592:29863,57593:29898,57594:29903,57595:29908,57596:29681,57664:29920,57665:29923,57666:29927,57667:29929,57668:29934,57669:29938,57670:29936,57671:29937,57672:29944,57673:29943,57674:29956,57675:29955,57676:29957,57677:29964,57678:29966,57679:29965,57680:29973,57681:29971,57682:29982,57683:29990,57684:29996,57685:30012,57686:30020,57687:30029,57688:30026,57689:30025,57690:30043,57691:30022,57692:30042,57693:30057,57694:30052,57695:30055,57696:30059,57697:30061,57698:30072,57699:30070,57700:30086,57701:30087,57702:30068,57703:30090,57704:30089,57705:30082,57706:30100,57707:30106,57708:30109,57709:30117,57710:30115,57711:30146,57712:30131,57713:30147,57714:30133,57715:30141,57716:30136,57717:30140,57718:30129,57719:30157,57720:30154,57721:30162,57722:30169,57723:30179,57724:30174,57725:30206,57726:30207,57728:30204,57729:30209,57730:30192,57731:30202,57732:30194,57733:30195,57734:30219,57735:30221,57736:30217,57737:30239,57738:30247,57739:30240,57740:30241,57741:30242,57742:30244,57743:30260,57744:30256,57745:30267,57746:30279,57747:30280,57748:30278,57749:30300,57750:30296,57751:30305,57752:30306,57753:30312,57754:30313,57755:30314,57756:30311,57757:30316,57758:30320,57759:30322,57760:30326,57761:30328,57762:30332,57763:30336,57764:30339,57765:30344,57766:30347,57767:30350,57768:30358,57769:30355,57770:30361,57771:30362,57772:30384,57773:30388,57774:30392,57775:30393,57776:30394,57777:30402,57778:30413,57779:30422,57780:30418,57781:30430,57782:30433,57783:30437,57784:30439,57785:30442,57786:34351,57787:30459,57788:30472,57789:30471,57790:30468,57791:30505,57792:30500,57793:30494,57794:30501,57795:30502,57796:30491,57797:30519,57798:30520,57799:30535,57800:30554,57801:30568,57802:30571,57803:30555,57804:30565,57805:30591,57806:30590,57807:30585,57808:30606,57809:30603,57810:30609,57811:30624,57812:30622,57813:30640,57814:30646,57815:30649,57816:30655,57817:30652,57818:30653,57819:30651,57820:30663,57821:30669,57822:30679,57823:30682,57824:30684,57825:30691,57826:30702,57827:30716,57828:30732,57829:30738,57830:31014,57831:30752,57832:31018,57833:30789,57834:30862,57835:30836,57836:30854,57837:30844,57838:30874,57839:30860,57840:30883,57841:30901,57842:30890,57843:30895,57844:30929,57845:30918,57846:30923,57847:30932,57848:30910,57849:30908,57850:30917,57851:30922,57852:30956,57920:30951,57921:30938,57922:30973,57923:30964,57924:30983,57925:30994,57926:30993,57927:31001,57928:31020,57929:31019,57930:31040,57931:31072,57932:31063,57933:31071,57934:31066,57935:31061,57936:31059,57937:31098,57938:31103,57939:31114,57940:31133,57941:31143,57942:40779,57943:31146,57944:31150,57945:31155,57946:31161,57947:31162,57948:31177,57949:31189,57950:31207,57951:31212,57952:31201,57953:31203,57954:31240,57955:31245,57956:31256,57957:31257,57958:31264,57959:31263,57960:31104,57961:31281,57962:31291,57963:31294,57964:31287,57965:31299,57966:31319,57967:31305,57968:31329,57969:31330,57970:31337,57971:40861,57972:31344,57973:31353,57974:31357,57975:31368,57976:31383,57977:31381,57978:31384,57979:31382,57980:31401,57981:31432,57982:31408,57984:31414,57985:31429,57986:31428,57987:31423,57988:36995,57989:31431,57990:31434,57991:31437,57992:31439,57993:31445,57994:31443,57995:31449,57996:31450,57997:31453,57998:31457,57999:31458,58e3:31462,58001:31469,58002:31472,58003:31490,58004:31503,58005:31498,58006:31494,58007:31539,58008:31512,58009:31513,58010:31518,58011:31541,58012:31528,58013:31542,58014:31568,58015:31610,58016:31492,58017:31565,58018:31499,58019:31564,58020:31557,58021:31605,58022:31589,58023:31604,58024:31591,58025:31600,58026:31601,58027:31596,58028:31598,58029:31645,58030:31640,58031:31647,58032:31629,58033:31644,58034:31642,58035:31627,58036:31634,58037:31631,58038:31581,58039:31641,58040:31691,58041:31681,58042:31692,58043:31695,58044:31668,58045:31686,58046:31709,58047:31721,58048:31761,58049:31764,58050:31718,58051:31717,58052:31840,58053:31744,58054:31751,58055:31763,58056:31731,58057:31735,58058:31767,58059:31757,58060:31734,58061:31779,58062:31783,58063:31786,58064:31775,58065:31799,58066:31787,58067:31805,58068:31820,58069:31811,58070:31828,58071:31823,58072:31808,58073:31824,58074:31832,58075:31839,58076:31844,58077:31830,58078:31845,58079:31852,58080:31861,58081:31875,58082:31888,58083:31908,58084:31917,58085:31906,58086:31915,58087:31905,58088:31912,58089:31923,58090:31922,58091:31921,58092:31918,58093:31929,58094:31933,58095:31936,58096:31941,58097:31938,58098:31960,58099:31954,58100:31964,58101:31970,58102:39739,58103:31983,58104:31986,58105:31988,58106:31990,58107:31994,58108:32006,58176:32002,58177:32028,58178:32021,58179:32010,58180:32069,58181:32075,58182:32046,58183:32050,58184:32063,58185:32053,58186:32070,58187:32115,58188:32086,58189:32078,58190:32114,58191:32104,58192:32110,58193:32079,58194:32099,58195:32147,58196:32137,58197:32091,58198:32143,58199:32125,58200:32155,58201:32186,58202:32174,58203:32163,58204:32181,58205:32199,58206:32189,58207:32171,58208:32317,58209:32162,58210:32175,58211:32220,58212:32184,58213:32159,58214:32176,58215:32216,58216:32221,58217:32228,58218:32222,58219:32251,58220:32242,58221:32225,58222:32261,58223:32266,58224:32291,58225:32289,58226:32274,58227:32305,58228:32287,58229:32265,58230:32267,58231:32290,58232:32326,58233:32358,58234:32315,58235:32309,58236:32313,58237:32323,58238:32311,58240:32306,58241:32314,58242:32359,58243:32349,58244:32342,58245:32350,58246:32345,58247:32346,58248:32377,58249:32362,58250:32361,58251:32380,58252:32379,58253:32387,58254:32213,58255:32381,58256:36782,58257:32383,58258:32392,58259:32393,58260:32396,58261:32402,58262:32400,58263:32403,58264:32404,58265:32406,58266:32398,58267:32411,58268:32412,58269:32568,58270:32570,58271:32581,58272:32588,58273:32589,58274:32590,58275:32592,58276:32593,58277:32597,58278:32596,58279:32600,58280:32607,58281:32608,58282:32616,58283:32617,58284:32615,58285:32632,58286:32642,58287:32646,58288:32643,58289:32648,58290:32647,58291:32652,58292:32660,58293:32670,58294:32669,58295:32666,58296:32675,58297:32687,58298:32690,58299:32697,58300:32686,58301:32694,58302:32696,58303:35697,58304:32709,58305:32710,58306:32714,58307:32725,58308:32724,58309:32737,58310:32742,58311:32745,58312:32755,58313:32761,58314:39132,58315:32774,58316:32772,58317:32779,58318:32786,58319:32792,58320:32793,58321:32796,58322:32801,58323:32808,58324:32831,58325:32827,58326:32842,58327:32838,58328:32850,58329:32856,58330:32858,58331:32863,58332:32866,58333:32872,58334:32883,58335:32882,58336:32880,58337:32886,58338:32889,58339:32893,58340:32895,58341:32900,58342:32902,58343:32901,58344:32923,58345:32915,58346:32922,58347:32941,58348:20880,58349:32940,58350:32987,58351:32997,58352:32985,58353:32989,58354:32964,58355:32986,58356:32982,58357:33033,58358:33007,58359:33009,58360:33051,58361:33065,58362:33059,58363:33071,58364:33099,58432:38539,58433:33094,58434:33086,58435:33107,58436:33105,58437:33020,58438:33137,58439:33134,58440:33125,58441:33126,58442:33140,58443:33155,58444:33160,58445:33162,58446:33152,58447:33154,58448:33184,58449:33173,58450:33188,58451:33187,58452:33119,58453:33171,58454:33193,58455:33200,58456:33205,58457:33214,58458:33208,58459:33213,58460:33216,58461:33218,58462:33210,58463:33225,58464:33229,58465:33233,58466:33241,58467:33240,58468:33224,58469:33242,58470:33247,58471:33248,58472:33255,58473:33274,58474:33275,58475:33278,58476:33281,58477:33282,58478:33285,58479:33287,58480:33290,58481:33293,58482:33296,58483:33302,58484:33321,58485:33323,58486:33336,58487:33331,58488:33344,58489:33369,58490:33368,58491:33373,58492:33370,58493:33375,58494:33380,58496:33378,58497:33384,58498:33386,58499:33387,58500:33326,58501:33393,58502:33399,58503:33400,58504:33406,58505:33421,58506:33426,58507:33451,58508:33439,58509:33467,58510:33452,58511:33505,58512:33507,58513:33503,58514:33490,58515:33524,58516:33523,58517:33530,58518:33683,58519:33539,58520:33531,58521:33529,58522:33502,58523:33542,58524:33500,58525:33545,58526:33497,58527:33589,58528:33588,58529:33558,58530:33586,58531:33585,58532:33600,58533:33593,58534:33616,58535:33605,58536:33583,58537:33579,58538:33559,58539:33560,58540:33669,58541:33690,58542:33706,58543:33695,58544:33698,58545:33686,58546:33571,58547:33678,58548:33671,58549:33674,58550:33660,58551:33717,58552:33651,58553:33653,58554:33696,58555:33673,58556:33704,58557:33780,58558:33811,58559:33771,58560:33742,58561:33789,58562:33795,58563:33752,58564:33803,58565:33729,58566:33783,58567:33799,58568:33760,58569:33778,58570:33805,58571:33826,58572:33824,58573:33725,58574:33848,58575:34054,58576:33787,58577:33901,58578:33834,58579:33852,58580:34138,58581:33924,58582:33911,58583:33899,58584:33965,58585:33902,58586:33922,58587:33897,58588:33862,58589:33836,58590:33903,58591:33913,58592:33845,58593:33994,58594:33890,58595:33977,58596:33983,58597:33951,58598:34009,58599:33997,58600:33979,58601:34010,58602:34e3,58603:33985,58604:33990,58605:34006,58606:33953,58607:34081,58608:34047,58609:34036,58610:34071,58611:34072,58612:34092,58613:34079,58614:34069,58615:34068,58616:34044,58617:34112,58618:34147,58619:34136,58620:34120,58688:34113,58689:34306,58690:34123,58691:34133,58692:34176,58693:34212,58694:34184,58695:34193,58696:34186,58697:34216,58698:34157,58699:34196,58700:34203,58701:34282,58702:34183,58703:34204,58704:34167,58705:34174,58706:34192,58707:34249,58708:34234,58709:34255,58710:34233,58711:34256,58712:34261,58713:34269,58714:34277,58715:34268,58716:34297,58717:34314,58718:34323,58719:34315,58720:34302,58721:34298,58722:34310,58723:34338,58724:34330,58725:34352,58726:34367,58727:34381,58728:20053,58729:34388,58730:34399,58731:34407,58732:34417,58733:34451,58734:34467,58735:34473,58736:34474,58737:34443,58738:34444,58739:34486,58740:34479,58741:34500,58742:34502,58743:34480,58744:34505,58745:34851,58746:34475,58747:34516,58748:34526,58749:34537,58750:34540,58752:34527,58753:34523,58754:34543,58755:34578,58756:34566,58757:34568,58758:34560,58759:34563,58760:34555,58761:34577,58762:34569,58763:34573,58764:34553,58765:34570,58766:34612,58767:34623,58768:34615,58769:34619,58770:34597,58771:34601,58772:34586,58773:34656,58774:34655,58775:34680,58776:34636,58777:34638,58778:34676,58779:34647,58780:34664,58781:34670,58782:34649,58783:34643,58784:34659,58785:34666,58786:34821,58787:34722,58788:34719,58789:34690,58790:34735,58791:34763,58792:34749,58793:34752,58794:34768,58795:38614,58796:34731,58797:34756,58798:34739,58799:34759,58800:34758,58801:34747,58802:34799,58803:34802,58804:34784,58805:34831,58806:34829,58807:34814,58808:34806,58809:34807,58810:34830,58811:34770,58812:34833,58813:34838,58814:34837,58815:34850,58816:34849,58817:34865,58818:34870,58819:34873,58820:34855,58821:34875,58822:34884,58823:34882,58824:34898,58825:34905,58826:34910,58827:34914,58828:34923,58829:34945,58830:34942,58831:34974,58832:34933,58833:34941,58834:34997,58835:34930,58836:34946,58837:34967,58838:34962,58839:34990,58840:34969,58841:34978,58842:34957,58843:34980,58844:34992,58845:35007,58846:34993,58847:35011,58848:35012,58849:35028,58850:35032,58851:35033,58852:35037,58853:35065,58854:35074,58855:35068,58856:35060,58857:35048,58858:35058,58859:35076,58860:35084,58861:35082,58862:35091,58863:35139,58864:35102,58865:35109,58866:35114,58867:35115,58868:35137,58869:35140,58870:35131,58871:35126,58872:35128,58873:35148,58874:35101,58875:35168,58876:35166,58944:35174,58945:35172,58946:35181,58947:35178,58948:35183,58949:35188,58950:35191,58951:35198,58952:35203,58953:35208,58954:35210,58955:35219,58956:35224,58957:35233,58958:35241,58959:35238,58960:35244,58961:35247,58962:35250,58963:35258,58964:35261,58965:35263,58966:35264,58967:35290,58968:35292,58969:35293,58970:35303,58971:35316,58972:35320,58973:35331,58974:35350,58975:35344,58976:35340,58977:35355,58978:35357,58979:35365,58980:35382,58981:35393,58982:35419,58983:35410,58984:35398,58985:35400,58986:35452,58987:35437,58988:35436,58989:35426,58990:35461,58991:35458,58992:35460,58993:35496,58994:35489,58995:35473,58996:35493,58997:35494,58998:35482,58999:35491,59e3:35524,59001:35533,59002:35522,59003:35546,59004:35563,59005:35571,59006:35559,59008:35556,59009:35569,59010:35604,59011:35552,59012:35554,59013:35575,59014:35550,59015:35547,59016:35596,59017:35591,59018:35610,59019:35553,59020:35606,59021:35600,59022:35607,59023:35616,59024:35635,59025:38827,59026:35622,59027:35627,59028:35646,59029:35624,59030:35649,59031:35660,59032:35663,59033:35662,59034:35657,59035:35670,59036:35675,59037:35674,59038:35691,59039:35679,59040:35692,59041:35695,59042:35700,59043:35709,59044:35712,59045:35724,59046:35726,59047:35730,59048:35731,59049:35734,59050:35737,59051:35738,59052:35898,59053:35905,59054:35903,59055:35912,59056:35916,59057:35918,59058:35920,59059:35925,59060:35938,59061:35948,59062:35960,59063:35962,59064:35970,59065:35977,59066:35973,59067:35978,59068:35981,59069:35982,59070:35988,59071:35964,59072:35992,59073:25117,59074:36013,59075:36010,59076:36029,59077:36018,59078:36019,59079:36014,59080:36022,59081:36040,59082:36033,59083:36068,59084:36067,59085:36058,59086:36093,59087:36090,59088:36091,59089:36100,59090:36101,59091:36106,59092:36103,59093:36111,59094:36109,59095:36112,59096:40782,59097:36115,59098:36045,59099:36116,59100:36118,59101:36199,59102:36205,59103:36209,59104:36211,59105:36225,59106:36249,59107:36290,59108:36286,59109:36282,59110:36303,59111:36314,59112:36310,59113:36300,59114:36315,59115:36299,59116:36330,59117:36331,59118:36319,59119:36323,59120:36348,59121:36360,59122:36361,59123:36351,59124:36381,59125:36382,59126:36368,59127:36383,59128:36418,59129:36405,59130:36400,59131:36404,59132:36426,59200:36423,59201:36425,59202:36428,59203:36432,59204:36424,59205:36441,59206:36452,59207:36448,59208:36394,59209:36451,59210:36437,59211:36470,59212:36466,59213:36476,59214:36481,59215:36487,59216:36485,59217:36484,59218:36491,59219:36490,59220:36499,59221:36497,59222:36500,59223:36505,59224:36522,59225:36513,59226:36524,59227:36528,59228:36550,59229:36529,59230:36542,59231:36549,59232:36552,59233:36555,59234:36571,59235:36579,59236:36604,59237:36603,59238:36587,59239:36606,59240:36618,59241:36613,59242:36629,59243:36626,59244:36633,59245:36627,59246:36636,59247:36639,59248:36635,59249:36620,59250:36646,59251:36659,59252:36667,59253:36665,59254:36677,59255:36674,59256:36670,59257:36684,59258:36681,59259:36678,59260:36686,59261:36695,59262:36700,59264:36706,59265:36707,59266:36708,59267:36764,59268:36767,59269:36771,59270:36781,59271:36783,59272:36791,59273:36826,59274:36837,59275:36834,59276:36842,59277:36847,59278:36999,59279:36852,59280:36869,59281:36857,59282:36858,59283:36881,59284:36885,59285:36897,59286:36877,59287:36894,59288:36886,59289:36875,59290:36903,59291:36918,59292:36917,59293:36921,59294:36856,59295:36943,59296:36944,59297:36945,59298:36946,59299:36878,59300:36937,59301:36926,59302:36950,59303:36952,59304:36958,59305:36968,59306:36975,59307:36982,59308:38568,59309:36978,59310:36994,59311:36989,59312:36993,59313:36992,59314:37002,59315:37001,59316:37007,59317:37032,59318:37039,59319:37041,59320:37045,59321:37090,59322:37092,59323:25160,59324:37083,59325:37122,59326:37138,59327:37145,59328:37170,59329:37168,59330:37194,59331:37206,59332:37208,59333:37219,59334:37221,59335:37225,59336:37235,59337:37234,59338:37259,59339:37257,59340:37250,59341:37282,59342:37291,59343:37295,59344:37290,59345:37301,59346:37300,59347:37306,59348:37312,59349:37313,59350:37321,59351:37323,59352:37328,59353:37334,59354:37343,59355:37345,59356:37339,59357:37372,59358:37365,59359:37366,59360:37406,59361:37375,59362:37396,59363:37420,59364:37397,59365:37393,59366:37470,59367:37463,59368:37445,59369:37449,59370:37476,59371:37448,59372:37525,59373:37439,59374:37451,59375:37456,59376:37532,59377:37526,59378:37523,59379:37531,59380:37466,59381:37583,59382:37561,59383:37559,59384:37609,59385:37647,59386:37626,59387:37700,59388:37678,59456:37657,59457:37666,59458:37658,59459:37667,59460:37690,59461:37685,59462:37691,59463:37724,59464:37728,59465:37756,59466:37742,59467:37718,59468:37808,59469:37804,59470:37805,59471:37780,59472:37817,59473:37846,59474:37847,59475:37864,59476:37861,59477:37848,59478:37827,59479:37853,59480:37840,59481:37832,59482:37860,59483:37914,59484:37908,59485:37907,59486:37891,59487:37895,59488:37904,59489:37942,59490:37931,59491:37941,59492:37921,59493:37946,59494:37953,59495:37970,59496:37956,59497:37979,59498:37984,59499:37986,59500:37982,59501:37994,59502:37417,59503:38e3,59504:38005,59505:38007,59506:38013,59507:37978,59508:38012,59509:38014,59510:38017,59511:38015,59512:38274,59513:38279,59514:38282,59515:38292,59516:38294,59517:38296,59518:38297,59520:38304,59521:38312,59522:38311,59523:38317,59524:38332,59525:38331,59526:38329,59527:38334,59528:38346,59529:28662,59530:38339,59531:38349,59532:38348,59533:38357,59534:38356,59535:38358,59536:38364,59537:38369,59538:38373,59539:38370,59540:38433,59541:38440,59542:38446,59543:38447,59544:38466,59545:38476,59546:38479,59547:38475,59548:38519,59549:38492,59550:38494,59551:38493,59552:38495,59553:38502,59554:38514,59555:38508,59556:38541,59557:38552,59558:38549,59559:38551,59560:38570,59561:38567,59562:38577,59563:38578,59564:38576,59565:38580,59566:38582,59567:38584,59568:38585,59569:38606,59570:38603,59571:38601,59572:38605,59573:35149,59574:38620,59575:38669,59576:38613,59577:38649,59578:38660,59579:38662,59580:38664,59581:38675,59582:38670,59583:38673,59584:38671,59585:38678,59586:38681,59587:38692,59588:38698,59589:38704,59590:38713,59591:38717,59592:38718,59593:38724,59594:38726,59595:38728,59596:38722,59597:38729,59598:38748,59599:38752,59600:38756,59601:38758,59602:38760,59603:21202,59604:38763,59605:38769,59606:38777,59607:38789,59608:38780,59609:38785,59610:38778,59611:38790,59612:38795,59613:38799,59614:38800,59615:38812,59616:38824,59617:38822,59618:38819,59619:38835,59620:38836,59621:38851,59622:38854,59623:38856,\\n59624:38859,59625:38876,59626:38893,59627:40783,59628:38898,59629:31455,59630:38902,59631:38901,59632:38927,59633:38924,59634:38968,59635:38948,59636:38945,59637:38967,59638:38973,59639:38982,59640:38991,59641:38987,59642:39019,59643:39023,59644:39024,59712:39025,59713:39028,59714:39027,59715:39082,59716:39087,59717:39089,59718:39094,59719:39108,59720:39107,59721:39110,59722:39145,59723:39147,59724:39171,59725:39177,59726:39186,59727:39188,59728:39192,59729:39201,59730:39197,59731:39198,59732:39204,59733:39200,59734:39212,59735:39214,59736:39229,59737:39230,59738:39234,59739:39241,59740:39237,59741:39248,59742:39243,59743:39249,59744:39250,59745:39244,59746:39253,59747:39319,59748:39320,59749:39333,59750:39341,59751:39342,59752:39356,59753:39391,59754:39387,59755:39389,59756:39384,59757:39377,59758:39405,59759:39406,59760:39409,59761:39410,59762:39419,59763:39416,59764:39425,59765:39439,59766:39429,59767:39394,59768:39449,59769:39467,59770:39479,59771:39493,59772:39490,59773:39488,59774:39491,59776:39486,59777:39509,59778:39501,59779:39515,59780:39511,59781:39519,59782:39522,59783:39525,59784:39524,59785:39529,59786:39531,59787:39530,59788:39597,59789:39600,59790:39612,59791:39616,59792:39631,59793:39633,59794:39635,59795:39636,59796:39646,59797:39647,59798:39650,59799:39651,59800:39654,59801:39663,59802:39659,59803:39662,59804:39668,59805:39665,59806:39671,59807:39675,59808:39686,59809:39704,59810:39706,59811:39711,59812:39714,59813:39715,59814:39717,59815:39719,59816:39720,59817:39721,59818:39722,59819:39726,59820:39727,59821:39730,59822:39748,59823:39747,59824:39759,59825:39757,59826:39758,59827:39761,59828:39768,59829:39796,59830:39827,59831:39811,59832:39825,59833:39830,59834:39831,59835:39839,59836:39840,59837:39848,59838:39860,59839:39872,59840:39882,59841:39865,59842:39878,59843:39887,59844:39889,59845:39890,59846:39907,59847:39906,59848:39908,59849:39892,59850:39905,59851:39994,59852:39922,59853:39921,59854:39920,59855:39957,59856:39956,59857:39945,59858:39955,59859:39948,59860:39942,59861:39944,59862:39954,59863:39946,59864:39940,59865:39982,59866:39963,59867:39973,59868:39972,59869:39969,59870:39984,59871:40007,59872:39986,59873:40006,59874:39998,59875:40026,59876:40032,59877:40039,59878:40054,59879:40056,59880:40167,59881:40172,59882:40176,59883:40201,59884:40200,59885:40171,59886:40195,59887:40198,59888:40234,59889:40230,59890:40367,59891:40227,59892:40223,59893:40260,59894:40213,59895:40210,59896:40257,59897:40255,59898:40254,59899:40262,59900:40264,59968:40285,59969:40286,59970:40292,59971:40273,59972:40272,59973:40281,59974:40306,59975:40329,59976:40327,59977:40363,59978:40303,59979:40314,59980:40346,59981:40356,59982:40361,59983:40370,59984:40388,59985:40385,59986:40379,59987:40376,59988:40378,59989:40390,59990:40399,59991:40386,59992:40409,59993:40403,59994:40440,59995:40422,59996:40429,59997:40431,59998:40445,59999:40474,6e4:40475,60001:40478,60002:40565,60003:40569,60004:40573,60005:40577,60006:40584,60007:40587,60008:40588,60009:40594,60010:40597,60011:40593,60012:40605,60013:40613,60014:40617,60015:40632,60016:40618,60017:40621,60018:38753,60019:40652,60020:40654,60021:40655,60022:40656,60023:40660,60024:40668,60025:40670,60026:40669,60027:40672,60028:40677,60029:40680,60030:40687,60032:40692,60033:40694,60034:40695,60035:40697,60036:40699,60037:40700,60038:40701,60039:40711,60040:40712,60041:30391,60042:40725,60043:40737,60044:40748,60045:40766,60046:40778,60047:40786,60048:40788,60049:40803,60050:40799,60051:40800,60052:40801,60053:40806,60054:40807,60055:40812,60056:40810,60057:40823,60058:40818,60059:40822,60060:40853,60061:40860,60062:40864,60063:22575,60064:27079,60065:36953,60066:29796,60067:20956,60068:29081}},function(o,e,r){\\\"use strict\\\";function t(o,e,r,t){e.degree()=t/2;){var n=c,l=a;if(c=s,a=d,c.isZero())return null;s=n;for(var i=o.zero,B=c.getCoefficient(c.degree()),k=o.inverse(B);s.degree()>=c.degree()&&!s.isZero();){var u=s.degree()-c.degree(),C=o.multiply(s.getCoefficient(s.degree()),k);i=i.addOrSubtract(o.buildMonomial(u,C)),s=s.addOrSubtract(c.multiplyByMonomial(u,C))}if(d=i.multiplyPoly(a).addOrSubtract(l),s.degree()>=c.degree())return null}var m=d.getCoefficient(0);if(0===m)return null;var f=o.inverse(m);return[d.multiply(f),s.multiply(f)];var w}function c(o,e){var r=e.degree();if(1===r)return[e.getCoefficient(1)];for(var t=new Array(r),c=0,s=1;s=a&&d>=n?(l=[e,o,r],t=l[0],c=l[1],s=l[2]):n>=d&&n>=a?(i=[o,e,r],t=i[0],c=i[1],s=i[2]):(B=[o,r,e],t=B[0],c=B[1],s=B[2]),(s.x-c.x)*(t.y-c.y)-(s.y-c.y)*(t.x-c.x)<0&&(k=[s,t],t=k[0],s=k[1]),{bottomLeft:t,topLeft:c,topRight:s};var l,i,B,k}function s(o,e,r,c){var s=(t(d(o,r,c,5))/7+t(d(o,e,c,5))/7+t(d(r,o,c,5))/7+t(d(e,o,c,5))/7)/4;if(s<1)throw new Error(\\\"Invalid module size\\\");var a=Math.round(C(o,e)/s),n=Math.round(C(o,r)/s),l=Math.floor((a+n)/2)+7;switch(l%4){case 0:l++;break;case 2:l--}return{dimension:l,moduleSize:s}}function a(o,e,r,t){var c,s,a,d,n=[{x:Math.floor(o.x),y:Math.floor(o.y)}],l=Math.abs(e.y-o.y)>Math.abs(e.x-o.x);l?(c=Math.floor(o.y),s=Math.floor(o.x),a=Math.floor(e.y),d=Math.floor(e.x)):(c=Math.floor(o.x),s=Math.floor(o.y),a=Math.floor(e.x),d=Math.floor(e.y));for(var i=Math.abs(a-c),B=Math.abs(d-s),k=Math.floor(-i/2),u=c0){if(P===d)break;P+=m,k-=i}}for(var p=[],y=0;y=o.bottom.startX&&w<=o.bottom.endX||f>=o.bottom.startX&&w<=o.bottom.endX||w<=o.bottom.startX&&f>=o.bottom.endX&&l[2]/(o.bottom.endX-o.bottom.startX)k});v.length>0?v[0].bottom=P:r.push({top:P,bottom:P})}if(m){var h=e-l[4],p=h-l[3],P={startX:p,y:c,endX:h},v=d.filter(function(o){return p>=o.bottom.startX&&p<=o.bottom.endX||h>=o.bottom.startX&&p<=o.bottom.endX||p<=o.bottom.startX&&h>=o.bottom.endX&&l[2]/(o.bottom.endX-o.bottom.startX)k});v.length>0?v[0].bottom=P:d.push({top:P,bottom:P})}}}(i);e.push.apply(e,r.filter(function(o){return o.bottom.y!==c&&o.bottom.y-o.top.y>=2})),r=r.filter(function(o){return o.bottom.y===c}),a.push.apply(a,d.filter(function(o){return o.bottom.y!==c})),d=d.filter(function(o){return o.bottom.y===c})}(n);e.push.apply(e,r.filter(function(o){return o.bottom.y-o.top.y>=2})),a.push.apply(a,d);var i=e.filter(function(o){return o.bottom.y-o.top.y>=2}).map(function(e){var r=(e.top.startX+e.top.endX+e.bottom.startX+e.bottom.endX)/4,c=(e.top.y+e.bottom.y+1)/2;if(o.get(Math.round(r),Math.round(c))){\\nvar s=[e.top.endX-e.top.startX,e.bottom.endX-e.bottom.startX,e.bottom.y-e.top.y+1],a=t(s)/s.length;return{score:l({x:Math.round(r),y:Math.round(c)},[1,1,3,1,1],o),x:r,y:c,size:a}}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score}).map(function(o,e,r){if(e>B)return null;var t=r.filter(function(o,r){return e!==r}).map(function(e){return{x:e.x,y:e.y,score:e.score+Math.pow(e.size-o.size,2)/o.size,size:e.size}}).sort(function(o,e){return o.score-e.score});if(t.length<2)return null;var c=o.score+t[0].score+t[1].score;return{points:[o].concat(t.slice(0,2)),score:c}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score});if(0===i.length)return null;var m,f,w=c(i[0].points[0],i[0].points[1],i[0].points[2]),P=w.topRight,v=w.topLeft,h=w.bottomLeft;try{L=s(v,P,h,o),m=L.dimension,f=L.moduleSize}catch(o){return null}var p={x:P.x-v.x+h.x,y:P.y-v.y+h.y},y=(C(v,h)+C(v,P))/2/f,b=1-3/y,g={x:v.x+b*(p.x-v.x),y:v.y+b*(p.y-v.y)},x=a.map(function(e){var r=(e.top.startX+e.top.endX+e.bottom.startX+e.bottom.endX)/4,c=(e.top.y+e.bottom.y+1)/2;if(o.get(Math.floor(r),Math.floor(c))){var s=[e.top.endX-e.top.startX,e.bottom.endX-e.bottom.startX,e.bottom.y-e.top.y+1];t(s);return{x:r,y:c,score:l({x:Math.floor(r),y:Math.floor(c)},[1,1,1],o)+C({x:r,y:c},g)}}}).filter(function(o){return!!o}).sort(function(o,e){return o.score-e.score}),M=y>=15&&x.length?x[0]:g;return{alignmentPattern:{x:M.x,y:M.y},bottomLeft:{x:h.x,y:h.y},dimension:m,topLeft:{x:v.x,y:v.y},topRight:{x:P.x,y:P.y}};var L}Object.defineProperty(e,\\\"__esModule\\\",{value:!0});var B=4,k=.5,u=1.5,C=function(o,e){return Math.sqrt(Math.pow(e.x-o.x,2)+Math.pow(e.y-o.y,2))};e.locate=i}]).default}),self.addEventListener(\\\"message\\\",function(o){var e=jsQR(o.data.data,o.data.width,o.data.height);e?postMessage(e.data):postMessage(null)});\"], {\n type: 'application/javascript'\n});\n\n// Props that are allowed to change dynamicly\nvar propsKeys = ['delay', 'legacyMode', 'facingMode'];\n\nmodule.exports = (_temp = _class = function (_Component) {\n _inherits(Reader, _Component);\n\n function Reader(props) {\n _classCallCheck(this, Reader);\n\n var _this = _possibleConstructorReturn(this, (Reader.__proto__ || Object.getPrototypeOf(Reader)).call(this, props));\n\n _this.els = {};\n\n\n _this.state = {\n mirrorVideo: false\n\n // Bind function to the class\n };_this.initiate = _this.initiate.bind(_this);\n _this.initiateLegacyMode = _this.initiateLegacyMode.bind(_this);\n _this.check = _this.check.bind(_this);\n _this.handleVideo = _this.handleVideo.bind(_this);\n _this.handleLoadStart = _this.handleLoadStart.bind(_this);\n _this.handleInputChange = _this.handleInputChange.bind(_this);\n _this.clearComponent = _this.clearComponent.bind(_this);\n _this.handleReaderLoad = _this.handleReaderLoad.bind(_this);\n _this.openImageDialog = _this.openImageDialog.bind(_this);\n _this.handleWorkerMessage = _this.handleWorkerMessage.bind(_this);\n _this.setRefFactory = _this.setRefFactory.bind(_this);\n return _this;\n }\n\n _createClass(Reader, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Initiate web worker execute handler according to mode.\n this.worker = new Worker(URL.createObjectURL(workerBlob));\n this.worker.onmessage = this.handleWorkerMessage;\n\n if (!this.props.legacyMode) {\n this.initiate();\n } else {\n this.initiateLegacyMode();\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n // React according to change in props\n var changedProps = havePropsChanged(this.props, nextProps, propsKeys);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = changedProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n\n if (prop == 'facingMode') {\n this.clearComponent();\n this.initiate(nextProps);\n break;\n } else if (prop == 'delay') {\n if (this.props.delay == false && !nextProps.legacyMode) {\n this.timeout = setTimeout(this.check, nextProps.delay);\n }\n if (nextProps.delay == false) {\n clearTimeout(this.timeout);\n }\n } else if (prop == 'legacyMode') {\n if (this.props.legacyMode && !nextProps.legacyMode) {\n this.clearComponent();\n this.initiate(nextProps);\n } else {\n this.clearComponent();\n this.componentDidUpdate = this.initiateLegacyMode;\n }\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n if (nextState !== this.state) {\n return true;\n }\n\n // Only render when the `propsKeys` have changed.\n var changedProps = havePropsChanged(this.props, nextProps, propsKeys);\n return changedProps.length > 0;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Stop web-worker and clear the component\n if (this.worker) {\n this.worker.terminate();\n this.worker = undefined;\n }\n this.clearComponent();\n }\n }, {\n key: 'clearComponent',\n value: function clearComponent() {\n // Remove all event listeners and variables\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n if (this.stopCamera) {\n this.stopCamera();\n }\n if (this.reader) {\n this.reader.removeEventListener('load', this.handleReaderLoad);\n }\n if (this.els.img) {\n this.els.img.removeEventListener('load', this.check);\n }\n }\n }, {\n key: 'initiate',\n value: function initiate() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var onError = props.onError,\n facingMode = props.facingMode;\n\n // Check browser facingMode constraint support\n // Firefox ignores facingMode or deviceId constraints\n\n var isFirefox = /firefox/i.test(navigator.userAgent);\n var supported = {};\n if (navigator.mediaDevices && typeof navigator.mediaDevices.getSupportedConstraints === 'function') {\n supported = navigator.mediaDevices.getSupportedConstraints();\n }\n var constraints = {};\n\n if (supported.facingMode) {\n constraints.facingMode = { ideal: facingMode };\n }\n if (supported.frameRate) {\n constraints.frameRate = { ideal: 25, min: 10 };\n }\n\n var vConstraintsPromise = supported.facingMode || isFirefox ? Promise.resolve(props.constraints || constraints) : getDeviceId(facingMode).then(function (deviceId) {\n return Object.assign({}, { deviceId: deviceId }, props.constraints);\n });\n\n vConstraintsPromise.then(function (video) {\n return navigator.mediaDevices.getUserMedia({ video: video });\n }).then(this.handleVideo).catch(onError);\n }\n }, {\n key: 'handleVideo',\n value: function handleVideo(stream) {\n var preview = this.els.preview;\n var facingMode = this.props.facingMode;\n\n // Preview element hasn't been rendered so wait for it.\n\n if (!preview) {\n return setTimeout(this.handleVideo, 200, stream);\n }\n\n // Handle different browser implementations of MediaStreams as src\n if ((preview || {}).srcObject !== undefined) {\n preview.srcObject = stream;\n } else if (preview.mozSrcObject !== undefined) {\n preview.mozSrcObject = stream;\n } else if (window.URL.createObjectURL) {\n preview.src = window.URL.createObjectURL(stream);\n } else if (window.webkitURL) {\n preview.src = window.webkitURL.createObjectURL(stream);\n } else {\n preview.src = stream;\n }\n\n // IOS play in fullscreen\n preview.playsInline = true;\n\n var streamTrack = stream.getTracks()[0];\n // Assign `stopCamera` so the track can be stopped once component is cleared\n this.stopCamera = streamTrack.stop.bind(streamTrack);\n\n preview.addEventListener('loadstart', this.handleLoadStart);\n\n this.setState({ mirrorVideo: facingMode == 'user', streamLabel: streamTrack.label });\n }\n }, {\n key: 'handleLoadStart',\n value: function handleLoadStart() {\n var _props = this.props,\n delay = _props.delay,\n onLoad = _props.onLoad;\n var _state = this.state,\n mirrorVideo = _state.mirrorVideo,\n streamLabel = _state.streamLabel;\n\n var preview = this.els.preview;\n preview.play();\n\n if (typeof onLoad == 'function') {\n onLoad({ mirrorVideo: mirrorVideo, streamLabel: streamLabel });\n }\n\n if (typeof delay == 'number') {\n this.timeout = setTimeout(this.check, delay);\n }\n\n // Some browsers call loadstart continuously\n preview.removeEventListener('loadstart', this.handleLoadStart);\n }\n }, {\n key: 'check',\n value: function check() {\n var _props2 = this.props,\n legacyMode = _props2.legacyMode,\n resolution = _props2.resolution,\n delay = _props2.delay;\n var _els = this.els,\n preview = _els.preview,\n canvas = _els.canvas,\n img = _els.img;\n\n // Get image/video dimensions\n\n var width = Math.floor(legacyMode ? img.naturalWidth : preview.videoWidth);\n var height = Math.floor(legacyMode ? img.naturalHeight : preview.videoHeight);\n\n // Canvas draw offsets\n var hozOffset = 0;\n var vertOffset = 0;\n\n // Scale image to correct resolution\n if (legacyMode) {\n // Keep image aspect ratio\n var greatestSize = width > height ? width : height;\n var ratio = resolution / greatestSize;\n\n height = ratio * height;\n width = ratio * width;\n\n canvas.width = width;\n canvas.height = height;\n } else {\n // Crop image to fit 1:1 aspect ratio\n var smallestSize = width < height ? width : height;\n var _ratio = resolution / smallestSize;\n\n height = _ratio * height;\n width = _ratio * width;\n\n vertOffset = (height - resolution) / 2 * -1;\n hozOffset = (width - resolution) / 2 * -1;\n\n canvas.width = resolution;\n canvas.height = resolution;\n }\n\n var previewIsPlaying = preview && preview.readyState === preview.HAVE_ENOUGH_DATA;\n\n if (legacyMode || previewIsPlaying) {\n var ctx = canvas.getContext('2d');\n\n ctx.drawImage(legacyMode ? img : preview, hozOffset, vertOffset, width, height);\n\n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // Send data to web-worker\n this.worker.postMessage(imageData);\n } else {\n // Preview not ready -> check later\n this.timeout = setTimeout(this.check, delay);\n }\n }\n }, {\n key: 'handleWorkerMessage',\n value: function handleWorkerMessage(e) {\n var _props3 = this.props,\n onScan = _props3.onScan,\n legacyMode = _props3.legacyMode,\n delay = _props3.delay;\n\n var decoded = e.data;\n onScan(decoded || null);\n\n if (!legacyMode && typeof delay == 'number' && this.worker) {\n this.timeout = setTimeout(this.check, delay);\n }\n }\n }, {\n key: 'initiateLegacyMode',\n value: function initiateLegacyMode() {\n this.reader = new FileReader();\n this.reader.addEventListener('load', this.handleReaderLoad);\n this.els.img.addEventListener('load', this.check, false);\n\n // Reset componentDidUpdate\n this.componentDidUpdate = undefined;\n\n if (typeof this.props.onLoad == 'function') {\n this.props.onLoad();\n }\n }\n }, {\n key: 'handleInputChange',\n value: function handleInputChange(e) {\n var selectedImg = e.target.files[0];\n this.reader.readAsDataURL(selectedImg);\n }\n }, {\n key: 'handleReaderLoad',\n value: function handleReaderLoad(e) {\n // Set selected image blob as img source\n this.els.img.src = e.target.result;\n }\n }, {\n key: 'openImageDialog',\n value: function openImageDialog() {\n // Function to be executed by parent in user action context to trigger img file uploader\n this.els.input.click();\n }\n }, {\n key: 'setRefFactory',\n value: function setRefFactory(key) {\n var _this2 = this;\n\n return function (element) {\n _this2.els[key] = element;\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _props4 = this.props,\n style = _props4.style,\n className = _props4.className,\n onImageLoad = _props4.onImageLoad,\n legacyMode = _props4.legacyMode,\n showViewFinder = _props4.showViewFinder,\n facingMode = _props4.facingMode;\n\n\n var containerStyle = {\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n paddingTop: '100%'\n };\n var hiddenStyle = { display: 'none' };\n var previewStyle = {\n top: 0,\n left: 0,\n display: 'block',\n position: 'absolute',\n overflow: 'hidden',\n width: '100%',\n height: '100%'\n };\n var videoPreviewStyle = _extends({}, previewStyle, {\n objectFit: 'cover',\n transform: this.state.mirrorVideo ? 'scaleX(-1)' : undefined\n });\n var imgPreviewStyle = _extends({}, previewStyle, {\n objectFit: 'scale-down'\n });\n\n var viewFinderStyle = {\n top: 0,\n left: 0,\n zIndex: 1,\n boxSizing: 'border-box',\n border: '50px solid rgba(0, 0, 0, 0.3)',\n boxShadow: 'inset 0 0 0 5px rgba(255, 0, 0, 0.5)',\n position: 'absolute',\n width: '100%',\n height: '100%'\n };\n\n return React.createElement(\n 'section',\n { className: className, style: style },\n React.createElement(\n 'section',\n { style: containerStyle },\n !legacyMode && showViewFinder ? React.createElement('div', { style: viewFinderStyle }) : null,\n legacyMode ? React.createElement('input', {\n style: hiddenStyle,\n type: 'file',\n accept: 'image/*',\n ref: this.setRefFactory('input'),\n onChange: this.handleInputChange\n }) : null,\n legacyMode ? React.createElement('img', { style: imgPreviewStyle, ref: this.setRefFactory('img'), onLoad: onImageLoad }) : React.createElement('video', { style: videoPreviewStyle, ref: this.setRefFactory('preview') }),\n React.createElement('canvas', { style: hiddenStyle, ref: this.setRefFactory('canvas') })\n )\n );\n }\n }]);\n\n return Reader;\n}(Component), _class.propTypes = {\n onScan: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n onLoad: PropTypes.func,\n onImageLoad: PropTypes.func,\n delay: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n facingMode: PropTypes.oneOf(['user', 'environment']),\n legacyMode: PropTypes.bool,\n resolution: PropTypes.number,\n showViewFinder: PropTypes.bool,\n style: PropTypes.any,\n className: PropTypes.string,\n constraints: PropTypes.object\n}, _class.defaultProps = {\n delay: 500,\n resolution: 600,\n facingMode: 'environment',\n showViewFinder: true,\n constraints: null\n}, _temp);","import { useContext } from 'react';\nimport ConnectionContext, { States } from '../contexts/ConnectionContext';\n\nconst useConnection = () => {\n const context = useContext(ConnectionContext);\n return context;\n};\n\nexport const ConnectionStates = States;\n\nexport default useConnection;\n","import React, { useCallback, useEffect } from 'react';\nimport QRCode from 'react-qr-code';\nimport QRReader from 'react-qr-reader'\nimport useConnection from '../hooks/useConnection';\n\nconst Welcome: React.FC<{}> = () => {\n const { connect, clientInfo } = useConnection();\n\n const onScan = useCallback(\n (result) => {\n if (result) {\n connect(JSON.parse(result));\n }\n },\n [],\n );\n\n useEffect(() => {\n const hash = window.location.hash;\n if (hash) {\n const clientInfoEncoded = hash.substring(1);\n const clientInfo = JSON.parse(atob(clientInfoEncoded));\n connect(clientInfo);\n }\n console.log(hash);\n }, []);\n\n return (\n <>\n
{location.protocol}//{location.host}{location.pathname}#{btoa(JSON.stringify(clientInfo))}
\n \n { console.error(result) }}\n style={{ width: '300px', height: '300px' }}\n />\n \n );\n}\n\nexport default Welcome;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\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 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const COMMON_MIME_TYPES = new Map([\n ['avi', 'video/avi'],\n ['gif', 'image/gif'],\n ['ico', 'image/x-icon'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['mp4', 'video/mp4'],\n ['pdf', 'application/pdf'],\n ['png', 'image/png'],\n ['zip', 'application/zip'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n const f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n const {webkitRelativePath} = file as FileWithWebkitPath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return f;\n}\n\ninterface DOMFile extends Blob {\n readonly lastModified: number;\n readonly name: string;\n}\n\nexport interface FileWithPath extends DOMFile {\n readonly path?: string;\n}\n\ninterface FileWithWebkitPath extends File {\n readonly webkitRelativePath?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n * @param evt\n */\nexport async function fromEvent(evt: Event): Promise<(FileWithPath | DataTransferItem)[]> {\n return isDragEvt(evt) && evt.dataTransfer\n ? getDataTransferFiles(evt.dataTransfer, evt.type)\n : getInputFiles(evt);\n}\n\nfunction isDragEvt(value: any): value is DragEvent {\n return !!value.dataTransfer;\n}\n\nfunction getInputFiles(evt: Event) {\n const files = isInput(evt.target)\n ? evt.target.files\n ? fromList(evt.target.files)\n : []\n : [];\n return files.map(file => toFileWithPath(file));\n}\n\nfunction isInput(value: EventTarget | null): value is HTMLInputElement {\n return value !== null;\n}\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items: DataTransferItemList | FileList): T[] {\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item);\n}\n\nfunction flatten(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n const file = item.getAsFile();\n if (!file) {\n return Promise.reject(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise((resolve, reject) => {\n const entries: Promise[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array {}\ntype FileValue = FileWithPath\n | FileArray[];\n","export {fromEvent} from './file-selector';\nexport {FileWithPath} from './file';\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from 'attr-accept'; // Error codes\n\nexport var FILE_INVALID_TYPE = 'file-invalid-type';\nexport var FILE_TOO_LARGE = 'file-too-large';\nexport var FILE_TOO_SMALL = 'file-too-small';\nexport var TOO_MANY_FILES = 'too-many-files'; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(', ')) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: 'Too many files'\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === 'application/x-moz-file' || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === 'function') {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== 'undefined') {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === 'object' && item !== null && item.kind === 'file';\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromEvent } from 'file-selector';\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, isEvtWithFiles, isIeOrEdge, isPropagationStopped, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from './utils/index';\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
\n * \n *

Drag 'n' drop some files here, or click to select files

\n *
\n * )}\n *
\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, [\"open\"]);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = 'Dropzone'; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function \n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
\n * \n *

Drag and drop some files here, or click to select files

\n *
\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles; // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n if (inputRef.current) {\n dispatch({\n type: 'openDialog'\n });\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch]); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: 'closeDialog'\n });\n\n if (typeof onFileDialogCancel === 'function') {\n onFileDialogCancel();\n }\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener('focus', onWindowFocus, false);\n return function () {\n window.removeEventListener('focus', onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancel]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, inputRef]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: 'focus'\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: 'blur'\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [inputRef, noClick]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: 'setDraggedFiles'\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = 'copy';\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: 'setDraggedFiles',\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: 'setFiles'\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n });\n }\n\n dispatch({\n type: 'reset'\n });\n }, [multiple, accept, minSize, maxSize, maxFiles, getFilesFromEvent, onDrop, onDropAccepted, onDropRejected, noDragEventsBubbling]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, [\"refKey\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"]);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb))\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, [\"refKey\", \"onChange\", \"onClick\"]);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: 'file',\n style: {\n display: 'none'\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case 'focus':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case 'blur':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case 'openDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: true\n });\n\n case 'closeDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case 'setDraggedFiles':\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case 'setFiles':\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case 'reset':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false,\n isDragActive: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n });\n\n default:\n return state;\n }\n}","import React, { useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport useConnection from '../hooks/useConnection';\n\nconst readFile = (file: File) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve({\n name: file.name,\n type: file.type,\n body: reader.result,\n });\n };\n reader.onerror = (err) => {\n reject(err);\n };\n reader.readAsDataURL(file);\n});\n\nconst Connected: React.FC<{}> = () => {\n const { send, messages } = useConnection();\n\n const onDrop = useCallback(async (acceptedFiles: File[]) => {\n const files = await Promise.all(acceptedFiles.map(readFile));\n files.forEach(send);\n }, [send]);\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n } = useDropzone({onDrop})\n\n return (\n <>\n
\n \n { isDragActive ? (\n

Drop the files here ...

\n ):(\n

Drag 'n' drop some files here, or click to select files

\n )}\n
\n {messages.map((message) => (\n
\n {message.name}-{message.body.length}\n \n
\n ))}\n \n );\n}\n\nexport default Connected;\n","import React from 'react';\nimport Welcome from './containers/Welcome';\nimport Connected from './containers/Connected';\nimport useConnection, { ConnectionStates } from './hooks/useConnection';\n\nconst App: React.FC<{}> = () => {\n const { state } = useConnection();\n\n if (state === ConnectionStates.WAITING) {\n return \n }\n if (state === ConnectionStates.CONNECTED) {\n return \n }\n return (\n
Connected
\n );\n};\n\nexport default App;\n","import React from 'react';\nimport { render } from 'react-dom';\nimport { ConnectionProvider } from './contexts/ConnectionContext';\nimport App from './App';\n\nconst root = document.getElementById('root');\nconst app = (\n \n \n \n);\n\nrender(app, root);\n"]} \ No newline at end of file