{"version":3,"sources":["webpack:///./node_modules/webpack/buildin/global.js","webpack:///./node_modules/smartphoto/lib/index.js","webpack:///./node_modules/smartphoto/lib/core/index.js","webpack:///./node_modules/a-template/lib/index.js","webpack:///./node_modules/ie-array-find-polyfill/index.js","webpack:///./node_modules/morphdom/dist/morphdom-esm.js","webpack:///./node_modules/a-template/lib/util.js","webpack:///./node_modules/custom-event-polyfill/custom-event-polyfill.js","webpack:///./node_modules/smartphoto/lib/lib/util.js","webpack:///./node_modules/es6-promise-polyfill/promise.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js"],"names":["g","this","Function","e","window","module","exports","Object","defineProperty","value","obj","_aTemplate","__esModule","_typeof","Symbol","iterator","constructor","prototype","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","_possibleConstructorReturn","self","call","ReferenceError","_assertThisInitialized","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","util","Promise","defaults","classNames","smartPhoto","smartPhotoClose","smartPhotoBody","smartPhotoInner","smartPhotoContent","smartPhotoImg","smartPhotoImgOnMove","smartPhotoImgElasticMove","smartPhotoImgWrap","smartPhotoArrows","smartPhotoNav","smartPhotoArrowRight","smartPhotoArrowLeft","smartPhotoArrowHideIcon","smartPhotoImgLeft","smartPhotoImgRight","smartPhotoList","smartPhotoListOnMove","smartPhotoHeader","smartPhotoCount","smartPhotoCaption","smartPhotoDismiss","smartPhotoLoader","smartPhotoLoaderWrap","smartPhotoImgClone","message","gotoNextImage","gotoPrevImage","closeDialog","arrows","nav","showAnimation","verticalGravity","useOrientationApi","useHistoryApi","swipeTopToClose","swipeBottomToClose","swipeOffset","headerHeight","footerHeight","forceInterval","registance","loadOffset","resizeStyle","lazyAttribute","SmartPhoto","_ATemplate","selector","settings","_this","instance","Constructor","TypeError","_classCallCheck","data","extend","currentIndex","oldIndex","hide","group","scaleSize","scale","pos","x","y","photoPosX","photoPosY","handlers","convert","increment","virtualPos","round","groupItems","elements","document","querySelectorAll","date","Date","tapSecond","getTime","onListMove","clicked","id","_getUniqId","vx","vy","appearEffect","addTemplate","isSmartPhone","_isSmartPhone","body","querySelector","append","concat","forEach","element","addNewItem","update","currentItem","_getCurrentItemByHash","triggerEvent","interval","setInterval","_doAnim","resizeHandler","_resetTranslate","_setPosByCurrentIndex","_setSizeByScreen","keydownHandler","code","keyCode","which","gotoSlide","prev","next","hidePhoto","addEventListener","_registerRemoveEvent","orientationChangeHandler","_setHashByCurrentIndex","prevWidth","_getWindowWidth","photoResizeAfterWindowSizeChange","time","resolve","setTimeout","then","deviceorientationHandler","orientation","gamma","isBeingZoomed","photoSwipable","elastic","_calcGravity","beta","protoProps","staticProps","subClass","superClass","create","_inherits","event","fn","photo","_getElementByClass","handler","push","removeEventListener","wrapper","removeElement","clearInterval","removeTemplateEvents","item","number","Math","parseInt","_getSelectedItem","currentGroup","_this2","index","translateX","_this3","groupId","getAttribute","setAttribute","src","img","thumb","currentSrc","caption","translateY","width","height","loaded","processed","clickHandler","preventDefault","_initPhoto","addAppearEffect","style","overflow","_fireEvent","_loadItem","total","setArrow","hideUi","_getScaleBoarder","_this4","once","execEffect","appear","focus","_this5","isOldIE","_this5$data","effect","transform","afterX","afterY","getViewPos","offsetWidth","offsetHeight","top","left","toX","toY","_getWindowHeight","screenY","_this6","dir","arguments","undefined","scrollX","pageXOffset","documentElement","parentNode","scrollLeft","scrollY","pageYOffset","scrollTop","location","hash","_setHash","scroll","_doHideEffect","_this7","_getElementByQuery","opacity","className","query","_isTouched","touches","pageX","pageY","_this8","moveX","_listUpdate","history","pushState","replaceState","pathname","search","substr","hashObj","parseQuery","getCurrentItem","keys","Image","onload","onerror","_this9","to","promises","_getItemByIndex","all","windowX","windowY","_this10","onMoveClass","_loadNeighborItems","_slideList","showNextArrow","showPrevArrow","_isGestured","beforeGesture","beforePhotoDrag","_getTouchPos","isSwipable","dragStart","firstPos","oldPos","items","offset","swipeWidth","swipeHeight","afterGesture","afterPhotoDrag","abs","zoomPhoto","moveDir","onGesture","onPhotoDrag","_this11","_photoUpdate","oldPhotoPos","firstPhotoPos","_round","moveY","photoVX","photoVY","zoomOutPhoto","bound","_makeBound","flagX","flagY","maxX","minX","maxY","minY","_registerElasticForce","_getGesturePos","distance","_getDistance","oldDistance","size","oldScaleSize","posX","posY","force","sqrt","theta","atan2","windowWidth","windowHeight","_this12","now","toString","random","toUpperCase","point1","point2","val","precision","digit","pow","agent","navigator","userAgent","indexOf","addClass","removeClass","clientWidth","innerWidth","clientHeight","innerHeight","list","eventName","power","_getForceAndTheta","cos","sin","_createClass","defineProperties","_morphdom","_morphdom2","default","_util","_toConsumableArray","arr","Array","isArray","arr2","from","eventType","bindType","dataAction","replace","aTemplate","opt","atemplate","events","templates","n","template","html","innerHTML","binded","ele","on","delegateTarget","attr","checked","updateDataByString","split","action","type","string","_method","method","pts","apply","off","JSON","parse","stringify","localStorage","setItem","getItem","setData","a","b","limit","ret","strings","charAt","floor","getRand","s","shift","getDataFromObj","path","newValue","object","stack","match","splice","Number","that","touchs","touchnots","exists","empties","k","start","end","reg","RegExp","m","key2","_k","_n","_start","_end","_reg","_k2","_n2","_start2","_end2","_reg2","itemkey","_k3","_n3","_start3","_end3","empty","key3","key4","converter","getDataByString","keyItem","resolveBlock","t","txt","row","find","resolveInclude","resolveWith","hasLoop","resolveLoop","resolveAbsBlock","renderWay","part","beforeUpdated","_loop","tem","getHtml","innerText","doc","createElement","partHtml","outerHTML","insertAdjacentHTML","addDataBind","addActionBind","updateBindingData","onUpdated","temp","_template","binds","onewaybinds","_method2","_len","args","_key","prop","predicate","len","thisArg","iValue","range","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","createRange","toElement","str","trim","content","childNodes","createFragmentFromTemplate","selectNode","createContextualFragment","createFragmentFromRange","fragment","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","nodeName","toNodeName","charCodeAt","syncBooleanAttrProp","name","removeAttribute","specialElHandlers","OPTION","parentName","hasAttribute","selected","selectedIndex","INPUT","TEXTAREA","firstChild","oldValue","nodeValue","placeholder","SELECT","optgroup","curChild","nextSibling","noop","defaultGetNodeKey","node","morphdom","morphAttrs","fromNode","toNode","options","toNodeHtml","nodeType","firstElementChild","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","skipFromChildren","addChild","parent","child","appendChild","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","removeNode","skipKeyedNodes","removeChild","walkDiscardedChildNodes","handleNodeAdded","el","unmatchedFromEl","replaceChild","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","skipFrom","curToNodeChild","curFromNodeChild","outer","isSameNode","curFromNodeType","isCompatible","insertBefore","onBeforeNodeAddedResult","actualize","ownerDocument","cleanupFromEl","specialElHandler","morphChildren","indexTree","namespaceURI","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","elToRemove","morphdomFactory","attrName","attrNamespaceURI","attrValue","toNodeAttrs","attributes","localName","getAttributeNS","prefix","setAttributeNS","fromNodeAttrs","d","hasAttributeNS","removeAttributeNS","matches","findAncestor","_selector","closest","parentElement","listenerList","eventNames","capture","listener","ce","CustomEvent","defaultPrevented","Error","params","evt","origPrevent","bubbles","cancelable","detail","createEvent","initCustomEvent","get","Event","getBrowser","deepExtend","out","hasOwnProperty","dispatchEvent","param","iz","slice","join","decodeURIComponent","getBoundingClientRect","div","children","classList","add","remove","ua","toLowerCase","ver","appVersion","browser","NativePromise","global","nativePromiseSupported","r","Polyfill","NOOP","asyncTimer","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","callback","arg","invokeCallback","subscriber","owner","settled","state_","data_","promise","reject","handleThenable","resolved","fulfill","reason","publishFulfillment","publishRejection","publish","callbacks","then_","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","results","remaining","race","Timeout","clearFn","_id","_clearFn","scope","clearTimeout","timeout","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","process","handle","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","script","onreadystatechange","source","attachEvent","task","run","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","env","argv","version","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask"],"mappings":"0EAAA,IAAIA,EAGJA,EAAI,WACH,OAAOC,KADJ,GAIJ,IAECD,EAAIA,GAAK,IAAIE,SAAS,cAAb,GACR,MAAOC,GAEc,iBAAXC,SAAqBJ,EAAII,QAOrCC,EAAOC,QAAUN,G,iCCjBjBK,EAAOC,QAAU,EAAQ,M,iCCAzBC,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAiB,aAAI,EAErB,IAIgCI,EAJ5BC,GAI4BD,EAJQ,EAAQ,OAIKA,EAAIE,WAAaF,EAAM,CAAE,QAAWA,GAEzF,SAASG,EAAQH,GAAwT,OAAtOG,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBL,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXI,QAAyBJ,EAAIM,cAAgBF,QAAUJ,IAAQI,OAAOG,UAAY,gBAAkBP,IAAyBA,GAIxV,SAASQ,EAAkBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMnB,OAAOC,eAAeW,EAAQI,EAAWI,IAAKJ,IAI7S,SAASK,EAA2BC,EAAMC,GAAQ,OAAIA,GAA2B,WAAlBjB,EAAQiB,IAAsC,mBAATA,EAEpG,SAAgCD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIE,eAAe,6DAAgE,OAAOF,EAFbG,CAAuBH,GAAtCC,EAInI,SAASG,EAAgBC,GAAwJ,OAAnJD,EAAkB1B,OAAO4B,eAAiB5B,OAAO6B,eAAiB,SAAyBF,GAAK,OAAOA,EAAEG,WAAa9B,OAAO6B,eAAeF,KAA8BA,GAIxM,SAASI,EAAgBJ,EAAGK,GAA+G,OAA1GD,EAAkB/B,OAAO4B,gBAAkB,SAAyBD,EAAGK,GAAsB,OAAjBL,EAAEG,UAAYE,EAAUL,IAA6BA,EAAGK,GApBrK,EAAQ,KAsBR,IAEIC,EAAO,EAAQ,KAGfC,EADW,EAAQ,KACAA,QAEnBC,EAAW,CACbC,WAAY,CACVC,WAAY,aACZC,gBAAiB,mBACjBC,eAAgB,kBAChBC,gBAAiB,mBACjBC,kBAAmB,qBACnBC,cAAe,iBACfC,oBAAqB,wBACrBC,yBAA0B,6BAC1BC,kBAAmB,sBACnBC,iBAAkB,oBAClBC,cAAe,iBACfC,qBAAsB,yBACtBC,oBAAqB,wBACrBC,wBAAyB,wBACzBC,kBAAmB,sBACnBC,mBAAoB,uBACpBC,eAAgB,kBAChBC,qBAAsB,yBACtBC,iBAAkB,oBAClBC,gBAAiB,mBACjBC,kBAAmB,qBACnBC,kBAAmB,qBACnBC,iBAAkB,oBAClBC,qBAAsB,yBACtBC,mBAAoB,wBAEtBC,QAAS,CACPC,cAAe,uBACfC,cAAe,2BACfC,YAAa,0BAEfC,QAAQ,EACRC,KAAK,EACLC,eAAe,EACfC,iBAAiB,EACjBC,mBAAmB,EACnBC,eAAe,EACfC,iBAAiB,EACjBC,oBAAoB,EACpBC,YAAa,IACbC,aAAc,GACdC,aAAc,GACdC,cAAe,GACfC,WAAY,GACZC,WAAY,EACZC,YAAa,MACbC,cAAe,YAGbC,EAEJ,SAAUC,GAGR,SAASD,EAAWE,EAAUC,GAC5B,IAAIC,GAhFR,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAkF5GC,CAAgBhG,KAAMwF,IAEtBI,EAAQjE,EAA2B3B,KAAMgC,EAAgBwD,GAAY3D,KAAK7B,QACpEiG,KAAO1D,EAAK2D,OAAO,GAAIzD,EAAUkD,GACvCC,EAAMK,KAAKE,aAAe,EAC1BP,EAAMK,KAAKG,SAAW,EACtBR,EAAMK,KAAKI,MAAO,EAClBT,EAAMK,KAAKK,MAAQ,GACnBV,EAAMK,KAAKM,UAAY,EACvBX,EAAMK,KAAKO,OAAQ,EACnBZ,EAAMa,IAAM,CACVC,EAAG,EACHC,EAAG,GAELf,EAAMK,KAAKW,UAAY,EACvBhB,EAAMK,KAAKY,UAAY,EACvBjB,EAAMkB,SAAW,GACjBlB,EAAMmB,QAAU,CACdC,UAAWpB,EAAMoB,UACjBC,WAAYrB,EAAMqB,WAClBC,MAAOtB,EAAMsB,OAEftB,EAAMK,KAAKkB,WAAavB,EAAMuB,WAC9BvB,EAAMwB,SAA+B,iBAAb1B,EAAwB2B,SAASC,iBAAiB5B,GAAYA,EACtF,IAAI6B,EAAO,IAAIC,KACf5B,EAAM6B,UAAYF,EAAKG,UACvB9B,EAAM+B,YAAa,EACnB/B,EAAMgC,SAAU,EAChBhC,EAAMiC,GAAKjC,EAAMkC,aACjBlC,EAAMmC,GAAK,EACXnC,EAAMoC,GAAK,EACXpC,EAAMK,KAAKgC,aAAe,KAE1BrC,EAAMsC,YAAYtC,EAAMiC,GAnGb,6gLAqGXjC,EAAMK,KAAKkC,aAAevC,EAAMwC,gBAChC,IAAIC,EAAOhB,SAASiB,cAAc,QAClC/F,EAAKgG,OAAOF,EAAM,iBAAiBG,OAAO5C,EAAMiC,GAAI,aACpD,GAAGY,QAAQ5G,KAAK+D,EAAMwB,UAAU,SAAUsB,GACxC9C,EAAM+C,WAAWD,MAGnB9C,EAAMgD,SAEN,IAAIC,EAAcjD,EAAMkD,wBAUxB,GARID,GACFtG,EAAKwG,aAAaF,EAAYH,QAAS,SAGzC9C,EAAMoD,SAAWC,aAAY,WAC3BrD,EAAMsD,YACLtD,EAAMK,KAAKd,gBAETS,EAAMK,KAAKkC,aAAc,CAC5B,IAAIgB,EAAgB,WACbvD,EAAMuB,eAIXvB,EAAMwD,kBAENxD,EAAMyD,wBAENzD,EAAM0D,mBAEN1D,EAAMgD,WAGJW,EAAiB,SAAwBrJ,GAC3C,IAAIsJ,EAAOtJ,EAAEuJ,SAAWvJ,EAAEwJ,OAEF,IAApB9D,EAAMK,KAAKI,OAIF,KAATmD,EACF5D,EAAM+D,UAAU/D,EAAMK,KAAK2D,MACT,KAATJ,EACT5D,EAAM+D,UAAU/D,EAAMK,KAAK4D,MACT,KAATL,GACT5D,EAAMkE,cAWV,OAPA3J,OAAO4J,iBAAiB,SAAUZ,GAClChJ,OAAO4J,iBAAiB,UAAWR,GAEnC3D,EAAMoE,qBAAqB7J,OAAQ,SAAUgJ,GAE7CvD,EAAMoE,qBAAqB7J,OAAQ,UAAWoJ,GAEvC5H,EAA2BiE,GAGpC,IAAIqE,EAA2B,WAC7B,GAAKrE,EAAMuB,aAAX,CAKAvB,EAAMwD,kBAENxD,EAAMyD,wBAENzD,EAAMsE,yBAENtE,EAAM0D,mBAEN1D,EAAMgD,SAKN,IAAIuB,EAAYvE,EAAMwE,mBAKiB,SAASC,EAAiCC,GAC/E,IAAI9H,GAAQ,SAAU+H,GAEpBC,YAAW,WACTD,MACC,OACFE,MAAK,WACFN,IAAcvE,EAAMwE,mBAEtBxE,EAAMwD,kBAENxD,EAAMyD,wBAENzD,EAAMsE,yBAENtE,EAAM0D,mBAEN1D,EAAMgD,UACG0B,GApBD,KAsBRD,EAAiCC,EAAO,OAK9CD,CAAiC,KAOnC,GAJAlK,OAAO4J,iBAAiB,oBAAqBE,GAE7CrE,EAAMoE,qBAAqB7J,OAAQ,oBAAqB8J,IAEnDrE,EAAMK,KAAKrB,kBACd,OAAOjD,EAA2BiE,GAGpC,IAAI8E,EAA2B,SAAkCxK,GAC/D,IACIyK,EADUxK,OACYwK,YAErBzK,GAAMA,EAAE0K,QAAShF,EAAMK,KAAKgC,eAI5BrC,EAAMiF,eAAkBjF,EAAMkF,eAAkBlF,EAAMK,KAAK8E,UAAWnF,EAAMK,KAAKO,QAChE,IAAhBmE,EACF/E,EAAMoF,aAAa9K,EAAE0K,MAAO1K,EAAE+K,MACL,KAAhBN,EACT/E,EAAMoF,aAAa9K,EAAE+K,KAAM/K,EAAE0K,QACH,KAAjBD,EACT/E,EAAMoF,cAAc9K,EAAE+K,MAAO/K,EAAE0K,OACN,MAAhBD,GACT/E,EAAMoF,cAAc9K,EAAE0K,OAAQ1K,EAAE+K,SAStC,OAJA9K,OAAO4J,iBAAiB,oBAAqBW,GAE7C9E,EAAMoE,qBAAqB7J,OAAQ,oBAAqBuK,GAEjD9E,EAlQX,IAAsBE,EAAaoF,EAAYC,EA6gD7C,OArgDF,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItF,UAAU,sDAAyDqF,EAASpK,UAAYV,OAAOgL,OAAOD,GAAcA,EAAWrK,UAAW,CAAED,YAAa,CAAEP,MAAO4K,EAAU3J,UAAU,EAAMD,cAAc,KAAe6J,GAAYhJ,EAAgB+I,EAAUC,GAiEjXE,CAAU/F,EAAYC,GAzEFK,EAqQPN,GArQoB0F,EAqQR,CAAC,CACxBxJ,IAAK,KACLlB,MAAO,SAAYgL,EAAOC,GACxB,IAAIC,EAAQ1L,KAAK2L,mBAAmB3L,KAAKiG,KAAKvD,WAAWC,YAErDiJ,EAAU,SAAiB1L,GAC7BuL,EAAG5J,KAAK6J,EAAOxL,IAGjBwL,EAAM3B,iBAAiByB,EAAOI,GAE9B5L,KAAKgK,qBAAqB0B,EAAOF,EAAOI,KAEzC,CACDlK,IAAK,uBACLlB,MAAO,SAA8BU,EAAQsK,EAAOI,GAClD5L,KAAK8G,SAAS+E,KAAK,CACjB3K,OAAQA,EACRsK,MAAOA,EACPI,QAASA,MAGZ,CACDlK,IAAK,UACLlB,MAAO,WACLR,KAAK8G,SAAS2B,SAAQ,SAAUmD,GAC9BA,EAAQ1K,OAAO4K,oBAAoBF,EAAQJ,MAAOI,EAAQA,YAE5D,IAAIG,EAAU1E,SAASiB,cAAc,aAAcE,OAAOxI,KAAK6H,GAAI,OACnEtF,EAAKyJ,cAAcD,GACnBE,cAAcjM,KAAKgJ,UACnBhJ,KAAKkM,yBAEN,CACDxK,IAAK,YACLlB,MAAO,SAAmB2L,GACxB,OAAOA,EAAO,IAEf,CACDzK,IAAK,QACLlB,MAAO,SAAe4L,GACpB,OAAOC,KAAKnF,MAAMkF,KAEnB,CACD1K,IAAK,aACLlB,MAAO,SAAoBiG,GAKzB,OAJAA,EAAM6F,SAAS7F,EAAK,KAETzG,KAAKuM,mBAEE/F,MAAQxG,KAAKiG,KAAKM,YAErC,CACD7E,IAAK,aACLlB,MAAO,WACL,OAAOR,KAAKiG,KAAKK,MAAMtG,KAAKiG,KAAKuG,gBAElC,CACD9K,IAAK,kBACLlB,MAAO,WACL,IAAIiM,EAASzM,KAEDA,KAAKmH,aACXsB,SAAQ,SAAU0D,EAAMO,GAC5BP,EAAKQ,WAAaF,EAAOrC,kBAAoBsC,OAGhD,CACDhL,IAAK,aACLlB,MAAO,SAAoBkI,GACzB,IAAIkE,EAAS5M,KAET6M,EAAUnE,EAAQoE,aAAa,eAAiB,UAChDxG,EAAQtG,KAAKiG,KAAKK,MAEN,YAAZuG,GACFnE,EAAQqE,aAAa,aAAc,WAGhCzG,EAAMuG,KACTvG,EAAMuG,GAAW,IAGnB,IAAIH,EAAQpG,EAAMuG,GAASxL,OACvBgH,EAAOhB,SAASiB,cAAc,QAC9B0E,EAAMtE,EAAQoE,aAAa,QAC3BG,EAAMvE,EAAQJ,cAAc,OAC5B4E,EAAQF,EAERC,IAEAC,EADED,EAAIH,aAAa9M,KAAKiG,KAAKV,eACrB0H,EAAIH,aAAa9M,KAAKiG,KAAKV,eAC1B0H,EAAIE,WACLF,EAAIE,WAEJF,EAAID,KAIhB,IAAIb,EAAO,CACTa,IAAKA,EACLE,MAAOA,EACPE,QAAS1E,EAAQoE,aAAa,gBAC9BD,QAASA,EACTF,WAAY3M,KAAKoK,kBAAoBsC,EACrCA,MAAOA,EACPW,WAAY,EACZC,MAAO,GACPC,OAAQ,GACR1F,GAAIa,EAAQoE,aAAa,YAAcJ,EACvCc,QAAQ,EACRC,WAAW,EACX/E,QAASA,GAEXpC,EAAMuG,GAAShB,KAAKM,GACpBnM,KAAKiG,KAAKuG,aAAeK,EAChBnE,EAAQoE,aAAa,YAG5BpE,EAAQqE,aAAa,UAAWL,GAGlChE,EAAQqE,aAAa,aAAcL,GAEnC,IAAIgB,EAAe,SAAsBlC,GACvCA,EAAMmC,iBACNf,EAAO3G,KAAKuG,aAAe9D,EAAQoE,aAAa,cAChDF,EAAO3G,KAAKE,aAAemG,SAAS5D,EAAQoE,aAAa,cAAe,IAExEF,EAAO1C,yBAEP,IAAIrB,EAAc+D,EAAOL,mBAErB1D,EAAY2E,QACdZ,EAAOgB,aAEPhB,EAAOiB,gBAAgBnF,EAASG,GAEhC+D,EAAOhF,SAAU,EAEjBgF,EAAOhE,SAEPP,EAAKyF,MAAMC,SAAW,SAEtBnB,EAAOoB,WAAW,SAElBpB,EAAOqB,UAAUpF,GAAa4B,MAAK,WACjCmC,EAAOgB,aAEPhB,EAAOiB,gBAAgBnF,EAASG,GAEhC+D,EAAOhF,SAAU,EAEjBgF,EAAOhE,SAEPP,EAAKyF,MAAMC,SAAW,SAEtBnB,EAAOoB,WAAW,YAKxBtF,EAAQqB,iBAAiB,QAAS2D,GAElC1N,KAAKgK,qBAAqBtB,EAAS,QAASgF,KAE7C,CACDhM,IAAK,aACLlB,MAAO,WACLR,KAAKiG,KAAKiI,MAAQlO,KAAKmH,aAAa9F,OACpCrB,KAAKiG,KAAKI,MAAO,EACjBrG,KAAKiG,KAAKW,UAAY,EACtB5G,KAAKiG,KAAKY,UAAY,EAEtB7G,KAAKqJ,wBAELrJ,KAAKsJ,mBAELtJ,KAAKmO,WAEyB,SAA1BnO,KAAKiG,KAAKX,aAA0BtF,KAAKiG,KAAKkC,eAChDnI,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKiG,KAAKmI,QAAS,EACnBpO,KAAKiG,KAAKM,UAAYvG,KAAKqO,sBAG9B,CACD3M,IAAK,YACLlB,MAAO,WACL,IAAI8N,EAAStO,KAYb,GAVIA,KAAKiG,KAAKgC,cAAgBjI,KAAKiG,KAAKgC,aAAasG,OACnDvO,KAAKiG,KAAKgC,aAAasG,MAAO,EAC9BvO,KAAKwO,aAAa/D,MAAK,WACrB6D,EAAOrI,KAAKgC,aAAe,KAC3BqG,EAAOrI,KAAKwI,QAAS,EAErBH,EAAO1F,aAIP5I,KAAK4H,QAAS,CAChB5H,KAAK4H,SAAU,EACf,IAAIlF,EAAa1C,KAAKiG,KAAKvD,WAEb1C,KAAK2L,mBAAmBjJ,EAAWqB,mBAEzC2K,WAGX,CACDhN,IAAK,aACLlB,MAAO,WACL,IAAImO,EAAS3O,KAEb,OAAO,IAAIwC,GAAQ,SAAU+H,GACvBhI,EAAKqM,WACPrE,IAGF,IAAIsE,EAAcF,EAAO1I,KACrBgC,EAAe4G,EAAY5G,aAC3BvF,EAAamM,EAAYnM,WAEzBoM,EAASH,EAAOhD,mBAAmBjJ,EAAWyB,oBAOlD2K,EAAO/E,iBAAiB,iBALV,SAAS6B,IACrBkD,EAAOhD,oBAAoB,gBAAiBF,GAAS,GACrDrB,OAGgD,GAClDC,YAAW,WACTsE,EAAOhB,MAAMiB,UAAY,aAAavG,OAAOP,EAAa+G,OAAQ,QAAQxG,OAAOP,EAAagH,OAAQ,cAAczG,OAAOP,EAAazB,MAAO,OAC9I,SAGN,CACD9E,IAAK,kBACLlB,MAAO,SAAyBkI,EAASyD,GACvC,IAAgC,IAA5BnM,KAAKiG,KAAKvB,cAAd,CAKA,IAAIuI,EAAMvE,EAAQJ,cAAc,OAC5B7B,EAAMlE,EAAK2M,WAAWjC,GACtBwB,EAAS,GACTjI,EAAQ,EACZiI,EAAOnB,MAAQL,EAAIkC,YACnBV,EAAOlB,OAASN,EAAImC,aACpBX,EAAOY,IAAM5I,EAAI4I,IACjBZ,EAAOa,KAAO7I,EAAI6I,KAClBb,EAAOF,MAAO,EAEVtB,EAAIH,aAAa9M,KAAKiG,KAAKV,eAC7BkJ,EAAOxB,IAAMA,EAAIH,aAAa9M,KAAKiG,KAAKV,eAExCkJ,EAAOxB,IAAMd,EAAKa,IAGpB,IAAIuC,EAAMvP,KAAKoK,kBAEXoF,EAAMxP,KAAKyP,mBAEXC,EAAUF,EAAMxP,KAAKiG,KAAKhB,aAAejF,KAAKiG,KAAKf,aAEzB,SAA1BlF,KAAKiG,KAAKX,aAA0BtF,KAAKiG,KAAKkC,aAE9C3B,EADEyG,EAAIkC,YAAclC,EAAImC,aAChBI,EAAMvC,EAAImC,aAEVG,EAAMtC,EAAIkC,aAGhBV,EAAOnB,OAASmB,EAAOlB,OAEvB/G,EADE2F,EAAKoB,OAASmC,EACRvD,EAAKmB,MAAQmB,EAAOnB,MAEpBoC,EAAUjB,EAAOlB,OAElBkB,EAAOlB,OAASkB,EAAOnB,QAE9B9G,EADE2F,EAAKoB,OAASmC,EACRvD,EAAKoB,OAASkB,EAAOlB,OAErBmC,EAAUjB,EAAOlB,QAIzBkB,EAAOnB,MAAQ9G,EAAQ+I,IACzB/I,EAAQ+I,EAAMd,EAAOnB,QAIzB,IAAI5G,GAAKF,EAAQ,GAAK,EAAIyG,EAAIkC,aAAeI,EAAMtC,EAAIkC,YAAc3I,GAAS,EAC1EG,GAAKH,EAAQ,GAAK,EAAIyG,EAAImC,cAAgBI,EAAMvC,EAAImC,aAAe5I,GAAS,EAChFiI,EAAOO,OAAStI,EAChB+H,EAAOQ,OAAStI,EAChB8H,EAAOjI,MAAQA,EACfxG,KAAKiG,KAAKgC,aAAewG,OAzDvBzO,KAAKiG,KAAKwI,QAAS,IA2DtB,CACD/M,IAAK,YACLlB,MAAO,WACL,IAAImP,EAAS3P,KAET4P,EAAMC,UAAUxO,OAAS,QAAsByO,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,SAC9E7P,KAAKiG,KAAKI,MAAO,EACjBrG,KAAKiG,KAAKwI,QAAS,EACnBzO,KAAKiG,KAAKgC,aAAe,KACzBjI,KAAKiG,KAAKmI,QAAS,EACnBpO,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKiG,KAAKM,UAAY,EACtB,IAAIwJ,OAAiCD,IAAvB3P,OAAO6P,YAA4B7P,OAAO6P,aAAe3I,SAAS4I,iBAAmB5I,SAASgB,KAAK6H,YAAc7I,SAASgB,MAAM8H,WAC1IC,OAAiCN,IAAvB3P,OAAOkQ,YAA4BlQ,OAAOkQ,aAAehJ,SAAS4I,iBAAmB5I,SAASgB,KAAK6H,YAAc7I,SAASgB,MAAMiI,UAC1IjI,EAAOhB,SAASiB,cAAc,QAE9BnI,OAAOoQ,SAASC,MAClBxQ,KAAKyQ,SAAS,IAGhBtQ,OAAOuQ,OAAOX,EAASK,GAEvBpQ,KAAK2Q,cAAcf,GAAKnF,MAAK,WAC3BkF,EAAO/G,SAEPP,EAAKyF,MAAMC,SAAW,GAEtB4B,EAAO3B,WAAW,cAGrB,CACDtM,IAAK,gBACLlB,MAAO,SAAuBoP,GAC5B,IAAIgB,EAAS5Q,KAEb,OAAO,IAAIwC,GAAQ,SAAU+H,GACvBhI,EAAKqM,WACPrE,IAGF,IAAI7H,EAAakO,EAAO3K,KAAKvD,WAEzBgJ,EAAQkF,EAAOjF,mBAAmBjJ,EAAWC,YAE7CsK,EAAM2D,EAAOC,mBAAmB,aAAarI,OAAO9F,EAAWM,gBAE/DuK,EAASqD,EAAOnB,mBAOpB/D,EAAMoC,MAAMgD,QAAU,EAEV,WAARlB,EACF3C,EAAIa,MAAMiB,UAAY,cAAcvG,OAAO+E,EAAQ,OAClC,QAARqC,IACT3C,EAAIa,MAAMiB,UAAY,eAAevG,OAAO+E,EAAQ,QAGtD7B,EAAM3B,iBAAiB,iBAbT,SAAS6B,IACrBF,EAAMI,oBAAoB,gBAAiBF,GAAS,GACpDrB,OAW+C,QAGpD,CACD7I,IAAK,qBACLlB,MAAO,SAA4BuQ,GACjC,OAAO1J,SAASiB,cAAc,aAAcE,OAAOxI,KAAK6H,GAAI,QAASW,OAAOuI,MAE7E,CACDrP,IAAK,qBACLlB,MAAO,SAA4BwQ,GACjC,OAAO3J,SAASiB,cAAc,aAAcE,OAAOxI,KAAK6H,GAAI,OAAQW,OAAOwI,MAE5E,CACDtP,IAAK,eACLlB,MAAO,WACL,IAAIkG,EAAI,EACJC,EAAI,EACJzG,EAAqB,oBAAVsL,MAAwBxL,KAAKE,EAAIsL,MAUhD,OARIxL,KAAKiR,WAAW/Q,IAClBwG,EAAIxG,EAAEgR,QAAQ,GAAGC,MACjBxK,EAAIzG,EAAEgR,QAAQ,GAAGE,OACRlR,EAAEiR,QACXzK,EAAIxG,EAAEiR,MACNxK,EAAIzG,EAAEkR,OAGD,CACL1K,EAAGA,EACHC,EAAGA,KAGN,CACDjF,IAAK,iBACLlB,MAAO,SAAwBN,GAC7B,IAAIgR,EAAUhR,EAAEgR,QAChB,MAAO,CAAC,CACNxK,EAAGwK,EAAQ,GAAGC,MACdxK,EAAGuK,EAAQ,GAAGE,OACb,CACD1K,EAAGwK,EAAQ,GAAGC,MACdxK,EAAGuK,EAAQ,GAAGE,UAGjB,CACD1P,IAAK,wBACLlB,MAAO,WACL,IAAI6Q,EAASrR,KAGTsR,GAAS,EADDtR,KAAKmH,aACMnH,KAAKiG,KAAKE,cAAcwG,WAC/C3M,KAAKyG,IAAIC,EAAI4K,EACb9G,YAAW,WACT6G,EAAOpL,KAAK0G,WAAa2E,EACzBD,EAAOpL,KAAKoH,WAAa,EAEzBgE,EAAOE,gBACN,KAEJ,CACD7P,IAAK,yBACLlB,MAAO,WACL,IAAIuP,OAAiCD,IAAvB3P,OAAO6P,YAA4B7P,OAAO6P,aAAe3I,SAAS4I,iBAAmB5I,SAASgB,KAAK6H,YAAc7I,SAASgB,MAAM8H,WAC1IC,OAAiCN,IAAvB3P,OAAOkQ,YAA4BlQ,OAAOkQ,aAAehJ,SAAS4I,iBAAmB5I,SAASgB,KAAK6H,YAAc7I,SAASgB,MAAMiI,UAE1IzI,EADQ7H,KAAKmH,aACFnH,KAAKiG,KAAKE,cAAc0B,GACnCvB,EAAQtG,KAAKiG,KAAKuG,aAClBgE,EAAO,SAAShI,OAAOlC,EAAO,WAAWkC,OAAOX,GAEpD7H,KAAKyQ,SAASD,GAEdrQ,OAAOuQ,OAAOX,EAASK,KAExB,CACD1O,IAAK,WACLlB,MAAO,SAAkBgQ,GACjBrQ,OAAOqR,SAAWrR,OAAOqR,QAAQC,WAAezR,KAAKiG,KAAKpB,gBAI5D2L,EACFrQ,OAAOqR,QAAQE,aAAa,KAAM,KAAM,GAAGlJ,OAAO+H,SAASoB,UAAUnJ,OAAO+H,SAASqB,OAAQ,KAAKpJ,OAAOgI,IAEzGrQ,OAAOqR,QAAQE,aAAa,KAAM,KAAM,GAAGlJ,OAAO+H,SAASoB,UAAUnJ,OAAO+H,SAASqB,YAGxF,CACDlQ,IAAK,wBACLlB,MAAO,WACL,IAAI8F,EAAQtG,KAAKiG,KAAKK,MAClBkK,EAAOD,SAASC,KAAKqB,OAAO,GAC5BC,EAAUvP,EAAKwP,WAAWvB,GAC1B3H,EAAc,KAEdmJ,EAAiB,SAAwB7F,GACvC2F,EAAQxL,QAAU6F,EAAKU,SAAWiF,EAAQpG,QAAUS,EAAKtE,KAC3DgB,EAAcsD,IAOlB,OAHA7L,OAAO2R,KAAK3L,GAAOmC,SAAQ,SAAU/G,GACnC4E,EAAM5E,GAAK+G,QAAQuJ,MAEdnJ,IAER,CACDnH,IAAK,YACLlB,MAAO,SAAmB2L,GACxB,OAAO,IAAI3J,GAAQ,SAAU+H,GAC3B,IAAI0C,EAAM,IAAIiF,MAEdjF,EAAIkF,OAAS,WACXhG,EAAKmB,MAAQL,EAAIK,MACjBnB,EAAKoB,OAASN,EAAIM,OAClBpB,EAAKqB,QAAS,EACdjD,KAGF0C,EAAImF,QAAU,WACZ7H,KAGF0C,EAAID,IAAMb,EAAKa,SAGlB,CACDtL,IAAK,kBACLlB,MAAO,SAAyBkM,GAC9B,IAAIzG,EAAOjG,KAAKiG,KAEhB,OAAIA,EAAKK,MAAML,EAAKuG,cAAcE,GACzBzG,EAAKK,MAAML,EAAKuG,cAAcE,GAGhC,OAER,CACDhL,IAAK,qBACLlB,MAAO,WASL,IARA,IAAI6R,EAASrS,KAET0M,EAAQ1M,KAAKiG,KAAKE,aAClBd,EAAarF,KAAKiG,KAAKZ,WAEvBiN,EAAK5F,EAAQrH,EACbkN,EAAW,GAENnR,EAJEsL,EAAQrH,EAIAjE,EAAIkR,EAAIlR,IAAK,CAC9B,IAAI+K,EAAOnM,KAAKwS,gBAAgBpR,GAE5B+K,IAASA,EAAKqB,QAChB+E,EAAS1G,KAAK7L,KAAKiO,UAAU9B,IAI7BoG,EAASlR,QACXmB,EAAQiQ,IAAIF,GAAU9H,MAAK,WACzB4H,EAAOzE,aAEPyE,EAAOzJ,cAIZ,CACDlH,IAAK,mBACLlB,MAAO,WACL,IAAIkS,EAAU1S,KAAKoK,kBAEfuI,EAAU3S,KAAKyP,mBAEfxK,EAAejF,KAAKiG,KAAKhB,aACzBC,EAAelF,KAAKiG,KAAKf,aACzBwK,EAAUiD,GAAW1N,EAAeC,GAC5BlF,KAAKmH,aACXsB,SAAQ,SAAU0D,GACjBA,EAAKqB,SAIVrB,EAAKsB,WAAY,EACjBtB,EAAK3F,MAAQkJ,EAAUvD,EAAKoB,OAExBpB,EAAKoB,OAASmC,IAChBvD,EAAK3F,MAAQ,GAGf2F,EAAKzF,GAAKyF,EAAK3F,MAAQ,GAAK,EAAI2F,EAAKmB,OAASoF,EAAUvG,EAAKmB,MAAQnB,EAAK3F,OAAS,EACnF2F,EAAKxF,GAAKwF,EAAK3F,MAAQ,GAAK,EAAI2F,EAAKoB,QAAUoF,EAAUxG,EAAKoB,OAASpB,EAAK3F,OAAS,EAEjF2F,EAAKmB,MAAQnB,EAAK3F,MAAQkM,IAC5BvG,EAAK3F,MAAQkM,EAAUvG,EAAKmB,MAC5BnB,EAAKzF,GAAKyF,EAAK3F,MAAQ,GAAK,EAAI2F,EAAKmB,aAI1C,CACD5L,IAAK,aACLlB,MAAO,WACL,IAAIoS,EAAU5S,KAEdA,KAAKiG,KAAKM,UAAY,EACtBvG,KAAK6K,eAAgB,EACrB7K,KAAKiG,KAAKmI,QAAS,EACnBpO,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKiG,KAAKW,UAAY,EACtB5G,KAAKiG,KAAKY,UAAY,EACtB7G,KAAKiG,KAAK4M,aAAc,EAExB7S,KAAKqJ,wBAELrJ,KAAKkK,yBAELlK,KAAKsJ,mBAELkB,YAAW,WACT,IAAI2B,EAAOyG,EAAQrG,mBAEnBqG,EAAQ3M,KAAK4M,aAAc,EAE3BD,EAAQzE,WAERyE,EAAQhK,SAEJgK,EAAQ3M,KAAKG,WAAawM,EAAQ3M,KAAKE,cACzCyM,EAAQ5E,WAAW,UAGrB4E,EAAQ3M,KAAKG,SAAWwM,EAAQ3M,KAAKE,aAErCyM,EAAQE,qBAEH3G,EAAKqB,QACRoF,EAAQ3E,UAAU9B,GAAM1B,MAAK,WAC3BmI,EAAQhF,aAERgF,EAAQhK,cAGX,OAEJ,CACDlH,IAAK,YACLlB,MAAO,SAAmBkM,GACpB1M,KAAKE,GAAKF,KAAKE,EAAEyN,gBACnB3N,KAAKE,EAAEyN,iBAGT3N,KAAKiG,KAAKE,aAAemG,SAASI,EAAO,IAEpC1M,KAAKiG,KAAKE,eACbnG,KAAKiG,KAAKE,aAAe,GAG3BnG,KAAK+S,eAEN,CACDrR,IAAK,WACLlB,MAAO,WACL,IACIa,EADQrB,KAAKmH,aACE9F,OACfwI,EAAO7J,KAAKiG,KAAKE,aAAe,EAChCyD,EAAO5J,KAAKiG,KAAKE,aAAe,EACpCnG,KAAKiG,KAAK+M,eAAgB,EAC1BhT,KAAKiG,KAAKgN,eAAgB,EAEtBpJ,IAASxI,IACXrB,KAAKiG,KAAK4D,KAAOA,EACjB7J,KAAKiG,KAAK+M,eAAgB,IAGd,IAAVpJ,IACF5J,KAAKiG,KAAK2D,KAAOA,EACjB5J,KAAKiG,KAAKgN,eAAgB,KAG7B,CACDvR,IAAK,aACLlB,MAAO,WACL,GAAIR,KAAKkT,YAAYlT,KAAKE,GACxBF,KAAKmT,qBAMP,GAFAnT,KAAK6K,eAAgB,EAEjB7K,KAAKiG,KAAKO,MACZxG,KAAKoT,sBADP,CAKA,IAAI3M,EAAMzG,KAAKqT,eAEfrT,KAAKsT,YAAa,EAClBtT,KAAKuT,WAAY,EACjBvT,KAAKwT,SAAW/M,EAChBzG,KAAKyT,OAAShN,KAEf,CACD/E,IAAK,YACLlB,MAAO,WACL,IAAIkT,EAAQ1T,KAAKmH,aAEbM,GADO,IAAID,MACME,UACjBiM,EAAS3T,KAAKyH,UAAYA,EAC1BmM,EAAa,EACbC,EAAc,EASlB,GARA7T,KAAKsT,YAAa,EAClBtT,KAAK2H,YAAa,EAEd3H,KAAKyT,SACPG,EAAa5T,KAAKyT,OAAO/M,EAAI1G,KAAKwT,SAAS9M,EAC3CmN,EAAc7T,KAAKyT,OAAO9M,EAAI3G,KAAKwT,SAAS7M,GAG1C3G,KAAK6K,cACP7K,KAAK8T,oBAIP,GAAI9T,KAAKiG,KAAKO,MACZxG,KAAK+T,sBAEA,GAAKxR,EAAK4F,gBAAiC,IAAfyL,GAAoC,IAAhBC,EAAhD,CAKP,GAAIxH,KAAK2H,IAAIL,IAAW,KAAsB,IAAfC,GAAoC,IAAhBC,EAGjD,OAFA7T,KAAKE,EAAEyN,sBACP3N,KAAKiU,YAIPjU,KAAKyH,UAAYA,EAEjBzH,KAAKgO,WAAW,YAEK,eAAjBhO,KAAKkU,UACHN,GAAc5T,KAAKiG,KAAKjB,aAA0C,IAA3BhF,KAAKiG,KAAKE,aACnDnG,KAAKiG,KAAKE,cAAgB,EACjByN,IAAe5T,KAAKiG,KAAKjB,aAAehF,KAAKiG,KAAKE,eAAiBuN,EAAMrS,OAAS,IAC3FrB,KAAKiG,KAAKE,cAAgB,GAG5BnG,KAAK+S,cAGc,aAAjB/S,KAAKkU,UACHlU,KAAKiG,KAAKlB,oBAAsB8O,GAAe7T,KAAKiG,KAAKjB,YAC3DhF,KAAK8J,UAAU,UACN9J,KAAKiG,KAAKnB,iBAAmB+O,IAAgB7T,KAAKiG,KAAKjB,YAChEhF,KAAK8J,UAAU,QAEf9J,KAAKiG,KAAKoH,WAAa,EAEvBrN,KAAK+S,oBAhCP/S,KAAKiU,cAoCR,CACDvS,IAAK,SACLlB,MAAO,WAGL,GAFAR,KAAKE,EAAEyN,iBAEH3N,KAAKkT,YAAYlT,KAAKE,KAA0B,IAApBF,KAAK2H,WACnC3H,KAAKmU,iBAIP,IAAInU,KAAK6K,cAIT,GAAI7K,KAAKiG,KAAKO,MACZxG,KAAKoU,mBAIP,GAAKpU,KAAKsT,WAAV,CAIA,IAAI7M,EAAMzG,KAAKqT,eAEX3M,EAAID,EAAIC,EAAI1G,KAAKyT,OAAO/M,EACxBC,EAAIF,EAAIE,EAAI3G,KAAKwT,SAAS7M,EAE1B3G,KAAKuT,YACPvT,KAAKgO,WAAW,cAEhBhO,KAAKuT,WAAY,EAEblH,KAAK2H,IAAItN,GAAK2F,KAAK2H,IAAIrN,GACzB3G,KAAKkU,QAAU,aAEflU,KAAKkU,QAAU,YAIE,eAAjBlU,KAAKkU,SACPlU,KAAKyG,IAAIC,GAAKA,EACd1G,KAAKiG,KAAK0G,WAAa3M,KAAKyG,IAAIC,GAEhC1G,KAAKiG,KAAKoH,WAAa1G,EAGzB3G,KAAK2H,YAAa,EAClB3H,KAAKyT,OAAShN,EAEdzG,KAAKuR,iBAEN,CACD7P,IAAK,YACLlB,MAAO,WACL,IAAI6T,EAAUrU,KAEdA,KAAKiG,KAAKmI,QAAS,EACnBpO,KAAKiG,KAAKM,UAAYvG,KAAKqO,mBAEvBrO,KAAKiG,KAAKM,WAAa,IAI3BvG,KAAKiG,KAAKW,UAAY,EACtB5G,KAAKiG,KAAKY,UAAY,EAEtB7G,KAAKsU,eAEL9J,YAAW,WACT6J,EAAQpO,KAAKO,OAAQ,EAErB6N,EAAQC,eAERD,EAAQrG,WAAW,YAClB,QAEJ,CACDtM,IAAK,eACLlB,MAAO,WACLR,KAAKiG,KAAKM,UAAY,EACtBvG,KAAK6K,eAAgB,EACrB7K,KAAKiG,KAAKmI,QAAS,EACnBpO,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKiG,KAAKW,UAAY,EACtB5G,KAAKiG,KAAKY,UAAY,EAEtB7G,KAAKsU,eAELtU,KAAKgO,WAAW,aAEjB,CACDtM,IAAK,kBACLlB,MAAO,WACL,IAAIiG,EAAMzG,KAAKqT,eAEfrT,KAAK8K,eAAgB,EAEhB9K,KAAKiG,KAAKW,YACb5G,KAAKiG,KAAKW,UAAY,GAGnB5G,KAAKiG,KAAKY,YACb7G,KAAKiG,KAAKY,UAAY,GAGxB7G,KAAKuU,YAAc9N,EACnBzG,KAAKwU,cAAgB/N,IAEtB,CACD/E,IAAK,cACLlB,MAAO,WACL,GAAKR,KAAK8K,cAAV,CAIA9K,KAAKE,EAAEyN,iBAEP,IAAIlH,EAAMzG,KAAKqT,eAEX3M,EAAID,EAAIC,EAAI1G,KAAKuU,YAAY7N,EAC7BC,EAAIF,EAAIE,EAAI3G,KAAKuU,YAAY5N,EAE7B2K,EAAQtR,KAAKyU,OAAOzU,KAAKiG,KAAKM,UAAYG,EAAG,GAE7CgO,EAAQ1U,KAAKyU,OAAOzU,KAAKiG,KAAKM,UAAYI,EAAG,GAE5B,iBAAV2K,IACTtR,KAAKiG,KAAKW,WAAa0K,EACvBtR,KAAK2U,QAAUrD,GAGI,iBAAVoD,IACT1U,KAAKiG,KAAKY,WAAa6N,EACvB1U,KAAK4U,QAAUF,GAGjB1U,KAAKuU,YAAc9N,EAEnBzG,KAAKsU,kBAEN,CACD5S,IAAK,iBACLlB,MAAO,WACL,GAAIR,KAAKuU,YAAY7N,IAAM1G,KAAKwU,cAAc9N,GAAK1G,KAAK8K,cACtD9K,KAAK8K,eAAgB,EACrB9K,KAAK6U,mBACA,CACL7U,KAAK8K,eAAgB,EAErB,IAAIqB,EAAOnM,KAAKuM,mBAEZuI,EAAQ9U,KAAK+U,WAAW5I,GAExBwH,EAAS3T,KAAKiG,KAAKjB,YAAchF,KAAKiG,KAAKM,UAC3CyO,EAAQ,EACRC,EAAQ,EAcZ,GAZIjV,KAAKiG,KAAKW,UAAYkO,EAAMI,KAC9BF,GAAS,EACAhV,KAAKiG,KAAKW,UAAYkO,EAAMK,OACrCH,EAAQ,GAGNhV,KAAKiG,KAAKY,UAAYiO,EAAMM,KAC9BH,GAAS,EACAjV,KAAKiG,KAAKY,UAAYiO,EAAMO,OACrCJ,EAAQ,GAGNjV,KAAKiG,KAAKW,UAAYkO,EAAMI,KAAOvB,GAAqC,IAA3B3T,KAAKiG,KAAKE,aAEzD,YADAnG,KAAK2J,UAAU3J,KAAKiG,KAAK2D,MAI3B,GAAIkL,EAAMK,KAAOnV,KAAKiG,KAAKW,UAAY+M,GAAU3T,KAAKiG,KAAKE,aAAe,IAAMnG,KAAKiG,KAAKiI,MAExF,YADAlO,KAAK2J,UAAU3J,KAAKiG,KAAK4D,MASb,IAAVmL,GAAyB,IAAVC,GACjBjV,KAAK+H,GAAK/H,KAAK2U,QAAU,EACzB3U,KAAKgI,GAAKhI,KAAK4U,QAAU,GAEzB5U,KAAKsV,sBAAsBN,EAAOC,MAIvC,CACDvT,IAAK,gBACLlB,MAAO,WACLR,KAAKgO,WAAW,gBAEhB,IAAIvH,EAAMzG,KAAKuV,eAAevV,KAAKE,GAE/BsV,EAAWxV,KAAKyV,aAAahP,EAAI,GAAIA,EAAI,IAE7CzG,KAAK6K,eAAgB,EACrB7K,KAAK0V,YAAcF,EACnBxV,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKE,EAAEyN,mBAER,CACDjM,IAAK,YACLlB,MAAO,WACL,IAAIiG,EAAMzG,KAAKuV,eAAevV,KAAKE,GAE/BsV,EAAWxV,KAAKyV,aAAahP,EAAI,GAAIA,EAAI,IAEzCkP,GAAQH,EAAWxV,KAAK0V,aAAe,IACvCE,EAAe5V,KAAKiG,KAAKM,UACzBsP,EAAO7V,KAAKiG,KAAKW,UACjBkP,EAAO9V,KAAKiG,KAAKY,UACrB7G,KAAK6K,eAAgB,EACrB7K,KAAKiG,KAAKM,WAAavG,KAAKyU,OAAOkB,EAAM,GAErC3V,KAAKiG,KAAKM,UAAY,KACxBvG,KAAKiG,KAAKM,UAAY,IAIpBvG,KAAKiG,KAAKM,UAAYqP,IACxB5V,KAAKiG,KAAKW,WAAa,EAAI5G,KAAKiG,KAAKM,UAAYqP,GAAgBC,EACjE7V,KAAKiG,KAAKY,WAAa,EAAI7G,KAAKiG,KAAKM,UAAYqP,GAAgBE,GAG/D9V,KAAKiG,KAAKM,UAAY,GAAKvG,KAAKiG,KAAKM,UAAYvG,KAAKqO,mBACxDrO,KAAKiG,KAAKmI,QAAS,EAEnBpO,KAAKiG,KAAKmI,QAAS,EAGrBpO,KAAK0V,YAAcF,EACnBxV,KAAKE,EAAEyN,iBAEP3N,KAAKsU,iBAEN,CACD5S,IAAK,eACLlB,MAAO,WACDR,KAAKiG,KAAKM,UAAYvG,KAAKqO,qBAI/BrO,KAAKiG,KAAKW,UAAY,EACtB5G,KAAKiG,KAAKY,UAAY,EACtB7G,KAAKiG,KAAKO,OAAQ,EAClBxG,KAAKiG,KAAKM,UAAY,EACtBvG,KAAKiG,KAAKmI,QAAS,EAEnBpO,KAAKgO,WAAW,cAEhBhO,KAAKsU,kBAEN,CACD5S,IAAK,oBACLlB,MAAO,SAA2BuH,EAAIC,GACpC,MAAO,CACL+N,MAAO1J,KAAK2J,KAAKjO,EAAKA,EAAKC,EAAKA,GAChCiO,MAAO5J,KAAK6J,MAAMlO,EAAID,MAGzB,CACDrG,IAAK,mBACLlB,MAAO,WACL,IAAI2L,EAAOnM,KAAKuM,mBAEZ4J,EAAcnW,KAAKoK,kBAEnBgM,EAAepW,KAAKyP,mBAExB,OAAKlN,EAAK4F,eAINgE,EAAKmB,MAAQnB,EAAKoB,OACb6I,GAAgBjK,EAAKoB,OAASpB,EAAK3F,OAGrC2P,GAAehK,EAAKmB,MAAQnB,EAAK3F,OAP/B,EAAI2F,EAAK3F,QASnB,CACD9E,IAAK,aACLlB,MAAO,SAAoB2L,GACzB,IAEIgJ,EACAE,EACAH,EACAE,EALA9H,EAAQnB,EAAKmB,MAAQnB,EAAK3F,MAAQxG,KAAKiG,KAAKM,UAC5CgH,EAASpB,EAAKoB,OAASpB,EAAK3F,MAAQxG,KAAKiG,KAAKM,UAM9C4P,EAAcnW,KAAKoK,kBAEnBgM,EAAepW,KAAKyP,mBAkBxB,OAdE0F,EAFEgB,EAAc7I,GAER,GADR4H,GAAQiB,EAAc7I,GAAS,IAIvB,GADR4H,GAAQ5H,EAAQ6I,GAAe,GAM/Bd,EAFEe,EAAe7I,GAET,GADR6H,GAAQgB,EAAe7I,GAAU,IAIzB,GADR6H,GAAQ7H,EAAS6I,GAAgB,GAI5B,CACLjB,KAAMnV,KAAKyU,OAAOU,EAAM,GAAKnV,KAAKiG,KAAKM,UACvC8O,KAAMrV,KAAKyU,OAAOY,EAAM,GAAKrV,KAAKiG,KAAKM,UACvC2O,KAAMlV,KAAKyU,OAAOS,EAAM,GAAKlV,KAAKiG,KAAKM,UACvC6O,KAAMpV,KAAKyU,OAAOW,EAAM,GAAKpV,KAAKiG,KAAKM,aAG1C,CACD7E,IAAK,wBACLlB,MAAO,SAA+BkG,EAAGC,GACvC,IAAI0P,EAAUrW,KAEVmM,EAAOnM,KAAKuM,mBAEZuI,EAAQ9U,KAAK+U,WAAW5I,GAE5BnM,KAAKiG,KAAK8E,SAAU,EAEV,IAANrE,EACF1G,KAAKiG,KAAKW,UAAYkO,EAAMK,MACZ,IAAPzO,IACT1G,KAAKiG,KAAKW,UAAYkO,EAAMI,MAGpB,IAANvO,EACF3G,KAAKiG,KAAKY,UAAYiO,EAAMO,MACZ,IAAP1O,IACT3G,KAAKiG,KAAKY,UAAYiO,EAAMM,MAG9BpV,KAAKsU,eAEL9J,YAAW,WACT6L,EAAQpQ,KAAK8E,SAAU,EAEvBsL,EAAQ/B,iBACP,OAEJ,CACD5S,IAAK,mBACLlB,MAAO,WACL,IAAIyF,EAAOjG,KAAKiG,KACZyG,EAAQzG,EAAKE,aACjB,OAAOF,EAAKK,MAAML,EAAKuG,cAAcE,KAEtC,CACDhL,IAAK,aACLlB,MAAO,WACL,OAAQgH,KAAK8O,MAAMC,SAAS,IAAMlK,KAAKmK,SAASD,SAAS,IAAI1E,OAAO,EAAG,IAAI4E,gBAE5E,CACD/U,IAAK,eACLlB,MAAO,SAAsBkW,EAAQC,GACnC,IAAIjQ,EAAIgQ,EAAOhQ,EAAIiQ,EAAOjQ,EACtBC,EAAI+P,EAAO/P,EAAIgQ,EAAOhQ,EAC1B,OAAO0F,KAAK2J,KAAKtP,EAAIA,EAAIC,EAAIA,KAE9B,CACDjF,IAAK,SACLlB,MAAO,SAAgBoW,EAAKC,GAC1B,IAAIC,EAAQzK,KAAK0K,IAAI,GAAIF,GAIzB,OAHAD,GAAOE,EACPF,EAAMvK,KAAKnF,MAAM0P,GACjBA,GAAOE,IAGR,CACDpV,IAAK,aACLlB,MAAO,SAAoBN,GACzB,SAAIA,IAAKA,EAAEgR,WAMZ,CACDxP,IAAK,cACLlB,MAAO,SAAqBN,GAC1B,SAAIA,GAAKA,EAAEgR,SAAWhR,EAAEgR,QAAQ7P,OAAS,KAM1C,CACDK,IAAK,gBACLlB,MAAO,WACL,IAAIwW,EAAQC,UAAUC,UAEtB,OAAIF,EAAMG,QAAQ,UAAY,GAAKH,EAAMG,QAAQ,QAAU,GAAKH,EAAMG,QAAQ,QAAU,GAAKH,EAAMG,QAAQ,WAAa,IAMzH,CACDzV,IAAK,eACLlB,MAAO,SAAsBoK,EAAOK,IAC9BL,EAAQ,GAAKA,GAAS,KACxB5K,KAAK+H,IAAc,IAAR6C,IAGqB,IAA9B5K,KAAKiG,KAAKtB,kBAIVsG,EAAO,GAAKA,GAAQ,KACtBjL,KAAKgI,IAAa,IAAPiD,KAGd,CACDvJ,IAAK,eACLlB,MAAO,WACL,IAAIkC,EAAa1C,KAAKiG,KAAKvD,WAIvBuK,EAFUjN,KAAK6Q,mBAAmB,YAEpBvI,cAAc,IAAIE,OAAO9F,EAAWM,gBAElDyB,EAAMzE,KAAK6Q,mBAAmB,IAAIrI,OAAO9F,EAAWW,gBAEpDmB,EAASxE,KAAK6Q,mBAAmB,IAAIrI,OAAO9F,EAAWU,mBAEvDwD,EAAY5G,KAAKiH,WAAWjH,KAAKiG,KAAKW,WACtCC,EAAY7G,KAAKiH,WAAWjH,KAAKiG,KAAKY,WACtCN,EAAYvG,KAAKiG,KAAKM,UACtBwI,EAAY,aAAavG,OAAO5B,EAAW,OAAO4B,OAAO3B,EAAW,cAAc2B,OAAOjC,EAAW,KACxG0G,EAAIa,MAAMiB,UAAYA,EAElB/O,KAAKiG,KAAKO,MACZjE,EAAK6U,SAASnK,EAAKvK,EAAWO,qBAE9BV,EAAK8U,YAAYpK,EAAKvK,EAAWO,qBAG/BjD,KAAKiG,KAAK8E,QACZxI,EAAK6U,SAASnK,EAAKvK,EAAWQ,0BAE9BX,EAAK8U,YAAYpK,EAAKvK,EAAWQ,0BAG/BlD,KAAKiG,KAAKmI,QACR3J,GACFA,EAAIsI,aAAa,cAAe,QAG9BvI,GACFA,EAAOuI,aAAa,cAAe,UAGjCtI,GACFA,EAAIsI,aAAa,cAAe,SAG9BvI,GACFA,EAAOuI,aAAa,cAAe,YAIxC,CACDrL,IAAK,kBACLlB,MAAO,WACL,OAAI6G,UAAYA,SAAS4I,gBAChB5I,SAAS4I,gBAAgBqH,YACvBnX,QAAUA,OAAOoX,WACnBpX,OAAOoX,WAGT,IAER,CACD7V,IAAK,mBACLlB,MAAO,WACL,OAAI6G,UAAYA,SAAS4I,gBAChB5I,SAAS4I,gBAAgBuH,aACvBrX,QAAUA,OAAOsX,YACnBtX,OAAOsX,YAGT,IAER,CACD/V,IAAK,cACLlB,MAAO,WACL,IAAIkC,EAAa1C,KAAKiG,KAAKvD,WAEvBgV,EAAO1X,KAAK6Q,mBAAmB,IAAIrI,OAAO9F,EAAWiB,iBAErDoL,EAAY,aAAavG,OAAOxI,KAAKiG,KAAK0G,WAAY,OAAOnE,OAAOxI,KAAKiG,KAAKoH,WAAY,OAC9FqK,EAAK5J,MAAMiB,UAAYA,EAEnB/O,KAAKiG,KAAK4M,YACZtQ,EAAK6U,SAASM,EAAMhV,EAAWkB,sBAE/BrB,EAAK8U,YAAYK,EAAMhV,EAAWkB,wBAGrC,CACDlC,IAAK,aACLlB,MAAO,SAAoBmX,GACzB,IAAIjM,EAAQ1L,KAAK2L,mBAAmB3L,KAAKiG,KAAKvD,WAAWC,YAEzDJ,EAAKwG,aAAa2C,EAAOiM,KAE1B,CACDjW,IAAK,UACLlB,MAAO,WACL,KAAIR,KAAK6K,eAAiB7K,KAAKsT,YAActT,KAAK8K,eAAiB9K,KAAKiG,KAAK8E,UAAY/K,KAAKiG,KAAKO,MAAnG,CAIAxG,KAAKiG,KAAKW,WAAa5G,KAAK+H,GAC5B/H,KAAKiG,KAAKY,WAAa7G,KAAKgI,GAE5B,IAAImE,EAAOnM,KAAKuM,mBAEZuI,EAAQ9U,KAAK+U,WAAW5I,GAExBnM,KAAKiG,KAAKW,UAAYkO,EAAMK,MAC9BnV,KAAKiG,KAAKW,UAAYkO,EAAMK,KAC5BnV,KAAK+H,KAAO,IACH/H,KAAKiG,KAAKW,UAAYkO,EAAMI,OACrClV,KAAKiG,KAAKW,UAAYkO,EAAMI,KAC5BlV,KAAK+H,KAAO,IAGV/H,KAAKiG,KAAKY,UAAYiO,EAAMO,MAC9BrV,KAAKiG,KAAKY,UAAYiO,EAAMO,KAC5BrV,KAAKgI,KAAO,IACHhI,KAAKiG,KAAKY,UAAYiO,EAAMM,OACrCpV,KAAKiG,KAAKY,UAAYiO,EAAMM,KAC5BpV,KAAKgI,KAAO,IAGd,IAAI4P,EAAQ5X,KAAK6X,kBAAkB7X,KAAK+H,GAAI/H,KAAKgI,IAE7C+N,EAAQ6B,EAAM7B,MACdE,EAAQ2B,EAAM3B,MAClBF,GAAS/V,KAAKiG,KAAKb,WAEfiH,KAAK2H,IAAI+B,GAAS,KAItB/V,KAAK+H,GAAKsE,KAAKyL,IAAI7B,GAASF,EAC5B/V,KAAKgI,GAAKqE,KAAK0L,IAAI9B,GAASF,EAE5B/V,KAAKsU,sBAzgDmErT,EAAkB6E,EAAY9E,UAAWkK,GAAiBC,GAAalK,EAAkB6E,EAAaqF,GA6gD3K3F,EAr8CT,CAs8CE9E,EAAoB,SAEtBL,EAAiB,QAAImF,EACrBpF,EAAOC,QAAUA,EAAiB,S,iCCliDlCC,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAGT,IAAIwX,EAAe,WAAc,SAASC,EAAiB/W,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMnB,OAAOC,eAAeW,EAAQI,EAAWI,IAAKJ,IAAiB,OAAO,SAAUwE,EAAaoF,EAAYC,GAAiJ,OAA9HD,GAAY+M,EAAiBnS,EAAY9E,UAAWkK,GAAiBC,GAAa8M,EAAiBnS,EAAaqF,GAAqBrF,GAA7gB,GAEnB,EAAQ,KAER,IAMgCrF,EAN5ByX,EAAY,EAAQ,KAEpBC,GAI4B1X,EAJQyX,IAIazX,EAAIE,WAAaF,EAAM,CAAE2X,QAAS3X,GAFnF4X,EAAQ,EAAQ,KAIpB,SAASC,EAAmBC,GAAO,GAAIC,MAAMC,QAAQF,GAAM,CAAE,IAAK,IAAInX,EAAI,EAAGsX,EAAOF,MAAMD,EAAIlX,QAASD,EAAImX,EAAIlX,OAAQD,IAAOsX,EAAKtX,GAAKmX,EAAInX,GAAM,OAAOsX,EAAe,OAAOF,MAAMG,KAAKJ,GAI1L,IAAIK,EAAY,mKACZC,EAAW,qBACXC,EAAaF,EAAUG,QAAQ,YAAa,qBAAuB,gBAEnEC,EAAY,WACd,SAASA,EAAUC,GACjB,IAAIrT,EAAQ5F,MARhB,SAAyB6F,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAU5GC,CAAgBhG,KAAMgZ,GAEtBhZ,KAAKkZ,UAAY,GACjBlZ,KAAKmZ,OAAS,GACVF,GACF3Y,OAAO2R,KAAKgH,GAAKxQ,SAAQ,SAAU/G,GACjCkE,EAAMlE,GAAOuX,EAAIvX,MAGhB1B,KAAKiG,OACRjG,KAAKiG,KAAO,IAETjG,KAAKoZ,YACRpZ,KAAKoZ,UAAY,IAInB,IAFA,IAEShY,EAAI,EAAGiY,EAFArZ,KAAKoZ,UACE/X,OACKD,EAAIiY,EAAGjY,GAAK,EAAG,CACzC,IAAIkY,EAAWtZ,KAAKoZ,UAAUhY,GAC1BmY,GAAO,EAAIlB,EAAM3S,UAAU,IAAM4T,GAAUE,UAC/CxZ,KAAKkZ,UAAUrN,KAAK,CAAEhE,GAAIyR,EAAUC,KAAMA,EAAME,QAAQ,KAiiB5D,OA7hBAzB,EAAagB,EAAW,CAAC,CACvBtX,IAAK,cACLlB,MAAO,SAAqBkZ,GAC1B,IAAIjN,EAASzM,MAEb,EAAIqY,EAAMsB,IAAID,EAAK,cAAeb,GAAU,SAAU3Y,GACpD,IASQqY,EACA7E,EAVJxS,EAAShB,EAAE0Z,eACX3T,EAAO/E,EAAO4L,aAAa,aAC3B+M,EAAO3Y,EAAO4L,aAAa,QAC3BtM,EAAQU,EAAOV,MACfqZ,IACFrZ,EAAQA,EAAMuY,QAAQ,IAAK,KAEO,aAAhC7X,EAAO4L,aAAa,SAEhByL,EAAM,GACN7E,EAAQrM,SAASC,iBAAiB,eAAiBrB,EAAO,MAC9D,GAAGwC,QAAQ5G,KAAK6R,GAAO,SAAUvH,GAC3BA,EAAK2N,SACPvB,EAAI1M,KAAKM,EAAK3L,WAIqB,UAAhCU,EAAO4L,aAAa,SAC7BL,EAAOsN,mBAAmB9T,EAAMzF,MAGpCR,KAAKmZ,OAAOtN,KAAK,CACfnD,QAASgR,EACThU,SAAU,cACV8F,MAAOqN,MAGV,CACDnX,IAAK,gBACLlB,MAAO,SAAuBkZ,GAC5B,IAAI9M,EAAS5M,MAEb,EAAIqY,EAAMsB,IAAID,EAAKZ,EAAYF,GAAW,SAAU1Y,GAClD,IAAIgB,EAAShB,EAAE0Z,eACXT,EAASP,EAAUoB,MAAM,KACzBC,EAAS,SACbd,EAAO1Q,SAAQ,SAAU+C,GACnBtK,EAAO4L,aAAa,eAAiBtB,IACnCtL,EAAEga,OAAS1O,IACbyO,GAAU,IAAMzO,MAItB,IAAI2O,EAASjZ,EAAO4L,aAAa,QAAUmN,GAC3C,GAAKE,EAAL,CAGA,IAKMC,EALFC,EAASF,EAAOpB,QAAQ,YAAa,IAErCuB,EADYH,EAAOpB,QAAQ,mBAAoB,MAC/BiB,MAAM,KAE1B,GADApN,EAAO1M,EAAIA,EACP0M,EAAOyN,QAAUzN,EAAOyN,OAAOA,IAGhCD,EAAUxN,EAAOyN,QAAQA,GAAQE,MAAMH,EAAS9B,EAAmBgC,SAC3D1N,EAAOyN,IAChBzN,EAAOyN,GAAQE,MAAM3N,EAAQ0L,EAAmBgC,QAGpDta,KAAKmZ,OAAOtN,KAAK,CACfnD,QAASgR,EACThU,SAAUoT,EACVtN,MAAOqN,MAGV,CACDnX,IAAK,uBACLlB,MAAO,WACLR,KAAKmZ,OAAO1Q,SAAQ,SAAU+C,IAC5B,EAAI6M,EAAMmC,KAAKhP,EAAM9C,QAAS8C,EAAM9F,SAAU8F,EAAMA,YAGvD,CACD9J,IAAK,cACLlB,MAAO,SAAqBqH,EAAI0R,GAC9BvZ,KAAKkZ,UAAUrN,KAAK,CAAEhE,GAAIA,EAAI0R,KAAMA,EAAME,QAAQ,IAClDzZ,KAAKoZ,UAAUvN,KAAKhE,KAsBrB,CACDnG,IAAK,UACLlB,MAAO,WACL,OAAOia,KAAKC,MAAMD,KAAKE,UAAU3a,KAAKiG,SAEvC,CACDvE,IAAK,WACLlB,MAAO,SAAkBkB,GACvB,IAAIuE,EAAOwU,KAAKE,UAAU3a,KAAKiG,MAC/B2U,aAAaC,QAAQnZ,EAAKuE,KAE3B,CACDvE,IAAK,UACLlB,MAAO,SAAiByY,GACtB,IAAI3K,EAAStO,KAEbM,OAAO2R,KAAKgH,GAAKxQ,SAAQ,SAAU/G,GACT,mBAAbuX,EAAIvX,KACb4M,EAAOrI,KAAKvE,GAAOuX,EAAIvX,SAI5B,CACDA,IAAK,WACLlB,MAAO,SAAkBkB,GACvB,IAAIuE,EAAOwU,KAAKC,MAAME,aAAaE,QAAQpZ,IACvCuE,GACFjG,KAAK+a,QAAQ9U,KAGhB,CACDvE,IAAK,UACLlB,MAAO,SAAiBwa,EAAGC,GACzB,SAAU5O,KAAKmK,UAAYyE,EAAID,EAAI,IAAMA,IAE1C,CACDtZ,IAAK,cACLlB,MAAO,SAAqB0a,GAI1B,IAHA,IAAIC,EAAM,GACNC,EAAU,iEACV/Z,EAAS+Z,EAAQ/Z,OACZD,EAAI,EAAGA,EAAI8Z,EAAO9Z,GAAK,EAC9B+Z,GAAOC,EAAQC,OAAOhP,KAAKiP,MAAMtb,KAAKub,QAAQ,EAAGla,KAEnD,OAAO8Z,IAER,CACDzZ,IAAK,iBACLlB,MAAO,SAAwBgb,EAAGvZ,GAIhC,IADA,IAAI+Y,GADJQ,GADAA,EAAIA,EAAEzC,QAAQ,4BAA6B,QACrCA,QAAQ,MAAO,KACXiB,MAAM,KACTgB,EAAE3Z,QAAQ,CACf,IAAIgY,EAAI2B,EAAES,QACV,KAAIpC,KAAKpX,GAGP,OAAO,KAFPA,EAAIA,EAAEoX,GAKV,OAAOpX,IAER,CACDP,IAAK,kBACLlB,MAAO,SAAyBgb,GAC9B,IAAIvZ,EAAIjC,KAAKiG,KACb,OAAOjG,KAAK0b,eAAeF,EAAGvZ,KAE/B,CACDP,IAAK,qBACLlB,MAAO,SAA4Bmb,EAAMC,GAGvC,IAFA,IAAIC,EAAS7b,KAAKiG,KACd6V,EAAQH,EAAK3B,MAAM,KAChB8B,EAAMza,OAAS,GACpBwa,EAASA,EAAOC,EAAML,SAExBI,EAAOC,EAAML,SAAWG,IAEzB,CACDla,IAAK,qBACLlB,MAAO,SAA4Bmb,GAGjC,IAFA,IAAIE,EAAS7b,KAAKiG,KACd6V,EAAQH,EAAK3B,MAAM,KAChB8B,EAAMza,OAAS,GACpBwa,EAASA,EAAOC,EAAML,SAExB,IAAIA,EAAQK,EAAML,QACdA,EAAMM,MAAM,SACdF,EAAOG,OAAOC,OAAOR,GAAQ,UAEtBI,EAAOJ,KAGjB,CACD/Z,IAAK,eACLlB,MAAO,SAAsB+Y,EAAMpN,EAAM/K,GACvC,IAAI8a,EAAOlc,KACPmc,EAAS5C,EAAKwC,MAAM,mEACpBK,EAAY7C,EAAKwC,MAAM,sEACvBM,EAAS9C,EAAKwC,MAAM,8CACpBO,EAAU/C,EAAKwC,MAAM,8CAEzB,GAAII,EACF,IAAK,IAAII,EAAI,EAAGlD,EAAI8C,EAAO9a,OAAQkb,EAAIlD,EAAGkD,GAAK,EAAG,CAChD,IAAIC,EAAQL,EAAOI,GAEfE,GADJD,EAAQA,EAAMzD,QAAQ,kDAAmD,oBACzDA,QAAQ,QAAS,OAC7B2D,EAAM,IAAIC,OAAOH,EAAQ,sBAAwBC,EAAK,KAC1DlD,EAAOA,EAAKR,QAAQ2D,GAAK,SAAUE,EAAGC,EAAMjG,EAAK/M,GAE/C,MAAI,IADgC,mBAAfsC,EAAK0Q,GAAuB1Q,EAAK0Q,GAAMtC,MAAM2B,GAAQA,EAAKR,eAAemB,EAAM1Q,MAC/EyK,EACZ/M,EAEF,MAKb,GAAIuS,EACF,IAAK,IAAIU,EAAK,EAAGC,EAAKX,EAAU/a,OAAQyb,EAAKC,EAAID,GAAM,EAAG,CACxD,IAAIE,EAASZ,EAAUU,GAEnBG,GADJD,EAASA,EAAOjE,QAAQ,qDAAsD,uBAC5DA,QAAQ,QAAS,OAC/BmE,EAAO,IAAIP,OAAOK,EAAS,sBAAwBC,EAAM,KAC7D1D,EAAOA,EAAKR,QAAQmE,GAAM,SAAUN,EAAGC,EAAMjG,EAAK/M,GAEhD,MAAI,IADgC,mBAAfsC,EAAK0Q,GAAuB1Q,EAAK0Q,GAAMtC,MAAM2B,GAAQA,EAAKR,eAAemB,EAAM1Q,MAC/EyK,EACZ/M,EAEF,MAKb,GAAIwS,EACF,IAAK,IAAIc,EAAM,EAAGC,EAAMf,EAAOhb,OAAQ8b,EAAMC,EAAKD,GAAO,EAAG,CAC1D,IAAIE,EAAUhB,EAAOc,GAEjBG,GADJD,EAAUA,EAAQtE,QAAQ,6BAA8B,eACpCA,QAAQ,QAAS,OACjCwE,EAAQ,IAAIZ,OAAOU,EAAU,sBAAwBC,EAAO,KAChE/D,EAAOA,EAAKR,QAAQwE,GAAO,SAAUX,EAAGC,EAAMhT,GAC5C,IAAI2T,EAAgC,mBAAfrR,EAAK0Q,GAAuB1Q,EAAK0Q,GAAMtC,MAAM2B,GAAQA,EAAKR,eAAemB,EAAM1Q,GACpG,OAAIqR,GAAuB,IAAZA,EACN3T,EAEF,MAKb,GAAIyS,EACF,IAAK,IAAImB,EAAM,EAAGC,EAAMpB,EAAQjb,OAAQoc,EAAMC,EAAKD,GAAO,EAAG,CAC3D,IAAIE,EAAUrB,EAAQmB,GAElBG,GADJD,EAAUA,EAAQ5E,QAAQ,6BAA8B,eACpCA,QAAQ,QAAS,OACjC8E,EAAQ,IAAIlB,OAAOgB,EAAU,sBAAwBC,EAAO,KAChErE,EAAOA,EAAKR,QAAQ8E,GAAO,SAAUjB,EAAGC,EAAMhT,GAC5C,IAAI2T,EAAgC,mBAAfrR,EAAK0Q,GAAuB1Q,EAAK0Q,GAAMtC,MAAM2B,GAAQA,EAAKR,eAAemB,EAAM1Q,GACpG,OAAKqR,GAAuB,IAAZA,EAGT,GAFE3T,KA4Bf,OArBA0P,EAAOA,EAAKR,QAAQ,sDAAsD,SAAUM,EAAGyE,EAAMC,EAAMC,GACjG,IAAI/X,OAAO,EACX,GAAI,GAAK6X,GAAS,IAChB7X,EAAO7E,MACF,KAAI+K,EAAK2R,IAAwB,IAAf3R,EAAK2R,GAO5B,OAAIE,GAAa9B,EAAKnV,SAAWmV,EAAKnV,QAAQiX,GACrC9B,EAAKnV,QAAQiX,GAAWnc,KAAKqa,EAAM,IAErC,GARLjW,EADwB,mBAAfkG,EAAK2R,GACP3R,EAAK2R,GAAMvD,MAAM2B,GAEjB/P,EAAK2R,GAQhB,OAAIE,GAAa9B,EAAKnV,SAAWmV,EAAKnV,QAAQiX,GACrC9B,EAAKnV,QAAQiX,GAAWnc,KAAKqa,EAAMjW,GAErCA,OAMV,CACDvE,IAAK,kBACLlB,MAAO,SAAyB+Y,GAC9B,IAAI2C,EAAOlc,KAWX,OAVAuZ,EAAOA,EAAKR,QAAQ,YAAY,SAAUM,EAAGyE,GAC3C,IAAI7X,EAAOiW,EAAK+B,gBAAgBH,GAChC,YAAoB,IAAT7X,EACW,mBAATA,EACFA,EAAKsU,MAAM2B,GAEbjW,EAEFoT,OAIV,CACD3X,IAAK,iBACLlB,MAAO,SAAwB+Y,GAK7B,OAHAA,EAAOA,EAAKR,QADE,iCACe,SAAU6D,EAAGlb,GACxC,OAAO,EAAI2W,EAAM3S,UAAU,IAAMhE,GAAK8X,eAIzC,CACD9X,IAAK,cACLlB,MAAO,SAAqB+Y,GAM1B,OAJAA,EAAOA,EAAKR,QADA,mGACe,SAAU6D,EAAGlb,GAEtC,OADAkb,EAAIA,EAAE7D,QAAQ,4BAA6B,cAAiBrX,EAAM,aAKrE,CACDA,IAAK,cACLlB,MAAO,SAAqB+Y,GAC1B,IACI2C,EAAOlc,KAoBX,OAlBAuZ,EAAOA,EAAKR,QAHD,qGAGe,SAAU6D,EAAGlb,EAAKkV,GAC1C,IAAIsH,EAAUhC,EAAK+B,gBAAgBvc,GAC/BuQ,EAAO,GAMPkJ,EAAM,GACV,IALElJ,EADqB,mBAAZiM,EACFA,EAAQ3D,MAAM2B,GAEdgC,aAGW1F,MAClB,IAAK,IAAIpX,EAAI,EAAGiY,EAAIpH,EAAK5Q,OAAQD,EAAIiY,EAAGjY,GAAK,EAC3C+Z,GAAOe,EAAKiC,aAAavH,EAAK3E,EAAK7Q,GAAIA,GAK3C,OADA+Z,EAAMA,EAAIpC,QAAQ,aAAc,WAKnC,CACDrX,IAAK,aACLlB,MAAO,SAAoB+X,GACzB,IAAItS,EAAOjG,KAAKiG,KAQhB,OAPA3F,OAAO2R,KAAKhM,GAAMwC,SAAQ,SAAUrH,GAClC,IAAK,IAAIgd,EAAI,EAAG/E,EAAId,EAAIlX,OAAQ+c,EAAI/E,EAAG+E,GAAK,EACtChd,IAAMmX,EAAI6F,WACLnY,EAAK7E,MAIXpB,OAER,CACD0B,IAAK,UACLlB,MAAO,SAAiB6d,GAEtB,QAAIA,EAAItC,MADG,uGAMZ,CACDra,IAAK,UACLlB,MAAO,SAAiBwQ,EAAOsN,GAC7B,IAAIhF,EAAWtZ,KAAKkZ,UAAUqF,MAAK,SAAUpS,GAC3C,OAAOA,EAAKtE,KAAOmJ,KAEjBuI,EAAO,GAOX,GANID,GAAYA,EAASC,OACvBA,EAAOD,EAASC,MAEd+E,IACF/E,EAAOvI,IAEJuI,EACH,MAAO,GAET,IAAItT,EAAOjG,KAAKiG,KAMhB,IAJAsT,EAAOvZ,KAAKwe,eAAejF,GAE3BA,EAAOvZ,KAAKye,YAAYlF,GAEjBvZ,KAAK0e,QAAQnF,IAClBA,EAAOvZ,KAAK2e,YAAYpF,GAS1B,OAJAA,GAFAA,EAAOvZ,KAAKme,aAAa5E,EAAMtT,IAEnB8S,QAAQ,aAAc,OAElCQ,EAAOvZ,KAAK4e,gBAAgBrF,IAEhBR,QAAQ,gBAAiB,MAEtC,CACDrX,IAAK,SACLlB,MAAO,WACL,IAAImO,EAAS3O,KAET6e,EAAYhP,UAAUxO,OAAS,QAAsByO,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,OAChFiP,EAAOjP,UAAU,GAEjBuJ,EAAYpZ,KAAKoZ,UACjBpZ,KAAK+e,eACP/e,KAAK+e,gBAmCP,IAhCA,IAAIC,EAAQ,SAAe5d,EAAGiY,GAC5B,IAAI4F,EAAM7F,EAAUhY,GAChB4P,EAAQ,IAAMiO,EACd1F,EAAO5K,EAAOuQ,QAAQD,GACtB/d,GAAS,EAAImX,EAAM3S,UAAU,aAAgBuZ,EAAM,MACvD,GAAK/d,EAOE,GAAkB,SAAd2d,EACT3d,EAAOie,UAAY5F,OACd,GAAIuF,EAAM,CACf,IAAIM,EAAM/X,SAASgY,cAAc,OACjCD,EAAI5F,UAAYD,EAChB,IAAI+F,EAAWF,EAAI9W,cAAcwW,GAAMS,WACvC,EAAIpH,EAAWC,SAASlX,EAAOoH,cAAcwW,GAAOQ,QAEpD,EAAInH,EAAWC,SAASlX,EAAQ,iBAAoB+d,EAAM,KAAQ1F,EAAO,eAdzE,EAAIlB,EAAM3S,UAAUsL,GAAOwO,mBAAmB,WAAY,iBAAmBP,EAAM,YACjE,SAAdJ,GACF,EAAIxG,EAAM3S,UAAU,aAAgBuZ,EAAM,MAAOE,UAAY5F,GAE7D,EAAIlB,EAAM3S,UAAU,aAAgBuZ,EAAM,MAAOzF,UAAYD,EAYjE,IAAID,EAAW3K,EAAOuK,UAAUqF,MAAK,SAAUpS,GAC7C,OAAOA,EAAKtE,KAAOoX,KAEhB3F,EAASG,SACZH,EAASG,QAAS,EAClB9K,EAAO8Q,aAAY,EAAIpH,EAAM3S,UAAU,aAAgBuZ,EAAM,OAC7DtQ,EAAO+Q,eAAc,EAAIrH,EAAM3S,UAAU,aAAgBuZ,EAAM,SAI1D7d,EAAI,EAAGiY,EAAID,EAAU/X,OAAQD,EAAIiY,EAAGjY,GAAK,EAChD4d,EAAM5d,EAAGiY,GAMX,OAJArZ,KAAK2f,kBAAkBb,GACnB9e,KAAK4f,WACP5f,KAAK4f,UAAUd,GAEV9e,OAER,CACD0B,IAAK,oBACLlB,MAAO,SAA2Bse,GAIhC,IAHA,IAAInP,EAAS3P,KAEToZ,EAAYpZ,KAAKoZ,UACZhY,EAAI,EAAGiY,EAAID,EAAU/X,OAAQD,EAAIiY,EAAGjY,GAAK,EAAG,CACnD,IAAIye,EAAOzG,EAAUhY,GACjB0e,GAAY,EAAIzH,EAAM3S,UAAU,aAAgBma,EAAO,MACvDf,IACFgB,EAAYA,EAAUxX,cAAcwW,IAEtC,IAAIiB,EAAQD,EAAUxY,iBAAiB,eACvC,GAAGmB,QAAQ5G,KAAKke,GAAO,SAAU5T,GAC/B,IAAIlG,EAAO0J,EAAOsO,gBAAgB9R,EAAKW,aAAa,cAClB,aAA9BX,EAAKW,aAAa,SAAwD,UAA9BX,EAAKW,aAAa,QAC5D7G,IAASkG,EAAK3L,QAChB2L,EAAK2N,SAAU,GAIjB3N,EAAK3L,MAAQyF,KAIjB,IAAI+Z,EAAcF,EAAUxY,iBAAiB,sBAC7C,GAAGmB,QAAQ5G,KAAKme,GAAa,SAAU7T,GACrC,IAAIlG,EAAO0J,EAAOsO,gBAAgB9R,EAAKW,aAAa,qBAClB,aAA9BX,EAAKW,aAAa,SAAwD,UAA9BX,EAAKW,aAAa,QAC5D7G,IAASkG,EAAK3L,QAChB2L,EAAK2N,SAAU,GAIjB3N,EAAK3L,MAAQyF,KAKnB,OAAOjG,OAER,CACD0B,IAAK,cACLlB,MAAO,SAAqB6Z,GAG1B,IAFA,IAAI4F,EAEKC,EAAOrQ,UAAUxO,OAAQ8e,EAAO3H,MAAM0H,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC9FD,EAAKC,EAAO,GAAKvQ,UAAUuQ,GAG7B,OAAQH,EAAWjgB,KAAKqa,QAAQA,GAAQE,MAAM0F,EAAUE,KAEzD,CACDze,IAAK,kBACLlB,MAAO,SAAyB6f,GAC9B,OAAOrgB,KAAKiG,KAAKoa,GAAM9F,MAAMva,QAE9B,CACD0B,IAAK,SACLlB,MAAO,SAAgBmb,GAGrB,IAFA,IAAIE,EAAS7b,KAAKiG,KACd6V,EAAQH,EAAK3B,MAAM,KAChB8B,EAAMza,OAAS,GACpBwa,EAASA,EAAOC,EAAML,SAExB,IAAIA,EAAQK,EAAML,QAMlB,OALIA,EAAMM,MAAM,SACdF,EAAOG,OAAOC,OAAOR,GAAQ,UAEtBI,EAAOJ,GAETzb,SAIJgZ,EAzjBO,GA4jBhB3Y,EAAQ+X,QAAUY,EAClB5Y,EAAOC,QAAUA,EAAiB,S,iCCtlB7BmY,MAAMxX,UAAUud,MACjBje,OAAOC,eAAeiY,MAAMxX,UAAW,OAAQ,CAC3CR,MAAO,SAAU8f,GAEb,GAAY,MAARtgB,KACA,MAAM,IAAI+F,UAAU,+BAGxB,IAAItF,EAAMH,OAAON,MACbugB,EAAM9f,EAAIY,SAAW,EAEzB,GAAyB,mBAAdif,EACP,MAAM,IAAIva,UAAU,gCAOxB,IAJA,IAAIya,EAAU3Q,UAAU,GAEpBnD,EAAQ,EAELA,EAAQ6T,GAAK,CAChB,IAAIE,EAAShgB,EAAIiM,GACjB,GAAI4T,EAAUze,KAAK2e,EAASC,EAAQ/T,EAAOjM,GACvC,OAAOggB,EAEX/T,S,iCCzBhB,WAgEIgU,EACJ,IAEItB,EAA0B,oBAAb/X,cAA2ByI,EAAYzI,SACpDsZ,IAAyBvB,GAAO,YAAaA,EAAIC,cAAc,YAC/DuB,IAAsBxB,GAAOA,EAAIyB,aAAe,6BAA8BzB,EAAIyB,cAgCtF,SAASC,EAAUC,GAEf,OADAA,EAAMA,EAAIC,OACNL,EAhCR,SAAoCI,GAChC,IAAIzH,EAAW8F,EAAIC,cAAc,YAEjC,OADA/F,EAASE,UAAYuH,EACdzH,EAAS2H,QAAQC,WAAW,GAiC1BC,CAA2BJ,GACzBH,EA/Bf,SAAiCG,GAO7B,OANKL,IACDA,EAAQtB,EAAIyB,eACNO,WAAWhC,EAAI/W,MAGVqY,EAAMW,yBAAyBN,GAC9BG,WAAW,GAyBlBI,CAAwBP,GAtBrC,SAAgCA,GAC5B,IAAIQ,EAAWnC,EAAIC,cAAc,QAEjC,OADAkC,EAAS/H,UAAYuH,EACdQ,EAASL,WAAW,GAsBpBM,CAAuBT,GAalC,SAASU,EAAiBC,EAAQC,GAC9B,IAEIC,EAAeC,EAFfC,EAAeJ,EAAOK,SACtBC,EAAaL,EAAKI,SAGtB,OAAID,IAAiBE,IAIrBJ,EAAgBE,EAAaG,WAAW,GACxCJ,EAAcG,EAAWC,WAAW,GAMhCL,GAAiB,IAAMC,GAAe,GAC/BC,IAAiBE,EAAWvL,cAC5BoL,GAAe,IAAMD,GAAiB,IACtCI,IAAeF,EAAarL,eAkC3C,SAASyL,EAAoBR,EAAQC,EAAMQ,GACnCT,EAAOS,KAAUR,EAAKQ,KACtBT,EAAOS,GAAQR,EAAKQ,GAChBT,EAAOS,GACPT,EAAO3U,aAAaoV,EAAM,IAE1BT,EAAOU,gBAAgBD,IAKnC,IAAIE,EAAoB,CACpBC,OAAQ,SAASZ,EAAQC,GACrB,IAAIzR,EAAawR,EAAOxR,WACxB,GAAIA,EAAY,CACZ,IAAIqS,EAAarS,EAAW6R,SAAStL,cAClB,aAAf8L,IAEAA,GADArS,EAAaA,EAAWA,aACGA,EAAW6R,SAAStL,eAEhC,WAAf8L,GAA4BrS,EAAWsS,aAAa,cAChDd,EAAOc,aAAa,cAAgBb,EAAKc,WAIzCf,EAAO3U,aAAa,WAAY,YAChC2U,EAAOU,gBAAgB,aAK3BlS,EAAWwS,eAAiB,GAGpCR,EAAoBR,EAAQC,EAAM,aAQtCgB,MAAO,SAASjB,EAAQC,GACpBO,EAAoBR,EAAQC,EAAM,WAClCO,EAAoBR,EAAQC,EAAM,YAE9BD,EAAOlhB,QAAUmhB,EAAKnhB,QACtBkhB,EAAOlhB,MAAQmhB,EAAKnhB,OAGnBmhB,EAAKa,aAAa,UACnBd,EAAOU,gBAAgB,UAI/BQ,SAAU,SAASlB,EAAQC,GACvB,IAAI/F,EAAW+F,EAAKnhB,MAChBkhB,EAAOlhB,QAAUob,IACjB8F,EAAOlhB,MAAQob,GAGnB,IAAIiH,EAAanB,EAAOmB,WACxB,GAAIA,EAAY,CAGZ,IAAIC,EAAWD,EAAWE,UAE1B,GAAID,GAAYlH,IAAcA,GAAYkH,GAAYpB,EAAOsB,YACzD,OAGJH,EAAWE,UAAYnH,IAG/BqH,OAAQ,SAASvB,EAAQC,GACrB,IAAKA,EAAKa,aAAa,YAAa,CAUhC,IATA,IAOIU,EACAnB,EARAW,GAAiB,EACjBthB,EAAI,EAKJ+hB,EAAWzB,EAAOmB,WAGhBM,GAEF,GAAiB,cADjBpB,EAAWoB,EAASpB,UAAYoB,EAASpB,SAAStL,eAG9C0M,GADAD,EAAWC,GACSN,eACjB,CACH,GAAiB,WAAbd,EAAuB,CACvB,GAAIoB,EAASX,aAAa,YAAa,CACnCE,EAAgBthB,EAChB,MAEJA,MAEJ+hB,EAAWA,EAASC,cACHF,IACbC,EAAWD,EAASE,YACpBF,EAAW,MAKvBxB,EAAOgB,cAAgBA,KAUnC,SAASW,KAET,SAASC,EAAkBC,GACzB,GAAIA,EACF,OAAQA,EAAKzW,cAAgByW,EAAKzW,aAAa,OAAUyW,EAAK1b,GA2clE,IAAI2b,EAvcJ,SAAyBC,GAEvB,OAAO,SAAkBC,EAAUC,EAAQC,GAKzC,GAJKA,IACHA,EAAU,IAGU,iBAAXD,EACT,GAA0B,cAAtBD,EAAS3B,UAAkD,SAAtB2B,EAAS3B,UAA6C,SAAtB2B,EAAS3B,SAAqB,CACrG,IAAI8B,EAAaF,GACjBA,EAASvE,EAAIC,cAAc,SACpB7F,UAAYqK,OAEnBF,EAAS7C,EAAU6C,QAzBI,KA2BhBA,EAAOG,WAChBH,EAASA,EAAOI,mBAGlB,IAAIC,EAAaJ,EAAQI,YAAcV,EACnCW,EAAoBL,EAAQK,mBAAqBZ,EACjDa,EAAcN,EAAQM,aAAeb,EACrCc,EAAoBP,EAAQO,mBAAqBd,EACjDe,EAAcR,EAAQQ,aAAef,EACrCgB,EAAwBT,EAAQS,uBAAyBhB,EACzDiB,EAAkBV,EAAQU,iBAAmBjB,EAC7CkB,EAA4BX,EAAQW,2BAA6BlB,EACjEmB,EAAmBZ,EAAQY,kBAAoBnB,EAC/CoB,EAAWb,EAAQa,UAAY,SAASC,EAAQC,GAAQ,OAAOD,EAAOE,YAAYD,IAClFE,GAAwC,IAAzBjB,EAAQiB,aAGvBC,EAAkBxkB,OAAOgL,OAAO,MAChCyZ,EAAmB,GAEvB,SAASC,EAAgBtjB,GACvBqjB,EAAiBlZ,KAAKnK,GAqCxB,SAASujB,EAAW1B,EAAMrT,EAAYgV,IACA,IAAhCb,EAAsBd,KAItBrT,GACFA,EAAWiV,YAAY5B,GAGzBe,EAAgBf,GA3ClB,SAAS6B,EAAwB7B,EAAM2B,GACrC,GArDa,IAqDT3B,EAAKO,SAEP,IADA,IAAIX,EAAWI,EAAKV,WACbM,GAAU,CAEf,IAAIzhB,OAAMoO,EAENoV,IAAmBxjB,EAAMsiB,EAAWb,IAGtC6B,EAAgBtjB,IAKhB4iB,EAAgBnB,GACZA,EAASN,YACXuC,EAAwBjC,EAAU+B,IAItC/B,EAAWA,EAASC,aAuBxBgC,CAAwB7B,EAAM2B,IAkDhC,SAASG,EAAgBC,GACvBpB,EAAYoB,GAGZ,IADA,IAAInC,EAAWmC,EAAGzC,WACXM,GAAU,CACf,IAAIC,EAAcD,EAASC,YAEvB1hB,EAAMsiB,EAAWb,GACrB,GAAIzhB,EAAK,CACP,IAAI6jB,EAAkBT,EAAgBpjB,GAGlC6jB,GAAmB9D,EAAiB0B,EAAUoC,IAChDpC,EAASjT,WAAWsV,aAAaD,EAAiBpC,GAClDsC,EAAQF,EAAiBpC,IAEzBkC,EAAgBlC,QAKlBkC,EAAgBlC,GAGlBA,EAAWC,GAuBf,SAASqC,EAAQ/D,EAAQC,EAAMkD,GAC7B,IAAIa,EAAU1B,EAAWrC,GAQzB,GANI+D,UAGKZ,EAAgBY,IAGpBb,EAAc,CAEjB,IAAwC,IAApCV,EAAkBzC,EAAQC,GAC5B,OAQF,GAJA8B,EAAW/B,EAAQC,GAEnByC,EAAY1C,IAEoC,IAA5C6C,EAA0B7C,EAAQC,GACpC,OAIoB,aAApBD,EAAOK,SAOb,SAAuBL,EAAQC,GAC7B,IAGIgE,EACAC,EAEAC,EACAC,EACAC,EARAC,EAAWxB,EAAiB9C,EAAQC,GACpCsE,EAAiBtE,EAAKkB,WACtBqD,EAAmBxE,EAAOmB,WAS9BsD,EAAO,KAAOF,GAAgB,CAK5B,IAJAH,EAAgBG,EAAe7C,YAC/BuC,EAAe3B,EAAWiC,IAGlBD,GAAYE,GAAkB,CAGpC,GAFAL,EAAkBK,EAAiB9C,YAE/B6C,EAAeG,YAAcH,EAAeG,WAAWF,GAAmB,CAC5ED,EAAiBH,EACjBI,EAAmBL,EACnB,SAASM,EAGXP,EAAiB5B,EAAWkC,GAE5B,IAAIG,EAAkBH,EAAiBpC,SAGnCwC,OAAexW,EA6EnB,GA3EIuW,IAAoBJ,EAAenC,WAlQ9B,IAmQHuC,GAGEV,EAGEA,IAAiBC,KAIdG,EAAiBjB,EAAgBa,IAChCE,IAAoBE,EAMtBO,GAAe,GASf5E,EAAO6E,aAAaR,EAAgBG,GAIhCN,EAGFZ,EAAgBY,GAIhBX,EAAWiB,EAAkBxE,GAAQ,GAGvCwE,EAAmBH,GAKrBO,GAAe,GAGVV,IAETU,GAAe,IAGjBA,GAAgC,IAAjBA,GAA0B7E,EAAiByE,EAAkBD,KAM1ER,EAAQS,EAAkBD,IA5T1B,IA+TOI,GA9TJ,GA8TqCA,IAE1CC,GAAe,EAGXJ,EAAiBnD,YAAckD,EAAelD,YAChDmD,EAAiBnD,UAAYkD,EAAelD,aAM9CuD,EAAc,CAGhBL,EAAiBH,EACjBI,EAAmBL,EACnB,SAASM,EASPP,EAGFZ,EAAgBY,GAIhBX,EAAWiB,EAAkBxE,GAAQ,GAGvCwE,EAAmBL,EAOrB,GAAIF,IAAiBI,EAAiBjB,EAAgBa,KAAkBlE,EAAiBsE,EAAgBE,GAEnGD,GAAWvB,EAAS/C,EAAQqE,GAChCN,EAAQM,EAAgBE,OACnB,CACL,IAAIO,EAA0BvC,EAAkBgC,IAChB,IAA5BO,IACEA,IACFP,EAAiBO,GAGfP,EAAeQ,YACjBR,EAAiBA,EAAeQ,UAAU/E,EAAOgF,eAAiBtH,IAEpEqF,EAAS/C,EAAQuE,GACjBZ,EAAgBY,IAIpBA,EAAiBH,EACjBI,EAAmBL,GAlNvB,SAAuBnE,EAAQwE,EAAkBN,GAI/C,KAAOM,GAAkB,CACvB,IAAIL,EAAkBK,EAAiB9C,aAClCwC,EAAiB5B,EAAWkC,IAG/BlB,EAAgBY,GAIhBX,EAAWiB,EAAkBxE,GAAQ,GAEvCwE,EAAmBL,GAsMrBc,CAAcjF,EAAQwE,EAAkBN,GAExC,IAAIgB,EAAmBvE,EAAkBX,EAAOK,UAC5C6E,GACFA,EAAiBlF,EAAQC,GA5KzBkF,CAAcnF,EAAQC,GAEtBU,EAAkBO,SAASlB,EAAQC,IA9FvC,SAASmF,EAAUvD,GACjB,GAhIa,IAgITA,EAAKO,UA/HgB,KA+HaP,EAAKO,SAEzC,IADA,IAAIX,EAAWI,EAAKV,WACbM,GAAU,CACf,IAAIzhB,EAAMsiB,EAAWb,GACjBzhB,IACFojB,EAAgBpjB,GAAOyhB,GAIzB2D,EAAU3D,GAEVA,EAAWA,EAASC,aAK1B0D,CAAUpD,GA2PV,IA7gBqBvB,EAAM4E,EA6gBvBC,EAActD,EACduD,EAAkBD,EAAYlD,SAC9BoD,EAAavD,EAAOG,SAExB,IAAKe,EAGH,GAlZa,IAkZToC,EAlZS,IAmZPC,EACGzF,EAAiBiC,EAAUC,KAC9BW,EAAgBZ,GAChBsD,EA/gBZ,SAAsBtF,EAAQC,GAE1B,IADA,IAAIwB,EAAWzB,EAAOmB,WACfM,GAAU,CACb,IAAIgE,EAAYhE,EAASC,YACzBzB,EAAKiD,YAAYzB,GACjBA,EAAWgE,EAEf,OAAOxF,EAwgBeyF,CAAa1D,GAxhBdvB,EAwhBwCwB,EAAO5B,UAxhBzCgF,EAwhBmDpD,EAAOoD,eAtnB1E,iCA+FaA,EAEpB3H,EAAIiI,gBAAgBN,EAAc5E,GADlC/C,EAAIC,cAAc8C,MA0hBhB6E,EAAcrD,OAEX,GA1ZG,IA0ZCsD,GAzZE,IAyZ+BA,EAAkC,CAC5E,GAAIC,IAAeD,EAKjB,OAJID,EAAYjE,YAAcY,EAAOZ,YACnCiE,EAAYjE,UAAYY,EAAOZ,WAG1BiE,EAGPA,EAAcrD,EAKpB,GAAIqD,IAAgBrD,EAGlBW,EAAgBZ,OACX,CACL,GAAIC,EAAOyC,YAAczC,EAAOyC,WAAWY,GACzC,OAUF,GAPAvB,EAAQuB,EAAarD,EAAQkB,GAOzBE,EACF,IAAK,IAAI3jB,EAAE,EAAGmf,EAAIwE,EAAiB1jB,OAAQD,EAAEmf,EAAKnf,IAAK,CACrD,IAAIkmB,EAAaxC,EAAgBC,EAAiB3jB,IAC9CkmB,GACFrC,EAAWqC,EAAYA,EAAWpX,YAAY,IAkBtD,OAZK2U,GAAgBmC,IAAgBtD,GAAYA,EAASxT,aACpD8W,EAAYP,YACdO,EAAcA,EAAYP,UAAU/C,EAASgD,eAAiBtH,IAOhEsE,EAASxT,WAAWsV,aAAawB,EAAatD,IAGzCsD,GAIIO,EAnvBf,SAAoB7D,EAAUC,GAC1B,IACI9J,EACA2N,EACAC,EACAC,EAJAC,EAAchE,EAAOiE,WAQzB,GAXyB,KAWrBjE,EAAOG,UAXc,KAWyBJ,EAASI,SAA3D,CAKA,IAAK,IAAI1iB,EAAIumB,EAAYtmB,OAAS,EAAGD,GAAK,EAAGA,IAEzComB,GADA3N,EAAO8N,EAAYvmB,IACH+gB,KAChBsF,EAAmB5N,EAAKkN,aACxBW,EAAY7N,EAAKrZ,MAEbinB,GACAD,EAAW3N,EAAKgO,WAAaL,EACjB9D,EAASoE,eAAeL,EAAkBD,KAEpCE,IACM,UAAhB7N,EAAKkO,SACLP,EAAW3N,EAAKsI,MAEpBuB,EAASsE,eAAeP,EAAkBD,EAAUE,KAG5ChE,EAAS5W,aAAa0a,KAEhBE,GACdhE,EAAS3W,aAAaya,EAAUE,GAS5C,IAFA,IAAIO,EAAgBvE,EAASkE,WAEpBM,EAAID,EAAc5mB,OAAS,EAAG6mB,GAAK,EAAGA,IAE3CV,GADA3N,EAAOoO,EAAcC,IACL/F,MAChBsF,EAAmB5N,EAAKkN,eAGpBS,EAAW3N,EAAKgO,WAAaL,EAExB7D,EAAOwE,eAAeV,EAAkBD,IACzC9D,EAAS0E,kBAAkBX,EAAkBD,IAG5C7D,EAAOnB,aAAagF,IACrB9D,EAAStB,gBAAgBoF,OA6rB1B,a,iCCrvBflnB,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAET,IAAI6nB,EAAUhoB,EAAQgoB,QAAU,SAAiB3f,EAASsI,GAGxD,IAFA,IAAIqX,GAAW3f,EAAQrB,UAAYqB,EAAQge,eAAepf,iBAAiB0J,GACvE5P,EAAIinB,EAAQhnB,SACPD,GAAK,GAAKinB,EAAQlc,KAAK/K,KAAOsH,IACvC,OAAOtH,GAAK,GAOVknB,GAJWjoB,EAAQqF,SAAW,SAAkB6iB,GAClD,OAAOlhB,SAASiB,cAAcigB,IAGbloB,EAAQioB,aAAe,SAAsB5f,EAAShD,GACvE,GAA+B,mBAApBgD,EAAQ8f,QACjB,OAAO9f,EAAQ8f,QAAQ9iB,IAAa,KAEtC,KAAOgD,GAAWA,IAAYrB,UAAU,CACtC,GAAIghB,EAAQ3f,EAAShD,GACnB,OAAOgD,EAETA,EAAUA,EAAQ+f,cAEpB,OAAO,OAGLC,EAAe,GAEVroB,EAAQsZ,GAAK,SAAYjR,EAASsI,EAAO2X,EAAYld,GAC5D,IAAImd,EAAU/Y,UAAUxO,OAAS,QAAsByO,IAAjBD,UAAU,IAAmBA,UAAU,GAEzEsJ,EAASwP,EAAW3O,MAAM,KAC9Bb,EAAO1Q,SAAQ,SAAU+C,GACvB,IAAIqd,EAAW,SAAkB3oB,GAC/B,IAAI0Z,EAAiB0O,EAAapoB,EAAEgB,OAAQ8P,GACxC4I,IACF1Z,EAAE0Z,eAAiBA,EACnBnO,EAAGvL,KAGPwoB,EAAa7c,KAAK,CAAEgd,SAAUA,EAAUngB,QAASA,EAASsI,MAAOA,EAAOxF,MAAOA,EAAOod,QAASA,IAC/FlgB,EAAQqB,iBAAiByB,EAAOqd,EAAUD,OAIpCvoB,EAAQma,IAAM,SAAa9R,EAASsI,EAAO2X,GACtCA,EAAW3O,MAAM,KACvBvR,SAAQ,SAAU+C,GACvBkd,EAAajgB,SAAQ,SAAU0D,EAAMO,GAC/BP,EAAKzD,UAAYA,GAAWyD,EAAK6E,QAAUA,GAAS7E,EAAKX,QAAUA,IACrE9C,EAAQoD,oBAAoBN,EAAOW,EAAK0c,SAAU1c,EAAKyc,SACvDF,EAAa1M,OAAOtP,EAAO,Y,kBChDnC,IACI,IAAIoc,EAAK,IAAI3oB,OAAO4oB,YAAY,QAEhC,GADAD,EAAGnb,kBACyB,IAAxBmb,EAAGE,iBAGH,MAAM,IAAIC,MAAM,6BAEtB,MAAM/oB,GACN,IAAI6oB,EAAc,SAASvd,EAAO0d,GAChC,IAAIC,EAAKC,EAsBT,OArBAF,EAASA,GAAU,CACjBG,SAAS,EACTC,YAAY,EACZC,YAAQzZ,IAGVqZ,EAAM9hB,SAASmiB,YAAY,gBACvBC,gBAAgBje,EAAO0d,EAAOG,QAASH,EAAOI,WAAYJ,EAAOK,QACrEH,EAAcD,EAAIxb,eAClBwb,EAAIxb,eAAiB,WACnByb,EAAYvnB,KAAK7B,MACjB,IACEM,OAAOC,eAAeP,KAAM,mBAAoB,CAC9C0pB,IAAK,WACH,OAAO,KAGX,MAAMxpB,GACNF,KAAKgpB,kBAAmB,IAGrBG,GAGTJ,EAAY/nB,UAAYb,OAAOwpB,MAAM3oB,UACrCb,OAAO4oB,YAAcA,I,iCCnCvB,SAASnoB,EAAQH,GAAwT,OAAtOG,EAArD,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiBL,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXI,QAAyBJ,EAAIM,cAAgBF,QAAUJ,IAAQI,OAAOG,UAAY,gBAAkBP,IAAyBA,GALxVH,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQuO,QAAUvO,EAAQupB,WAAavpB,EAAQgX,YAAchX,EAAQ+W,SAAW/W,EAAQkI,OAASlI,EAAQ2L,cAAgB3L,EAAQ6O,WAAa7O,EAAQ0R,WAAa1R,EAAQ0I,aAAe1I,EAAQ6F,OAAS7F,EAAQ8H,kBAAe,EAclO9H,EAAQ8H,aAVW,WACjB,IAAI6O,EAAQC,UAAUC,UAEtB,OAAIF,EAAMG,QAAQ,UAAY,GAAKH,EAAMG,QAAQ,QAAU,GAAKH,EAAMG,QAAQ,QAAU,GAAKH,EAAMG,QAAQ,WAAa,GA8B1H,IAAIjR,EArBJ,SAAS2jB,EAAWC,GAClBA,EAAMA,GAAO,GAEb,IAAK,IAAI1oB,EAAI,EAAGA,EAAIyO,UAAUxO,OAAQD,IAAK,CACzC,IAAIX,EAAMoP,UAAUzO,GAEpB,GAAKX,EAIL,IAAK,IAAIiB,KAAOjB,EACVA,EAAIspB,eAAeroB,KACK,WAAtBd,EAAQH,EAAIiB,IAAoBooB,EAAIpoB,GAAOmoB,EAAWC,EAAIpoB,GAAMjB,EAAIiB,IAAWooB,EAAIpoB,GAAOjB,EAAIiB,IAKxG,OAAOooB,GAKTzpB,EAAQ6F,OAASA,EAiBjB7F,EAAQ0I,aAfW,SAAsBuc,EAAI3N,EAAWiM,GACtD,IAAIpY,EAEArL,OAAO4oB,YACTvd,EAAQ,IAAIud,YAAYpR,EAAW,CACjC2R,YAAY,KAGd9d,EAAQnE,SAASmiB,YAAY,gBACvBC,gBAAgB9R,GAAW,GAAO,EAAOiM,GAGjD0B,EAAG0E,cAAcxe,IA2BnBnL,EAAQ0R,WAtBS,SAAoBf,GASnC,IARA,IAIIiZ,EACAvoB,EACAlB,EANAgb,EAAIxK,EAAMgJ,MAAM,KAChB/T,EAAO,GACP7E,EAAI,EACJ8oB,EAAK1O,EAAEna,OAKJD,EAAI8oB,EAAI9oB,SAGI,KAFjB6oB,EAAQzO,EAAEpa,GAAG4Y,MAAM,MAET,KACRtY,EAAMuoB,EAAM,GACZzpB,OAAqB,IAAbypB,EAAM,GAAgBA,EAAME,MAAM,GAAGC,KAAK,KAAO1oB,EACzDuE,EAAKvE,GAAO2oB,mBAAmB7pB,IAInC,OAAOyF,GAYT5F,EAAQ6O,WAPS,SAAoBxG,GACnC,MAAO,CACL4G,KAAM5G,EAAQ4hB,wBAAwBhb,KACtCD,IAAK3G,EAAQ4hB,wBAAwBjb,MAYzChP,EAAQ2L,cANY,SAAuBtD,GACrCA,GAAWA,EAAQwH,YACrBxH,EAAQwH,WAAWiV,YAAYzc,IAenCrI,EAAQkI,OATK,SAAgBG,EAASyR,GACpC,IAAIoQ,EAAMljB,SAASgY,cAAc,OAGjC,IAFAkL,EAAI/Q,UAAYW,EAEToQ,EAAIC,SAASnpB,OAAS,GAC3BqH,EAAQkc,YAAY2F,EAAIC,SAAS,KAcrCnqB,EAAQ+W,SARO,SAAkB1O,EAASqI,GACpCrI,EAAQ+hB,UACV/hB,EAAQ+hB,UAAUC,IAAI3Z,GAEtBrI,EAAQqI,WAAa,IAAIvI,OAAOuI,IAcpC1Q,EAAQgX,YARU,SAAqB3O,EAASqI,GAC1CrI,EAAQ+hB,UACV/hB,EAAQ+hB,UAAUE,OAAO5Z,GAEzBrI,EAAQqI,UAAYrI,EAAQqI,UAAUgI,QAAQ,IAAI4D,OAAO,UAAY5L,EAAUiJ,MAAM,KAAKoQ,KAAK,KAAO,UAAW,MAAO,MAM5H,IAAIR,EAAa,WACf,IAAIgB,EAAKzqB,OAAO8W,UAAUC,UAAU2T,cAChCC,EAAM3qB,OAAO8W,UAAU8T,WAAWF,cAClC1I,EAAO,UA4BX,OA1B2B,GAAvByI,EAAGzT,QAAQ,QAEXgL,GAD6B,GAA3B2I,EAAI3T,QAAQ,WACP,OAC6B,GAA3B2T,EAAI3T,QAAQ,WACd,OAC6B,GAA3B2T,EAAI3T,QAAQ,WACd,OAC6B,GAA3B2T,EAAI3T,QAAQ,WACd,OAC8B,GAA5B2T,EAAI3T,QAAQ,YACd,OAEA,MAE4B,GAA5ByT,EAAGzT,QAAQ,aACpBgL,EAAO,QAC2B,GAAzByI,EAAGzT,QAAQ,UACpBgL,EAAO,UAC2B,GAAzByI,EAAGzT,QAAQ,UACpBgL,EAAO,UAC0B,GAAxByI,EAAGzT,QAAQ,SACpBgL,EAAO,SAC4B,GAA1ByI,EAAGzT,QAAQ,aACpBgL,EAAO,WAGFA,GAGT9hB,EAAQupB,WAAaA,EAcrBvpB,EAAQuO,QAZM,WACZ,IAAIoc,EAAUpB,IAEd,OAA+B,IAA3BoB,EAAQ7T,QAAQ,OACd7K,SAAS0e,EAAQjS,QAAQ,UAAW,MAAQ,K,qBC9KpD,iCAMA,IAAIkS,EAAgBC,EAAgB,QAChCC,EACFF,GAGA,YAAaA,GACb,WAAYA,GACZ,QAASA,GACT,SAAUA,GAGV,WACE,IAAI1gB,EAEJ,OADA,IAAI0gB,GAAc,SAASG,GAAI7gB,EAAU6gB,KACf,mBAAZ7gB,EAHhB,GAWoClK,GAGpCA,EAAQmC,QAAU2oB,EAAyBF,EAAgBzoB,EAC3DnC,EAAQgrB,SAAW7oB,QAShB,KAFD,aACE,OAAO2oB,EAAyBF,EAAgBzoB,GACjD,8BAeL,IAII8oB,EAAO,aAEX,SAAS7S,EAAQjY,GACf,MAAiD,mBAA1CF,OAAOU,UAAUuV,SAAS1U,KAAKrB,GAIxC,IAEI+qB,EAFAC,OAAwC,IAAjBC,EAA+BA,EAAejhB,WACrEkhB,EAAa,GAGjB,SAASC,IAEP,IAAK,IAAIvqB,EAAI,EAAGA,EAAIsqB,EAAWrqB,OAAQD,IACrCsqB,EAAWtqB,GAAG,GAAGsqB,EAAWtqB,GAAG,IAGjCsqB,EAAa,GACbH,GAAa,EAGf,SAASK,EAAUC,EAAUC,GAC3BJ,EAAW7f,KAAK,CAACggB,EAAUC,IAEtBP,IAEHA,GAAa,EACbC,EAAcG,EAAY,IAqB9B,SAASI,EAAeC,GACtB,IAAIC,EAAQD,EAAWC,MACnBC,EAAUD,EAAME,OAChB3rB,EAAQyrB,EAAMG,MACdP,EAAWG,EAAWE,GACtBG,EAAUL,EAAWvhB,KAEzB,GAAwB,mBAAbohB,EACX,CACEK,EA3DY,YA4DZ,IACE1rB,EAAQqrB,EAASrrB,GACjB,MAAMN,GACNosB,EAAOD,EAASnsB,IAIfqsB,EAAeF,EAAS7rB,KAnEf,cAqER0rB,GACF3hB,EAAQ8hB,EAAS7rB,GArER,aAuEP0rB,GACFI,EAAOD,EAAS7rB,IAItB,SAAS+rB,EAAeF,EAAS7rB,GAC/B,IAAIgsB,EAEJ,IACE,GAAIH,IAAY7rB,EACd,MAAM,IAAIuF,UAAU,wDAEtB,GAAIvF,IAA2B,mBAAVA,GAAyC,iBAAVA,GACpD,CACE,IAAIiK,EAAOjK,EAAMiK,KAEjB,GAAoB,mBAATA,EAqBT,OAnBAA,EAAK5I,KAAKrB,GAAO,SAASoW,GACnB4V,IAEHA,GAAW,EAEPhsB,IAAUoW,EACZrM,EAAQ8hB,EAASzV,GAEjB6V,EAAQJ,EAASzV,OAEpB,SAAS8V,GACLF,IAEHA,GAAW,EAEXF,EAAOD,EAASK,QAIb,GAGX,MAAOxsB,GAIP,OAHKssB,GACHF,EAAOD,EAASnsB,IAEX,EAGT,OAAO,EAGT,SAASqK,EAAQ8hB,EAAS7rB,GACpB6rB,IAAY7rB,GAAU+rB,EAAeF,EAAS7rB,IAChDisB,EAAQJ,EAAS7rB,GAGrB,SAASisB,EAAQJ,EAAS7rB,GAjIZ,YAkIR6rB,EAAQF,SAEVE,EAAQF,OAnIC,SAoITE,EAAQD,MAAQ5rB,EAEhBorB,EAAUe,EAAoBN,IAIlC,SAASC,EAAOD,EAASK,GA3IX,YA4IRL,EAAQF,SAEVE,EAAQF,OA7IC,SA8ITE,EAAQD,MAAQM,EAEhBd,EAAUgB,EAAkBP,IAIhC,SAASQ,EAAQR,GACf,IAAIS,EAAYT,EAAQU,MACxBV,EAAQU,WAAQjd,EAEhB,IAAK,IAAI1O,EAAI,EAAGA,EAAI0rB,EAAUzrB,OAAQD,IACpC2qB,EAAee,EAAU1rB,IAI7B,SAASurB,EAAmBN,GAC1BA,EAAQF,OA7JM,YA8JdU,EAAQR,GAGV,SAASO,EAAiBP,GACxBA,EAAQF,OAjKK,WAkKbU,EAAQR,GAMV,SAAS7pB,EAAQwqB,GACf,GAAwB,mBAAbA,EACT,MAAM,IAAIjnB,UAAU,iDAEtB,GAAI/F,gBAAgBwC,IAAY,EAC9B,MAAM,IAAIuD,UAAU,yHAEtB/F,KAAK+sB,MAAQ,GA9If,SAAwBC,EAAUX,GAKhC,SAASY,EAAcP,GACrBJ,EAAOD,EAASK,GAGlB,IACEM,GATF,SAAwBxsB,GACtB+J,EAAQ8hB,EAAS7rB,KAQQysB,GACzB,MAAM/sB,GACN+sB,EAAc/sB,IAoIhBgtB,CAAeF,EAAUhtB,MAG3BwC,EAAQxB,UAAY,CAClBD,YAAayB,EAEb2pB,OA1LY,UA2LZY,MAAO,KACPX,WAAOtc,EAEPrF,KAAM,SAAS0iB,EAAeC,GAC5B,IAAIpB,EAAa,CACfC,MAAOjsB,KACPyK,KAAM,IAAIzK,KAAKe,YAAYuqB,GAC3B+B,UAAWF,EACXG,SAAUF,GAcZ,MA/MY,cAoMRptB,KAAKmsB,QAnME,aAmMsBnsB,KAAKmsB,OAGpCP,EAAUG,EAAgBC,GAK1BhsB,KAAK+sB,MAAMlhB,KAAKmgB,GAGXA,EAAWvhB,MAGpB,MAAS,SAAS2iB,GAChB,OAAOptB,KAAKyK,KAAK,KAAM2iB,KAI3B5qB,EAAQiQ,IAAM,SAASF,GAGrB,IAAKkG,EAAQlG,GACX,MAAM,IAAIxM,UAAU,4CAEtB,OAAO,IALK/F,MAKK,SAASuK,EAAS+hB,GACjC,IAAIiB,EAAU,GACVC,EAAY,EAEhB,SAASR,EAAStgB,GAEhB,OADA8gB,IACO,SAAShtB,GACd+sB,EAAQ7gB,GAASlM,IACVgtB,GACLjjB,EAAQgjB,IAId,IAAK,IAAWlB,EAAPjrB,EAAI,EAAYA,EAAImR,EAASlR,OAAQD,KAE5CirB,EAAU9Z,EAASnR,KAEoB,mBAAjBirB,EAAQ5hB,KAC5B4hB,EAAQ5hB,KAAKuiB,EAAS5rB,GAAIkrB,GAE1BiB,EAAQnsB,GAAKirB,EAGZmB,GACHjjB,EAAQgjB,OAId/qB,EAAQirB,KAAO,SAASlb,GAGtB,IAAKkG,EAAQlG,GACX,MAAM,IAAIxM,UAAU,6CAEtB,OAAO,IALK/F,MAKK,SAASuK,EAAS+hB,GACjC,IAAK,IAAWD,EAAPjrB,EAAI,EAAYA,EAAImR,EAASlR,OAAQD,KAE5CirB,EAAU9Z,EAASnR,KAEoB,mBAAjBirB,EAAQ5hB,KAC5B4hB,EAAQ5hB,KAAKF,EAAS+hB,GAEtB/hB,EAAQ8hB,OAKhB7pB,EAAQ+H,QAAU,SAAS/J,GAGzB,OAAIA,GAA0B,iBAAVA,GAAsBA,EAAMO,cAFpCf,KAGHQ,EAEF,IALKR,MAKK,SAASuK,GACxBA,EAAQ/J,OAIZgC,EAAQ8pB,OAAS,SAASI,GAGxB,OAAO,IAFK1sB,MAEK,SAASuK,EAAS+hB,GACjCA,EAAOI,OArVX,CAyVoB,oBAAVvsB,OAAwBA,YAA0B,IAAV+qB,EAAwBA,EAAwB,oBAARtpB,KAAsBA,KAAO5B,Q,0DCzVvH,iCAC6B,oBAAT4B,MAAwBA,MAChCzB,OACRoa,EAAQta,SAASe,UAAUuZ,MAiB/B,SAASmT,EAAQ7lB,EAAI8lB,GACnB3tB,KAAK4tB,IAAM/lB,EACX7H,KAAK6tB,SAAWF,EAflBttB,EAAQmK,WAAa,WACnB,OAAO,IAAIkjB,EAAQnT,EAAM1Y,KAAK2I,WAAYsjB,EAAOje,WAAYke,eAE/D1tB,EAAQ4I,YAAc,WACpB,OAAO,IAAIykB,EAAQnT,EAAM1Y,KAAKoH,YAAa6kB,EAAOje,WAAY5D,gBAEhE5L,EAAQ0tB,aACR1tB,EAAQ4L,cAAgB,SAAS+hB,GAC3BA,GACFA,EAAQC,SAQZP,EAAQ1sB,UAAUktB,MAAQR,EAAQ1sB,UAAUmtB,IAAM,aAClDT,EAAQ1sB,UAAUitB,MAAQ,WACxBjuB,KAAK6tB,SAAShsB,KAAKisB,EAAO9tB,KAAK4tB,MAIjCvtB,EAAQ+tB,OAAS,SAASjiB,EAAMkiB,GAC9BN,aAAa5hB,EAAKmiB,gBAClBniB,EAAKoiB,aAAeF,GAGtBhuB,EAAQmuB,SAAW,SAASriB,GAC1B4hB,aAAa5hB,EAAKmiB,gBAClBniB,EAAKoiB,cAAgB,GAGvBluB,EAAQouB,aAAepuB,EAAQquB,OAAS,SAASviB,GAC/C4hB,aAAa5hB,EAAKmiB,gBAElB,IAAID,EAAQliB,EAAKoiB,aACbF,GAAS,IACXliB,EAAKmiB,eAAiB9jB,YAAW,WAC3B2B,EAAKwiB,YACPxiB,EAAKwiB,eACNN,KAKP,EAAQ,KAIRhuB,EAAQorB,aAAgC,oBAAT7pB,MAAwBA,KAAK6pB,mBAClB,IAAXP,GAA0BA,EAAOO,cACxCzrB,MAAQA,KAAKyrB,aACrCprB,EAAQuuB,eAAkC,oBAAThtB,MAAwBA,KAAKgtB,qBAClB,IAAX1D,GAA0BA,EAAO0D,gBACxC5uB,MAAQA,KAAK4uB,iB,sCC9DvC,6BACI,aAEA,IAAI1D,EAAOO,aAAX,CAIA,IAIIoD,EA6HItV,EAZAuV,EArBAC,EACAC,EAjGJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxB/P,EAAM8L,EAAO7jB,SAoJb+nB,EAAW9uB,OAAO6B,gBAAkB7B,OAAO6B,eAAe+oB,GAC9DkE,EAAWA,GAAYA,EAAS5kB,WAAa4kB,EAAWlE,EAGf,qBAArC,GAAG3U,SAAS1U,KAAKqpB,EAAOmE,SApFxBR,EAAoB,SAASS,GACzBD,EAAQE,UAAS,WAAcC,EAAaF,QAIpD,WAGI,GAAIpE,EAAOuE,cAAgBvE,EAAOwE,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAe1E,EAAO2E,UAM1B,OALA3E,EAAO2E,UAAY,WACfF,GAA4B,GAEhCzE,EAAOuE,YAAY,GAAI,KACvBvE,EAAO2E,UAAYD,EACZD,GAwEJG,GAIA5E,EAAO6E,iBA9CVjB,EAAU,IAAIiB,gBACVC,MAAMH,UAAY,SAASrkB,GAE/BgkB,EADahkB,EAAMvF,OAIvB4oB,EAAoB,SAASS,GACzBR,EAAQmB,MAAMR,YAAYH,KA2CvBlQ,GAAO,uBAAwBA,EAAIC,cAAc,WAtCpD9F,EAAO6F,EAAInP,gBACf4e,EAAoB,SAASS,GAGzB,IAAIY,EAAS9Q,EAAIC,cAAc,UAC/B6Q,EAAOC,mBAAqB,WACxBX,EAAaF,GACbY,EAAOC,mBAAqB,KAC5B5W,EAAK4L,YAAY+K,GACjBA,EAAS,MAEb3W,EAAKqL,YAAYsL,KAKrBrB,EAAoB,SAASS,GACzB9kB,WAAWglB,EAAc,EAAGF,KAlD5BP,EAAgB,gBAAkB1iB,KAAKmK,SAAW,IAClDwY,EAAkB,SAASxjB,GACvBA,EAAM4kB,SAAWlF,GACK,iBAAf1f,EAAMvF,MACyB,IAAtCuF,EAAMvF,KAAKkR,QAAQ4X,IACnBS,GAAchkB,EAAMvF,KAAKkkB,MAAM4E,EAAc1tB,UAIjD6pB,EAAOnhB,iBACPmhB,EAAOnhB,iBAAiB,UAAWilB,GAAiB,GAEpD9D,EAAOmF,YAAY,YAAarB,GAGpCH,EAAoB,SAASS,GACzBpE,EAAOuE,YAAYV,EAAgBO,EAAQ,OAgEnDF,EAAS3D,aA1KT,SAAsBI,GAEI,mBAAbA,IACTA,EAAW,IAAI5rB,SAAS,GAAK4rB,IAI/B,IADA,IAAI1L,EAAO,IAAI3H,MAAM3I,UAAUxO,OAAS,GAC/BD,EAAI,EAAGA,EAAI+e,EAAK9e,OAAQD,IAC7B+e,EAAK/e,GAAKyO,UAAUzO,EAAI,GAG5B,IAAIkvB,EAAO,CAAEzE,SAAUA,EAAU1L,KAAMA,GAGvC,OAFA+O,EAAcD,GAAcqB,EAC5BzB,EAAkBI,GACXA,KA6JTG,EAASR,eAAiBA,EA1J1B,SAASA,EAAeU,UACbJ,EAAcI,GAyBzB,SAASE,EAAaF,GAGlB,GAAIH,EAGA3kB,WAAWglB,EAAc,EAAGF,OACzB,CACH,IAAIgB,EAAOpB,EAAcI,GACzB,GAAIgB,EAAM,CACNnB,GAAwB,EACxB,KAjCZ,SAAamB,GACT,IAAIzE,EAAWyE,EAAKzE,SAChB1L,EAAOmQ,EAAKnQ,KAChB,OAAQA,EAAK9e,QACb,KAAK,EACDwqB,IACA,MACJ,KAAK,EACDA,EAAS1L,EAAK,IACd,MACJ,KAAK,EACD0L,EAAS1L,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACD0L,EAAS1L,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACI0L,EAAStR,WAnDrB,EAmDsC4F,IAiBlBoQ,CAAID,GACN,QACE1B,EAAeU,GACfH,GAAwB,MAvE5C,CAyLkB,oBAATvtB,UAAyC,IAAXspB,EAAyBlrB,KAAOkrB,EAAStpB,Q,0CCxLhF,IAOI4uB,EACAC,EARApB,EAAUjvB,EAAOC,QAAU,GAU/B,SAASqwB,IACL,MAAM,IAAIzH,MAAM,mCAEpB,SAAS0H,IACL,MAAM,IAAI1H,MAAM,qCAsBpB,SAAS2H,EAAWC,GAChB,GAAIL,IAAqBhmB,WAErB,OAAOA,WAAWqmB,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBhmB,WAEhE,OADAgmB,EAAmBhmB,WACZA,WAAWqmB,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAM3wB,GACJ,IAEI,OAAOswB,EAAiB3uB,KAAK,KAAMgvB,EAAK,GAC1C,MAAM3wB,GAEJ,OAAOswB,EAAiB3uB,KAAK7B,KAAM6wB,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAfhmB,WACYA,WAEAkmB,EAEzB,MAAOxwB,GACLswB,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjB1C,aACcA,aAEA4C,EAE3B,MAAOzwB,GACLuwB,EAAqBE,GAjB7B,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAazvB,OACb0vB,EAAQD,EAAatoB,OAAOuoB,GAE5BE,GAAc,EAEdF,EAAM1vB,QACN8vB,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIhD,EAAU4C,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAIzQ,EAAMwQ,EAAM1vB,OACVkf,GAAK,CAGP,IAFAuQ,EAAeC,EACfA,EAAQ,KACCE,EAAa1Q,GACduQ,GACAA,EAAaG,GAAYV,MAGjCU,GAAc,EACd1Q,EAAMwQ,EAAM1vB,OAEhByvB,EAAe,KACfE,GAAW,EAnEf,SAAyBI,GACrB,GAAIX,IAAuB1C,aAEvB,OAAOA,aAAaqD,GAGxB,IAAKX,IAAuBE,IAAwBF,IAAuB1C,aAEvE,OADA0C,EAAqB1C,aACdA,aAAaqD,GAExB,IAEWX,EAAmBW,GAC5B,MAAOlxB,GACL,IAEI,OAAOuwB,EAAmB5uB,KAAK,KAAMuvB,GACvC,MAAOlxB,GAGL,OAAOuwB,EAAmB5uB,KAAK7B,KAAMoxB,KAgD7CC,CAAgBrD,IAiBpB,SAASsD,EAAKT,EAAKU,GACfvxB,KAAK6wB,IAAMA,EACX7wB,KAAKuxB,MAAQA,EAYjB,SAASlO,KA5BTgM,EAAQE,SAAW,SAAUsB,GACzB,IAAI1Q,EAAO,IAAI3H,MAAM3I,UAAUxO,OAAS,GACxC,GAAIwO,UAAUxO,OAAS,EACnB,IAAK,IAAID,EAAI,EAAGA,EAAIyO,UAAUxO,OAAQD,IAClC+e,EAAK/e,EAAI,GAAKyO,UAAUzO,GAGhC2vB,EAAMllB,KAAK,IAAIylB,EAAKT,EAAK1Q,IACJ,IAAjB4Q,EAAM1vB,QAAiB2vB,GACvBJ,EAAWO,IASnBG,EAAKtwB,UAAUuvB,IAAM,WACjBvwB,KAAK6wB,IAAItW,MAAM,KAAMva,KAAKuxB,QAE9BlC,EAAQmC,MAAQ,UAChBnC,EAAQrE,SAAU,EAClBqE,EAAQoC,IAAM,GACdpC,EAAQqC,KAAO,GACfrC,EAAQsC,QAAU,GAClBtC,EAAQuC,SAAW,GAInBvC,EAAQ1V,GAAK0J,EACbgM,EAAQwC,YAAcxO,EACtBgM,EAAQ9gB,KAAO8U,EACfgM,EAAQ7U,IAAM6I,EACdgM,EAAQyC,eAAiBzO,EACzBgM,EAAQ0C,mBAAqB1O,EAC7BgM,EAAQ2C,KAAO3O,EACfgM,EAAQ4C,gBAAkB5O,EAC1BgM,EAAQ6C,oBAAsB7O,EAE9BgM,EAAQ8C,UAAY,SAAUhQ,GAAQ,MAAO,IAE7CkN,EAAQ+C,QAAU,SAAUjQ,GACxB,MAAM,IAAI8G,MAAM,qCAGpBoG,EAAQgD,IAAM,WAAc,MAAO,KACnChD,EAAQiD,MAAQ,SAAU1iB,GACtB,MAAM,IAAIqZ,MAAM,mCAEpBoG,EAAQkD,MAAQ,WAAa,OAAO","file":"27-1d96548be894e6440872.js","sourcesContent":["var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nmodule.exports = require('./core/');","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _aTemplate = _interopRequireDefault(require(\"a-template\"));\n\nrequire(\"custom-event-polyfill\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar template = \"
aria-hidden=\\\"true\\\" aria-hidden=\\\"false\\\" role=\\\"dialog\\\">\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\t{currentIndex}[increment]/{total}\\n\\t\\t\\t\\t\\t{caption}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
data-action-touchstart=\\\"beforeDrag\\\" data-action-touchmove=\\\"onDrag\\\" data-action-touchend=\\\"afterDrag(false)\\\" data-action-click=\\\"hidePhoto()\\\">\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
    \\\\{classNames.smartPhotoListOnMove\\\\}\\\">\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
  • current\\\">\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
    data-action-mousemove=\\\"onDrag\\\" data-action-mousedown=\\\"beforeDrag\\\" data-action-mouseup=\\\"afterDrag\\\" data-action-touchstart=\\\"beforeDrag\\\" data-action-touchmove=\\\"onDrag\\\" data-action-touchend=\\\"afterDrag\\\">\\n\\t\\t\\t\\t\\t\\t\\ttransform:translate(\\\\{photoPosX\\\\}[virtualPos]px,\\\\{photoPosY\\\\}[virtualPos]px) scale(\\\\{scaleSize\\\\});width:{width}px;\\\" src=\\\"{src}\\\" class=\\\"\\\\\\\\{classNames.smartPhotoImg\\\\\\\\} \\\\\\\\{classNames.smartPhotoImgOnMove\\\\\\\\} \\\\\\\\{classNames.smartPhotoImgElasticMove\\\\\\\\} active\\\" ondragstart=\\\"return false;\\\">\\n\\t\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
  • \\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
    aria-hidden=\\\"true\\\" aria-hidden=\\\"false\\\">\\n\\t\\t\\t\\t\\t
  • \\\\{classNames.smartPhotoArrowHideIcon\\\\}\\\" aria-hidden=\\\"true\\\">\\\\{message.gotoPrevImage\\\\}
  • \\n\\t\\t\\t\\t\\t
  • \\\\{classNames.smartPhotoArrowHideIcon\\\\}\\\" aria-hidden=\\\"true\\\">\\\\{message.gotoNextImage\\\\}
  • \\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t
\\n
\\n\";\n\nvar util = require('../lib/util');\n\nvar _require = require('es6-promise-polyfill'),\n Promise = _require.Promise;\n\nvar defaults = {\n classNames: {\n smartPhoto: 'smartphoto',\n smartPhotoClose: 'smartphoto-close',\n smartPhotoBody: 'smartphoto-body',\n smartPhotoInner: 'smartphoto-inner',\n smartPhotoContent: 'smartphoto-content',\n smartPhotoImg: 'smartphoto-img',\n smartPhotoImgOnMove: 'smartphoto-img-onmove',\n smartPhotoImgElasticMove: 'smartphoto-img-elasticmove',\n smartPhotoImgWrap: 'smartphoto-img-wrap',\n smartPhotoArrows: 'smartphoto-arrows',\n smartPhotoNav: 'smartphoto-nav',\n smartPhotoArrowRight: 'smartphoto-arrow-right',\n smartPhotoArrowLeft: 'smartphoto-arrow-left',\n smartPhotoArrowHideIcon: 'smartphoto-arrow-hide',\n smartPhotoImgLeft: 'smartphoto-img-left',\n smartPhotoImgRight: 'smartphoto-img-right',\n smartPhotoList: 'smartphoto-list',\n smartPhotoListOnMove: 'smartphoto-list-onmove',\n smartPhotoHeader: 'smartphoto-header',\n smartPhotoCount: 'smartphoto-count',\n smartPhotoCaption: 'smartphoto-caption',\n smartPhotoDismiss: 'smartphoto-dismiss',\n smartPhotoLoader: 'smartphoto-loader',\n smartPhotoLoaderWrap: 'smartphoto-loader-wrap',\n smartPhotoImgClone: 'smartphoto-img-clone'\n },\n message: {\n gotoNextImage: 'go to the next image',\n gotoPrevImage: 'go to the previous image',\n closeDialog: 'close the image dialog'\n },\n arrows: true,\n nav: true,\n showAnimation: true,\n verticalGravity: false,\n useOrientationApi: false,\n useHistoryApi: true,\n swipeTopToClose: false,\n swipeBottomToClose: true,\n swipeOffset: 100,\n headerHeight: 60,\n footerHeight: 60,\n forceInterval: 10,\n registance: 0.5,\n loadOffset: 2,\n resizeStyle: 'fit',\n lazyAttribute: 'data-src'\n};\n\nvar SmartPhoto =\n/*#__PURE__*/\nfunction (_ATemplate) {\n _inherits(SmartPhoto, _ATemplate);\n\n function SmartPhoto(selector, settings) {\n var _this;\n\n _classCallCheck(this, SmartPhoto);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SmartPhoto).call(this));\n _this.data = util.extend({}, defaults, settings);\n _this.data.currentIndex = 0;\n _this.data.oldIndex = 0;\n _this.data.hide = true;\n _this.data.group = {};\n _this.data.scaleSize = 1;\n _this.data.scale = false;\n _this.pos = {\n x: 0,\n y: 0\n };\n _this.data.photoPosX = 0;\n _this.data.photoPosY = 0;\n _this.handlers = [];\n _this.convert = {\n increment: _this.increment,\n virtualPos: _this.virtualPos,\n round: _this.round\n };\n _this.data.groupItems = _this.groupItems;\n _this.elements = typeof selector === 'string' ? document.querySelectorAll(selector) : selector;\n var date = new Date();\n _this.tapSecond = date.getTime();\n _this.onListMove = false;\n _this.clicked = false;\n _this.id = _this._getUniqId();\n _this.vx = 0;\n _this.vy = 0;\n _this.data.appearEffect = null;\n\n _this.addTemplate(_this.id, template);\n\n _this.data.isSmartPhone = _this._isSmartPhone();\n var body = document.querySelector('body');\n util.append(body, \"
\"));\n [].forEach.call(_this.elements, function (element) {\n _this.addNewItem(element);\n });\n\n _this.update();\n\n var currentItem = _this._getCurrentItemByHash();\n\n if (currentItem) {\n util.triggerEvent(currentItem.element, 'click');\n }\n\n _this.interval = setInterval(function () {\n _this._doAnim();\n }, _this.data.forceInterval);\n\n if (!_this.data.isSmartPhone) {\n var resizeHandler = function resizeHandler() {\n if (!_this.groupItems()) {\n return;\n }\n\n _this._resetTranslate();\n\n _this._setPosByCurrentIndex();\n\n _this._setSizeByScreen();\n\n _this.update();\n };\n\n var keydownHandler = function keydownHandler(e) {\n var code = e.keyCode || e.which;\n\n if (_this.data.hide === true) {\n return;\n }\n\n if (code === 37) {\n _this.gotoSlide(_this.data.prev);\n } else if (code === 39) {\n _this.gotoSlide(_this.data.next);\n } else if (code === 27) {\n _this.hidePhoto();\n }\n };\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('keydown', keydownHandler);\n\n _this._registerRemoveEvent(window, 'resize', resizeHandler);\n\n _this._registerRemoveEvent(window, 'keydown', keydownHandler);\n\n return _possibleConstructorReturn(_this);\n }\n\n var orientationChangeHandler = function orientationChangeHandler() {\n if (!_this.groupItems()) {\n return;\n } // 画像の配置をリセット\n\n\n _this._resetTranslate();\n\n _this._setPosByCurrentIndex();\n\n _this._setHashByCurrentIndex();\n\n _this._setSizeByScreen();\n\n _this.update(); // orientationchangeが発火するタイミングとwindowのサイズが変化するタイミングが違うデバイスが存在する\n // その対策として、一定時間待機し、windowのサイズが変化しないかどうか確かめる\n // 変化した場合、もう一度画像の配置をリセットする\n\n\n var prevWidth = _this._getWindowWidth(); // 現在の画面サイズ\n\n\n var timeout = 500; // 最大待機時間\n\n var photoResizeAfterWindowSizeChange = function photoResizeAfterWindowSizeChange(time) {\n new Promise(function (resolve) {\n // 5ms秒待機\n setTimeout(function () {\n resolve();\n }, 25);\n }).then(function () {\n if (prevWidth !== _this._getWindowWidth()) {\n // windowのサイズが変化したら、画像の配置をリセット\n _this._resetTranslate();\n\n _this._setPosByCurrentIndex();\n\n _this._setHashByCurrentIndex();\n\n _this._setSizeByScreen();\n\n _this.update();\n } else if (time <= timeout) {\n // 待機時間内であれば再待機\n photoResizeAfterWindowSizeChange(time + 25);\n }\n });\n };\n\n photoResizeAfterWindowSizeChange(0); // 待機開始\n };\n\n window.addEventListener('orientationchange', orientationChangeHandler);\n\n _this._registerRemoveEvent(window, 'orientationchange', orientationChangeHandler);\n\n if (!_this.data.useOrientationApi) {\n return _possibleConstructorReturn(_this);\n }\n\n var deviceorientationHandler = function deviceorientationHandler(e) {\n var _window = window,\n orientation = _window.orientation;\n\n if (!e || !e.gamma || _this.data.appearEffect) {\n return;\n }\n\n if (!_this.isBeingZoomed && !_this.photoSwipable && !_this.data.elastic && _this.data.scale) {\n if (orientation === 0) {\n _this._calcGravity(e.gamma, e.beta);\n } else if (orientation === 90) {\n _this._calcGravity(e.beta, e.gamma);\n } else if (orientation === -90) {\n _this._calcGravity(-e.beta, -e.gamma);\n } else if (orientation === 180) {\n _this._calcGravity(-e.gamma, -e.beta);\n }\n }\n };\n\n window.addEventListener('deviceorientation', deviceorientationHandler);\n\n _this._registerRemoveEvent(window, 'deviceorientation', deviceorientationHandler);\n\n return _this;\n }\n\n _createClass(SmartPhoto, [{\n key: \"on\",\n value: function on(event, fn) {\n var photo = this._getElementByClass(this.data.classNames.smartPhoto);\n\n var handler = function handler(e) {\n fn.call(photo, e);\n };\n\n photo.addEventListener(event, handler);\n\n this._registerRemoveEvent(photo, event, handler);\n }\n }, {\n key: \"_registerRemoveEvent\",\n value: function _registerRemoveEvent(target, event, handler) {\n this.handlers.push({\n target: target,\n event: event,\n handler: handler\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.handlers.forEach(function (handler) {\n handler.target.removeEventListener(handler.event, handler.handler);\n });\n var wrapper = document.querySelector(\"[data-id=\\\"\".concat(this.id, \"\\\"]\"));\n util.removeElement(wrapper);\n clearInterval(this.interval);\n this.removeTemplateEvents();\n }\n }, {\n key: \"increment\",\n value: function increment(item) {\n return item + 1;\n }\n }, {\n key: \"round\",\n value: function round(number) {\n return Math.round(number);\n }\n }, {\n key: \"virtualPos\",\n value: function virtualPos(pos) {\n pos = parseInt(pos, 10);\n\n var item = this._getSelectedItem();\n\n return pos / item.scale / this.data.scaleSize;\n }\n }, {\n key: \"groupItems\",\n value: function groupItems() {\n return this.data.group[this.data.currentGroup];\n }\n }, {\n key: \"_resetTranslate\",\n value: function _resetTranslate() {\n var _this2 = this;\n\n var items = this.groupItems();\n items.forEach(function (item, index) {\n item.translateX = _this2._getWindowWidth() * index;\n });\n }\n }, {\n key: \"addNewItem\",\n value: function addNewItem(element) {\n var _this3 = this;\n\n var groupId = element.getAttribute('data-group') || 'nogroup';\n var group = this.data.group;\n\n if (groupId === 'nogroup') {\n element.setAttribute('data-group', 'nogroup');\n }\n\n if (!group[groupId]) {\n group[groupId] = [];\n }\n\n var index = group[groupId].length;\n var body = document.querySelector('body');\n var src = element.getAttribute('href');\n var img = element.querySelector('img');\n var thumb = src;\n\n if (img) {\n if (img.getAttribute(this.data.lazyAttribute)) {\n thumb = img.getAttribute(this.data.lazyAttribute);\n } else if (img.currentSrc) {\n thumb = img.currentSrc;\n } else {\n thumb = img.src;\n }\n }\n\n var item = {\n src: src,\n thumb: thumb,\n caption: element.getAttribute('data-caption'),\n groupId: groupId,\n translateX: this._getWindowWidth() * index,\n index: index,\n translateY: 0,\n width: 50,\n height: 50,\n id: element.getAttribute('data-id') || index,\n loaded: false,\n processed: false,\n element: element\n };\n group[groupId].push(item);\n this.data.currentGroup = groupId;\n var id = element.getAttribute('data-id');\n\n if (!id) {\n element.setAttribute('data-id', index);\n }\n\n element.setAttribute('data-index', index);\n\n var clickHandler = function clickHandler(event) {\n event.preventDefault();\n _this3.data.currentGroup = element.getAttribute('data-group');\n _this3.data.currentIndex = parseInt(element.getAttribute('data-index'), 10);\n\n _this3._setHashByCurrentIndex();\n\n var currentItem = _this3._getSelectedItem();\n\n if (currentItem.loaded) {\n _this3._initPhoto();\n\n _this3.addAppearEffect(element, currentItem);\n\n _this3.clicked = true;\n\n _this3.update();\n\n body.style.overflow = 'hidden';\n\n _this3._fireEvent('open');\n } else {\n _this3._loadItem(currentItem).then(function () {\n _this3._initPhoto();\n\n _this3.addAppearEffect(element, currentItem);\n\n _this3.clicked = true;\n\n _this3.update();\n\n body.style.overflow = 'hidden';\n\n _this3._fireEvent('open');\n });\n }\n };\n\n element.addEventListener('click', clickHandler);\n\n this._registerRemoveEvent(element, 'click', clickHandler);\n }\n }, {\n key: \"_initPhoto\",\n value: function _initPhoto() {\n this.data.total = this.groupItems().length;\n this.data.hide = false;\n this.data.photoPosX = 0;\n this.data.photoPosY = 0;\n\n this._setPosByCurrentIndex();\n\n this._setSizeByScreen();\n\n this.setArrow();\n\n if (this.data.resizeStyle === 'fill' && this.data.isSmartPhone) {\n this.data.scale = true;\n this.data.hideUi = true;\n this.data.scaleSize = this._getScaleBoarder();\n }\n }\n }, {\n key: \"onUpdated\",\n value: function onUpdated() {\n var _this4 = this;\n\n if (this.data.appearEffect && this.data.appearEffect.once) {\n this.data.appearEffect.once = false;\n this.execEffect().then(function () {\n _this4.data.appearEffect = null;\n _this4.data.appear = true;\n\n _this4.update();\n });\n }\n\n if (this.clicked) {\n this.clicked = false;\n var classNames = this.data.classNames;\n\n var caption = this._getElementByClass(classNames.smartPhotoCaption);\n\n caption.focus();\n }\n }\n }, {\n key: \"execEffect\",\n value: function execEffect() {\n var _this5 = this;\n\n return new Promise(function (resolve) {\n if (util.isOldIE()) {\n resolve();\n }\n\n var _this5$data = _this5.data,\n appearEffect = _this5$data.appearEffect,\n classNames = _this5$data.classNames;\n\n var effect = _this5._getElementByClass(classNames.smartPhotoImgClone);\n\n var handler = function handler() {\n effect.removeEventListener('transitionend', handler, true);\n resolve();\n };\n\n effect.addEventListener('transitionend', handler, true);\n setTimeout(function () {\n effect.style.transform = \"translate(\".concat(appearEffect.afterX, \"px, \").concat(appearEffect.afterY, \"px) scale(\").concat(appearEffect.scale, \")\");\n }, 10);\n });\n }\n }, {\n key: \"addAppearEffect\",\n value: function addAppearEffect(element, item) {\n if (this.data.showAnimation === false) {\n this.data.appear = true;\n return;\n }\n\n var img = element.querySelector('img');\n var pos = util.getViewPos(img);\n var appear = {};\n var scale = 1;\n appear.width = img.offsetWidth;\n appear.height = img.offsetHeight;\n appear.top = pos.top;\n appear.left = pos.left;\n appear.once = true;\n\n if (img.getAttribute(this.data.lazyAttribute)) {\n appear.img = img.getAttribute(this.data.lazyAttribute);\n } else {\n appear.img = item.src;\n }\n\n var toX = this._getWindowWidth();\n\n var toY = this._getWindowHeight();\n\n var screenY = toY - this.data.headerHeight - this.data.footerHeight;\n\n if (this.data.resizeStyle === 'fill' && this.data.isSmartPhone) {\n if (img.offsetWidth > img.offsetHeight) {\n scale = toY / img.offsetHeight;\n } else {\n scale = toX / img.offsetWidth;\n }\n } else {\n if (appear.width >= appear.height) {\n if (item.height < screenY) {\n scale = item.width / appear.width;\n } else {\n scale = screenY / appear.height;\n }\n } else if (appear.height > appear.width) {\n if (item.height < screenY) {\n scale = item.height / appear.height;\n } else {\n scale = screenY / appear.height;\n }\n }\n\n if (appear.width * scale > toX) {\n scale = toX / appear.width;\n }\n }\n\n var x = (scale - 1) / 2 * img.offsetWidth + (toX - img.offsetWidth * scale) / 2;\n var y = (scale - 1) / 2 * img.offsetHeight + (toY - img.offsetHeight * scale) / 2;\n appear.afterX = x;\n appear.afterY = y;\n appear.scale = scale;\n this.data.appearEffect = appear;\n }\n }, {\n key: \"hidePhoto\",\n value: function hidePhoto() {\n var _this6 = this;\n\n var dir = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'bottom';\n this.data.hide = true;\n this.data.appear = false;\n this.data.appearEffect = null;\n this.data.hideUi = false;\n this.data.scale = false;\n this.data.scaleSize = 1;\n var scrollX = window.pageXOffset !== undefined ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft;\n var scrollY = window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n var body = document.querySelector('body');\n\n if (window.location.hash) {\n this._setHash('');\n }\n\n window.scroll(scrollX, scrollY);\n\n this._doHideEffect(dir).then(function () {\n _this6.update();\n\n body.style.overflow = '';\n\n _this6._fireEvent('close');\n });\n }\n }, {\n key: \"_doHideEffect\",\n value: function _doHideEffect(dir) {\n var _this7 = this;\n\n return new Promise(function (resolve) {\n if (util.isOldIE()) {\n resolve();\n }\n\n var classNames = _this7.data.classNames;\n\n var photo = _this7._getElementByClass(classNames.smartPhoto);\n\n var img = _this7._getElementByQuery(\".current .\".concat(classNames.smartPhotoImg));\n\n var height = _this7._getWindowHeight();\n\n var handler = function handler() {\n photo.removeEventListener('transitionend', handler, true);\n resolve();\n };\n\n photo.style.opacity = 0;\n\n if (dir === 'bottom') {\n img.style.transform = \"translateY(\".concat(height, \"px)\");\n } else if (dir === 'top') {\n img.style.transform = \"translateY(-\".concat(height, \"px)\");\n }\n\n photo.addEventListener('transitionend', handler, true);\n });\n }\n }, {\n key: \"_getElementByClass\",\n value: function _getElementByClass(className) {\n return document.querySelector(\"[data-id=\\\"\".concat(this.id, \"\\\"] .\").concat(className));\n }\n }, {\n key: \"_getElementByQuery\",\n value: function _getElementByQuery(query) {\n return document.querySelector(\"[data-id=\\\"\".concat(this.id, \"\\\"] \").concat(query));\n }\n }, {\n key: \"_getTouchPos\",\n value: function _getTouchPos() {\n var x = 0;\n var y = 0;\n var e = typeof event === 'undefined' ? this.e : event;\n\n if (this._isTouched(e)) {\n x = e.touches[0].pageX;\n y = e.touches[0].pageY;\n } else if (e.pageX) {\n x = e.pageX;\n y = e.pageY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"_getGesturePos\",\n value: function _getGesturePos(e) {\n var touches = e.touches;\n return [{\n x: touches[0].pageX,\n y: touches[0].pageY\n }, {\n x: touches[1].pageX,\n y: touches[1].pageY\n }];\n }\n }, {\n key: \"_setPosByCurrentIndex\",\n value: function _setPosByCurrentIndex() {\n var _this8 = this;\n\n var items = this.groupItems();\n var moveX = -1 * items[this.data.currentIndex].translateX;\n this.pos.x = moveX;\n setTimeout(function () {\n _this8.data.translateX = moveX;\n _this8.data.translateY = 0;\n\n _this8._listUpdate();\n }, 1);\n }\n }, {\n key: \"_setHashByCurrentIndex\",\n value: function _setHashByCurrentIndex() {\n var scrollX = window.pageXOffset !== undefined ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft;\n var scrollY = window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n var items = this.groupItems();\n var id = items[this.data.currentIndex].id;\n var group = this.data.currentGroup;\n var hash = \"group=\".concat(group, \"&photo=\").concat(id);\n\n this._setHash(hash);\n\n window.scroll(scrollX, scrollY);\n }\n }, {\n key: \"_setHash\",\n value: function _setHash(hash) {\n if (!(window.history && window.history.pushState) || !this.data.useHistoryApi) {\n return;\n }\n\n if (hash) {\n window.history.replaceState(null, null, \"\".concat(location.pathname).concat(location.search, \"#\").concat(hash));\n } else {\n window.history.replaceState(null, null, \"\".concat(location.pathname).concat(location.search));\n }\n }\n }, {\n key: \"_getCurrentItemByHash\",\n value: function _getCurrentItemByHash() {\n var group = this.data.group;\n var hash = location.hash.substr(1);\n var hashObj = util.parseQuery(hash);\n var currentItem = null;\n\n var getCurrentItem = function getCurrentItem(item) {\n if (hashObj.group === item.groupId && hashObj.photo === item.id) {\n currentItem = item;\n }\n };\n\n Object.keys(group).forEach(function (key) {\n group[key].forEach(getCurrentItem);\n });\n return currentItem;\n }\n }, {\n key: \"_loadItem\",\n value: function _loadItem(item) {\n return new Promise(function (resolve) {\n var img = new Image();\n\n img.onload = function () {\n item.width = img.width;\n item.height = img.height;\n item.loaded = true;\n resolve();\n };\n\n img.onerror = function () {\n resolve();\n };\n\n img.src = item.src;\n });\n }\n }, {\n key: \"_getItemByIndex\",\n value: function _getItemByIndex(index) {\n var data = this.data;\n\n if (data.group[data.currentGroup][index]) {\n return data.group[data.currentGroup][index];\n }\n\n return null;\n }\n }, {\n key: \"_loadNeighborItems\",\n value: function _loadNeighborItems() {\n var _this9 = this;\n\n var index = this.data.currentIndex;\n var loadOffset = this.data.loadOffset;\n var from = index - loadOffset;\n var to = index + loadOffset;\n var promises = [];\n\n for (var i = from; i < to; i++) {\n var item = this._getItemByIndex(i);\n\n if (item && !item.loaded) {\n promises.push(this._loadItem(item));\n }\n }\n\n if (promises.length) {\n Promise.all(promises).then(function () {\n _this9._initPhoto();\n\n _this9.update();\n });\n }\n }\n }, {\n key: \"_setSizeByScreen\",\n value: function _setSizeByScreen() {\n var windowX = this._getWindowWidth();\n\n var windowY = this._getWindowHeight();\n\n var headerHeight = this.data.headerHeight;\n var footerHeight = this.data.footerHeight;\n var screenY = windowY - (headerHeight + footerHeight);\n var items = this.groupItems();\n items.forEach(function (item) {\n if (!item.loaded) {\n return;\n }\n\n item.processed = true;\n item.scale = screenY / item.height;\n\n if (item.height < screenY) {\n item.scale = 1;\n }\n\n item.x = (item.scale - 1) / 2 * item.width + (windowX - item.width * item.scale) / 2;\n item.y = (item.scale - 1) / 2 * item.height + (windowY - item.height * item.scale) / 2;\n\n if (item.width * item.scale > windowX) {\n item.scale = windowX / item.width;\n item.x = (item.scale - 1) / 2 * item.width;\n }\n });\n }\n }, {\n key: \"_slideList\",\n value: function _slideList() {\n var _this10 = this;\n\n this.data.scaleSize = 1;\n this.isBeingZoomed = false;\n this.data.hideUi = false;\n this.data.scale = false;\n this.data.photoPosX = 0;\n this.data.photoPosY = 0;\n this.data.onMoveClass = true;\n\n this._setPosByCurrentIndex();\n\n this._setHashByCurrentIndex();\n\n this._setSizeByScreen();\n\n setTimeout(function () {\n var item = _this10._getSelectedItem();\n\n _this10.data.onMoveClass = false;\n\n _this10.setArrow();\n\n _this10.update();\n\n if (_this10.data.oldIndex !== _this10.data.currentIndex) {\n _this10._fireEvent('change');\n }\n\n _this10.data.oldIndex = _this10.data.currentIndex;\n\n _this10._loadNeighborItems();\n\n if (!item.loaded) {\n _this10._loadItem(item).then(function () {\n _this10._initPhoto();\n\n _this10.update();\n });\n }\n }, 200);\n }\n }, {\n key: \"gotoSlide\",\n value: function gotoSlide(index) {\n if (this.e && this.e.preventDefault) {\n this.e.preventDefault();\n }\n\n this.data.currentIndex = parseInt(index, 10);\n\n if (!this.data.currentIndex) {\n this.data.currentIndex = 0;\n }\n\n this._slideList();\n }\n }, {\n key: \"setArrow\",\n value: function setArrow() {\n var items = this.groupItems();\n var length = items.length;\n var next = this.data.currentIndex + 1;\n var prev = this.data.currentIndex - 1;\n this.data.showNextArrow = false;\n this.data.showPrevArrow = false;\n\n if (next !== length) {\n this.data.next = next;\n this.data.showNextArrow = true;\n }\n\n if (prev !== -1) {\n this.data.prev = prev;\n this.data.showPrevArrow = true;\n }\n }\n }, {\n key: \"beforeDrag\",\n value: function beforeDrag() {\n if (this._isGestured(this.e)) {\n this.beforeGesture();\n return;\n }\n\n this.isBeingZoomed = false;\n\n if (this.data.scale) {\n this.beforePhotoDrag();\n return;\n }\n\n var pos = this._getTouchPos();\n\n this.isSwipable = true;\n this.dragStart = true;\n this.firstPos = pos;\n this.oldPos = pos;\n }\n }, {\n key: \"afterDrag\",\n value: function afterDrag() {\n var items = this.groupItems();\n var date = new Date();\n var tapSecond = date.getTime();\n var offset = this.tapSecond - tapSecond;\n var swipeWidth = 0;\n var swipeHeight = 0;\n this.isSwipable = false;\n this.onListMove = false;\n\n if (this.oldPos) {\n swipeWidth = this.oldPos.x - this.firstPos.x;\n swipeHeight = this.oldPos.y - this.firstPos.y;\n }\n\n if (this.isBeingZoomed) {\n this.afterGesture();\n return;\n }\n\n if (this.data.scale) {\n this.afterPhotoDrag();\n return;\n } else if (!util.isSmartPhone() && swipeWidth === 0 && swipeHeight === 0) {\n this.zoomPhoto();\n return;\n }\n\n if (Math.abs(offset) <= 500 && swipeWidth === 0 && swipeHeight === 0) {\n this.e.preventDefault();\n this.zoomPhoto();\n return;\n }\n\n this.tapSecond = tapSecond;\n\n this._fireEvent('swipeend');\n\n if (this.moveDir === 'horizontal') {\n if (swipeWidth >= this.data.swipeOffset && this.data.currentIndex !== 0) {\n this.data.currentIndex -= 1;\n } else if (swipeWidth <= -this.data.swipeOffset && this.data.currentIndex !== items.length - 1) {\n this.data.currentIndex += 1;\n }\n\n this._slideList();\n }\n\n if (this.moveDir === 'vertical') {\n if (this.data.swipeBottomToClose && swipeHeight >= this.data.swipeOffset) {\n this.hidePhoto('bottom');\n } else if (this.data.swipeTopToClose && swipeHeight <= -this.data.swipeOffset) {\n this.hidePhoto('top');\n } else {\n this.data.translateY = 0;\n\n this._slideList();\n }\n }\n }\n }, {\n key: \"onDrag\",\n value: function onDrag() {\n this.e.preventDefault();\n\n if (this._isGestured(this.e) && this.onListMove === false) {\n this.onGesture();\n return;\n }\n\n if (this.isBeingZoomed) {\n return;\n }\n\n if (this.data.scale) {\n this.onPhotoDrag();\n return;\n }\n\n if (!this.isSwipable) {\n return;\n }\n\n var pos = this._getTouchPos();\n\n var x = pos.x - this.oldPos.x;\n var y = pos.y - this.firstPos.y;\n\n if (this.dragStart) {\n this._fireEvent('swipestart');\n\n this.dragStart = false;\n\n if (Math.abs(x) > Math.abs(y)) {\n this.moveDir = 'horizontal';\n } else {\n this.moveDir = 'vertical';\n }\n }\n\n if (this.moveDir === 'horizontal') {\n this.pos.x += x;\n this.data.translateX = this.pos.x;\n } else {\n this.data.translateY = y;\n }\n\n this.onListMove = true;\n this.oldPos = pos;\n\n this._listUpdate();\n }\n }, {\n key: \"zoomPhoto\",\n value: function zoomPhoto() {\n var _this11 = this;\n\n this.data.hideUi = true;\n this.data.scaleSize = this._getScaleBoarder();\n\n if (this.data.scaleSize <= 1) {\n return;\n }\n\n this.data.photoPosX = 0;\n this.data.photoPosY = 0;\n\n this._photoUpdate();\n\n setTimeout(function () {\n _this11.data.scale = true;\n\n _this11._photoUpdate();\n\n _this11._fireEvent('zoomin');\n }, 300);\n }\n }, {\n key: \"zoomOutPhoto\",\n value: function zoomOutPhoto() {\n this.data.scaleSize = 1;\n this.isBeingZoomed = false;\n this.data.hideUi = false;\n this.data.scale = false;\n this.data.photoPosX = 0;\n this.data.photoPosY = 0;\n\n this._photoUpdate();\n\n this._fireEvent('zoomout');\n }\n }, {\n key: \"beforePhotoDrag\",\n value: function beforePhotoDrag() {\n var pos = this._getTouchPos();\n\n this.photoSwipable = true;\n\n if (!this.data.photoPosX) {\n this.data.photoPosX = 0;\n }\n\n if (!this.data.photoPosY) {\n this.data.photoPosY = 0;\n }\n\n this.oldPhotoPos = pos;\n this.firstPhotoPos = pos;\n }\n }, {\n key: \"onPhotoDrag\",\n value: function onPhotoDrag() {\n if (!this.photoSwipable) {\n return;\n }\n\n this.e.preventDefault();\n\n var pos = this._getTouchPos();\n\n var x = pos.x - this.oldPhotoPos.x;\n var y = pos.y - this.oldPhotoPos.y;\n\n var moveX = this._round(this.data.scaleSize * x, 6);\n\n var moveY = this._round(this.data.scaleSize * y, 6);\n\n if (typeof moveX === 'number') {\n this.data.photoPosX += moveX;\n this.photoVX = moveX;\n }\n\n if (typeof moveY === 'number') {\n this.data.photoPosY += moveY;\n this.photoVY = moveY;\n }\n\n this.oldPhotoPos = pos;\n\n this._photoUpdate();\n }\n }, {\n key: \"afterPhotoDrag\",\n value: function afterPhotoDrag() {\n if (this.oldPhotoPos.x === this.firstPhotoPos.x && this.photoSwipable) {\n this.photoSwipable = false;\n this.zoomOutPhoto();\n } else {\n this.photoSwipable = false;\n\n var item = this._getSelectedItem();\n\n var bound = this._makeBound(item);\n\n var offset = this.data.swipeOffset * this.data.scaleSize;\n var flagX = 0;\n var flagY = 0;\n\n if (this.data.photoPosX > bound.maxX) {\n flagX = -1;\n } else if (this.data.photoPosX < bound.minX) {\n flagX = 1;\n }\n\n if (this.data.photoPosY > bound.maxY) {\n flagY = -1;\n } else if (this.data.photoPosY < bound.minY) {\n flagY = 1;\n }\n\n if (this.data.photoPosX - bound.maxX > offset && this.data.currentIndex !== 0) {\n this.gotoSlide(this.data.prev);\n return;\n }\n\n if (bound.minX - this.data.photoPosX > offset && this.data.currentIndex + 1 !== this.data.total) {\n this.gotoSlide(this.data.next);\n return;\n } // todo\n // if(this.data.photoPosY - bound.maxY > offset) {\n // this.hidePhoto();\n // return;\n // }\n\n\n if (flagX === 0 && flagY === 0) {\n this.vx = this.photoVX / 5;\n this.vy = this.photoVY / 5;\n } else {\n this._registerElasticForce(flagX, flagY);\n }\n }\n }\n }, {\n key: \"beforeGesture\",\n value: function beforeGesture() {\n this._fireEvent('gesturestart');\n\n var pos = this._getGesturePos(this.e);\n\n var distance = this._getDistance(pos[0], pos[1]);\n\n this.isBeingZoomed = true;\n this.oldDistance = distance;\n this.data.scale = true;\n this.e.preventDefault();\n }\n }, {\n key: \"onGesture\",\n value: function onGesture() {\n var pos = this._getGesturePos(this.e);\n\n var distance = this._getDistance(pos[0], pos[1]);\n\n var size = (distance - this.oldDistance) / 100;\n var oldScaleSize = this.data.scaleSize;\n var posX = this.data.photoPosX;\n var posY = this.data.photoPosY;\n this.isBeingZoomed = true;\n this.data.scaleSize += this._round(size, 6);\n\n if (this.data.scaleSize < 0.2) {\n this.data.scaleSize = 0.2;\n } // todo\n\n\n if (this.data.scaleSize < oldScaleSize) {\n this.data.photoPosX = (1 + this.data.scaleSize - oldScaleSize) * posX;\n this.data.photoPosY = (1 + this.data.scaleSize - oldScaleSize) * posY;\n }\n\n if (this.data.scaleSize < 1 || this.data.scaleSize > this._getScaleBoarder()) {\n this.data.hideUi = true;\n } else {\n this.data.hideUi = false;\n }\n\n this.oldDistance = distance;\n this.e.preventDefault();\n\n this._photoUpdate();\n }\n }, {\n key: \"afterGesture\",\n value: function afterGesture() {\n if (this.data.scaleSize > this._getScaleBoarder()) {\n return;\n }\n\n this.data.photoPosX = 0;\n this.data.photoPosY = 0;\n this.data.scale = false;\n this.data.scaleSize = 1;\n this.data.hideUi = false;\n\n this._fireEvent('gestureend');\n\n this._photoUpdate();\n }\n }, {\n key: \"_getForceAndTheta\",\n value: function _getForceAndTheta(vx, vy) {\n return {\n force: Math.sqrt(vx * vx + vy * vy),\n theta: Math.atan2(vy, vx)\n };\n }\n }, {\n key: \"_getScaleBoarder\",\n value: function _getScaleBoarder() {\n var item = this._getSelectedItem();\n\n var windowWidth = this._getWindowWidth();\n\n var windowHeight = this._getWindowHeight();\n\n if (!util.isSmartPhone()) {\n return 1 / item.scale;\n }\n\n if (item.width > item.height) {\n return windowHeight / (item.height * item.scale);\n }\n\n return windowWidth / (item.width * item.scale);\n }\n }, {\n key: \"_makeBound\",\n value: function _makeBound(item) {\n var width = item.width * item.scale * this.data.scaleSize;\n var height = item.height * item.scale * this.data.scaleSize;\n var minX;\n var minY;\n var maxX;\n var maxY;\n\n var windowWidth = this._getWindowWidth();\n\n var windowHeight = this._getWindowHeight();\n\n if (windowWidth > width) {\n maxX = (windowWidth - width) / 2;\n minX = -1 * maxX;\n } else {\n maxX = (width - windowWidth) / 2;\n minX = -1 * maxX;\n }\n\n if (windowHeight > height) {\n maxY = (windowHeight - height) / 2;\n minY = -1 * maxY;\n } else {\n maxY = (height - windowHeight) / 2;\n minY = -1 * maxY;\n }\n\n return {\n minX: this._round(minX, 6) * this.data.scaleSize,\n minY: this._round(minY, 6) * this.data.scaleSize,\n maxX: this._round(maxX, 6) * this.data.scaleSize,\n maxY: this._round(maxY, 6) * this.data.scaleSize\n };\n }\n }, {\n key: \"_registerElasticForce\",\n value: function _registerElasticForce(x, y) {\n var _this12 = this;\n\n var item = this._getSelectedItem();\n\n var bound = this._makeBound(item);\n\n this.data.elastic = true;\n\n if (x === 1) {\n this.data.photoPosX = bound.minX;\n } else if (x === -1) {\n this.data.photoPosX = bound.maxX;\n }\n\n if (y === 1) {\n this.data.photoPosY = bound.minY;\n } else if (y === -1) {\n this.data.photoPosY = bound.maxY;\n }\n\n this._photoUpdate();\n\n setTimeout(function () {\n _this12.data.elastic = false;\n\n _this12._photoUpdate();\n }, 300);\n }\n }, {\n key: \"_getSelectedItem\",\n value: function _getSelectedItem() {\n var data = this.data;\n var index = data.currentIndex;\n return data.group[data.currentGroup][index];\n }\n }, {\n key: \"_getUniqId\",\n value: function _getUniqId() {\n return (Date.now().toString(36) + Math.random().toString(36).substr(2, 5)).toUpperCase();\n }\n }, {\n key: \"_getDistance\",\n value: function _getDistance(point1, point2) {\n var x = point1.x - point2.x;\n var y = point1.y - point2.y;\n return Math.sqrt(x * x + y * y);\n }\n }, {\n key: \"_round\",\n value: function _round(val, precision) {\n var digit = Math.pow(10, precision);\n val *= digit;\n val = Math.round(val);\n val /= digit;\n return val;\n }\n }, {\n key: \"_isTouched\",\n value: function _isTouched(e) {\n if (e && e.touches) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"_isGestured\",\n value: function _isGestured(e) {\n if (e && e.touches && e.touches.length > 1) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"_isSmartPhone\",\n value: function _isSmartPhone() {\n var agent = navigator.userAgent;\n\n if (agent.indexOf('iPhone') > 0 || agent.indexOf('iPad') > 0 || agent.indexOf('ipod') > 0 || agent.indexOf('Android') > 0) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"_calcGravity\",\n value: function _calcGravity(gamma, beta) {\n if (gamma > 5 || gamma < -5) {\n this.vx += gamma * 0.05;\n }\n\n if (this.data.verticalGravity === false) {\n return;\n }\n\n if (beta > 5 || beta < -5) {\n this.vy += beta * 0.05;\n }\n }\n }, {\n key: \"_photoUpdate\",\n value: function _photoUpdate() {\n var classNames = this.data.classNames;\n\n var current = this._getElementByQuery('.current');\n\n var img = current.querySelector(\".\".concat(classNames.smartPhotoImg));\n\n var nav = this._getElementByQuery(\".\".concat(classNames.smartPhotoNav));\n\n var arrows = this._getElementByQuery(\".\".concat(classNames.smartPhotoArrows));\n\n var photoPosX = this.virtualPos(this.data.photoPosX);\n var photoPosY = this.virtualPos(this.data.photoPosY);\n var scaleSize = this.data.scaleSize;\n var transform = \"translate(\".concat(photoPosX, \"px,\").concat(photoPosY, \"px) scale(\").concat(scaleSize, \")\");\n img.style.transform = transform;\n\n if (this.data.scale) {\n util.addClass(img, classNames.smartPhotoImgOnMove);\n } else {\n util.removeClass(img, classNames.smartPhotoImgOnMove);\n }\n\n if (this.data.elastic) {\n util.addClass(img, classNames.smartPhotoImgElasticMove);\n } else {\n util.removeClass(img, classNames.smartPhotoImgElasticMove);\n }\n\n if (this.data.hideUi) {\n if (nav) {\n nav.setAttribute('aria-hidden', 'true');\n }\n\n if (arrows) {\n arrows.setAttribute('aria-hidden', 'true');\n }\n } else {\n if (nav) {\n nav.setAttribute('aria-hidden', 'false');\n }\n\n if (arrows) {\n arrows.setAttribute('aria-hidden', 'false');\n }\n }\n }\n }, {\n key: \"_getWindowWidth\",\n value: function _getWindowWidth() {\n if (document && document.documentElement) {\n return document.documentElement.clientWidth;\n } else if (window && window.innerWidth) {\n return window.innerWidth;\n }\n\n return 0;\n }\n }, {\n key: \"_getWindowHeight\",\n value: function _getWindowHeight() {\n if (document && document.documentElement) {\n return document.documentElement.clientHeight;\n } else if (window && window.innerHeight) {\n return window.innerHeight;\n }\n\n return 0;\n }\n }, {\n key: \"_listUpdate\",\n value: function _listUpdate() {\n var classNames = this.data.classNames;\n\n var list = this._getElementByQuery(\".\".concat(classNames.smartPhotoList));\n\n var transform = \"translate(\".concat(this.data.translateX, \"px,\").concat(this.data.translateY, \"px)\");\n list.style.transform = transform; // $list\n\n if (this.data.onMoveClass) {\n util.addClass(list, classNames.smartPhotoListOnMove);\n } else {\n util.removeClass(list, classNames.smartPhotoListOnMove);\n }\n }\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(eventName) {\n var photo = this._getElementByClass(this.data.classNames.smartPhoto);\n\n util.triggerEvent(photo, eventName);\n }\n }, {\n key: \"_doAnim\",\n value: function _doAnim() {\n if (this.isBeingZoomed || this.isSwipable || this.photoSwipable || this.data.elastic || !this.data.scale) {\n return;\n }\n\n this.data.photoPosX += this.vx;\n this.data.photoPosY += this.vy;\n\n var item = this._getSelectedItem();\n\n var bound = this._makeBound(item);\n\n if (this.data.photoPosX < bound.minX) {\n this.data.photoPosX = bound.minX;\n this.vx *= -0.2;\n } else if (this.data.photoPosX > bound.maxX) {\n this.data.photoPosX = bound.maxX;\n this.vx *= -0.2;\n }\n\n if (this.data.photoPosY < bound.minY) {\n this.data.photoPosY = bound.minY;\n this.vy *= -0.2;\n } else if (this.data.photoPosY > bound.maxY) {\n this.data.photoPosY = bound.maxY;\n this.vy *= -0.2;\n }\n\n var power = this._getForceAndTheta(this.vx, this.vy);\n\n var force = power.force;\n var theta = power.theta;\n force -= this.data.registance;\n\n if (Math.abs(force) < 0.5) {\n return;\n }\n\n this.vx = Math.cos(theta) * force;\n this.vy = Math.sin(theta) * force;\n\n this._photoUpdate();\n }\n }]);\n\n return SmartPhoto;\n}(_aTemplate[\"default\"]);\n\nexports[\"default\"] = SmartPhoto;\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nrequire('ie-array-find-polyfill');\n\nvar _morphdom = require('morphdom');\n\nvar _morphdom2 = _interopRequireDefault(_morphdom);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar eventType = 'input paste copy click change keydown keyup keypress contextmenu mouseup mousedown mousemove touchstart touchend touchmove compositionstart compositionend focus';\nvar bindType = 'input change click';\nvar dataAction = eventType.replace(/([a-z]+)/g, '[data-action-$1],') + '[data-action]';\n\nvar aTemplate = function () {\n function aTemplate(opt) {\n var _this = this;\n\n _classCallCheck(this, aTemplate);\n\n this.atemplate = [];\n this.events = [];\n if (opt) {\n Object.keys(opt).forEach(function (key) {\n _this[key] = opt[key];\n });\n }\n if (!this.data) {\n this.data = {};\n }\n if (!this.templates) {\n this.templates = [];\n }\n var templates = this.templates;\n var length = templates.length;\n for (var i = 0, n = length; i < n; i += 1) {\n var template = this.templates[i];\n var html = (0, _util.selector)('#' + template).innerHTML;\n this.atemplate.push({ id: template, html: html, binded: false });\n }\n }\n\n _createClass(aTemplate, [{\n key: 'addDataBind',\n value: function addDataBind(ele) {\n var _this2 = this;\n\n (0, _util.on)(ele, '[data-bind]', bindType, function (e) {\n var target = e.delegateTarget;\n var data = target.getAttribute('data-bind');\n var attr = target.getAttribute('href');\n var value = target.value;\n if (attr) {\n value = value.replace('#', '');\n }\n if (target.getAttribute('type') === 'checkbox') {\n (function () {\n var arr = [];\n var items = document.querySelectorAll('[data-bind=\"' + data + '\"]');\n [].forEach.call(items, function (item) {\n if (item.checked) {\n arr.push(item.value);\n }\n });\n })();\n } else if (target.getAttribute('type') !== 'radio') {\n _this2.updateDataByString(data, value);\n }\n });\n this.events.push({\n element: ele,\n selector: '[data-bind]',\n event: bindType\n });\n }\n }, {\n key: 'addActionBind',\n value: function addActionBind(ele) {\n var _this3 = this;\n\n (0, _util.on)(ele, dataAction, eventType, function (e) {\n var target = e.delegateTarget;\n var events = eventType.split(' ');\n var action = 'action';\n events.forEach(function (event) {\n if (target.getAttribute('data-action-' + event)) {\n if (e.type === event) {\n action += '-' + event;\n }\n }\n });\n var string = target.getAttribute('data-' + action);\n if (!string) {\n return;\n }\n var method = string.replace(/\\(.*?\\);?/, '');\n var parameter = string.replace(/(.*?)\\((.*?)\\);?/, '$2');\n var pts = parameter.split(','); // 引き数\n _this3.e = e;\n if (_this3.method && _this3.method[method]) {\n var _method;\n\n (_method = _this3.method)[method].apply(_method, _toConsumableArray(pts));\n } else if (_this3[method]) {\n _this3[method].apply(_this3, _toConsumableArray(pts));\n }\n });\n this.events.push({\n element: ele,\n selector: dataAction,\n event: bindType\n });\n }\n }, {\n key: 'removeTemplateEvents',\n value: function removeTemplateEvents() {\n this.events.forEach(function (event) {\n (0, _util.off)(event.element, event.selector, event.event);\n });\n }\n }, {\n key: 'addTemplate',\n value: function addTemplate(id, html) {\n this.atemplate.push({ id: id, html: html, binded: false });\n this.templates.push(id);\n }\n\n // loadHtml() {\n // const templates = this.templates;\n // const promises = [];\n // templates.forEach((template) => {\n // const d = new $.Deferred();\n // promises.push(d);\n // const src = selector(`#${template}`).getAttribute('src');\n // $.ajax({\n // url: src,\n // type: 'GET',\n // dataType: 'text'\n // }).success((data) => {\n // selector(`#${template}`).innerHTML = data;\n // d.resolve();\n // });\n // });\n // return $.when(...promises);\n // }\n\n }, {\n key: 'getData',\n value: function getData() {\n return JSON.parse(JSON.stringify(this.data));\n }\n }, {\n key: 'saveData',\n value: function saveData(key) {\n var data = JSON.stringify(this.data);\n localStorage.setItem(key, data);\n }\n }, {\n key: 'setData',\n value: function setData(opt) {\n var _this4 = this;\n\n Object.keys(opt).forEach(function (key) {\n if (typeof opt[key] !== 'function') {\n _this4.data[key] = opt[key];\n }\n });\n }\n }, {\n key: 'loadData',\n value: function loadData(key) {\n var data = JSON.parse(localStorage.getItem(key));\n if (data) {\n this.setData(data);\n }\n }\n }, {\n key: 'getRand',\n value: function getRand(a, b) {\n return ~~(Math.random() * (b - a + 1)) + a;\n }\n }, {\n key: 'getRandText',\n value: function getRandText(limit) {\n var ret = '';\n var strings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var length = strings.length;\n for (var i = 0; i < limit; i += 1) {\n ret += strings.charAt(Math.floor(this.getRand(0, length)));\n }\n return ret;\n }\n }, {\n key: 'getDataFromObj',\n value: function getDataFromObj(s, o) {\n s = s.replace(/\\[([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+)\\]/g, '.$1'); // convert indexes to properties\n s = s.replace(/^\\./, ''); // strip leading dot\n var a = s.split('.');\n while (a.length) {\n var n = a.shift();\n if (n in o) {\n o = o[n];\n } else {\n return null;\n }\n }\n return o;\n }\n }, {\n key: 'getDataByString',\n value: function getDataByString(s) {\n var o = this.data;\n return this.getDataFromObj(s, o);\n }\n }, {\n key: 'updateDataByString',\n value: function updateDataByString(path, newValue) {\n var object = this.data;\n var stack = path.split('.');\n while (stack.length > 1) {\n object = object[stack.shift()];\n }\n object[stack.shift()] = newValue;\n }\n }, {\n key: 'removeDataByString',\n value: function removeDataByString(path) {\n var object = this.data;\n var stack = path.split('.');\n while (stack.length > 1) {\n object = object[stack.shift()];\n }\n var shift = stack.shift();\n if (shift.match(/^\\d+$/)) {\n object.splice(Number(shift), 1);\n } else {\n delete object[shift];\n }\n }\n }, {\n key: 'resolveBlock',\n value: function resolveBlock(html, item, i) {\n var that = this;\n var touchs = html.match(//g);\n var touchnots = html.match(//g);\n var exists = html.match(//g);\n var empties = html.match(//g);\n /* タッチブロック解決*/\n if (touchs) {\n for (var k = 0, n = touchs.length; k < n; k += 1) {\n var start = touchs[k];\n start = start.replace(/([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+):touch#([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+)/, '($1):touch#($2)');\n var end = start.replace(/BEGIN/, 'END');\n var reg = new RegExp(start + '(([\\\\n\\\\r\\\\t]|.)*?)' + end, 'g');\n html = html.replace(reg, function (m, key2, val, next) {\n var itemkey = typeof item[key2] === 'function' ? item[key2].apply(that) : that.getDataFromObj(key2, item);\n if ('' + itemkey === val) {\n return next;\n }\n return '';\n });\n }\n }\n /* タッチノットブロック解決*/\n if (touchnots) {\n for (var _k = 0, _n = touchnots.length; _k < _n; _k += 1) {\n var _start = touchnots[_k];\n _start = _start.replace(/([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+):touchnot#([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+)/, '($1):touchnot#($2)');\n var _end = _start.replace(/BEGIN/, 'END');\n var _reg = new RegExp(_start + '(([\\\\n\\\\r\\\\t]|.)*?)' + _end, 'g');\n html = html.replace(_reg, function (m, key2, val, next) {\n var itemkey = typeof item[key2] === 'function' ? item[key2].apply(that) : that.getDataFromObj(key2, item);\n if ('' + itemkey !== val) {\n return next;\n }\n return '';\n });\n }\n }\n /* existブロックを解決*/\n if (exists) {\n for (var _k2 = 0, _n2 = exists.length; _k2 < _n2; _k2 += 1) {\n var _start2 = exists[_k2];\n _start2 = _start2.replace(/([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+):exist/, '($1):exist');\n var _end2 = _start2.replace(/BEGIN/, 'END');\n var _reg2 = new RegExp(_start2 + '(([\\\\n\\\\r\\\\t]|.)*?)' + _end2, 'g');\n html = html.replace(_reg2, function (m, key2, next) {\n var itemkey = typeof item[key2] === 'function' ? item[key2].apply(that) : that.getDataFromObj(key2, item);\n if (itemkey || itemkey === 0) {\n return next;\n }\n return '';\n });\n }\n }\n /* emptyブロックを解決*/\n if (empties) {\n for (var _k3 = 0, _n3 = empties.length; _k3 < _n3; _k3 += 1) {\n var _start3 = empties[_k3];\n _start3 = _start3.replace(/([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+):empty/, '($1):empty');\n var _end3 = _start3.replace(/BEGIN/, 'END');\n var empty = new RegExp(_start3 + '(([\\\\n\\\\r\\\\t]|.)*?)' + _end3, 'g');\n html = html.replace(empty, function (m, key2, next) {\n var itemkey = typeof item[key2] === 'function' ? item[key2].apply(that) : that.getDataFromObj(key2, item);\n if (!itemkey && itemkey !== 0) {\n return next;\n }\n return '';\n });\n }\n }\n /* 変数解決*/\n html = html.replace(/{([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+)}(\\[([\\w\\-\\.ぁ-んァ-ヶ亜-熙]+)\\])*/g, function (n, key3, key4, converter) {\n var data = void 0;\n if ('' + key3 === 'i') {\n data = i;\n } else if (item[key3] || item[key3] === 0) {\n if (typeof item[key3] === 'function') {\n data = item[key3].apply(that);\n } else {\n data = item[key3];\n }\n } else {\n if (converter && that.convert && that.convert[converter]) {\n return that.convert[converter].call(that, '');\n }\n return '';\n }\n if (converter && that.convert && that.convert[converter]) {\n return that.convert[converter].call(that, data);\n }\n return data;\n });\n return html;\n }\n /* 絶対パス形式の変数を解決*/\n\n }, {\n key: 'resolveAbsBlock',\n value: function resolveAbsBlock(html) {\n var that = this;\n html = html.replace(/{(.*?)}/g, function (n, key3) {\n var data = that.getDataByString(key3);\n if (typeof data !== 'undefined') {\n if (typeof data === 'function') {\n return data.apply(that);\n }\n return data;\n }\n return n;\n });\n return html;\n }\n }, {\n key: 'resolveInclude',\n value: function resolveInclude(html) {\n var include = //g;\n html = html.replace(include, function (m, key) {\n return (0, _util.selector)('#' + key).innerHTML;\n });\n return html;\n }\n }, {\n key: 'resolveWith',\n value: function resolveWith(html) {\n var width = /(([\\n\\r\\t]|.)*?)/g;\n html = html.replace(width, function (m, key) {\n m = m.replace(/data\\-bind=['\"](.*?)['\"]/g, 'data-bind=\\'' + key + '.$1\\'');\n return m;\n });\n return html;\n }\n }, {\n key: 'resolveLoop',\n value: function resolveLoop(html) {\n var loop = /(([\\n\\r\\t]|.)*?)/g;\n var that = this;\n /* ループ文解決*/\n html = html.replace(loop, function (m, key, val) {\n var keyItem = that.getDataByString(key);\n var keys = [];\n if (typeof keyItem === 'function') {\n keys = keyItem.apply(that);\n } else {\n keys = keyItem;\n }\n var ret = '';\n if (keys instanceof Array) {\n for (var i = 0, n = keys.length; i < n; i += 1) {\n ret += that.resolveBlock(val, keys[i], i);\n }\n }\n /* エスケープ削除*/\n ret = ret.replace(/\\\\([^\\\\])/g, '$1');\n return ret;\n });\n return html;\n }\n }, {\n key: 'removeData',\n value: function removeData(arr) {\n var data = this.data;\n Object.keys(data).forEach(function (i) {\n for (var t = 0, n = arr.length; t < n; t += 1) {\n if (i === arr[t]) {\n delete data[i];\n }\n }\n });\n return this;\n }\n }, {\n key: 'hasLoop',\n value: function hasLoop(txt) {\n var loop = /(([\\n\\r\\t]|.)*?)/g;\n if (txt.match(loop)) {\n return true;\n }\n return false;\n }\n }, {\n key: 'getHtml',\n value: function getHtml(query, row) {\n var template = this.atemplate.find(function (item) {\n return item.id === query;\n });\n var html = '';\n if (template && template.html) {\n html = template.html;\n }\n if (row) {\n html = query;\n }\n if (!html) {\n return '';\n }\n var data = this.data;\n /* インクルード解決*/\n html = this.resolveInclude(html);\n /* with解決*/\n html = this.resolveWith(html);\n /* ループ解決*/\n while (this.hasLoop(html)) {\n html = this.resolveLoop(html);\n }\n /* 変数解決*/\n html = this.resolveBlock(html, data);\n /* エスケープ削除*/\n html = html.replace(/\\\\([^\\\\])/g, '$1');\n /* 絶対パスで指定された変数を解決*/\n html = this.resolveAbsBlock(html);\n /* 空行削除*/\n return html.replace(/^([\\t ])*\\n/gm, '');\n }\n }, {\n key: 'update',\n value: function update() {\n var _this5 = this;\n\n var renderWay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'html';\n var part = arguments[1];\n\n var templates = this.templates;\n if (this.beforeUpdated) {\n this.beforeUpdated();\n }\n\n var _loop = function _loop(i, n) {\n var tem = templates[i];\n var query = '#' + tem;\n var html = _this5.getHtml(tem);\n var target = (0, _util.selector)('[data-id=\\'' + tem + '\\']');\n if (!target) {\n (0, _util.selector)(query).insertAdjacentHTML('afterend', '
');\n if (renderWay === 'text') {\n (0, _util.selector)('[data-id=\\'' + tem + '\\']').innerText = html;\n } else {\n (0, _util.selector)('[data-id=\\'' + tem + '\\']').innerHTML = html;\n }\n } else if (renderWay === 'text') {\n target.innerText = html;\n } else if (part) {\n var doc = document.createElement('div');\n doc.innerHTML = html;\n var partHtml = doc.querySelector(part).outerHTML;\n (0, _morphdom2.default)(target.querySelector(part), partHtml);\n } else {\n (0, _morphdom2.default)(target, '
' + html + '
');\n }\n var template = _this5.atemplate.find(function (item) {\n return item.id === tem;\n });\n if (!template.binded) {\n template.binded = true;\n _this5.addDataBind((0, _util.selector)('[data-id=\\'' + tem + '\\']'));\n _this5.addActionBind((0, _util.selector)('[data-id=\\'' + tem + '\\']'));\n }\n };\n\n for (var i = 0, n = templates.length; i < n; i += 1) {\n _loop(i, n);\n }\n this.updateBindingData(part);\n if (this.onUpdated) {\n this.onUpdated(part);\n }\n return this;\n }\n }, {\n key: 'updateBindingData',\n value: function updateBindingData(part) {\n var _this6 = this;\n\n var templates = this.templates;\n for (var i = 0, n = templates.length; i < n; i += 1) {\n var temp = templates[i];\n var _template = (0, _util.selector)('[data-id=\\'' + temp + '\\']');\n if (part) {\n _template = _template.querySelector(part);\n }\n var binds = _template.querySelectorAll('[data-bind]');\n [].forEach.call(binds, function (item) {\n var data = _this6.getDataByString(item.getAttribute('data-bind'));\n if (item.getAttribute('type') === 'checkbox' || item.getAttribute('type') === 'radio') {\n if (data === item.value) {\n item.checked = true;\n }\n } else {\n // if(item !== document.activeElement) {\n item.value = data;\n // }\n }\n });\n var onewaybinds = _template.querySelectorAll('[data-bind-oneway]');\n [].forEach.call(onewaybinds, function (item) {\n var data = _this6.getDataByString(item.getAttribute('data-bind-oneway'));\n if (item.getAttribute('type') === 'checkbox' || item.getAttribute('type') === 'radio') {\n if (data === item.value) {\n item.checked = true;\n }\n } else {\n // if(item !== document.activeElement) {\n item.value = data;\n // }\n }\n });\n }\n return this;\n }\n }, {\n key: 'applyMethod',\n value: function applyMethod(method) {\n var _method2;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_method2 = this.method)[method].apply(_method2, args);\n }\n }, {\n key: 'getComputedProp',\n value: function getComputedProp(prop) {\n return this.data[prop].apply(this);\n }\n }, {\n key: 'remove',\n value: function remove(path) {\n var object = this.data;\n var stack = path.split('.');\n while (stack.length > 1) {\n object = object[stack.shift()];\n }\n var shift = stack.shift();\n if (shift.match(/^\\d+$/)) {\n object.splice(Number(shift), 1);\n } else {\n delete object[shift];\n }\n return this;\n }\n }]);\n\n return aTemplate;\n}();\n\nexports.default = aTemplate;\nmodule.exports = exports['default'];","'use strict';\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n value: function (predicate) {\n\n if (this == null) {\n throw new TypeError('this is null or not defined');\n }\n\n var obj = Object(this);\n var len = obj.length >>> 0;\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var thisArg = arguments[1];\n\n var index = 0;\n\n while (index < len) {\n var iValue = obj[index];\n if (predicate.call(thisArg, iValue, index, obj)) {\n return iValue;\n }\n index++;\n }\n\n return undefined;\n }\n });\n}","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns'){\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `Hi` which\n // createContextualFragment doesn't support\n //