@hpcc-js/common 2.72.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +2 -0
- package/dist/index.css.map +7 -0
- package/dist/index.js +30 -15317
- package/dist/index.js.map +7 -1
- package/package.json +28 -34
- package/src/CanvasWidget.ts +1 -1
- package/src/Class.ts +5 -0
- package/src/Database.ts +10 -6
- package/src/Entity.ts +5 -5
- package/src/EntityCard.ts +1 -1
- package/src/EntityPin.ts +1 -1
- package/src/EntityRect.ts +54 -36
- package/src/EntityVertex.ts +2 -2
- package/src/FAChar.ts +14 -7
- package/src/HTMLWidget.ts +1 -1
- package/src/Icon.ts +27 -15
- package/src/Image.ts +16 -7
- package/src/List.ts +9 -4
- package/src/Menu.ts +11 -6
- package/src/ProgressBar.ts +28 -18
- package/src/PropertyExt.ts +1 -24
- package/src/ResizeSurface.ts +6 -2
- package/src/SVGWidget.ts +5 -7
- package/src/SVGZoomWidget.ts +3 -3
- package/src/Shape.ts +1 -1
- package/src/Surface.ts +32 -17
- package/src/Text.ts +1 -1
- package/src/TextBox.ts +34 -19
- package/src/TitleBar.ts +3 -3
- package/src/Widget.ts +7 -8
- package/src/WidgetArray.ts +7 -5
- package/src/__package__.ts +2 -2
- package/src/index.ts +32 -32
- package/types/CanvasWidget.d.ts +1 -2
- package/types/Class.d.ts +2 -1
- package/types/Database.d.ts +9 -18
- package/types/Entity.d.ts +5 -6
- package/types/EntityCard.d.ts +1 -2
- package/types/EntityPin.d.ts +1 -2
- package/types/EntityRect.d.ts +35 -20
- package/types/EntityVertex.d.ts +2 -3
- package/types/FAChar.d.ts +11 -18
- package/types/HTMLWidget.d.ts +1 -2
- package/types/IList.d.ts +0 -1
- package/types/IMenu.d.ts +0 -1
- package/types/Icon.d.ts +23 -40
- package/types/Image.d.ts +15 -26
- package/types/List.d.ts +6 -7
- package/types/Menu.d.ts +10 -13
- package/types/Palette.d.ts +0 -1
- package/types/Platform.d.ts +0 -1
- package/types/ProgressBar.d.ts +19 -10
- package/types/PropertyExt.d.ts +1 -13
- package/types/ResizeSurface.d.ts +5 -6
- package/types/SVGWidget.d.ts +1 -3
- package/types/SVGZoomWidget.d.ts +2 -3
- package/types/Shape.d.ts +1 -2
- package/types/Surface.d.ts +27 -50
- package/types/Text.d.ts +1 -2
- package/types/TextBox.d.ts +32 -57
- package/types/TitleBar.d.ts +2 -3
- package/types/Transition.d.ts +0 -1
- package/types/Utility.d.ts +0 -1
- package/types/Widget.d.ts +4 -5
- package/types/WidgetArray.d.ts +5 -4
- package/types/__package__.d.ts +2 -3
- package/types/index.d.ts +32 -33
- package/dist/index.es6.js +0 -15071
- package/dist/index.es6.js.map +0 -1
- package/dist/index.min.js +0 -2
- package/dist/index.min.js.map +0 -1
- package/font-awesome/css/font-awesome.css +0 -2337
- package/font-awesome/css/font-awesome.css.map +0 -7
- package/font-awesome/css/font-awesome.min.css +0 -4
- package/types/CanvasWidget.d.ts.map +0 -1
- package/types/Class.d.ts.map +0 -1
- package/types/Database.d.ts.map +0 -1
- package/types/Entity.d.ts.map +0 -1
- package/types/EntityCard.d.ts.map +0 -1
- package/types/EntityPin.d.ts.map +0 -1
- package/types/EntityRect.d.ts.map +0 -1
- package/types/EntityVertex.d.ts.map +0 -1
- package/types/FAChar.d.ts.map +0 -1
- package/types/HTMLWidget.d.ts.map +0 -1
- package/types/IList.d.ts.map +0 -1
- package/types/IMenu.d.ts.map +0 -1
- package/types/Icon.d.ts.map +0 -1
- package/types/Image.d.ts.map +0 -1
- package/types/List.d.ts.map +0 -1
- package/types/Menu.d.ts.map +0 -1
- package/types/Palette.d.ts.map +0 -1
- package/types/Platform.d.ts.map +0 -1
- package/types/ProgressBar.d.ts.map +0 -1
- package/types/PropertyExt.d.ts.map +0 -1
- package/types/ResizeSurface.d.ts.map +0 -1
- package/types/SVGWidget.d.ts.map +0 -1
- package/types/SVGZoomWidget.d.ts.map +0 -1
- package/types/Shape.d.ts.map +0 -1
- package/types/Surface.d.ts.map +0 -1
- package/types/Text.d.ts.map +0 -1
- package/types/TextBox.d.ts.map +0 -1
- package/types/TitleBar.d.ts.map +0 -1
- package/types/Transition.d.ts.map +0 -1
- package/types/Utility.d.ts.map +0 -1
- package/types/Widget.d.ts.map +0 -1
- package/types/WidgetArray.d.ts.map +0 -1
- package/types/__package__.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
- package/types-3.4/CanvasWidget.d.ts +0 -9
- package/types-3.4/Class.d.ts +0 -13
- package/types-3.4/Database.d.ts +0 -137
- package/types-3.4/Entity.d.ts +0 -89
- package/types-3.4/EntityCard.d.ts +0 -14
- package/types-3.4/EntityPin.d.ts +0 -23
- package/types-3.4/EntityRect.d.ts +0 -46
- package/types-3.4/EntityVertex.d.ts +0 -31
- package/types-3.4/FAChar.d.ts +0 -30
- package/types-3.4/HTMLWidget.d.ts +0 -28
- package/types-3.4/IList.d.ts +0 -5
- package/types-3.4/IMenu.d.ts +0 -6
- package/types-3.4/Icon.d.ts +0 -63
- package/types-3.4/Image.d.ts +0 -34
- package/types-3.4/List.d.ts +0 -16
- package/types-3.4/Menu.d.ts +0 -29
- package/types-3.4/Palette.d.ts +0 -20
- package/types-3.4/Platform.d.ts +0 -6
- package/types-3.4/ProgressBar.d.ts +0 -22
- package/types-3.4/PropertyExt.d.ts +0 -115
- package/types-3.4/ResizeSurface.d.ts +0 -24
- package/types-3.4/SVGWidget.d.ts +0 -78
- package/types-3.4/SVGZoomWidget.d.ts +0 -74
- package/types-3.4/Shape.d.ts +0 -35
- package/types-3.4/Surface.d.ts +0 -70
- package/types-3.4/Text.d.ts +0 -38
- package/types-3.4/TextBox.d.ts +0 -77
- package/types-3.4/TitleBar.d.ts +0 -118
- package/types-3.4/Transition.d.ts +0 -12
- package/types-3.4/Utility.d.ts +0 -103
- package/types-3.4/Widget.d.ts +0 -154
- package/types-3.4/WidgetArray.d.ts +0 -7
- package/types-3.4/__package__.d.ts +0 -4
- package/types-3.4/index.d.ts +0 -53
package/dist/index.min.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__spreadArray","to","from","pack","ar","l","slice","concat","SuppressedError","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","name","prefix","indexOf","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","appendChild","child","insertBefore","next","keyPrefix","bindIndex","group","enter","exit","data","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","a","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","value","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","push","join","splice","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","typename","on","__on","o","j","m","type","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","that","args","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","selection","select","subgroups","subnode","subgroup","selectAll","filter","match","size","each","x","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","Math","min","merges","group0","group1","sort","compare","compareNode","sortgroups","sortgroup","callback","nodes","attr","getAttributeNS","property","classed","text","html","insert","before","deep","typenames","parseTypenames","dispatch","nextId","Local","_","toString","source","current","point$1","ownerSVGElement","createSVGPoint","point","clientX","y","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","mouse","changedTouches","touch","touches","identifier","get","id","set","noop","test","Error","Dispatch","types","T","copy","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","state","start","tick","duration","ease","init","interrupt","active","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","max","round","h","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","m2","channels","displayable","formatHex8","formatHsl","k","pow","clamp","radians","PI","degrees","Xn","Yn","Zn","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","sqrt","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelix","Cubehelix","bl","cubehelixConvert","basis","v0","v1","v2","v3","basis$1","values","floor","basisClosed","constant$5","linear","hue","constant","gamma","nogamma","exponential","cosh","sinh","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date$1","setTime","reinterpolate$1","object","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","q","number","one","zero","interpolate$1","date","isArray","valueOf","interpolateRound","cssNode","cssRoot","cssView","svgNode","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","transform","interpolateTransformSvg","baseVal","consolidate","matrix","rho","SQRT2","rho2","rho4","epsilon2","exp","interpolateZoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","log","d1","b0","b1","r0","r1","coshr0","u","colorHsl","hsl$1","hslLong","colorLab","colorHcl","hcl$1","hclLong","cubehelixGamma","colorCubehelix","cubehelix$2","cubehelixLong","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","interpolateNumber","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","quadInOut","cubicInOut","children","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","undefined","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinInOut","tpmt","expInOut","circleInOut","b2","b3","b4","b5","b6","b7","b8","b9","bounceOut","overshoot","backIn","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","bisector","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pair","d3Descending","number$2","d3Variance","valueof","delta","mean","sum","d3Deviation","array","variance","extent","constant$4","identity$3","sequence","step","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","power","LN10","error","tickStep","step0","abs","step1","sturges","LN2","threshold$1","value0","d3Max","d3Mean","d3Median","numbers","quantile","d3Min","d3Sum","transpose","row","Map","d3Nest","sortValues","rollup","nest","keys","sortKeys","depth","createResult","setResult","valuesByKey","result","entries","sortKey","createObject","setObject","createMap","setMap","Set","has","clear","proto","d3Values","EOL","EOF","objectConverter","columns","Function","JSON","stringify","inferColumns","rows","columnSet","forEach","column","pad","width","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","dsv","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","N","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","getHours","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","X","toUpperCase","identity$2","locale","prefixes","formatLocale$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","formatPrefix","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","newInterval","floori","offseti","field","d0","offset","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","minute","getSeconds","getMinutes","hour","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","setMonth","getMonth","getFullYear","setFullYear","utcMinute","setUTCSeconds","utcHour","setUTCMinutes","utcDay","setUTCHours","setUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","utcYear","setUTCFullYear","localDate","H","M","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","w","formatWeekdayNumberSunday","W","formatWeekNumberMonday","Y","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","charAt","newParse","week","timeMonday","timeDay","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","timeYear","timeSunday","dISO","timeThursday","dow","UTCdISO","timeFormat","timeParse","isoSpecifier","formatIso","toISOString","formatIso$1","parseIso","parseIso$1","Class","class","_class","classID","classMeta","classID2Meta","implements","derivedCtor","baseCtor","getOwnPropertyNames","descriptor","mixin","mixinClass","overrideMethod","methodID","newMethod","origMethod","cssTag","deepEqual","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","__meta_","__private_","__prop_","__prop_data_","__default_","isMeta","Meta","defaultValue","description","ext","origDefaultValue","optional","checkedAssign","__hpcc_debug","options","console","Boolean","some","publishedProperties","MetaProxy","proxy","method","propExtID","PropertyExt","_super","_this","_publishedProperties","calcPublishedProperties","_watchArrIdx","_watchArr","meta","includePrivate","expandProxies","protoStack","getPrototypeOf","unshift","_i","protoStack_1","resolvePublishedProxy","item","publishedProperty","obj","isMetaProxy","selfProp","widgetWalker","visitor","publishItem","widget","widgets","propertyWalker","context","serialize","retVal","__class","_a","prop","val","serialization","valid","deserialize","props","autoExpand","this_1","currVal","warn","publishedModified","publishReset","privateArr","exceptionsArr","isPrivateItem","isException","publish","override","internal","broadcast","configurable","noDeserialize","owner","disable","hidden","validate","publishWidget","WidgetType","publishProxy","monitorProperty","propID","func","_key","newVal","oldVal","idx_1","propertyID","context_1","monitor","idx","monitor2","applyTheme","theme","clsArr","paramName","param","tags","copyPropsTo","other","ignore","metaHash","hashSum","propertyHash","properties","more","eventID","stopPropagation","origFunc","d3Event","retVal2","prevClassID","reset","SelectionBase","__widget","svgGlowID","__svgGlowID","SelectionBag","click","evt","ctrlKey","items","element","isEmpty","isSelected","itemArray","SimpleSelection","widgetElement","skipBringToTop","_widgetElement","_skipBringToTop","elements","selected","_initialSelection","d3Select","mouseOver","mouseOut","domNode","wasSelected","selection2","retVal_1","safeRaise","SimpleSelectionMixin","_selection","serializeState","deserializeState","perf","mozNow","msNow","oNow","webkitNow","faCharMap","faClassMap","faKeys","fa5Class","faChar","defChar","removeHTMLFromString","str","div","innerText","nargs","nargs2","g_fontSizeContext","downloadBlob","blob","filename","navigator","href","URL","createObjectURL","body","timestamp","currentdate","d3TimeFormat","downloadString","mimeType","Blob","checksum","chk","_mixin","dest","debounce","threshold","execAsap","__hpcc_debounce_timeout","g_fontCanvas","g_fontSizeContextCache","textSize","_text","fontName","fontSize","bold","globalCanvasContext","hash","height","font","line","textMeasurement","measureText","fontBoundingBoxDescent","fontBoundingBoxAscent","g_fontRectContextCache","textRect","globalCanvasElement","canvas","fillStyle","textAlign","textBaseline","fillText","top_1","bottom","getImageData","getElementById","getContext","_tagName","_ns","tagName","selectors","referenceNode","refIdx","searchStr","pos","subjectString","scope","propParts","testScope","cache","_sources","sortBy","lVal","rVal","d3Ascending","sortCaseSensitive","oFxNcL","oFyNcL","sre","dre","ore","xN","yN","xD","yD","cLoc","numS","parseFloat","_naturalSort","parts","classParts","package","path","widgetID","memberWidgetID","versionString","_sp","major","minor","patch","tpl","_args","matches_1","tplField","url","location","paramParts","decodeURIComponent","d3Aggr","median","deviation","lastFoundFormat","Field","_children","_owner","label","Utility.checksum","mask","typeTransformer","maskTransformer","formatter","formatTransformer","cloneProp","d3Format","asDefault","fieldsArr","label_default","Grid","dataChecksum","_data","_dataChecksums","_dataChecksum","_dataVersion","fields","resetColumns","legacyColumns","legacyData","_clone","schema","fieldByLabel","ignoreCase","_dataCalcChecksum","parsedData","cell","formattedData","fieldsChecksum","fieldsArr_1","_row","col","_idx","columnData","_col","grid","hipieMappings","missingDataString","mappedColumns","hasRollup","mapping","mappedColumn","groupby","hasFunction","function","leaves","param1","param2","legacyView","LegacyView","nestView","columnIndicies","RollupView","rollupView","rollupFunc","aggregateView","aggrType","aggrColumn","aggrDeltaColumn","aggregate","colIdx_1","deltaIdx_1","_nest","_rollup","pivot","filterIdx","analyse","isBoolean","typeTest","isNumber","isString","isUSState","isDateTime","isDateTimeFormat","isDate","isDateFormat","isTime","isTimeFormat","jsonObj","colIdx","json","temp_1","d3CsvFormatRows","Utility.removeHTMLFromString","d3CsvParse","d3TsvParse","d3TsvFormatRows","fieldsOrig","_grid","rawData","_formattedDataChecksum","_formattedData","_parsedDataChecksum","_parsedData","_whichData","opts","parsed","formatted","_columnIndicies","_nestChecksum","nest_1","d3Map","_walkData","prevRow","entry","cells","dateTimeFormats","dateFormats","timeFormats","formatPicker","d3TimeParse","styleInject","css","ref","insertAt","head","getElementsByTagName","styleSheet","cssText","createTextNode","Widget","_isRootNode","_db","_dataMeta","_appData","_prevNow","_lazyRender","debouncedCallback","render","_idSeed","_pos","_size","_widgetScale","_visible","_target","_placeholderElement","_parentWidget","_element","_renderCount","g_all","__hpcc_theme","columnChecksum","importJSON","importCSV","importTSV","export","leakCheck","newNode","watchArray","destructObserver","MutationObserver","mutations","leaks","mutation","removedNodes","disconnect","pNode","observe","childList","renderCount","columnIdx","cellIdxFunc","defValue","cellFunc","cloneData","flattenData","rowIdx","newItem","rowToObj","__lparam","_overlayElement","resize","visible","display","_display","dataMeta","appData","calcSnap","snapSize","snap","gridSize","gridSize2","toWidget","parentOverlay","locateParentWidget","locateSVGNode","locateOverlayNode","locateAncestor","locateClosestAncestor","classIDArr","getAbsolutePos","ctm","getCTM","hasOverlay","syncOverlay","newPos","_prevPos","xScale","yScale","getBBox","refresh","HTMLElement","SVGElement","isDOMHidden","offsetParent","hasSize","publishedWidgets","_tag","context2","preUpdate","postUpdate","renderCount_1","renderPromise","lazyRender","animationFrameRender","_domNode","origClassed","str_obj","HTMLWidget","_drawStartPos","_boundingBox","calcFrameWidth","calcWidth","calcFrameHeight","calcHeight","hasHScroll","hasVScroll","clientWidth","clientHeight","firstElementChild","Element","reposition","overlay","observer","_mutation","attributes","bbox","CanvasWidget","resetContext","_ctx","tem","ua","ieVersion","userAgent","isIE","svgMarkerGlitch","_scrollBarWidth","WebKitMutationObserver","MozMutationObserver","listeners","MutationListener","callback2","handleEvent","addedNodes","attributeName","attributeNamespace","oldValue","config","characterData","outer","visibility","msOverflowStyle","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","_widget","_duration","_delay","_ease","d3CubicInOut","lerp","intersectLineLine","a1","a2","points","uaT","ubT","uB","ub","SVGGlowFilter","feOffset","feColorMatrix","rgb2ColorMatrix","feGaussianBlur","feBlend","d3Rgb","SVGWidget","_enableOverflow","_enableOverflowScroll","_popMarkersDebounced","_popMarkers","move","transitionDuration","enableOverflow","enableOverflowScroll","_parentRelativeDiv","_parentOverlay","svgDefs","_svgSelectionFilter","selectionGlowColor","transX","transY","getOffsetPos","containsRect","containsCircle","radius","center","distance","intersection","pointA","pointB","intersectRect","TL","TR","BR","BL","intersectRectRect","rect1","rect2","intersectCircle","deter","u1","u2","intersectCircleLine","serializeSVG","extraStyles","fontAwsesomeStyle","origSvg","cloneSVG","origNodes","compStyles","i_1","styleName","stylePriority","getPropertyPriority","defs","extraStyle","XMLSerializer","serializeToString","toBlob","rasterize","extraWidgets","sizes","reduce","prev","curr","ctx","fillRect","xPos","all","image","Image","onerror","onload","drawImage","src","then","downloadSVG","downloadPNG","_pushMarkers","_fixIEMarkers","Text","textParts","lineHeight","widths","fontFamily","anchor","_prevHash","_textElement","dblclick","bbox_1","rotation","width_1","textLine","_d","colorFill","colorStroke","clipPos","substr","FAChar","calcChar","Utility.faChar","char","text_fontFamily","Utility.faKeys","schemeGroups","sequential","singlehue","diverging","qualitative","YlGn","YlGnBu","GnBu","BuGn","PuBuGn","PuBu","BuPu","RdPu","PuRd","OrRd","YlOrRd","YlOrBr","Purples","Blues","Greens","Oranges","Reds","Greys","PuOr","BrBG","PRGn","PiYG","RdBu","RdGy","RdYlBu","Spectral","RdYlGn","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","implicit","ordinal","domain","unknown","band","bandwidth","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","constant$3","number$1","unit","deinterpolateLinear","bimap","deinterpolate","reinterpolate","polymap","bisect","continuous","piecewise","output","input","interpolateValue","deinterpolateClamp","invert","reinterpolateClamp","linearish","tickFormat","nice","x0","x1","pow10","powp","base","logp","log10","log2","reflect","quantize","invertExtent","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","tickInterval","d3SchemeCategory10","d3SchemeCategory20b","d3SchemeCategory20c","d3SchemeCategory20","interpolateCubehelixLong","warm","cool","rainbow","ramp","d3InterpolateViridis","magma","inferno","plasma","interpolator","d3Schemes","category10","category20","category20b","category20c","m_colorbrewer","_colorbrewer.default","_colorbrewer","m_d3","Viridis","Magma","d3InterpolateMagma","Inferno","d3InterpolateInferno","Plasma","d3InterpolatePlasma","d3Ordinal","brewerOrdinal","hpccOrdinal","flatuiSchemes","FlatUI_default","FlatUI_American","FlatUI_Aussie","FlatUI_British","FlatUI_Canadian","FlatUI_Chinese","FlatUI_Dutch","FlatUI_French","FlatUI_German","FlatUI_Indian","FlatUI_Russian","FlatUI_Spanish","FlatUI_Swedish","FlatUI_Turkish","flatuiOrdinal","ordinalCache","fetchOrdinalItem","palette_ordinal","d3ScaleOrdinal","newColors","_item","largestPalette","newID","cloneNotExists","switch","_colors","rainbowCache","fetchRainbowItem","steps","palette_rainbow","_steps","_custom","subPaletteSize","prevColor","scale_1","d3ScaleLinear","d3InterpolateLab","d3ScaleQuantize","d3ScaleSequential","low","high","RdWhGr","textColor","backgroundColor","d3RGB","ordinalDivID","brewerDivID","customDivID","customArr","info","palette","Shape","shape","getShapeElementTag","element2","_tooltipElement","tooltip","cornerRadius","pinPath","_shape","arrow_h","arrowHeight","arrow_w","arrowWidth","arrow_b","_origRadius","Icon","_shapeWidget","_faChar","diameter","_defs","_root","el","paddingPercent","imageUrl","shape_colorFill_exists","image_colorFill_exists","image_colorFill","shape_colorFill","Entity","_annotationLocal","d3Local","_background_widget","_icon_widget","_title_widget","_desc_widget","_annotation_widgets","getAnnotationsBBox","_element_background","_element_icon","_element_title","_element_desc","_element_anno","shape_colorStroke","descriptionFontSize","annoXPos","annotations","annotationIcons","anno","annotationDiameter","annotationPaddingPercent","annoDiam","annotationSpacing","moveAnnotations","x_offset","y_offset","EntityCard","icon_bbox","title_bbox","desc_bbox","anno_w","anno_h","anno_gap","_background_h","fixedHeight","_background_w","fixedWidth","EntityPin","is_hovering","titleOnlyShowOnHover","iconOnlyShowOnHover","descriptionOnlyShowOnHover","_anno_h","annotationOnlyShowOnHover","background_bbox","calcBackgroundBBox","icon_y","title_y","desc_y","anno_y","remove_padding","EntityRect","icon","annotations_bbox","iconWidth","titleX","titleW","EntityRectList","_enityRectLocal","Utility.SimpleSelectionMixin","entityRectData","idxColumns","idxs","idxColumn","origRow","margin","titleColumn","entityRect","borderColor","backgroundShape","backgroundColorFill","backgroundColorStroke","iconColor","iconDiameter","iconPaddingPercent","title","titleFontSize","titleColor","descriptionColor","__inputs","inputType","TextBox","paddingLeft","paddingRight","paddingTop","paddingBottom","getTextX","textBBox","fixedSize","colorFill_default","colorFill_exists","EntityVertex","_textbox_widget","_element_textbox","iconColorFill","iconColorStroke","text_bbox","_icon_x","_icon_y","iconAnchor","img","_imgElement","styleImageElement","sizing","lockAspectRatio","customWidth","customHeight","alignment","List","_listWidgets","lineEnter","newTextBox","listHeight","listWidth","yPos","Menu","_icon","_list","hideMenu","_open","toggleMenu","showMenu","preShowMenu","menuBBox","postHideMenu","ProgressBar","_running","calcCSS","halflife","perc","bar_size","bar_color","blur_opacity","blurOpacity","blur_opacity_hex","blur_color","blurColor","blur_size","blurSize","blur_fx","blurBar","_elementID","updateProgress","halfLife","finish","_style","decay","_remaining","nopropagation","stopImmediatePropagation","noevent$2","preventDefault","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","constant$2","DragEvent","subject","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","maxTouchPoints","d3Drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","Surface","_iconWidget","_containerWidget","_titleRectWidget","_textWidget","_menuWidget","content","_surfaceButtons","_clipRect","showTitle","showIcon","buttonContainer","icon_shape","surfaceButtons","buttonAnnotations","buttonClientHeight","offsetHeight","iconClientSize","textClientSize","menuClientSize","_titleRegionHeight","titleRegionHeight","yTitle","titleTextHeight","titleTextWidth","topMargin","leftMargin","menuPadding","buttonGutter","showContent","xOffset_1","yOffset_1","hits","i2","i3","nearest","_origMenuParam","menu","_origShowContent","ResizeSurface","handleWidth","handles","loc","d3Dispatch","allowResize","_dragHandlePos","_dragStartPos","_dragStartSize","_prevPosSize","_textPosSize","_iconPosSize","_dx","_dy","posSize","updateHandles","sizeHandles","sizeHandlesEnter","constant$1","ZoomEvent","Transform","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","noevent$1","defaultExtent","hasAttribute","viewBox","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","d3Zoom","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","wheelDelay","zoom","wheeled","dblclicked","centroid","clean","__zooming","Gesture","taps","wheel","moved","y0","dragEnable","k1","shiftKey","started","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","translateBy","translateTo","emit","Button","_enabled","mouseMove","enabled","StickyButton","ToggleButton","Spacer","vline","SelectDropDown","optionUpdate","IconBar","_buttons","_divIconBar","buttons","hiddenButtons","icons","SelectionButton","sb","SelectionBar","TitleBar","_divTitle","_divTitleIcon","titleIconFont","titleIconFontSize","_divTitleText","titleFont","_divDescriptionText","descriptionFont","titleIcon","description_exists","SVGZoomWidget","_zoomScale","_zoomTranslate","_autoSelectionMode","_toggleMarqueeSelection","mouseMode","updateIconBar","_toggleZoom","_iconBar","zoomToFit","zoomPlus","zoomMinus","_currZoom","onZoomed","getScreenBBox","targetel","tbbox","nw","ne","se","sw","zoomScale","zoomTranslate","zoomExtent","zoomTo","zoomDuration","_zoomRoot","d3ZoomIdentity","centerOnBBox","getRenderElementBBox","_renderElement","calcZoomToBBox","widthOnly","newScale","zoomToFitLimit_exists","zoomToFitLimit","zoomToBBox","zoomToScale","zoomToWidth","zoomed","_zoomG","mousedownMarqueeSelection","d3Mouse","_marqueeSelectionRoot","_marqueeSelection","startMarqueeSelection","mousemoveMarqueeSelection","updateMarqueeSelection","mouseupMarqueeSelection","endMarqueeSelection","_zoomGrab","_prevZoomable","zoomable","showToolbar","_origMouseMode","WidgetArray","BrushEvent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","xy","XY","cursors","flipX","flipY","signsX","signsY","__brush","brush","dim","handleSize","initialize","handle","redraw","emitter","Emitter","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","mode","metaKey","altKey","signX","signY","shifting","pointer","point0","ended","keyCode","point1","selection0","selection1","starting","keyModifiers","values0","values1","_d3Event","histogram","xz","tz","shift","bin","bins","thresholds","ts","arrays","merged","pairs","indexes","permutes","samples","logs","pows","quantiles","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcWeek","utcSecond","utcMillisecond","xi","xj","random"],"sources":["../src/__package__.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/local.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/point.js","../../../node_modules/d3-selection/src/mouse.js","../../../node_modules/d3-selection/src/touch.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-color/src/math.js","../../../node_modules/d3-color/src/lab.js","../../../node_modules/d3-color/src/cubehelix.js","../../../node_modules/d3-interpolate/src/basis.js","../../../node_modules/d3-interpolate/src/basisClosed.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-interpolate/src/hsl.js","../../../node_modules/d3-interpolate/src/lab.js","../../../node_modules/d3-interpolate/src/hcl.js","../../../node_modules/d3-interpolate/src/cubehelix.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-ease/src/quad.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-ease/src/poly.js","../../../node_modules/d3-ease/src/sin.js","../../../node_modules/d3-ease/src/math.js","../../../node_modules/d3-ease/src/exp.js","../../../node_modules/d3-ease/src/circle.js","../../../node_modules/d3-ease/src/bounce.js","../../../node_modules/d3-ease/src/back.js","../../../node_modules/d3-ease/src/elastic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/active.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/pairs.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/variance.js","../../../node_modules/d3-array/src/deviation.js","../../../node_modules/d3-array/src/extent.js","../../../node_modules/d3-array/src/array.js","../../../node_modules/d3-array/src/constant.js","../../../node_modules/d3-array/src/identity.js","../../../node_modules/d3-array/src/range.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/threshold/sturges.js","../../../node_modules/d3-array/src/quantile.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/mean.js","../../../node_modules/d3-array/src/median.js","../../../node_modules/d3-array/src/min.js","../../../node_modules/d3-array/src/sum.js","../../../node_modules/d3-array/src/transpose.js","../../../node_modules/d3-collection/src/map.js","../../../node_modules/d3-collection/src/nest.js","../../../node_modules/d3-collection/src/set.js","../../../node_modules/d3-collection/src/values.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-time/src/interval.js","../../../node_modules/d3-time/src/millisecond.js","../../../node_modules/d3-time/src/duration.js","../../../node_modules/d3-time/src/second.js","../../../node_modules/d3-time/src/minute.js","../../../node_modules/d3-time/src/hour.js","../../../node_modules/d3-time/src/day.js","../../../node_modules/d3-time/src/week.js","../../../node_modules/d3-time/src/month.js","../../../node_modules/d3-time/src/year.js","../../../node_modules/d3-time/src/utcMinute.js","../../../node_modules/d3-time/src/utcHour.js","../../../node_modules/d3-time/src/utcDay.js","../../../node_modules/d3-time/src/utcWeek.js","../../../node_modules/d3-time/src/utcMonth.js","../../../node_modules/d3-time/src/utcYear.js","../../../node_modules/d3-time-format/src/locale.js","../../../node_modules/d3-time-format/src/defaultLocale.js","../../../node_modules/d3-time-format/src/isoFormat.js","../../../node_modules/d3-time-format/src/isoParse.js","../src/Class.ts","../src/PropertyExt.ts","../src/Utility.ts","../src/Database.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/Widget.ts","../src/HTMLWidget.ts","../src/CanvasWidget.ts","../src/Platform.ts","../src/Transition.ts","../src/SVGWidget.ts","../src/Text.ts","../src/FAChar.ts","../../../node_modules/colorbrewer/index.es.js","../../../node_modules/d3-scale/src/array.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/band.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/nice.js","../../../node_modules/d3-scale/src/log.js","../../../node_modules/d3-scale/src/pow.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/d3-scale/src/time.js","../../../node_modules/d3-scale/src/colors.js","../../../node_modules/d3-scale/src/category10.js","../../../node_modules/d3-scale/src/category20b.js","../../../node_modules/d3-scale/src/category20c.js","../../../node_modules/d3-scale/src/category20.js","../../../node_modules/d3-scale/src/cubehelix.js","../../../node_modules/d3-scale/src/rainbow.js","../../../node_modules/d3-scale/src/viridis.js","../../../node_modules/d3-scale/src/sequential.js","../src/Palette.ts","../src/Shape.ts","../src/Icon.ts","../src/Entity.ts","../src/EntityCard.ts","../src/EntityPin.ts","../src/EntityRect.ts","../src/TextBox.ts","../src/EntityVertex.ts","../src/Image.ts","../src/List.ts","../src/Menu.ts","../src/ProgressBar.ts","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../src/Surface.ts","../src/ResizeSurface.ts","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../src/TitleBar.ts","../src/SVGZoomWidget.ts","../src/WidgetArray.ts","../../../node_modules/d3-brush/src/constant.js","../../../node_modules/d3-brush/src/event.js","../../../node_modules/d3-brush/src/noevent.js","../../../node_modules/d3-brush/src/brush.js","../../../node_modules/d3-selection/src/create.js","../../../node_modules/d3-array/src/cross.js","../src/index.ts","../../../node_modules/d3-ease/src/linear.js","../../../node_modules/d3-collection/src/entries.js","../../../node_modules/d3-array/src/histogram.js","../../../node_modules/d3-interpolate/src/discrete.js","../../../node_modules/d3-interpolate/src/hue.js","../../../node_modules/d3-collection/src/keys.js","../../../node_modules/d3-array/src/merge.js","../../../node_modules/d3-array/src/permute.js","../../../node_modules/d3-interpolate/src/piecewise.js","../../../node_modules/d3-interpolate/src/quantize.js","../../../node_modules/d3-scale/src/identity.js","../../../node_modules/d3-scale/src/quantile.js","../../../node_modules/d3-scale/src/threshold.js","../../../node_modules/d3-scale/src/utcTime.js","../../../node_modules/d3-array/src/scan.js","../../../node_modules/d3-selection/src/selectAll.js","../../../node_modules/d3-array/src/shuffle.js","../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../../../node_modules/d3-array/src/threshold/scott.js","../../../node_modules/d3-selection/src/touches.js","../../../node_modules/d3-array/src/zip.js"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/common\";\nexport const PKG_VERSION = \"2.72.0\";\nexport const BUILD_VERSION = \"2.106.0\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import { classID2Meta, ClassMeta } from \"@hpcc-js/util\";\n\nfunction applyMixins(derivedCtor: any, baseCtors: any[]) {\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor).forEach(name => {\n if (name !== \"constructor\") {\n const descriptor = Object.getOwnPropertyDescriptor(baseCtor, name);\n Object.defineProperty(derivedCtor, name, descriptor);\n }\n });\n });\n}\n\nexport class Class {\n _class: string;\n\n class(): string;\n class(_: string): this;\n class(_?: string): string | this {\n if (!arguments.length) return this._class;\n this._class = _;\n return this;\n }\n\n classID() {\n return this._class.split(\" \").pop();\n }\n\n classMeta(): ClassMeta {\n return classID2Meta(this.classID());\n }\n\n implements(source) {\n applyMixins(this, [source]);\n }\n\n mixin(mixinClass) {\n this.implements(mixinClass.prototype);\n // Special case mixins ---\n if (mixinClass.prototype.hasOwnProperty(\"_class\")) {\n this._class += \" \" + mixinClass.prototype._class.split(\" \").pop();\n }\n }\n\n overrideMethod<M extends keyof this>(methodID: M, newMethod: this[M]): this {\n if (this[methodID] === undefined) {\n throw new Error(`Method: ${methodID.toString()} does not exist.`);\n }\n const origMethod = this[methodID];\n this[methodID] = function () {\n arguments[arguments.length] = origMethod;\n arguments.length++;\n return (newMethod as any).apply(this, arguments);\n } as any;\n return this;\n }\n\n cssTag(id: string): string {\n return (\"\" + id).replace(/[^a-z0-9]/g, (s) => {\n const c = s.charCodeAt(0);\n if (c === 32) return \"-\";\n if (c >= 65 && c <= 90) return \"_\" + s.toLowerCase();\n return \"_0x\" + c.toString(16);\n });\n }\n}\nClass.prototype._class = \"common_Class\";\n","import { hashSum } from \"@hpcc-js/util\";\nimport { event as d3Event } from \"d3-selection\";\nimport { Class } from \"./Class\";\n\nconst GEN_PUB_STUBS: boolean = false;\n\nfunction deepEqual(a, b) {\n if (a === b) return true;\n\n const arrA = Array.isArray(a);\n const arrB = Array.isArray(b);\n let i;\n\n if (arrA && arrB) {\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!deepEqual(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n\n const dateA = a instanceof Date;\n const dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() === b.getTime();\n if (dateA != dateB) return false;\n\n const regexpA = a instanceof RegExp;\n const regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() === b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if (!deepEqual(a[keys[i]], b[keys[i]])) return false;\n\n return true;\n }\n\n return false;\n}\n\nconst __meta_ = \"__meta_\";\nconst __private_ = \"__private_\";\nconst __prop_ = \"_\";\nconst __prop_data_ = \"__prop_\";\nconst __default_ = \"__default_\";\n\nfunction isMeta(key) {\n return key.indexOf(__meta_) === 0;\n}\n\nfunction isPrivate(obj, key) {\n return obj[__private_ + key] || obj[__private_ + __meta_ + key];\n}\n\nexport interface IAutoExpand extends PropertyExt {\n // AutoExpand items may have \"incomplete\" instances while the user is editing them in the PropertyEditor\n owner(): PropertyExt;\n owner(_: PropertyExt): this;\n valid(): boolean;\n}\n\nexport type TagTypes = \"Private\" | \"Shared\" | \"Basic\" | \"Intermediate\" | \"Advanced\" | \"Theme\" | \"Serial\";\nexport type PublishTypes = \"any\" | \"number\" | \"boolean\" | \"string\" | \"set\" | \"array\" | \"object\" | \"widget\" | \"widgetArray\" | \"propertyArray\" | \"html-color\" | \"proxy\";\nexport interface IPublishExt {\n override?: boolean;\n disable?: (w) => boolean;\n validate?: (w) => boolean;\n hidden?: (w) => boolean;\n optional?: boolean;\n tags?: TagTypes[];\n autoExpand?: new () => IAutoExpand;\n noDeserialize?: boolean;\n render?: boolean;\n icons?: string[];\n editor_input?: (context, widget, cell, param) => void;\n saveButton?: string;\n saveButtonID?: string;\n number?: any;\n reset?: boolean;\n // Amcharts - really needed?\n min?: number;\n max?: number;\n step?: number;\n inputType?: string;\n internal?: boolean;\n range?: { min: number, max: number, step: number };\n multiline?: boolean;\n}\n\nexport class Meta {\n id;\n type: PublishTypes;\n origDefaultValue;\n defaultValue;\n description;\n set;\n ext: IPublishExt;\n checkedAssign;\n\n constructor(id, defaultValue, type, description, set, ext?: IPublishExt) {\n ext = ext || {};\n this.id = id;\n this.type = type;\n this.origDefaultValue = defaultValue;\n this.defaultValue = ext.optional && defaultValue === null ? undefined : defaultValue;\n this.description = description;\n this.set = set;\n this.ext = ext;\n\n switch (type) {\n case \"any\":\n this.checkedAssign = _ => _;\n break;\n case \"set\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n const options = typeof set === \"function\" ? set.call(this) : set;\n if (options && options.length && options.indexOf(_) < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + JSON.stringify(options));\n }\n }\n return _;\n };\n break;\n case \"html-color\":\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug && _ && _ !== \"red\") {\n const litmus = \"red\";\n const d = document.createElement(\"div\");\n d.style.color = litmus;\n d.style.color = _;\n // Element's style.color will be reverted to litmus or set to \"\" if an invalid color is given\n if (d.style.color === litmus || d.style.color === \"\") {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n }\n return _;\n };\n break;\n case \"boolean\":\n this.checkedAssign = function (_) {\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n };\n break;\n case \"number\":\n this.checkedAssign = function (_) {\n return Number(_);\n };\n break;\n case \"string\":\n this.checkedAssign = function (_) {\n return String(_);\n };\n break;\n case \"array\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Array)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"object\":\n this.checkedAssign = function (_) {\n if (!(_ instanceof Object)) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widget\":\n this.checkedAssign = function (_) {\n if (!_._class || _._class.indexOf(\"common_PropertyExt\") < 0) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"widgetArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return (!row._class || row._class.indexOf(\"common_Widget\") < 0); })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n case \"propertyArray\":\n this.checkedAssign = function (_) {\n if (_.some(function (row) { return !row.publishedProperties; })) {\n console.error(\"Invalid value for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n default:\n this.checkedAssign = function (_) {\n if ((window as any).__hpcc_debug) {\n console.error(\"Unchecked property type for '\" + this.classID() + \".\" + id + \"': \" + _ + \" expected \" + type);\n }\n return _;\n };\n break;\n }\n }\n}\n\nclass MetaProxy {\n id: string;\n type;\n proxy;\n method;\n defaultValue;\n ext: IPublishExt;\n\n constructor(id: string, proxy, method, defaultValue, ext?: IPublishExt) {\n this.id = id;\n this.type = \"proxy\";\n this.proxy = proxy;\n this.method = method;\n this.defaultValue = defaultValue;\n this.ext = ext || {};\n }\n}\n\nfunction isMetaProxy(meta: Meta | MetaProxy): meta is MetaProxy {\n return meta.type === \"proxy\";\n}\n\nexport interface IMonitorHandle {\n remove(): void;\n}\n\nlet propExtID = 0;\nexport class PropertyExt extends Class {\n protected _id: string;\n private _watchArrIdx: number;\n private _watchArr: any;\n private _publishedProperties: Meta[] = [];\n\n constructor() {\n super();\n this.calcPublishedProperties();\n\n this._id = \"_pe\" + (++propExtID);\n this._watchArrIdx = 0;\n this._watchArr = {};\n\n this.publishedProperties(true).forEach(function (meta) {\n switch (meta.type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[meta.id + \"_reset\"]();\n break;\n }\n }, this);\n }\n\n id(): string;\n id(_: string): this;\n id(_?): string | this {\n if (!arguments.length) return this._id;\n this._id = _;\n return this;\n }\n\n // Publish Properties ---\n calcPublishedProperties(includePrivate = false, expandProxies = false): void {\n this._publishedProperties = [];\n const protoStack = [];\n let __proto__ = Object.getPrototypeOf(this);\n while (__proto__) {\n if (__proto__ === PropertyExt.prototype) {\n break;\n }\n protoStack.unshift(__proto__);\n __proto__ = Object.getPrototypeOf(__proto__);\n }\n for (__proto__ of protoStack) {\n for (const key in __proto__) {\n if (__proto__.hasOwnProperty(key)) {\n if (isMeta(key)) {\n this._publishedProperties.push(this[key]);\n }\n }\n }\n }\n }\n\n resolvePublishedProxy(meta: Meta | MetaProxy) {\n let item = this;\n while (meta instanceof MetaProxy) {\n item = item[meta.proxy];\n meta = item.publishedProperty(meta.method);\n }\n return meta;\n }\n\n publishedProperties(includePrivate = false, expandProxies = false): Meta[] {\n return this._publishedProperties.filter(meta => includePrivate || !isPrivate(this, meta.id)).map(meta => {\n if (expandProxies && isMetaProxy(meta)) {\n const selfProp = meta;\n let item = this;\n while (meta.type === \"proxy\") {\n item = item[(meta as any).proxy];\n meta = item.publishedProperty((meta as any).method);\n }\n if (meta.id !== selfProp.id) {\n meta = JSON.parse(JSON.stringify(meta)); // Clone meta so we can safely replace the id.\n meta.id = selfProp.id;\n }\n }\n return meta;\n });\n }\n\n widgetWalker(visitor: (item: PropertyExt) => void) {\n visitor(this);\n this.publishedProperties(false, true).forEach(publishItem => {\n switch (publishItem.type) {\n case \"widget\":\n const widget: PropertyExt = this[publishItem.id]();\n if (widget) {\n widget.widgetWalker(visitor);\n }\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgets: PropertyExt[] = this[publishItem.id]();\n if (widgets) {\n widgets.forEach((widget) => {\n widget.widgetWalker(visitor);\n });\n }\n break;\n }\n });\n }\n\n propertyWalker(visitor: (context: this, publishItem: Meta) => void, filter?: (context: this, publishItem: Meta) => boolean) {\n const context = this;\n this.publishedProperties(false, true).forEach(function (publishItem) {\n if (typeof (filter) !== \"function\" || filter(context, publishItem)) {\n visitor(context, publishItem);\n }\n });\n }\n\n serialize(): { __class, [id: string]: any } {\n const retVal = {\n __class: this.classID()\n };\n for (const prop of this.publishedProperties()) {\n if (prop.id === \"fields\") continue;\n const val = (this as any)[prop.id]();\n switch (prop.type) {\n case \"propertyArray\":\n if ((this as any)[`${prop.id}_modified`]()) {\n }\n const serialization = val.filter(item => item.valid()).map(item => item.serialize()).filter(item => item !== undefined);\n if (serialization) {\n retVal[prop.id] = serialization;\n }\n break;\n case \"widget\":\n retVal[prop.id] = val?.serialize();\n break;\n default:\n if ((this as any)[`${prop.id}_modified`]()) {\n if (!(val instanceof Object)) {\n retVal[prop.id] = val;\n }\n }\n }\n }\n return retVal;\n }\n\n deserialize(props?: { __class, [id: string]: any }): this {\n if (!props) return this;\n for (const prop of this.publishedProperties()) {\n const val = props[prop.id];\n if (val !== undefined) {\n switch (prop.type) {\n case \"propertyArray\":\n if (prop.ext && prop.ext.autoExpand) {\n this[`${prop.id}`](val.map(item => new prop.ext.autoExpand().deserialize(item)));\n }\n break;\n case \"widget\":\n const currVal = this[`${prop.id}`]();\n if (currVal.classID() === val.__class) {\n currVal.deserialize(val);\n } else {\n console.warn(\"Dynamic class initialization not supported.\");\n }\n break;\n default:\n this[`${prop.id}`](val);\n }\n }\n }\n return this;\n }\n\n publishedProperty(id) {\n return this[__meta_ + id];\n }\n\n publishedModified() {\n return this.publishedProperties().some(function (prop) {\n return this[prop.id + \"_modified\"]();\n }, this);\n }\n\n publishReset(privateArr?, exceptionsArr?) {\n privateArr = (privateArr || []).map(function (id) { return __meta_ + id; });\n exceptionsArr = (exceptionsArr || []).map(function (id) { return __meta_ + id; });\n for (const key in this) {\n if (isMeta(key)) {\n const isPrivateItem = !privateArr.length || (privateArr.length && privateArr.indexOf(key) >= 0);\n const isException = exceptionsArr.indexOf(key) >= 0;\n if (isPrivateItem && !isException) {\n this[__private_ + key] = true;\n }\n }\n }\n }\n static prevClassID: string = \"\";\n publish(id: string, defaultValue, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string, text: string }>) | IPublishExt, ext: IPublishExt = {}): void {\n if (GEN_PUB_STUBS) {\n if (PropertyExt.prevClassID !== (this as any).constructor.name) {\n PropertyExt.prevClassID = (this as any).constructor.name;\n console.info(`// ${PropertyExt.prevClassID} ---`);\n }\n let jsType: string = type;\n switch (type) {\n case \"set\":\n case \"html-color\":\n jsType = \"string\";\n break;\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n jsType = \"any[]\";\n break;\n }\n console.info(` ${id}(): ${jsType};\n ${id}(_: ${jsType}): this;\n ${id}_exists(): boolean;`);\n }\n if (id.indexOf(\"_\") === 0) {\n id = id.slice(1);\n }\n if (this[__meta_ + id] !== undefined && !ext.override) {\n throw new Error(id + \" is already published.\");\n }\n const meta = this[__meta_ + id] = new Meta(id, defaultValue, type, description, set, ext);\n if (meta.ext.internal) {\n this[__private_ + id] = true;\n }\n Object.defineProperty(this, __prop_ + id, {\n set(_) {\n if (_ === undefined) {\n _ = null;\n } else if (_ === \"\" && meta.ext.optional) {\n _ = null;\n } else if (_ !== null) {\n _ = meta.checkedAssign.call(this, _);\n }\n this.broadcast(id, _, this[__prop_data_ + id]);\n if (_ === null) {\n delete this[__prop_data_ + id];\n } else {\n this[__prop_data_ + id] = _;\n }\n },\n\n get() {\n if (this[id + \"_disabled\"]()) return this[id + \"_default\"]();\n return this[__prop_data_ + id] !== undefined ? this[__prop_data_ + id] : this[id + \"_default\"]();\n },\n configurable: true\n });\n if (this[id]) {\n } else {\n if (type === \"propertyArray\") {\n this[id] = function (_) {\n if (!arguments.length) return this[__prop_ + id];\n this[__prop_ + id] = _.map(item => {\n if (!meta.ext.noDeserialize && meta.ext.autoExpand && !(item instanceof meta.ext.autoExpand)) {\n item = new meta.ext.autoExpand().deserialize(item);\n }\n item.owner(this);\n return item;\n });\n return this;\n };\n } else {\n this[id] = function (_) {\n if (!arguments.length) return this[__prop_ + id];\n this[__prop_ + id] = _;\n return this;\n };\n }\n }\n this[id + \"_disabled\"] = function () {\n return ext && ext.disable ? !!ext.disable(this) : false;\n };\n this[id + \"_hidden\"] = function () {\n return ext && ext.hidden ? !!ext.hidden(this) : false;\n };\n this[id + \"_valid\"] = function () {\n return ext && ext.validate ? this[id + \"_disabled\"]() || (ext.optional && !this[id + \"_exists\"]()) || (ext.autoExpand && !this.valid()) || !!ext.validate(this) : true;\n };\n this[id + \"_modified\"] = function () {\n if (type === \"propertyArray\") {\n return this[__prop_data_ + id] && (this[__prop_data_ + id].some(item => item.valid()));\n }\n return this[__prop_data_ + id] !== undefined;\n };\n this[id + \"_exists\"] = function () {\n if (this[__prop_data_ + id] != null && !(this[__prop_data_ + id] === \"\" && ext.optional === true)) return true;\n if (this[id + \"_default\"]() != null && !(this[id + \"_default\"]() === \"\" && ext.optional === true)) return true;\n return false;\n };\n this[id + \"_default\"] = function (_) {\n if (!arguments.length) return this[__default_ + id] !== undefined ? this[__default_ + id] : meta.defaultValue;\n if (_ === \"\") {\n _ = null;\n }\n if (_ === null) {\n delete this[__default_ + id];\n } else {\n this[__default_ + id] = _;\n }\n return this;\n };\n this[id + \"_reset\"] = function () {\n switch (type) {\n case \"widget\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].target(null);\n }\n break;\n case \"widgetArray\":\n if (this[__prop_data_ + id]) {\n this[__prop_data_ + id].forEach(function (widget) {\n widget.target(null);\n });\n }\n break;\n }\n\n switch (type) {\n case \"array\":\n case \"widgetArray\":\n case \"propertyArray\":\n this[__default_ + id] = this[id + \"_default\"]().map(function (row) { return row; });\n break;\n }\n delete this[__prop_data_ + id];\n return this;\n };\n this[id + \"_options\"] = function () {\n if (typeof set === \"function\") {\n const retVal = meta.ext.optional ? [null] : [];\n return retVal.concat(set.apply(this, arguments));\n }\n return set;\n };\n }\n\n publishWidget(prefix, WidgetType, id) {\n for (const key in WidgetType.prototype) {\n if (key.indexOf(\"__meta\") === 0) {\n const publishItem = WidgetType.prototype[key];\n this.publishProxy(prefix + __prop_data_ + publishItem.id, id, publishItem.method || publishItem.id);\n }\n }\n }\n\n publishProxy(id: string, proxy, method?, defaultValue?) {\n method = method || id;\n if (this[__meta_ + id] !== undefined) {\n throw new Error(id + \" is already published.\");\n }\n this[__meta_ + id] = new MetaProxy(id, proxy, method, defaultValue);\n this[id] = function (_) {\n if (!arguments.length) return defaultValue === undefined || this[id + \"_modified\"]() ? this[proxy][method]() : defaultValue;\n if (defaultValue !== undefined && _ === defaultValue) {\n this[proxy][method + \"_reset\"]();\n } else {\n this[proxy][method](_);\n }\n return this;\n };\n this[id + \"_disabled\"] = function () {\n return this[proxy][method + \"_disabled\"]();\n };\n this[id + \"_modified\"] = function () {\n return this[proxy][method + \"_modified\"]() && (defaultValue === undefined || this[proxy][method]() !== defaultValue);\n };\n this[id + \"_exists\"] = function () {\n return this[proxy][method + \"_exists\"]();\n };\n this[id + \"_default\"] = function (_) {\n if (!arguments.length) return this[proxy][method + \"_default\"]();\n this[proxy][method + \"_default\"](_);\n return this;\n };\n this[id + \"_reset\"] = function () {\n this[proxy][method + \"_reset\"]();\n return this;\n };\n this[id + \"_options\"] = function () {\n return this[proxy][method + \"_options\"]();\n };\n }\n\n monitorProperty(propID: string, func: (id: string, newVal: any, oldVal: any) => void): IMonitorHandle {\n const meta = this.publishedProperty(propID);\n switch (meta.type) {\n case \"proxy\":\n if (this[meta.proxy]) {\n return this[meta.proxy].monitorProperty(meta.method, function (_key, newVal, oldVal) {\n func(meta.id, newVal, oldVal);\n });\n } else {\n return {\n remove: () => { }\n };\n }\n default:\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: propID, callback: func };\n const context = this;\n return {\n remove: () => {\n delete context._watchArr[idx];\n }\n };\n }\n }\n\n monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void } {\n const idx = this._watchArrIdx++;\n this._watchArr[idx] = { propertyID: undefined, callback: func };\n return {\n remove: () => {\n delete this._watchArr[idx];\n }\n };\n }\n\n broadcast(key, newVal, oldVal, source?) {\n source = source || this;\n if (!deepEqual(newVal, oldVal)) {\n for (const idx in this._watchArr) {\n const monitor = this._watchArr[idx];\n if ((monitor.propertyID === undefined || monitor.propertyID === key) && monitor.callback) {\n // console.log(`${this.classID()}->broadcast(${key}, ${newVal}, ${oldVal})`);\n setTimeout(function (monitor2) {\n monitor2.callback(key, newVal, oldVal, source);\n }, 0, monitor);\n }\n }\n }\n }\n\n applyTheme(theme) {\n if (!theme) {\n return;\n }\n const clsArr = this._class.split(\" \");\n for (const i in clsArr) {\n if (theme[clsArr[i]]) {\n for (const paramName in theme[clsArr[i]]) {\n if (paramName === \"overrideTags\" && theme[clsArr[i]][paramName] instanceof Object) {\n for (const param in theme[clsArr[i]][paramName]) {\n if (this.publishedProperty(paramName).ext) {\n this.publishedProperty(paramName).ext.tags = theme[clsArr[i]][paramName][param];\n }\n }\n continue;\n }\n if (this.publishedProperty(paramName)) {\n this.publishedProperty(paramName).defaultValue = theme[clsArr[i]][paramName];\n }\n }\n }\n }\n }\n\n copyPropsTo(other: PropertyExt, ignore: string[] = []): this {\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n if (this[meta.id + \"_exists\"]()) {\n other[meta.id](this[meta.id]());\n } else {\n other[meta.id + \"_reset\"]();\n }\n });\n return this;\n }\n\n private metaHash(meta): string {\n if (this[meta.id + \"_exists\"]()) {\n let value = this[meta.id]();\n const proxyMeta = this.resolvePublishedProxy(meta);\n switch (proxyMeta.type) {\n case \"widget\":\n value = value.hashSum();\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n value = hashSum(value.map(v => v.hashSum()));\n break;\n default:\n }\n return value;\n }\n return \"\";\n }\n\n propertyHash(properties: string[] = [], more = {}): string {\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => properties.length === 0 || properties.indexOf(meta.id) >= 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n hashSum(ignore: string[] = [], more = {}): string {\n ignore = [...ignore, \"classed\"];\n const props: { [key: string]: any } = more;\n this.publishedProperties(false).filter(meta => ignore.indexOf(meta.id) < 0).forEach(meta => {\n props[meta.id] = this.metaHash(meta);\n });\n return hashSum(props);\n }\n\n // Events ---\n on(eventID, func, stopPropagation = false): this {\n const context = this;\n this.overrideMethod(eventID, function (...args: any[]) {\n const origFunc = args[args.length - 1];\n let retVal;\n if (stopPropagation) {\n if (d3Event && d3Event.stopPropagation) {\n d3Event.stopPropagation();\n }\n [].push.call(args, origFunc);\n } else {\n retVal = origFunc.apply(context, args);\n }\n const retVal2 = func.apply(context, args);\n return retVal2 !== undefined ? retVal2 : retVal;\n });\n return this;\n }\n}\nPropertyExt.prototype._class += \" common_PropertyExt\";\n\nexport function publish(defaultValue, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string, text: string }>) | IPublishExt, ext: IPublishExt = {}) {\n return function (target: any, key: string) {\n if (!key) throw new Error(\"???\");\n if (ext.reset) {\n target.publishReset();\n }\n target.publish(key, defaultValue, type, description, set, ext);\n };\n}\nexport type publish<T, U> = {\n (_: U): T;\n (): U;\n};\n\nexport function publishProxy(proxy: string, method?: string, defaultValue?, ext: { reset?: boolean } = {}) {\n return function (target: any, key: string) {\n if (ext.reset) {\n target.publishReset();\n }\n target.publishProxy(key, proxy, method, defaultValue);\n };\n}\n","import { isArray } from \"@hpcc-js/util\";\nimport { ascending as d3Ascending, descending as d3Descending } from \"d3-array\";\nimport { select as d3Select, Selection as d3SelectionT } from \"d3-selection\";\nimport { timeFormat as d3TimeFormat } from \"d3-time-format\";\n\nfunction _naturalSort(a, b, order, idx, sortCaseSensitive) {\n const re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi;\n const sre = /(^[ ]*|[ ]*$)/g;\n const dre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/;\n const ore = /^0/;\n const i = function (s) { return !sortCaseSensitive && (\"\" + s).toLowerCase() || \"\" + s; };\n // convert all to strings strip whitespace\n const x = i(idx ? a[idx] : a).replace(sre, \"\") || \"\";\n const y = i(idx ? b[idx] : b).replace(sre, \"\") || \"\";\n // chunk/tokenize\n const xN = x.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n const yN = y.replace(re, \"\\0$1\\0\").replace(/\\0$/, \"\").replace(/^\\0/, \"\").split(\"\\0\");\n // numeric or date detection\n const xD = (xN.length !== 1 && x.match(dre) && Date.parse(x));\n const yD = xD && y.match(dre) && Date.parse(y) || null;\n let oFxNcL;\n let oFyNcL;\n // first try and sort Hex codes or Dates\n if (yD) {\n if (xD < yD) {\n return order === \"ascending\" ? -1 : 1;\n } else if (xD > yD) {\n return order === \"ascending\" ? 1 : -1;\n }\n }\n // natural sorting through split numeric strings and default strings\n for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\n // find floats not starting with \"0\", string or 0 if not defined (Clint Priest)\n oFxNcL = !(xN[cLoc] || \"\").match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\n oFyNcL = !(yN[cLoc] || \"\").match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\n // handle numeric vs string comparison - number < string - (Kyle Adams)\n if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {\n return (isNaN(oFxNcL)) ? 1 : -1;\n } else if (typeof oFxNcL !== typeof oFyNcL) {\n // rely on string comparison if different types - i.e. \"02\" < 2 != \"02\" < \"2\"\n oFxNcL += \"\";\n oFyNcL += \"\";\n }\n if (oFxNcL < oFyNcL) { return order === \"ascending\" ? -1 : 1; }\n if (oFxNcL > oFyNcL) { return order === \"ascending\" ? 1 : -1; }\n }\n return 0;\n}\n\n// Selection Bag(s) ---\nexport class SelectionBase {\n protected __widget;\n private __svgGlowID: string;\n\n constructor(widget) {\n // Can't import Widget or SVGWidget as it breaks AMD loading...\n this.__widget = widget;\n }\n\n svgGlowID(): string {\n if (this.__svgGlowID === undefined) {\n this.__svgGlowID = this.__widget.svgGlowID && this.__widget.svgGlowID() || \"\";\n }\n return this.__svgGlowID;\n }\n}\n\nexport interface ISelectionItem {\n _id: string;\n element(): d3SelectionT<Element, any, Element, any>;\n}\n\nexport class SelectionBag extends SelectionBase {\n items: { [key: string]: ISelectionItem };\n constructor(widget) {\n super(widget);\n this.items = {};\n }\n\n clear() {\n for (const key in this.items) {\n this.items[key].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n }\n this.items = {};\n }\n\n isEmpty() {\n for (const _key in this.items) { // jshint ignore:line\n return false;\n }\n return true;\n }\n\n append(item: ISelectionItem) {\n this.items[item._id] = item;\n item.element()\n .classed(\"selected\", true)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n\n remove(item: ISelectionItem) {\n this.items[item._id].element()\n .classed(\"selected\", false)\n .attr(\"filter\", null)\n ;\n delete this.items[item._id];\n }\n\n isSelected(item: ISelectionItem) {\n return this.items[item._id] !== undefined;\n }\n\n get() {\n const retVal = [];\n for (const key in this.items) {\n retVal.push(this.items[key]);\n }\n return retVal;\n }\n\n set(itemArray: ISelectionItem[]) {\n this.clear();\n itemArray.forEach(function (item) {\n this.append(item);\n }, this);\n }\n\n click = function (item: ISelectionItem, evt) {\n if (evt.ctrlKey) {\n if (this.items[item._id]) {\n this.remove(item);\n } else {\n this.append(item);\n }\n } else {\n this.clear();\n this.append(item);\n }\n };\n}\n\nexport class SimpleSelection extends SelectionBase {\n constructor(widget, widgetElement, skipBringToTop?) {\n super(widget);\n this.widgetElement(widgetElement);\n this.skipBringToTop(skipBringToTop);\n }\n\n _widgetElement;\n widgetElement(_?) {\n if (!arguments.length) return this._widgetElement;\n this._widgetElement = _;\n return this;\n }\n\n _skipBringToTop;\n skipBringToTop(_) {\n if (!arguments.length) return this._skipBringToTop;\n this._skipBringToTop = _;\n return this;\n }\n\n _initialSelection: (d) => boolean;\n enter(elements) {\n const context = this;\n elements\n .each(function (d) {\n const selected: boolean = context._initialSelection ? context._initialSelection(d.data) : false;\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", context.svgGlowID() && selected ? `url(#${context.svgGlowID()})` : null)\n ;\n })\n .on(\"click.SimpleSelection\", function () {\n context.click(this);\n })\n .on(\"mouseover.SimpleSelection\", function () {\n context.mouseOver(this);\n })\n .on(\"mouseout.SimpleSelection\", function () {\n context.mouseOut(this);\n })\n ;\n }\n click(domNode): boolean {\n if (!this._skipBringToTop) {\n domNode.parentNode.appendChild(domNode);\n }\n const element = d3Select(domNode);\n const wasSelected = element.classed(\"selected\");\n this._widgetElement.selectAll(\".selected\")\n .classed(\"selected\", false)\n .classed(\"deselected\", true)\n .attr(\"filter\", null)\n ;\n if (!wasSelected) {\n element\n .classed(\"selected\", true)\n .classed(\"deselected\", false)\n .attr(\"filter\", this.svgGlowID() ? `url(#${this.svgGlowID()})` : null)\n ;\n }\n return !wasSelected;\n }\n mouseOver(domNode) {\n d3Select(domNode)\n .classed(\"over\", true)\n ;\n }\n mouseOut(domNode) {\n d3Select(domNode)\n .classed(\"over\", null)\n ;\n }\n selected(domNode) {\n return d3Select(domNode).classed(\"selected\");\n }\n selection(_) {\n if (!arguments.length) {\n return this.selection2().map(row => JSON.stringify(row));\n }\n this.selection2(d => _.indexOf(JSON.stringify(d)) >= 0);\n return this;\n }\n selection2(): any[];\n selection2(isSelected: (d) => boolean): this;\n selection2(isSelected?: (d) => boolean): any[] | this {\n if (!arguments.length) {\n const retVal: any[] = [];\n if (this._widgetElement) {\n this._widgetElement.selectAll(\".selected\")\n .each(d => retVal.push(d))\n ;\n }\n return retVal;\n }\n if (this._widgetElement) {\n const context = this;\n this._widgetElement.selectAll(\".selected,.deselected\")\n .each(function (d) {\n const selected = isSelected(d);\n d3Select(this)\n .classed(\"selected\", selected)\n .classed(\"deselected\", !selected)\n .attr(\"filter\", (selected && context.svgGlowID()) ? `url(#${context.svgGlowID()})` : null)\n ;\n if (selected && !context._skipBringToTop) {\n safeRaise(this);\n }\n })\n ;\n } else {\n this._initialSelection = isSelected;\n }\n return this;\n }\n}\n\nexport function SimpleSelectionMixin(skipBringToTop) {\n this._selection = new SimpleSelection(this, null, skipBringToTop);\n}\n\nSimpleSelectionMixin.prototype.serializeState = function () {\n return {\n selection: this._selection.selection(),\n data: this.data()\n };\n};\n\nSimpleSelectionMixin.prototype.deserializeState = function (state) {\n if (state) {\n this._selection.selection(state.selection);\n if (state.data) {\n this.data(state.data);\n }\n }\n return this;\n};\n\nconst perf: any = window.performance;\nconst now = perf && (perf.now || perf.mozNow || perf.msNow || perf.oNow || perf.webkitNow);\n\nconst faCharMap = { \"fa-500px\": \"\", \"fa-address-book\": \"\", \"fa-address-book-o\": \"\", \"fa-address-card\": \"\", \"fa-address-card-o\": \"\", \"fa-adjust\": \"\", \"fa-adn\": \"\", \"fa-align-center\": \"\", \"fa-align-justify\": \"\", \"fa-align-left\": \"\", \"fa-align-right\": \"\", \"fa-amazon\": \"\", \"fa-ambulance\": \"\", \"fa-american-sign-language-interpreting\": \"\", \"fa-anchor\": \"\", \"fa-android\": \"\", \"fa-angellist\": \"\", \"fa-angle-double-down\": \"\", \"fa-angle-double-left\": \"\", \"fa-angle-double-right\": \"\", \"fa-angle-double-up\": \"\", \"fa-angle-down\": \"\", \"fa-angle-left\": \"\", \"fa-angle-right\": \"\", \"fa-angle-up\": \"\", \"fa-apple\": \"\", \"fa-archive\": \"\", \"fa-area-chart\": \"\", \"fa-arrow-circle-down\": \"\", \"fa-arrow-circle-left\": \"\", \"fa-arrow-circle-o-down\": \"\", \"fa-arrow-circle-o-left\": \"\", \"fa-arrow-circle-o-right\": \"\", \"fa-arrow-circle-o-up\": \"\", \"fa-arrow-circle-right\": \"\", \"fa-arrow-circle-up\": \"\", \"fa-arrow-down\": \"\", \"fa-arrow-left\": \"\", \"fa-arrow-right\": \"\", \"fa-arrow-up\": \"\", \"fa-arrows\": \"\", \"fa-arrows-alt\": \"\", \"fa-arrows-h\": \"\", \"fa-arrows-v\": \"\", \"fa-asl-interpreting\": \"\", \"fa-assistive-listening-systems\": \"\", \"fa-asterisk\": \"\", \"fa-at\": \"\", \"fa-audio-description\": \"\", \"fa-automobile\": \"\", \"fa-backward\": \"\", \"fa-balance-scale\": \"\", \"fa-ban\": \"\", \"fa-bandcamp\": \"\", \"fa-bank\": \"\", \"fa-bar-chart\": \"\", \"fa-bar-chart-o\": \"\", \"fa-barcode\": \"\", \"fa-bars\": \"\", \"fa-bath\": \"\", \"fa-bathtub\": \"\", \"fa-battery\": \"\", \"fa-battery-0\": \"\", \"fa-battery-1\": \"\", \"fa-battery-2\": \"\", \"fa-battery-3\": \"\", \"fa-battery-4\": \"\", \"fa-battery-empty\": \"\", \"fa-battery-full\": \"\", \"fa-battery-half\": \"\", \"fa-battery-quarter\": \"\", \"fa-battery-three-quarters\": \"\", \"fa-bed\": \"\", \"fa-beer\": \"\", \"fa-behance\": \"\", \"fa-behance-square\": \"\", \"fa-bell\": \"\", \"fa-bell-o\": \"\", \"fa-bell-slash\": \"\", \"fa-bell-slash-o\": \"\", \"fa-bicycle\": \"\", \"fa-binoculars\": \"\", \"fa-birthday-cake\": \"\", \"fa-bitbucket\": \"\", \"fa-bitbucket-square\": \"\", \"fa-bitcoin\": \"\", \"fa-black-tie\": \"\", \"fa-blind\": \"\", \"fa-bluetooth\": \"\", \"fa-bluetooth-b\": \"\", \"fa-bold\": \"\", \"fa-bolt\": \"\", \"fa-bomb\": \"\", \"fa-book\": \"\", \"fa-bookmark\": \"\", \"fa-bookmark-o\": \"\", \"fa-braille\": \"\", \"fa-briefcase\": \"\", \"fa-btc\": \"\", \"fa-bug\": \"\", \"fa-building\": \"\", \"fa-building-o\": \"\", \"fa-bullhorn\": \"\", \"fa-bullseye\": \"\", \"fa-bus\": \"\", \"fa-buysellads\": \"\", \"fa-cab\": \"\", \"fa-calculator\": \"\", \"fa-calendar\": \"\", \"fa-calendar-check-o\": \"\", \"fa-calendar-minus-o\": \"\", \"fa-calendar-o\": \"\", \"fa-calendar-plus-o\": \"\", \"fa-calendar-times-o\": \"\", \"fa-camera\": \"\", \"fa-camera-retro\": \"\", \"fa-car\": \"\", \"fa-caret-down\": \"\", \"fa-caret-left\": \"\", \"fa-caret-right\": \"\", \"fa-caret-square-o-down\": \"\", \"fa-caret-square-o-left\": \"\", \"fa-caret-square-o-right\": \"\", \"fa-caret-square-o-up\": \"\", \"fa-caret-up\": \"\", \"fa-cart-arrow-down\": \"\", \"fa-cart-plus\": \"\", \"fa-cc\": \"\", \"fa-cc-amex\": \"\", \"fa-cc-diners-club\": \"\", \"fa-cc-discover\": \"\", \"fa-cc-jcb\": \"\", \"fa-cc-mastercard\": \"\", \"fa-cc-paypal\": \"\", \"fa-cc-stripe\": \"\", \"fa-cc-visa\": \"\", \"fa-certificate\": \"\", \"fa-chain\": \"\", \"fa-chain-broken\": \"\", \"fa-check\": \"\", \"fa-check-circle\": \"\", \"fa-check-circle-o\": \"\", \"fa-check-square\": \"\", \"fa-check-square-o\": \"\", \"fa-chevron-circle-down\": \"\", \"fa-chevron-circle-left\": \"\", \"fa-chevron-circle-right\": \"\", \"fa-chevron-circle-up\": \"\", \"fa-chevron-down\": \"\", \"fa-chevron-left\": \"\", \"fa-chevron-right\": \"\", \"fa-chevron-up\": \"\", \"fa-child\": \"\", \"fa-chrome\": \"\", \"fa-circle\": \"\", \"fa-circle-o\": \"\", \"fa-circle-o-notch\": \"\", \"fa-circle-thin\": \"\", \"fa-clipboard\": \"\", \"fa-clock-o\": \"\", \"fa-clone\": \"\", \"fa-close\": \"\", \"fa-cloud\": \"\", \"fa-cloud-download\": \"\", \"fa-cloud-upload\": \"\", \"fa-cny\": \"\", \"fa-code\": \"\", \"fa-code-fork\": \"\", \"fa-codepen\": \"\", \"fa-codiepie\": \"\", \"fa-coffee\": \"\", \"fa-cog\": \"\", \"fa-cogs\": \"\", \"fa-columns\": \"\", \"fa-comment\": \"\", \"fa-comment-o\": \"\", \"fa-commenting\": \"\", \"fa-commenting-o\": \"\", \"fa-comments\": \"\", \"fa-comments-o\": \"\", \"fa-compass\": \"\", \"fa-compress\": \"\", \"fa-connectdevelop\": \"\", \"fa-contao\": \"\", \"fa-copy\": \"\", \"fa-copyright\": \"\", \"fa-creative-commons\": \"\", \"fa-credit-card\": \"\", \"fa-credit-card-alt\": \"\", \"fa-crop\": \"\", \"fa-crosshairs\": \"\", \"fa-css3\": \"\", \"fa-cube\": \"\", \"fa-cubes\": \"\", \"fa-cut\": \"\", \"fa-cutlery\": \"\", \"fa-dashboard\": \"\", \"fa-dashcube\": \"\", \"fa-database\": \"\", \"fa-deaf\": \"\", \"fa-deafness\": \"\", \"fa-dedent\": \"\", \"fa-delicious\": \"\", \"fa-desktop\": \"\", \"fa-deviantart\": \"\", \"fa-diamond\": \"\", \"fa-digg\": \"\", \"fa-dollar\": \"\", \"fa-dot-circle-o\": \"\", \"fa-download\": \"\", \"fa-dribbble\": \"\", \"fa-drivers-license\": \"\", \"fa-drivers-license-o\": \"\", \"fa-dropbox\": \"\", \"fa-drupal\": \"\", \"fa-edge\": \"\", \"fa-edit\": \"\", \"fa-eercast\": \"\", \"fa-eject\": \"\", \"fa-ellipsis-h\": \"\", \"fa-ellipsis-v\": \"\", \"fa-empire\": \"\", \"fa-envelope\": \"\", \"fa-envelope-o\": \"\", \"fa-envelope-open\": \"\", \"fa-envelope-open-o\": \"\", \"fa-envelope-square\": \"\", \"fa-envira\": \"\", \"fa-eraser\": \"\", \"fa-etsy\": \"\", \"fa-eur\": \"\", \"fa-euro\": \"\", \"fa-exchange\": \"\", \"fa-exclamation\": \"\", \"fa-exclamation-circle\": \"\", \"fa-exclamation-triangle\": \"\", \"fa-expand\": \"\", \"fa-expeditedssl\": \"\", \"fa-external-link\": \"\", \"fa-external-link-square\": \"\", \"fa-eye\": \"\", \"fa-eye-slash\": \"\", \"fa-eyedropper\": \"\", \"fa-fa\": \"\", \"fa-facebook\": \"\", \"fa-facebook-f\": \"\", \"fa-facebook-official\": \"\", \"fa-facebook-square\": \"\", \"fa-fast-backward\": \"\", \"fa-fast-forward\": \"\", \"fa-fax\": \"\", \"fa-feed\": \"\", \"fa-female\": \"\", \"fa-fighter-jet\": \"\", \"fa-file\": \"\", \"fa-file-archive-o\": \"\", \"fa-file-audio-o\": \"\", \"fa-file-code-o\": \"\", \"fa-file-excel-o\": \"\", \"fa-file-image-o\": \"\", \"fa-file-movie-o\": \"\", \"fa-file-o\": \"\", \"fa-file-pdf-o\": \"\", \"fa-file-photo-o\": \"\", \"fa-file-picture-o\": \"\", \"fa-file-powerpoint-o\": \"\", \"fa-file-sound-o\": \"\", \"fa-file-text\": \"\", \"fa-file-text-o\": \"\", \"fa-file-video-o\": \"\", \"fa-file-word-o\": \"\", \"fa-file-zip-o\": \"\", \"fa-files-o\": \"\", \"fa-film\": \"\", \"fa-filter\": \"\", \"fa-fire\": \"\", \"fa-fire-extinguisher\": \"\", \"fa-firefox\": \"\", \"fa-first-order\": \"\", \"fa-flag\": \"\", \"fa-flag-checkered\": \"\", \"fa-flag-o\": \"\", \"fa-flash\": \"\", \"fa-flask\": \"\", \"fa-flickr\": \"\", \"fa-floppy-o\": \"\", \"fa-folder\": \"\", \"fa-folder-o\": \"\", \"fa-folder-open\": \"\", \"fa-folder-open-o\": \"\", \"fa-font\": \"\", \"fa-font-awesome\": \"\", \"fa-fonticons\": \"\", \"fa-fort-awesome\": \"\", \"fa-forumbee\": \"\", \"fa-forward\": \"\", \"fa-foursquare\": \"\", \"fa-free-code-camp\": \"\", \"fa-frown-o\": \"\", \"fa-futbol-o\": \"\", \"fa-gamepad\": \"\", \"fa-gavel\": \"\", \"fa-gbp\": \"\", \"fa-ge\": \"\", \"fa-gear\": \"\", \"fa-gears\": \"\", \"fa-genderless\": \"\", \"fa-get-pocket\": \"\", \"fa-gg\": \"\", \"fa-gg-circle\": \"\", \"fa-gift\": \"\", \"fa-git\": \"\", \"fa-git-square\": \"\", \"fa-github\": \"\", \"fa-github-alt\": \"\", \"fa-github-square\": \"\", \"fa-gitlab\": \"\", \"fa-gittip\": \"\", \"fa-glass\": \"\", \"fa-glide\": \"\", \"fa-glide-g\": \"\", \"fa-globe\": \"\", \"fa-google\": \"\", \"fa-google-plus\": \"\", \"fa-google-plus-circle\": \"\", \"fa-google-plus-official\": \"\", \"fa-google-plus-square\": \"\", \"fa-google-wallet\": \"\", \"fa-graduation-cap\": \"\", \"fa-gratipay\": \"\", \"fa-grav\": \"\", \"fa-group\": \"\", \"fa-h-square\": \"\", \"fa-hacker-news\": \"\", \"fa-hand-grab-o\": \"\", \"fa-hand-lizard-o\": \"\", \"fa-hand-o-down\": \"\", \"fa-hand-o-left\": \"\", \"fa-hand-o-right\": \"\", \"fa-hand-o-up\": \"\", \"fa-hand-paper-o\": \"\", \"fa-hand-peace-o\": \"\", \"fa-hand-pointer-o\": \"\", \"fa-hand-rock-o\": \"\", \"fa-hand-scissors-o\": \"\", \"fa-hand-spock-o\": \"\", \"fa-hand-stop-o\": \"\", \"fa-handshake-o\": \"\", \"fa-hard-of-hearing\": \"\", \"fa-hashtag\": \"\", \"fa-hdd-o\": \"\", \"fa-header\": \"\", \"fa-headphones\": \"\", \"fa-heart\": \"\", \"fa-heart-o\": \"\", \"fa-heartbeat\": \"\", \"fa-history\": \"\", \"fa-home\": \"\", \"fa-hospital-o\": \"\", \"fa-hotel\": \"\", \"fa-hourglass\": \"\", \"fa-hourglass-1\": \"\", \"fa-hourglass-2\": \"\", \"fa-hourglass-3\": \"\", \"fa-hourglass-end\": \"\", \"fa-hourglass-half\": \"\", \"fa-hourglass-o\": \"\", \"fa-hourglass-start\": \"\", \"fa-houzz\": \"\", \"fa-html5\": \"\", \"fa-i-cursor\": \"\", \"fa-id-badge\": \"\", \"fa-id-card\": \"\", \"fa-id-card-o\": \"\", \"fa-ils\": \"\", \"fa-image\": \"\", \"fa-imdb\": \"\", \"fa-inbox\": \"\", \"fa-indent\": \"\", \"fa-industry\": \"\", \"fa-info\": \"\", \"fa-info-circle\": \"\", \"fa-inr\": \"\", \"fa-instagram\": \"\", \"fa-institution\": \"\", \"fa-internet-explorer\": \"\", \"fa-intersex\": \"\", \"fa-ioxhost\": \"\", \"fa-italic\": \"\", \"fa-joomla\": \"\", \"fa-jpy\": \"\", \"fa-jsfiddle\": \"\", \"fa-key\": \"\", \"fa-keyboard-o\": \"\", \"fa-krw\": \"\", \"fa-language\": \"\", \"fa-laptop\": \"\", \"fa-lastfm\": \"\", \"fa-lastfm-square\": \"\", \"fa-leaf\": \"\", \"fa-leanpub\": \"\", \"fa-legal\": \"\", \"fa-lemon-o\": \"\", \"fa-level-down\": \"\", \"fa-level-up\": \"\", \"fa-life-bouy\": \"\", \"fa-life-buoy\": \"\", \"fa-life-ring\": \"\", \"fa-life-saver\": \"\", \"fa-lightbulb-o\": \"\", \"fa-line-chart\": \"\", \"fa-link\": \"\", \"fa-linkedin\": \"\", \"fa-linkedin-square\": \"\", \"fa-linode\": \"\", \"fa-linux\": \"\", \"fa-list\": \"\", \"fa-list-alt\": \"\", \"fa-list-ol\": \"\", \"fa-list-ul\": \"\", \"fa-location-arrow\": \"\", \"fa-lock\": \"\", \"fa-long-arrow-down\": \"\", \"fa-long-arrow-left\": \"\", \"fa-long-arrow-right\": \"\", \"fa-long-arrow-up\": \"\", \"fa-low-vision\": \"\", \"fa-magic\": \"\", \"fa-magnet\": \"\", \"fa-mail-forward\": \"\", \"fa-mail-reply\": \"\", \"fa-mail-reply-all\": \"\", \"fa-male\": \"\", \"fa-map\": \"\", \"fa-map-marker\": \"\", \"fa-map-o\": \"\", \"fa-map-pin\": \"\", \"fa-map-signs\": \"\", \"fa-mars\": \"\", \"fa-mars-double\": \"\", \"fa-mars-stroke\": \"\", \"fa-mars-stroke-h\": \"\", \"fa-mars-stroke-v\": \"\", \"fa-maxcdn\": \"\", \"fa-meanpath\": \"\", \"fa-medium\": \"\", \"fa-medkit\": \"\", \"fa-meetup\": \"\", \"fa-meh-o\": \"\", \"fa-mercury\": \"\", \"fa-microchip\": \"\", \"fa-microphone\": \"\", \"fa-microphone-slash\": \"\", \"fa-minus\": \"\", \"fa-minus-circle\": \"\", \"fa-minus-square\": \"\", \"fa-minus-square-o\": \"\", \"fa-mixcloud\": \"\", \"fa-mobile\": \"\", \"fa-mobile-phone\": \"\", \"fa-modx\": \"\", \"fa-money\": \"\", \"fa-moon-o\": \"\", \"fa-mortar-board\": \"\", \"fa-motorcycle\": \"\", \"fa-mouse-pointer\": \"\", \"fa-music\": \"\", \"fa-navicon\": \"\", \"fa-neuter\": \"\", \"fa-newspaper-o\": \"\", \"fa-object-group\": \"\", \"fa-object-ungroup\": \"\", \"fa-odnoklassniki\": \"\", \"fa-odnoklassniki-square\": \"\", \"fa-opencart\": \"\", \"fa-openid\": \"\", \"fa-opera\": \"\", \"fa-optin-monster\": \"\", \"fa-outdent\": \"\", \"fa-pagelines\": \"\", \"fa-paint-brush\": \"\", \"fa-paper-plane\": \"\", \"fa-paper-plane-o\": \"\", \"fa-paperclip\": \"\", \"fa-paragraph\": \"\", \"fa-paste\": \"\", \"fa-pause\": \"\", \"fa-pause-circle\": \"\", \"fa-pause-circle-o\": \"\", \"fa-paw\": \"\", \"fa-paypal\": \"\", \"fa-pencil\": \"\", \"fa-pencil-square\": \"\", \"fa-pencil-square-o\": \"\", \"fa-percent\": \"\", \"fa-phone\": \"\", \"fa-phone-square\": \"\", \"fa-photo\": \"\", \"fa-picture-o\": \"\", \"fa-pie-chart\": \"\", \"fa-pied-piper\": \"\", \"fa-pied-piper-alt\": \"\", \"fa-pied-piper-pp\": \"\", \"fa-pinterest\": \"\", \"fa-pinterest-p\": \"\", \"fa-pinterest-square\": \"\", \"fa-plane\": \"\", \"fa-play\": \"\", \"fa-play-circle\": \"\", \"fa-play-circle-o\": \"\", \"fa-plug\": \"\", \"fa-plus\": \"\", \"fa-plus-circle\": \"\", \"fa-plus-square\": \"\", \"fa-plus-square-o\": \"\", \"fa-podcast\": \"\", \"fa-power-off\": \"\", \"fa-print\": \"\", \"fa-product-hunt\": \"\", \"fa-puzzle-piece\": \"\", \"fa-qq\": \"\", \"fa-qrcode\": \"\", \"fa-question\": \"\", \"fa-question-circle\": \"\", \"fa-question-circle-o\": \"\", \"fa-quora\": \"\", \"fa-quote-left\": \"\", \"fa-quote-right\": \"\", \"fa-ra\": \"\", \"fa-random\": \"\", \"fa-ravelry\": \"\", \"fa-rebel\": \"\", \"fa-recycle\": \"\", \"fa-reddit\": \"\", \"fa-reddit-alien\": \"\", \"fa-reddit-square\": \"\", \"fa-refresh\": \"\", \"fa-registered\": \"\", \"fa-remove\": \"\", \"fa-renren\": \"\", \"fa-reorder\": \"\", \"fa-repeat\": \"\", \"fa-reply\": \"\", \"fa-reply-all\": \"\", \"fa-resistance\": \"\", \"fa-retweet\": \"\", \"fa-rmb\": \"\", \"fa-road\": \"\", \"fa-rocket\": \"\", \"fa-rotate-left\": \"\", \"fa-rotate-right\": \"\", \"fa-rouble\": \"\", \"fa-rss\": \"\", \"fa-rss-square\": \"\", \"fa-rub\": \"\", \"fa-ruble\": \"\", \"fa-rupee\": \"\", \"fa-s15\": \"\", \"fa-safari\": \"\", \"fa-save\": \"\", \"fa-scissors\": \"\", \"fa-scribd\": \"\", \"fa-search\": \"\", \"fa-search-minus\": \"\", \"fa-search-plus\": \"\", \"fa-sellsy\": \"\", \"fa-send\": \"\", \"fa-send-o\": \"\", \"fa-server\": \"\", \"fa-share\": \"\", \"fa-share-alt\": \"\", \"fa-share-alt-square\": \"\", \"fa-share-square\": \"\", \"fa-share-square-o\": \"\", \"fa-shekel\": \"\", \"fa-sheqel\": \"\", \"fa-shield\": \"\", \"fa-ship\": \"\", \"fa-shirtsinbulk\": \"\", \"fa-shopping-bag\": \"\", \"fa-shopping-basket\": \"\", \"fa-shopping-cart\": \"\", \"fa-shower\": \"\", \"fa-sign-in\": \"\", \"fa-sign-language\": \"\", \"fa-sign-out\": \"\", \"fa-signal\": \"\", \"fa-signing\": \"\", \"fa-simplybuilt\": \"\", \"fa-sitemap\": \"\", \"fa-skyatlas\": \"\", \"fa-skype\": \"\", \"fa-slack\": \"\", \"fa-sliders\": \"\", \"fa-slideshare\": \"\", \"fa-smile-o\": \"\", \"fa-snapchat\": \"\", \"fa-snapchat-ghost\": \"\", \"fa-snapchat-square\": \"\", \"fa-snowflake-o\": \"\", \"fa-soccer-ball-o\": \"\", \"fa-sort\": \"\", \"fa-sort-alpha-asc\": \"\", \"fa-sort-alpha-desc\": \"\", \"fa-sort-amount-asc\": \"\", \"fa-sort-amount-desc\": \"\", \"fa-sort-asc\": \"\", \"fa-sort-desc\": \"\", \"fa-sort-down\": \"\", \"fa-sort-numeric-asc\": \"\", \"fa-sort-numeric-desc\": \"\", \"fa-sort-up\": \"\", \"fa-soundcloud\": \"\", \"fa-space-shuttle\": \"\", \"fa-spinner\": \"\", \"fa-spoon\": \"\", \"fa-spotify\": \"\", \"fa-square\": \"\", \"fa-square-o\": \"\", \"fa-stack-exchange\": \"\", \"fa-stack-overflow\": \"\", \"fa-star\": \"\", \"fa-star-half\": \"\", \"fa-star-half-empty\": \"\", \"fa-star-half-full\": \"\", \"fa-star-half-o\": \"\", \"fa-star-o\": \"\", \"fa-steam\": \"\", \"fa-steam-square\": \"\", \"fa-step-backward\": \"\", \"fa-step-forward\": \"\", \"fa-stethoscope\": \"\", \"fa-sticky-note\": \"\", \"fa-sticky-note-o\": \"\", \"fa-stop\": \"\", \"fa-stop-circle\": \"\", \"fa-stop-circle-o\": \"\", \"fa-street-view\": \"\", \"fa-strikethrough\": \"\", \"fa-stumbleupon\": \"\", \"fa-stumbleupon-circle\": \"\", \"fa-subscript\": \"\", \"fa-subway\": \"\", \"fa-suitcase\": \"\", \"fa-sun-o\": \"\", \"fa-superpowers\": \"\", \"fa-superscript\": \"\", \"fa-support\": \"\", \"fa-table\": \"\", \"fa-tablet\": \"\", \"fa-tachometer\": \"\", \"fa-tag\": \"\", \"fa-tags\": \"\", \"fa-tasks\": \"\", \"fa-taxi\": \"\", \"fa-telegram\": \"\", \"fa-television\": \"\", \"fa-tencent-weibo\": \"\", \"fa-terminal\": \"\", \"fa-text-height\": \"\", \"fa-text-width\": \"\", \"fa-th\": \"\", \"fa-th-large\": \"\", \"fa-th-list\": \"\", \"fa-themeisle\": \"\", \"fa-thermometer\": \"\", \"fa-thermometer-0\": \"\", \"fa-thermometer-1\": \"\", \"fa-thermometer-2\": \"\", \"fa-thermometer-3\": \"\", \"fa-thermometer-4\": \"\", \"fa-thermometer-empty\": \"\", \"fa-thermometer-full\": \"\", \"fa-thermometer-half\": \"\", \"fa-thermometer-quarter\": \"\", \"fa-thermometer-three-quarters\": \"\", \"fa-thumb-tack\": \"\", \"fa-thumbs-down\": \"\", \"fa-thumbs-o-down\": \"\", \"fa-thumbs-o-up\": \"\", \"fa-thumbs-up\": \"\", \"fa-ticket\": \"\", \"fa-times\": \"\", \"fa-times-circle\": \"\", \"fa-times-circle-o\": \"\", \"fa-times-rectangle\": \"\", \"fa-times-rectangle-o\": \"\", \"fa-tint\": \"\", \"fa-toggle-down\": \"\", \"fa-toggle-left\": \"\", \"fa-toggle-off\": \"\", \"fa-toggle-on\": \"\", \"fa-toggle-right\": \"\", \"fa-toggle-up\": \"\", \"fa-trademark\": \"\", \"fa-train\": \"\", \"fa-transgender\": \"\", \"fa-transgender-alt\": \"\", \"fa-trash\": \"\", \"fa-trash-o\": \"\", \"fa-tree\": \"\", \"fa-trello\": \"\", \"fa-tripadvisor\": \"\", \"fa-trophy\": \"\", \"fa-truck\": \"\", \"fa-try\": \"\", \"fa-tty\": \"\", \"fa-tumblr\": \"\", \"fa-tumblr-square\": \"\", \"fa-turkish-lira\": \"\", \"fa-tv\": \"\", \"fa-twitch\": \"\", \"fa-twitter\": \"\", \"fa-twitter-square\": \"\", \"fa-umbrella\": \"\", \"fa-underline\": \"\", \"fa-undo\": \"\", \"fa-universal-access\": \"\", \"fa-university\": \"\", \"fa-unlink\": \"\", \"fa-unlock\": \"\", \"fa-unlock-alt\": \"\", \"fa-unsorted\": \"\", \"fa-upload\": \"\", \"fa-usb\": \"\", \"fa-usd\": \"\", \"fa-user\": \"\", \"fa-user-circle\": \"\", \"fa-user-circle-o\": \"\", \"fa-user-md\": \"\", \"fa-user-o\": \"\", \"fa-user-plus\": \"\", \"fa-user-secret\": \"\", \"fa-user-times\": \"\", \"fa-users\": \"\", \"fa-vcard\": \"\", \"fa-vcard-o\": \"\", \"fa-venus\": \"\", \"fa-venus-double\": \"\", \"fa-venus-mars\": \"\", \"fa-viacoin\": \"\", \"fa-viadeo\": \"\", \"fa-viadeo-square\": \"\", \"fa-video-camera\": \"\", \"fa-vimeo\": \"\", \"fa-vimeo-square\": \"\", \"fa-vine\": \"\", \"fa-vk\": \"\", \"fa-volume-control-phone\": \"\", \"fa-volume-down\": \"\", \"fa-volume-off\": \"\", \"fa-volume-up\": \"\", \"fa-warning\": \"\", \"fa-wechat\": \"\", \"fa-weibo\": \"\", \"fa-weixin\": \"\", \"fa-whatsapp\": \"\", \"fa-wheelchair\": \"\", \"fa-wheelchair-alt\": \"\", \"fa-wifi\": \"\", \"fa-wikipedia-w\": \"\", \"fa-window-close\": \"\", \"fa-window-close-o\": \"\", \"fa-window-maximize\": \"\", \"fa-window-minimize\": \"\", \"fa-window-restore\": \"\", \"fa-windows\": \"\", \"fa-won\": \"\", \"fa-wordpress\": \"\", \"fa-wpbeginner\": \"\", \"fa-wpexplorer\": \"\", \"fa-wpforms\": \"\", \"fa-wrench\": \"\", \"fa-xing\": \"\", \"fa-xing-square\": \"\", \"fa-y-combinator\": \"\", \"fa-y-combinator-square\": \"\", \"fa-yahoo\": \"\", \"fa-yc\": \"\", \"fa-yc-square\": \"\", \"fa-yelp\": \"\", \"fa-yen\": \"\", \"fa-yoast\": \"\", \"fa-youtube\": \"\", \"fa-youtube-play\": \"\", \"fa-youtube-square\": \"\" };\nconst faClassMap = {\n \"fa-arrows\": \"fas fa-arrows-alt\",\n \"fa-address-book-o\": \"fa fa-address-book\",\n \"fa-address-card-o\": \"fa fa-address-card\",\n \"fa-arrow-circle-o-down\": \"fa fa-arrow-alt-circle-down\",\n \"fa-arrow-circle-o-left\": \"fa fa-arrow-alt-circle-left\",\n \"fa-arrow-circle-o-right\": \"fa fa-arrow-alt-circle-right\",\n \"fa-arrow-circle-o-up\": \"fa fa-arrow-alt-circle-up\",\n \"fa-arrows-h\": \"fas fa-arrows-alt-h\",\n \"fa-arrows-v\": \"fas fa-arrows-alt-v\",\n \"fa-bell-o\": \"fa fa-bell\",\n \"fa-bell-slash-o\": \"fa fa-bell-slash\",\n \"fa-bitbucket-square\": \"fab fa-bitbucket\",\n \"fa-bookmark-o\": \"fa fa-bookmark\",\n \"fa-building-o\": \"fa fa-building\",\n \"fa-check-circle-o\": \"fa fa-check-circle\",\n \"fa-check-square-o\": \"fa fa-check-square\",\n \"fa-circle-o\": \"fa fa-circle\",\n \"fa-circle-thin\": \"fa fa-circle\",\n \"fa-cloud-download\": \"fas fa-cloud-download-alt\",\n \"fa-cloud-upload\": \"fas fa-cloud-upload-alt\",\n \"fa-comment-o\": \"fa fa-comment\",\n \"fa-commenting-o\": \"fa fa-comment-dots\",\n \"fa-comments-o\": \"fa fa-comments\",\n \"fa-credit-card-alt\": \"fas fa-credit-card\",\n \"fa-cutlery\": \"fas fa-utensils\",\n \"fa-dashboard\": \"fas fa-tachometer-alt\",\n \"fa-diamond\": \"fa fa-gem\",\n \"fa-drivers-license-o\": \"fa fa-address-card\",\n \"fa-envelope-o\": \"fa fa-envelope\",\n \"fa-envelope-open-o\": \"fa fa-envelope-open\",\n \"fa-exchange\": \"fas fa-exchange-alt\",\n \"fa-external-link\": \"fas fa-external-link-alt\",\n \"fa-external-link-square\": \"fas fa-external-link-square-alt\",\n \"fa-facebook-official\": \"fab fa-facebook-square\",\n \"fa-file-o\": \"fa fa-file\",\n \"fa-file-text-o\": \"fa fa-file-alt\",\n \"fa-flag-o\": \"fa fa-flag\",\n \"fa-folder-o\": \"fa fa-folder\",\n \"fa-folder-open-o\": \"fa fa-folder-open\",\n \"fa-heart-o\": \"fa fa-heart\",\n \"fa-hourglass-o\": \"fa fa-hourglass\",\n \"fa-id-card-o\": \"fa fa-id-card\",\n \"fa-level-down\": \"fas fa-level-down-alt\",\n \"fa-level-up\": \"fas fa-level-up-alt\",\n \"fa-long-arrow-down\": \"fas fa-long-arrow-alt-down\",\n \"fa-long-arrow-left\": \"fas fa-long-arrow-alt-left\",\n \"fa-long-arrow-right\": \"fas fa-long-arrow-alt-right\",\n \"fa-long-arrow-up\": \"fas fa-long-arrow-alt-up\",\n \"fa-mail-reply\": \"fas fa-reply\",\n \"fa-map-o\": \"fa fa-map\",\n \"fa-meanpath\": \"fas fa-square\",\n \"fa-minus-square-o\": \"fa fa-minus-square\",\n \"fa-paper-plane-o\": \"fa fa-paper-plane\",\n \"fa-pause-circle-o\": \"fa fa-pause-circle\",\n \"fa-pencil\": \"fas fa-pencil-alt\",\n \"fa-play-circle-o\": \"fa fa-play-circle\",\n \"fa-plus-square-o\": \"fa fa-plus-square\",\n \"fa-question-circle-o\": \"fa fa-question-circle\",\n \"fa-reply\": \"fas fa-reply\",\n \"fa-send-o\": \"fa fa-paper-plane\",\n \"fa-share-square-o\": \"fa fa-share-square\",\n \"fa-shield\": \"fas fa-shield-alt\",\n \"fa-sign-in\": \"fas fa-sign-in-alt\",\n \"fa-sign-out\": \"fas fa-sign-out-alt\",\n \"fa-spoon\": \"fas fa-utensil-spoon\",\n \"fa-square-o\": \"fa fa-square\",\n \"fa-star-half-empty\": \"fa fa-star-half\",\n \"fa-star-half-full\": \"fas fa-star-half-alt\",\n \"fa-star-half-o\": \"fa fa-star-half\",\n \"fa-star-o\": \"fa fa-star\",\n \"fa-sticky-note-o\": \"fa fa-sticky-note\",\n \"fa-stop-circle-o\": \"fa fa-stop-circle\",\n \"fa-tachometer\": \"fas fa-tachometer-alt\",\n \"fa-thumbs-o-down\": \"fa fa-thumbs-down\",\n \"fa-thumbs-o-up\": \"fa fa-thumbs-up\",\n \"fa-ticket\": \"fas fa-ticket-alt\",\n \"fa-times-circle-o\": \"fa fa-times-circle\",\n \"fa-times-rectangle\": \"fas fa-window-close\",\n \"fa-times-rectangle-o\": \"fa fa-window-close\",\n \"fa-trash-o\": \"fa fa-trash-alt\",\n \"fa-user-circle-o\": \"fa fa-user-circle\",\n \"fa-user-o\": \"fa fa-user\",\n \"fa-vcard-o\": \"fa fa-address-card\",\n \"fa-wheelchair-alt\": \"fas fa-wheelchair\",\n \"fa-window-close\": \"fas fa-window-close\",\n \"fa-window-close-o\": \"fa fa-window-close\",\n \"fa-youtube-play\": \"fab fa-youtube\",\n \"fa-youtube-square\": \"fab fa-youtube-square\"\n};\nexport function faKeys(): string[] {\n return Object.keys(faCharMap);\n}\n\nexport function fa5Class(key: string): string {\n return faClassMap[key] ? faClassMap[key] : key;\n}\n\nexport function faChar(key: string, defChar: string = \"fa-question\"): string {\n if (key.indexOf(\"fa-\") === 0) {\n return faCharMap[key] || faCharMap[defChar];\n }\n return key;\n}\n\nexport function faCode(key: string): number {\n return faChar(key).charCodeAt(0);\n}\n\nexport function removeHTMLFromString(str: string, div?: HTMLDivElement) {\n div = div ? div : document.createElement(\"div\");\n div.innerHTML = str;\n return div.textContent || div.innerText || \"\";\n}\n\n// Template ---\n// https://github.com/Matt-Esch/string-template (MIT)\nconst nargs = /\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}/g;\nconst nargs2 = /\\{\\{([0-9a-zA-Z_\\s\\[\\]]+)\\}\\}/g;\n\nexport function templateFields(tpl: string): string[] {\n if (!tpl) return [];\n const retVal: string[] = [];\n const matches = tpl.match(nargs);\n if (matches && matches.length) {\n for (const tplField of matches) {\n retVal.push(tplField.substring(1, tplField.length - 1));\n }\n }\n return retVal;\n}\n\nexport function template(tpl: string, _args) {\n if (!tpl) return \"\";\n let args;\n\n if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n args = arguments[1];\n } else {\n args = new Array(arguments.length - 1);\n for (let i = 1; i < arguments.length; ++i) {\n args[i - 1] = arguments[i];\n }\n }\n\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n\n // Array handling\n for (const key in args) {\n if (isArray(args[key])) {\n args[key].forEach(function (row, idx) {\n args[key + \"[\" + idx + \"]\"] = row;\n });\n }\n }\n\n return tpl\n .replace(nargs2, function replaceArg(match, i) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return match;\n }\n return removeHTMLFromString(result);\n })\n .replace(nargs, function replaceArg(match, i, index) {\n const result = args.hasOwnProperty(i) ? args[i] : null;\n if (result === null || result === undefined) {\n return \"\";\n }\n return result;\n })\n ;\n}\n\nexport function naturalSort(data, order, idx, sortCaseSensitive) {\n return data.slice(0).sort(function (a, b) {\n return _naturalSort(a, b, order, idx, sortCaseSensitive);\n });\n}\n\nexport function multiSort(data, sortBy) {\n if (sortBy && sortBy.length) {\n data.sort(function (l, r) {\n for (let i = 0; i < sortBy.length; ++i) {\n const lVal = l[sortBy[i].idx];\n const rVal = r[sortBy[i].idx];\n if (lVal !== rVal) {\n return sortBy[i].reverse ? d3Descending(lVal, rVal) : d3Ascending(lVal, rVal);\n }\n }\n return 0;\n });\n }\n return data;\n}\n\nexport const Selection = SelectionBag;\n\nexport function urlParams() {\n const retVal = {};\n const url = window.location.href;\n const idx = url.indexOf(\"?\");\n if (idx >= 0) {\n url.substring(idx + 1).split(\"&\").forEach(function (param) {\n const paramParts = param.split(\"=\");\n switch (paramParts.length) {\n case 1:\n retVal[decodeURIComponent(paramParts[0])] = undefined;\n break;\n case 2:\n retVal[decodeURIComponent(paramParts[0])] = decodeURIComponent(paramParts[1]);\n break;\n default:\n throw new Error(\"Invalid URL Param: \" + param);\n }\n });\n }\n return retVal;\n}\n\nexport function endsWith(str: string, searchStr: string, pos?: number) {\n const subjectString = str.toString();\n if (typeof pos !== \"number\" || !isFinite(pos) || Math.floor(pos) !== pos || pos > subjectString.length) {\n pos = subjectString.length;\n }\n pos -= searchStr.length;\n const lastIndex = subjectString.indexOf(searchStr, pos);\n return lastIndex !== -1 && lastIndex === pos;\n}\n\nexport function d3ArrayAdapter(array) {\n return {\n ownerDocument: {\n createElement(_tagName) {\n return {\n get __data__() { return this.row; },\n set __data__(_) { this.row = array[this.index] = _; }\n };\n },\n\n createElementNS(_ns, tagName) {\n return this.createElement(tagName);\n }\n },\n\n querySelectorAll(selectors) {\n if (selectors) throw new Error(\"unsupported\");\n const context = this;\n return array.map(function (row, idx) {\n return {\n ownerDocument: context.ownerDocument,\n parentNode: context,\n get __data__() { return row; },\n set __data__(_) { array[idx] = _; }\n };\n });\n },\n\n appendChild(node) {\n node.parentNode = this;\n node.index = array.length;\n array.push(null);\n return node;\n },\n\n insertBefore(node, referenceNode) {\n const idx = array.indexOf(node.__data__);\n const refIdx = array.indexOf(referenceNode.__data__);\n if (idx > refIdx) {\n array.splice(refIdx, 0, array.splice(idx, 1)[0]);\n } else if (idx < refIdx - 1) {\n array.splice(refIdx - 1, 0, array.splice(idx, 1)[0]);\n }\n return node;\n },\n\n removeChild(node) {\n array.splice(array.indexOf(node.__data__), 1);\n return node;\n }\n };\n}\n\nexport function downloadBlob(blob: Blob, filename: string) {\n let a = document.createElement(\"a\");\n if (navigator[\"msSaveBlob\"]) { // IE10+\n a = null;\n return navigator[\"msSaveBlob\"](blob, filename);\n } else if (\"download\" in a) { // html 5\n a.href = URL.createObjectURL(blob);\n a.setAttribute(\"download\", filename);\n document.body.appendChild(a);\n setTimeout(function () {\n a.click();\n document.body.removeChild(a);\n }, 10);\n return true;\n }\n}\n\nexport function timestamp() {\n const currentdate = new Date();\n const timeFormat = d3TimeFormat(\"%Y-%m-%dT%H_%M_%S\");\n return timeFormat(currentdate);\n}\n\nexport function downloadString(format: \"CSV\" | \"TSV\" | \"JSON\" | \"TEXT\" | \"SVG\", blob: string, id?: string) {\n const filename = id || (\"data_\" + timestamp()) + \".\" + format.toLowerCase();\n\n let mimeType = \"\";\n switch (format) {\n case \"TSV\":\n mimeType = \"text/tab-seperated-values\";\n break;\n case \"JSON\":\n mimeType = \"application/json\";\n break;\n case \"SVG\":\n mimeType = \"image/svg+xml\";\n break;\n case \"CSV\":\n case \"TEXT\":\n default:\n mimeType = \"text/csv\";\n }\n downloadBlob(new Blob([blob], { type: mimeType }), filename);\n}\n\nexport function widgetPath(classID) {\n return \"../\" + classID.split(\"_\").join(\"/\");\n}\n\nexport function parseClassID(classID, prefix = \"..\") {\n const parts = classID.split(\".\");\n const classParts = parts[0].split(\"_\");\n return {\n package: `@hpcc-js/${classParts[0]}`,\n path: prefix + \"/\" + parts[0].split(\"_\").join(\"/\"),\n widgetID: classParts.length > 1 ? classParts[1] : null,\n memberWidgetID: parts.length > 1 ? parts[1] : null\n };\n}\n\nexport function checksum(s) {\n if (s instanceof Array) {\n s = s.join(\"\") + s.length;\n }\n switch (typeof s) {\n case \"string\":\n break;\n default:\n s = \"\" + s;\n }\n let chk = 0x12345678;\n for (let i = 0, l = s.length; i < l; ++i) {\n chk += (s.charCodeAt(i) * (i + 1));\n }\n return (chk & 0xffffffff).toString(16);\n}\nexport function getTime() {\n return (now && now.call(perf)) || (new Date().getTime());\n}\nexport function mixin(dest, _sources) {\n dest = dest || {};\n for (let i = 1, l = arguments.length; i < l; i++) {\n _mixin(dest, arguments[i]);\n }\n return dest;\n}\n\nfunction _mixin(dest, source) {\n let s;\n const empty = {};\n for (const key in source) {\n s = source[key];\n if (!(key in dest) || (dest[key] !== s && (!(key in empty) || empty[key] !== s))) {\n dest[key] = s;\n }\n }\n return dest;\n}\n\nexport function exists(prop, scope) {\n if (!prop || !scope) {\n return false;\n }\n const propParts = prop.split(\".\");\n let testScope = scope;\n for (let i = 0; i < propParts.length; ++i) {\n const item = propParts[i];\n if (testScope[item] === undefined) {\n return false;\n }\n testScope = testScope[item];\n }\n return true;\n}\n\nexport function logStringify(obj) {\n const cache = [];\n return JSON.stringify(obj, function (_key, value) {\n if (typeof value === \"object\" && value !== null) {\n if (cache.indexOf(value) !== -1) {\n return;\n }\n\n cache.push(value);\n }\n return value;\n });\n}\n\nexport function debounce(func, threshold = 100, execAsap = false) {\n return function debounced(..._dummyArgs) {\n const obj = this || {};\n const args = arguments;\n function delayed() {\n if (!execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = null;\n }\n if (obj.__hpcc_debounce_timeout)\n clearTimeout(obj.__hpcc_debounce_timeout);\n else if (execAsap)\n func.apply(obj, args);\n obj.__hpcc_debounce_timeout = setTimeout(delayed, threshold);\n };\n}\n\nexport function parseVersionString(versionString) {\n const _sp = versionString.split(\".\");\n return {\n major: parseInt(_sp[0].replace(\"v\", \"\")),\n minor: parseInt(_sp[1]),\n patch: parseInt(_sp[2].split(\"-\")[0])\n };\n}\n\nexport type TextSize = { width: number; height: number; };\nlet g_fontSizeContext: CanvasRenderingContext2D;\nconst g_fontSizeContextCache: { [key: string]: TextSize } = {};\n\nexport function textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n g_fontSizeContext = globalCanvasContext();\n const text = _text instanceof Array ? _text : [_text];\n const hash = `${bold}::${fontSize}::${fontName}::${text.join(\"::\")}`;\n let retVal = g_fontSizeContextCache[hash];\n if (!retVal) {\n retVal = { width: 0, height: 0 };\n g_fontSizeContext.font = `${bold ? \"bold \" : \"\"}${fontSize}px ${fontName}`;\n text.forEach(line => {\n const textMeasurement = g_fontSizeContext.measureText(\"\" + line);\n const width = textMeasurement.width;\n const height = (textMeasurement.fontBoundingBoxDescent + textMeasurement.fontBoundingBoxAscent) * text.length;\n g_fontSizeContextCache[hash] = retVal = {\n width: width > retVal.width ? width : retVal.width,\n height: height > retVal.height ? height : retVal.height\n };\n });\n }\n return retVal;\n}\n\nexport type TextRect = { width: number; height: number; top: number; right: number; bottom: number; left: number; };\nlet g_fontCanvas;\nconst g_fontRectContextCache: { [key: string]: TextRect } = {};\nexport function textRect(text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n // This function is relatively expensive and should be used conservatively\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = globalCanvasContext();\n const hash = `${bold}::${fontSize}::${fontName}::${text}`;\n let retVal = g_fontRectContextCache[hash];\n if (!retVal) {\n const font = `${bold ? \"bold \" : \"\"}${fontSize}px '${fontName}'`;\n g_fontSizeContext.font = font;\n const m = g_fontSizeContext.measureText(text);\n const w = g_fontCanvas.width = Math.ceil(m.width);\n const h = g_fontCanvas.height = fontSize * 1.5;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n g_fontSizeContext.font = font;\n g_fontSizeContext.fillStyle = \"black\";\n g_fontSizeContext.textAlign = \"start\";\n g_fontSizeContext.textBaseline = \"top\";\n g_fontSizeContext.fillText(text, 0, 0);\n\n let top, right, bottom, left = 0;\n if (w > 0) {\n const data = g_fontSizeContext.getImageData(0, 0, w, h).data;\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const i = (x + y * w) * 4;\n if (data[i + 3] !== 0) {\n if (top === undefined) {\n top = y;\n }\n if (left === undefined || left > x) {\n left = x;\n }\n if (right === undefined || right < x) {\n right = x;\n }\n bottom = y;\n }\n }\n }\n }\n retVal = {\n width: right - left + 1,\n height: bottom - top + 1,\n top,\n right,\n bottom,\n left\n };\n g_fontRectContextCache[hash] = retVal;\n }\n return retVal;\n}\n\nfunction globalCanvasElement() {\n if (!g_fontCanvas) {\n g_fontCanvas = document.getElementById(\"hpcc_js_font_size\");\n if (!g_fontCanvas) {\n g_fontCanvas = document.createElement(\"canvas\");\n g_fontCanvas.id = \"hpcc_js_font_size\";\n document.body.appendChild(g_fontCanvas);\n }\n }\n return g_fontCanvas;\n}\n\nfunction globalCanvasContext() {\n if (!g_fontSizeContext) {\n g_fontCanvas = globalCanvasElement();\n g_fontSizeContext = (g_fontCanvas as HTMLCanvasElement).getContext(\"2d\");\n }\n return g_fontSizeContext;\n}\n\nexport function safeRaise(domNode: Element) {\n const target = domNode;\n let nextSibling = target.nextSibling;\n while (nextSibling) {\n target.parentNode.insertBefore(nextSibling, target);\n nextSibling = target.nextSibling;\n }\n}\n","import { deviation as d3Deviation, max as d3Max, mean as d3Mean, median as d3Median, min as d3Min, sum as d3Sum, variance as d3Variance } from \"d3-array\";\nimport { map as d3Map, nest as d3Nest } from \"d3-collection\";\nimport { csvFormatRows as d3CsvFormatRows, csvParse as d3CsvParse, tsvFormatRows as d3TsvFormatRows, tsvParse as d3TsvParse } from \"d3-dsv\";\nimport { format as d3Format } from \"d3-format\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\nimport { PropertyExt } from \"./PropertyExt\";\nimport * as Utility from \"./Utility\";\n\nconst d3Aggr = {\n min: d3Min,\n max: d3Max,\n mean: d3Mean,\n median: d3Median,\n variance: d3Variance,\n deviation: d3Deviation,\n sum: d3Sum\n};\n\nlet lastFoundFormat = null;\n\nexport interface INestedColumn {\n label: string;\n columns: Array<string | INestedColumn>;\n}\n\n// Field ---\nexport type FieldType = \"string\" | \"number\" | \"boolean\" | \"date\" | \"time\" | \"hidden\" | \"nested\";\n\nexport class Field extends PropertyExt {\n private _owner: Grid;\n idx: number;\n protected _children: Field[] = [];\n\n constructor(id?) {\n super();\n\n this._id = id || this._id;\n }\n\n owner(): Grid;\n owner(_: Grid): this;\n owner(_?: Grid): Grid | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n checksum(): string {\n return Utility.checksum(this.label() + this.type() + this.mask() + this.format());\n }\n\n typeTransformer(_: any) {\n switch (this.type()) {\n case \"number\":\n return Number(_);\n case \"string\":\n return String(_);\n case \"boolean\":\n return typeof (_) === \"string\" && [\"false\", \"off\", \"0\"].indexOf(_.toLowerCase()) >= 0 ? false : Boolean(_);\n case \"time\":\n case \"date\":\n return this.maskTransformer(_);\n }\n return _;\n }\n\n maskTransformer(_) {\n return this.formatter(this.mask()).parse(String(_));\n }\n\n formatTransformer(_) {\n return this.formatter(this.format())(_);\n }\n\n parse(_) {\n if (!_) {\n return _;\n }\n try {\n return this.typeTransformer(_);\n } catch (e) {\n console.warn(\"Unable to parse: \" + _);\n return null;\n }\n }\n\n transform(_) {\n if (!_) {\n return _;\n }\n try {\n return this.formatTransformer(this.typeTransformer(_));\n } catch (e) {\n console.warn(\"Unable to transform: \" + _);\n return null;\n }\n }\n\n clone() {\n const context = this;\n const retVal = new Field(this._id);\n cloneProp(retVal, \"label\");\n cloneProp(retVal, \"type\");\n cloneProp(retVal, \"mask\");\n cloneProp(retVal, \"format\");\n\n function cloneProp(dest, key) {\n dest[key + \"_default\"](context[key + \"_default\"]());\n if (context[key + \"_exists\"]()) {\n dest[key](context[key]());\n }\n }\n return retVal;\n }\n\n formatter(format) {\n let retVal;\n if (!format) {\n retVal = function (_) {\n return _;\n };\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n switch (this.type()) {\n case \"time\":\n case \"date\":\n return d3TimeFormat(format);\n }\n retVal = d3Format(format);\n retVal.parse = function (_) {\n return _;\n };\n return retVal;\n }\n\n children(): Field[];\n children(_: Array<string | INestedColumn | Field>, asDefault?: boolean): this;\n children(_?: Array<string | INestedColumn | Field>, asDefault?: boolean): Field[] | this {\n if (_ === void 0) return this._children;\n this.type(\"nested\");\n const fieldsArr = this._children;\n this._children = _.map((field: string | INestedColumn | Field, idx): Field => {\n if (field instanceof Field) {\n fieldsArr[idx] = field;\n return field;\n } else if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns) as Field\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns) as Field\n ;\n }\n }\n }, this);\n return this;\n }\n\n label_default: { (): string; (x: string): Field; };\n label: { (): string; (x: string): Field; };\n mask: { (): string; (x: string): Field; };\n format: { (): string; (x: string): Field; };\n}\nField.prototype._class += \" common_Database.Field\";\n\nexport interface Field {\n type(): FieldType;\n type(_: FieldType): this;\n}\n\nField.prototype.publish(\"label\", \"\", \"string\", \"Label\", null, { optional: true });\nField.prototype.publish(\"type\", \"\", \"set\", \"Type\", [\"\", \"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\"], { optional: true });\nField.prototype.publish(\"mask\", \"\", \"string\", \"Time Mask\", null, { disable: (w: any) => w.type() !== \"time\", optional: true });\nField.prototype.publish(\"format\", \"\", \"string\", \"Format\", null, { optional: true });\n\n// Grid ---\nexport class Grid extends PropertyExt {\n _dataChecksum: boolean;\n _dataVersion: number;\n\n private _data = [];\n private _dataChecksums = [];\n\n constructor(dataChecksum?) {\n super();\n dataChecksum = dataChecksum || false;\n this._dataChecksum = dataChecksum;\n this._dataVersion = 0;\n this.clear();\n }\n\n clear() {\n this.fields([]);\n this._data = [];\n this._dataChecksums = [];\n ++this._dataVersion;\n return this;\n }\n\n // Backward compatability ---\n resetColumns() {\n const fields = this.fields() as Field[];\n this.legacyColumns([]);\n this.legacyColumns(fields.map(function (field) {\n return field.label();\n }));\n }\n\n legacyColumns(_?, asDefault?): any | Grid {\n if (!arguments.length) return this.row(0);\n this.row(0, _, asDefault);\n return this;\n }\n\n legacyData(_?, _clone?) {\n return Grid.prototype.data.apply(this, arguments);\n }\n\n // Meta ---\n schema() {\n }\n\n field(idx) {\n return this.fields()[idx];\n }\n\n fieldByLabel(_, ignoreCase?) {\n return this.fields().filter(function (field: Field, idx) {\n field.idx = idx;\n return ignoreCase ? field.label().toLowerCase() === _.toLowerCase() : field.label() === _;\n })[0];\n }\n\n data(_?, clone?): any | Grid {\n if (!arguments.length) return this._data;\n this._data = clone ? _.map(function (d) { return d.map(function (d2) { return d2; }); }) : _;\n this._dataCalcChecksum();\n return this;\n }\n\n parsedData() {\n const context = this;\n return this._data.map(function (row) {\n return row.map(function (cell, idx) {\n return context.fields()[idx].parse(cell);\n });\n });\n }\n\n formattedData() {\n return this._data.map(row => {\n return this.fields().map((field, idx) => {\n return field.transform(row[idx]);\n });\n });\n }\n\n fieldsChecksum() {\n return Utility.checksum(this.fields().map(function (field) { return field.checksum(); }));\n }\n\n dataChecksum() {\n return Utility.checksum(this._dataChecksum ? this._dataChecksums : this._dataVersion);\n }\n\n checksum() {\n return Utility.checksum([this.dataChecksum(), this.fieldsChecksum()]);\n }\n\n // Row Access ---\n private _dataCalcChecksum(idx?) {\n ++this._dataVersion;\n if (this._dataChecksum) {\n if (arguments.length) {\n this._dataChecksums[idx] = Utility.checksum(this._data[idx]);\n } else {\n this._dataChecksums = this._data.map(function (row) { return Utility.checksum(row); });\n }\n }\n return this;\n }\n\n row(row?, _?, asDefault?): any | Grid {\n if (arguments.length < 2) return row === 0 ? this.fields().map(function (d) { return d.label(); }) : this._data[row - 1];\n if (row === 0) {\n const fieldsArr = this.fields();\n this.fields(_.map(function (field: string | INestedColumn, idx) {\n if (typeof field === \"string\") {\n if (asDefault) {\n return (fieldsArr[idx] || new Field()).label_default(field);\n } else {\n return (fieldsArr[idx] || new Field()).label(field);\n }\n } else {\n if (asDefault) {\n return (fieldsArr[idx] || new Field())\n .label_default(field.label)\n .children(field.columns)\n ;\n } else {\n return (fieldsArr[idx] || new Field())\n .label(field.label)\n .children(field.columns)\n ;\n }\n }\n }, this));\n } else {\n this._data[row - 1] = _;\n this._dataCalcChecksum(row - 1);\n }\n return this;\n }\n\n rows(_?): any | Grid {\n if (!arguments.length) return [this.row(0)].concat(this._data);\n this.row(0, _[0]);\n this._data = _.filter(function (_row, idx) { return idx > 0; });\n this._dataCalcChecksum();\n return this;\n }\n\n // Column Access ---\n column(col, _?): any | Grid {\n if (arguments.length < 2) return [this.fields()[col].label()].concat(this._data.map(function (row, _idx) { return row[col]; }));\n _.forEach(function (d, idx) {\n if (idx === 0) {\n this.fields()[col] = new Field().label(_[0]);\n } else {\n this._data[idx - 1][col] = d;\n this._dataCalcChecksum(idx - 1);\n }\n }, this);\n return this;\n }\n\n columnData(col, _): any | Grid {\n if (arguments.length < 2) return this._data.map(function (row, _idx) { return row[col]; });\n _.forEach(function (d, idx) {\n this._data[idx][col] = d;\n this._dataCalcChecksum(idx);\n }, this);\n return this;\n }\n\n columns(_?): any | Grid {\n if (!arguments.length) return this.fields().map(function (_col, idx) {\n return this.column(idx);\n }, this);\n _.forEach(function (_col, idx) {\n this.column(idx, _[idx]);\n }, this);\n return this;\n }\n\n // Cell Access ---\n cell(row, col, _) {\n if (arguments.length < 3) return this.row(row)[col];\n if (row === 0) {\n this.fields()[col] = new Field().label(_);\n } else {\n this._data[row][col] = _;\n this._dataCalcChecksum(row);\n }\n return this;\n }\n\n // Grid Access ---\n grid(_?) {\n return Grid.prototype.rows.apply(this, arguments);\n }\n\n // Hipie Helpers ---\n\n hipieMappings(columns, missingDataString) {\n missingDataString = missingDataString || \"\";\n if (!this.fields().length || !this._data.length) {\n return [];\n }\n const mappedColumns = [];\n let hasRollup = false;\n columns.forEach(function (mapping, idx) {\n const mappedColumn = {\n groupby: false,\n func: \"\",\n params: []\n };\n if (mapping.hasFunction()) {\n mappedColumn.func = mapping.function();\n if (mappedColumn.func === \"SCALE\") {\n mappedColumn.groupby = true;\n } else {\n hasRollup = true;\n }\n\n mapping.params().forEach(function (param) {\n const field = this.fieldByLabel(param, true);\n mappedColumn.params.push(field ? field.idx : -1);\n }, this);\n } else {\n mappedColumn.groupby = true;\n const field = this.fieldByLabel(mapping.id(), true);\n mappedColumn.params.push(field ? field.idx : -1);\n }\n mappedColumns.push(mappedColumn);\n }, this);\n\n if (hasRollup) {\n const retVal = [];\n this.rollup(mappedColumns.filter(function (mappedColumn) {\n return mappedColumn.groupby === true;\n }).map(function (d) {\n return d.params[0];\n }), function (leaves) {\n const row = mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SUM\":\n return d3Sum(leaves, function (d) { return d[param1]; });\n case \"AVE\":\n return d3Mean(leaves, function (d) { return d[param1] / d[param2]; });\n case \"MIN\":\n return d3Min(leaves, function (d) { return d[param1]; });\n case \"MAX\":\n return d3Max(leaves, function (d) { return d[param1]; });\n case \"SCALE\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n // All leaves should have the same values, use mean just in case they don't?\n return d3Mean(leaves, function (d) { return d[param1] / +param2; });\n }\n // All leaves should have the same value.\n return leaves[0][param1];\n });\n retVal.push(row);\n return row;\n });\n return retVal;\n } else {\n return this._data.map(function (row) {\n return mappedColumns.map(function (mappedColumn) {\n const param1 = mappedColumn.params[0];\n const param2 = mappedColumn.params[1];\n switch (mappedColumn.func) {\n case \"SCALE\":\n return row[param1] / +param2;\n case \"SUM\":\n case \"AVE\":\n case \"MIN\":\n case \"MAX\":\n console.warn(\"Unexpected function: \" + mappedColumn.func);\n }\n return row[param1];\n });\n });\n }\n }\n\n legacyView() {\n return new LegacyView(this);\n }\n\n nestView(columnIndicies) {\n return new RollupView(this, columnIndicies);\n }\n\n rollupView(columnIndicies, rollupFunc?) {\n return new RollupView(this, columnIndicies, rollupFunc);\n }\n\n aggregateView(columnIndicies, aggrType, aggrColumn, aggrDeltaColumn = \"\") {\n const context = this;\n return new RollupView(this, columnIndicies, function (values) {\n switch (aggrType) {\n case null:\n case undefined:\n case \"\":\n values.aggregate = values.length;\n return values;\n default:\n const columns = context.legacyColumns();\n const colIdx = columns.indexOf(aggrColumn);\n const deltaIdx = columns.indexOf(aggrDeltaColumn);\n values.aggregate = d3Aggr[aggrType](values, function (value) {\n return (+value[colIdx] - (deltaIdx >= 0 ? +value[deltaIdx] : 0)) / (deltaIdx >= 0 ? +value[deltaIdx] : 1);\n });\n return values;\n }\n });\n }\n\n // Nesting ---\n private _nest(columnIndicies, _rollup?) {\n if (!(columnIndicies instanceof Array)) {\n columnIndicies = [columnIndicies];\n }\n const nest = d3Nest();\n columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n return nest;\n }\n\n nest(columnIndicies) {\n return this._nest(columnIndicies)\n .entries(this._data)\n ;\n }\n\n rollup(columnIndicies, rollup) {\n return this._nest(columnIndicies)\n .rollup(rollup)\n .entries(this._data)\n ;\n }\n\n // Util ---\n length() {\n return this._data.length + 1;\n }\n\n width() {\n return this.fields().length;\n }\n\n pivot() {\n this.resetColumns();\n this.rows(this.columns());\n return this;\n }\n\n clone(deep) {\n return new Grid()\n .fields(this.fields(), deep)\n .data(this.data(), deep)\n ;\n }\n\n filter(filter) {\n const filterIdx = {};\n this.row(0).forEach(function (col, idx) {\n filterIdx[col] = idx;\n });\n return new Grid()\n .fields(this.fields(), true)\n .data(this.data().filter(function (row) {\n for (const key in filter) {\n if (filter[key] !== row[filterIdx[key]]) {\n return false;\n }\n }\n return true;\n }))\n ;\n }\n\n analyse(columns) {\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n const retVal = [];\n columns.forEach(function (col) {\n const rollup = this.rollup(col, function (leaves) {\n return leaves.length;\n });\n retVal.push(rollup);\n const keys = rollup.map(function (d) { return d.key; });\n this.fields()[col].isBoolean = typeTest(keys, isBoolean);\n this.fields()[col].isNumber = typeTest(keys, isNumber);\n this.fields()[col].isString = !this.fields()[col].isNumber && typeTest(keys, isString);\n this.fields()[col].isUSState = this.fields()[col].isString && typeTest(keys, isUSState);\n this.fields()[col].isDateTime = this.fields()[col].isString && typeTest(keys, isDateTime);\n this.fields()[col].isDateTimeFormat = lastFoundFormat;\n this.fields()[col].isDate = !this.fields()[col].isDateTime && typeTest(keys, isDate);\n this.fields()[col].isDateFormat = lastFoundFormat;\n this.fields()[col].isTime = this.fields()[col].isString && !this.fields()[col].isDateTime && !this.fields()[col].isDate && typeTest(keys, isTime);\n this.fields()[col].isTimeFormat = lastFoundFormat;\n }, this);\n return retVal;\n }\n\n // Import/Export ---\n jsonObj(_?): any | Grid {\n if (!arguments.length) return this._data.map(function (row) {\n const retVal = {};\n this.row(0).forEach(function (col, idx) {\n retVal[col] = row[idx];\n });\n return retVal;\n }, this);\n this.clear();\n this.data(_.map(function (row) {\n const retVal = [];\n for (const key in row) {\n let colIdx = this.row(0).indexOf(key);\n if (colIdx < 0) {\n colIdx = this.fields().length;\n this.fields().push(new Field().label(key));\n }\n retVal[colIdx] = row[key];\n }\n return retVal;\n }, this));\n return this;\n }\n\n json(_: string | object): this;\n json(): string;\n json(_?: string | object): string | this {\n if (!arguments.length) return JSON.stringify(this.jsonObj(), null, \" \");\n if (typeof (_) === \"string\") {\n _ = JSON.parse(_);\n }\n this.jsonObj(_);\n return this;\n }\n\n csv(_: string): this;\n csv(): string;\n csv(_?: string): string | this {\n if (!arguments.length) {\n const temp = document.createElement(\"div\");\n return d3CsvFormatRows(this.grid().map(row => {\n return row.map(cell => {\n return Utility.removeHTMLFromString(cell, temp);\n });\n }));\n }\n this.jsonObj(d3CsvParse(_));\n return this;\n }\n\n tsv(_: string): this;\n tsv(): string;\n tsv(_?: string): string | this {\n if (!arguments.length) return d3TsvFormatRows(this.grid());\n this.jsonObj(d3TsvParse(_));\n return this;\n }\n}\nGrid.prototype._class += \" common_Database.Grid\";\nexport interface Grid {\n fields(): Field[];\n fields(_: Field[], clone?: boolean): this;\n}\n\nGrid.prototype.publish(\"fields\", [], \"propertyArray\", \"Fields\");\nconst fieldsOrig = Grid.prototype.fields;\nGrid.prototype.fields = function (_?, clone?) {\n if (!arguments.length) return fieldsOrig.apply(this, arguments);\n return fieldsOrig.call(this, clone ? _.map(function (d) { return d.clone(); }) : _);\n};\n\n// Views ---\nexport class LegacyView {\n _grid;\n _parsedData;\n _parsedDataChecksum;\n _formattedData;\n _formattedDataChecksum;\n\n constructor(grid) {\n this._grid = grid;\n }\n\n checksum() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n fields() {\n const value = this._grid.on.apply(this._grid, arguments);\n return value === this._grid ? this : value;\n }\n\n grid() {\n return this._grid;\n }\n columns(_?) {\n if (!arguments.length) return this._grid.legacyColumns();\n this._grid.legacyColumns(_);\n return this;\n }\n rawData(_?) {\n if (!arguments.length) return this._grid.legacyData();\n this._grid.legacyData(_);\n return this;\n }\n formattedData() {\n if (this._formattedDataChecksum !== this._grid.checksum()) {\n this._formattedDataChecksum = this._grid.checksum();\n this._formattedData = this._grid.formattedData();\n }\n return this._formattedData;\n }\n parsedData() {\n if (this._parsedDataChecksum !== this._grid.checksum()) {\n this._parsedDataChecksum = this._grid.checksum();\n this._parsedData = this._grid.parsedData();\n }\n return this._parsedData;\n }\n protected _whichData(opts?) {\n if (opts) {\n if (opts.parsed) {\n return this.formattedData();\n } else if (opts.formatted) {\n return this.formattedData();\n }\n }\n return this.rawData();\n }\n data(_) {\n return LegacyView.prototype.rawData.apply(this, arguments);\n }\n}\n\nexport class RollupView extends LegacyView {\n _columnIndicies;\n _rollup;\n _nestChecksum;\n _nest;\n\n constructor(grid, columns, rollup?) {\n super(grid);\n if (!(columns instanceof Array)) {\n columns = [columns];\n }\n this._columnIndicies = columns.filter(function (column) { return column; }).map(function (column) {\n switch (typeof column) {\n case \"string\":\n return this._grid.fieldByLabel(column).idx;\n }\n return column;\n }, this);\n\n rollup = rollup || function (d) { return d; };\n this._rollup = rollup;\n }\n\n nest() {\n if (this._nestChecksum !== this._grid.checksum()) {\n this._nestChecksum = this._grid.checksum();\n\n const nest = d3Nest();\n this._columnIndicies.forEach(function (idx) {\n nest.key(function (d) {\n return d[idx];\n });\n });\n this._nest = nest\n .rollup(this._rollup)\n ;\n }\n return this._nest;\n }\n entries(opts?) {\n return this.nest().entries(this._whichData(opts));\n }\n map(opts) {\n return this.nest().map(this._whichData(opts));\n }\n d3Map(opts) {\n return this.nest().map(this._whichData(opts), d3Map);\n }\n _walkData(entries, prevRow = []) {\n let retVal = [];\n entries.forEach(function (entry) {\n if (entry instanceof Array) {\n retVal.push(prevRow.concat([entry]));\n } else if (entry.values instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.values, prevRow.concat([entry.key])));\n } else if (entry.value instanceof Array) {\n retVal = retVal.concat(this._walkData(entry.value, prevRow.concat([entry.key])));\n }\n }, this);\n return retVal;\n }\n data(opts) {\n return this._walkData(this.entries(opts));\n }\n}\n\n// --- --- ---\nfunction typeTest(cells, test) {\n if (!(cells instanceof Array)) {\n cells = [cells];\n }\n return cells.filter(function (d) { return d !== \"\"; }).every(test);\n}\nfunction isBoolean(cell) {\n return typeof cell === \"boolean\";\n}\nfunction isNumber(cell) {\n return typeof cell === \"number\" || !isNaN(cell);\n}\nfunction isString(cell) {\n return typeof cell === \"string\";\n}\nconst dateTimeFormats = [\n];\nconst dateFormats = [\n \"%Y-%m-%d\",\n \"%Y%m%d\"\n];\nconst timeFormats = [\n \"%H:%M:%S.%LZ\",\n \"%H:%M:%SZ\",\n \"%H:%M:%S\"\n];\ndateFormats.forEach(function (d) {\n timeFormats.forEach(function (t) {\n dateTimeFormats.push(d + \"T\" + t);\n });\n});\nfunction formatPicker(formats, cell) {\n for (let i = 0; i < formats.length; ++i) {\n const date = d3TimeParse(formats[i])(cell);\n if (date) {\n lastFoundFormat = formats[i];\n return formats[i];\n }\n }\n return null;\n}\nfunction isDateTime(cell) {\n return formatPicker(dateTimeFormats, cell);\n}\nfunction isDate(cell) {\n return formatPicker(dateFormats, cell);\n}\nfunction isTime(cell) {\n return formatPicker(timeFormats, cell);\n}\nfunction isUSState(cell) {\n return [\"AL\", \"AK\", \"AZ\", \"AR\", \"CA\", \"CO\", \"CT\", \"DE\", \"FL\", \"GA\", \"HI\", \"ID\", \"IL\", \"IN\", \"IA\", \"KS\", \"KY\", \"LA\", \"ME\", \"MD\", \"MA\", \"MI\", \"MN\", \"MS\", \"MO\", \"MT\", \"NE\", \"NV\", \"NH\", \"NJ\", \"NM\", \"NY\", \"NC\", \"ND\", \"OH\", \"OK\", \"OR\", \"PA\", \"RI\", \"SC\", \"SD\", \"TN\", \"TX\", \"UT\", \"VT\", \"VA\", \"WA\", \"WV\", \"WI\", \"WY\", \"AS\", \"DC\", \"FM\", \"GU\", \"MH\", \"MP\", \"PW\", \"PR\", \"VI\"].indexOf(String(cell).toUpperCase()) >= 0;\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Field, Grid } from \"./Database\";\nimport { } from \"./Platform\";\nimport { PropertyExt } from \"./PropertyExt\";\nimport { debounce, textRect, TextRect, textSize, TextSize } from \"./Utility\";\n\nimport \"../src/Widget.css\";\n\nexport type IPrimative = boolean | number | string | object;\nexport type IFieldType = \"boolean\" | \"number\" | \"string\" | \"dataset\" | \"object\" | \"any\";\nexport interface InputField {\n id: string;\n type: IFieldType;\n multi?: boolean;\n default?: IPrimative | InputField[];\n children?: InputField[];\n}\n\nexport interface IPos {\n x: number;\n y: number;\n}\n\nexport interface ISize {\n width: number;\n height: number;\n}\n\nexport interface BBox {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface DataMetaT {\n min?: number;\n max?: number;\n mean?: number;\n stdDev?: number;\n sum?: number;\n}\n\nlet widgetID = 0;\nexport abstract class Widget extends PropertyExt {\n _idSeed: string;\n\n protected _tag: string;\n protected _isRootNode: boolean = true;\n\n protected _db = new Grid();\n protected _pos;\n protected _prevPos;\n protected _size;\n protected _widgetScale;\n protected _visible;\n protected _display;\n protected _dataMeta: DataMetaT = {};\n\n protected _target: null | HTMLElement | SVGElement;\n protected _placeholderElement;\n protected _parentWidget;\n\n protected _element;\n\n protected _renderCount;\n\n protected _overlayElement;\n\n constructor() {\n super();\n this._class = Object.getPrototypeOf(this)._class;\n this._id = this._idSeed + widgetID++;\n\n this._db = new Grid();\n this._pos = { x: 0, y: 0 };\n this._size = { width: 0, height: 0 };\n this._widgetScale = 1;\n this._visible = true;\n\n this._target = null;\n this._placeholderElement = null;\n this._parentWidget = null;\n\n this._element = d3Select(null);\n\n this._renderCount = 0;\n\n if ((window as any).__hpcc_debug) {\n if ((window as any).g_all === undefined) {\n (window as any).g_all = {};\n }\n (window as any).g_all[this._id] = this;\n }\n if ((window as any).__hpcc_theme) {\n this.applyTheme((window as any).__hpcc_theme);\n }\n }\n\n columnChecksum() {\n return this._db.fieldsChecksum();\n }\n\n dataChecksum() {\n return this._db.dataChecksum();\n }\n\n importJSON(_: string | object): this {\n this._db.json(_);\n return this;\n }\n\n importCSV(_: string): this {\n this._db.csv(_);\n return this;\n }\n\n importTSV(_: string): this {\n this._db.tsv(_);\n return this;\n }\n\n export(_: \"JSON\" | \"CSV\" | \"TSV\" = \"JSON\") {\n switch (_) {\n case \"CSV\":\n return this._db.csv();\n case \"TSV\":\n return this._db.tsv();\n case \"JSON\":\n default:\n return this._db.json();\n }\n }\n\n leakCheck(newNode) {\n const context = this;\n const watchArray = [newNode];\n const destructObserver = new MutationObserver(function (mutations) {\n let leaks = false;\n mutations.forEach(function (mutation) {\n for (let i = 0; i < mutation.removedNodes.length; ++i) {\n const node = mutation.removedNodes.item(i);\n if (watchArray.indexOf(node) >= 0 && context._target) {\n leaks = true;\n destructObserver.disconnect();\n }\n }\n });\n if (leaks) {\n console.error(\"leak: \" + context.id() + \" - \" + context.classID() + \"\\t\\twidget.target(null); was not called for this widget before it was removed from the page.\");\n }\n });\n let pNode = newNode.parentNode;\n while (pNode) {\n destructObserver.observe(pNode, { childList: true });\n watchArray.push(pNode);\n pNode = pNode.parentNode;\n }\n }\n\n renderCount(): number {\n return this._renderCount;\n }\n\n // Implementation ---\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._db.legacyColumns();\n this._db.legacyColumns(_, asDefault);\n return this;\n }\n\n protected columnIdx(column: string): number {\n return this.columns().indexOf(column);\n }\n\n protected cellIdxFunc<T>(colIdx: number, defValue?: T): (row: any) => T {\n return colIdx < 0 ? () => defValue : row => row[colIdx];\n }\n\n protected cellFunc<T>(column: string, defValue?: T): (row: any) => T {\n return this.cellIdxFunc<T>(this.columnIdx(column), defValue);\n }\n\n parsedData() {\n return this._db.parsedData();\n }\n\n formattedData() {\n return this._db.formattedData();\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return this._db.legacyData();\n this._db.legacyData(_);\n return this;\n }\n\n cloneData() {\n return this.data().map(function (row) { return row.slice(0); });\n }\n\n flattenData(columns: string[] = this.columns(), data: any = this.data()) {\n const retVal = [];\n data.forEach(function (row, rowIdx) {\n columns.filter(function (_col, idx) { return idx > 0; }).forEach(function (_col, idx) {\n const val = row[idx + 1];\n if (typeof val !== \"undefined\") {\n const newItem = {\n rowIdx,\n colIdx: idx + 1,\n label: row[0],\n value: val\n };\n retVal.push(newItem);\n }\n }, this);\n }, this);\n return retVal;\n }\n\n rowToObj(row: any[]): object {\n if (!row) return {};\n const retVal: any = {};\n this.fields().forEach(function (field, idx) {\n retVal[field.label_default() || field.label()] = row[idx];\n });\n if (row.length === this.columns().length + 1) {\n retVal.__lparam = row[this.columns().length];\n }\n return retVal;\n }\n\n pos(): IPos;\n pos(_: IPos): this;\n pos(_?: IPos): IPos | this {\n if (!arguments.length) return this._pos;\n this._pos = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n x(): number;\n x(_): this;\n x(_?): number | this {\n if (!arguments.length) return this._pos.x;\n this.pos({ x: _, y: this._pos.y });\n return this;\n }\n\n y(): number;\n y(_): this;\n y(_?): number | this {\n if (!arguments.length) return this._pos.y;\n this.pos({ x: this._pos.x, y: _ });\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n if (!arguments.length) return this._size;\n this._size = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"width\", _.width)\n .attr(\"height\", _.height)\n ;\n }\n return this;\n }\n\n width(): number;\n width(_): this;\n width(_?): number | this {\n if (!arguments.length) return this._size.width;\n this.size({ width: _, height: this._size.height });\n return this;\n }\n\n height(): number;\n height(_): this;\n height(_?): number | this {\n if (!arguments.length) return this._size.height;\n this.size({ width: this._size.width, height: _ });\n return this;\n }\n\n resize(size?: ISize, delta: ISize = { width: 0, height: 0 }) {\n let width;\n let height;\n if (size && size.width && size.height) {\n width = size.width;\n height = size.height;\n } else {\n const style = window.getComputedStyle(this._target, null);\n width = parseFloat(style.getPropertyValue(\"width\")) - delta.width;\n height = parseFloat(style.getPropertyValue(\"height\")) - delta.height;\n }\n this.size({\n width,\n height\n });\n return this;\n }\n\n scale(): number;\n scale(_): Widget;\n scale(_?): number | Widget {\n if (!arguments.length) return this._widgetScale;\n this._widgetScale = _;\n if (this._overlayElement) {\n this._overlayElement\n .attr(\"transform\", \"translate(\" + _.x + \",\" + _.y + \")scale(\" + this._widgetScale + \")\")\n ;\n }\n return this;\n }\n\n visible(): boolean;\n visible(_): this;\n visible(_?): boolean | this {\n if (!arguments.length) return this._visible;\n this._visible = _;\n if (this._element) {\n this._element\n .style(\"visibility\", this._visible ? null : \"hidden\")\n .style(\"opacity\", this._visible ? null : 0)\n ;\n }\n return this;\n }\n\n display(): boolean;\n display(_): this;\n display(_?): boolean | this {\n if (!arguments.length) return this._display;\n this._display = _;\n if (this._element) {\n this._element.style(\"display\", this._display ? null : \"none\");\n }\n return this;\n }\n\n dataMeta(): DataMetaT;\n dataMeta(_): this;\n dataMeta(_?): DataMetaT | this {\n if (!arguments.length) return this._dataMeta;\n this._dataMeta = _;\n return this;\n }\n\n private _appData = new Object({});\n appData(key: string): any;\n appData(key: string, value: any): this;\n appData(key: string, value?: any): any | this {\n if (arguments.length < 2) return this._appData[key];\n this._appData[key] = value;\n return this;\n }\n\n calcSnap(snapSize) {\n function snap(x, gridSize) {\n function snapDelta(x2, gridSize2) {\n let dx = x2 % gridSize2;\n if (Math.abs(dx) > gridSize2 - Math.abs(dx)) {\n dx = (gridSize2 - Math.abs(dx)) * (dx < 0 ? 1 : -1);\n }\n return dx;\n }\n return x - snapDelta(x, gridSize);\n }\n const l = snap(this._pos.x - this._size.width / 2, snapSize);\n const t = snap(this._pos.y - this._size.height / 2, snapSize);\n const r = snap(this._pos.x + this._size.width / 2, snapSize);\n const b = snap(this._pos.y + this._size.height / 2, snapSize);\n const w = r - l;\n const h = b - t;\n return [{ x: l + w / 2, y: t + h / 2 }, { width: w, height: h }];\n }\n\n // DOM/SVG Node Helpers ---\n toWidget(domNode): Widget | null {\n if (!domNode) {\n return null;\n }\n const element = d3Select(domNode);\n if (element) {\n const widget = element.datum();\n if (widget && widget instanceof Widget) {\n return widget;\n }\n }\n return null;\n }\n\n parentOverlay() {\n return null;\n }\n\n locateParentWidget(domNode?): Widget | null {\n domNode = domNode || (this._target ? this._target.parentNode : null);\n if (domNode) {\n const widget = this.toWidget(domNode);\n if (widget) {\n return widget;\n } else if (domNode.parentNode) {\n return this.locateParentWidget(domNode.parentNode);\n }\n }\n return null;\n }\n\n locateSVGNode(domNode): SVGSVGElement | null {\n if (!domNode) {\n return null;\n }\n if (domNode.tagName === \"svg\") {\n return domNode;\n }\n return this.locateSVGNode(domNode.parentNode);\n }\n\n locateOverlayNode() {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n const retVal = widget.parentOverlay();\n if (retVal) {\n return retVal;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n locateAncestor(classID): Widget | null {\n return this.locateClosestAncestor([classID]);\n }\n\n locateClosestAncestor(classIDArr): Widget | null {\n let widget = this.locateParentWidget(this._target);\n while (widget) {\n if (classIDArr.indexOf(widget.classID()) !== -1) {\n return widget;\n }\n widget = this.locateParentWidget(widget._target.parentNode);\n }\n return null;\n }\n\n getAbsolutePos(domNode, w, h) {\n const root = this.locateSVGNode(domNode);\n if (!root) {\n return null;\n }\n let pos = root.createSVGPoint();\n const ctm = domNode.getCTM();\n pos = pos.matrixTransform(ctm);\n const retVal: any = {\n x: pos.x,\n y: pos.y\n };\n if (w !== undefined && h !== undefined) {\n let size = root.createSVGPoint();\n size.x = w;\n size.y = h;\n size = size.matrixTransform(ctm);\n retVal.width = size.x - pos.x;\n retVal.height = size.y - pos.y;\n }\n return retVal;\n }\n\n hasOverlay() {\n return this._overlayElement;\n }\n\n syncOverlay() {\n if (this._size.width && this._size.height) {\n const newPos = this.getAbsolutePos(this._overlayElement.node(), this._size.width, this._size.height);\n if (newPos && (!this._prevPos || newPos.x !== this._prevPos.x || newPos.y !== this._prevPos.y || newPos.width !== this._prevPos.width || newPos.height !== this._prevPos.height)) {\n const xScale = newPos.width / this._size.width;\n const yScale = newPos.height / this._size.height;\n this._placeholderElement\n .style(\"left\", newPos.x - (newPos.width / xScale) / 2 + \"px\")\n .style(\"top\", newPos.y - (newPos.height / yScale) / 2 + \"px\")\n .style(\"width\", newPos.width / xScale + \"px\")\n .style(\"height\", newPos.height / yScale + \"px\")\n ;\n const transform = \"scale(\" + xScale + \",\" + yScale + \")\";\n this._placeholderElement\n .style(\"transform\", transform)\n .style(\"-moz-transform\", transform)\n .style(\"-ms-transform\", transform)\n .style(\"-webkit-transform\", transform)\n .style(\"-o-transform\", transform)\n ;\n }\n this._prevPos = newPos;\n }\n }\n\n getBBox(refresh = false, round = false): BBox {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n textSize(_text: string | string[], fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextSize> {\n return textSize(_text, fontName, fontSize, bold);\n }\n\n textRect(_text: string, fontName: string = \"Verdana\", fontSize: number = 12, bold: boolean = false): Readonly<TextRect> {\n return textRect(_text, fontName, fontSize, bold);\n }\n\n element() {\n return this._element;\n }\n\n node() {\n return this._element.node();\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n if (!arguments.length) return this._target;\n if (this._target && _) {\n throw new Error(\"Target can only be assigned once.\");\n }\n if (_ === null) {\n this._target = null;\n if (this.renderCount()) {\n this.exit();\n }\n } else if (typeof _ === \"string\") {\n this._target = document.getElementById(_);\n } else if (_ instanceof HTMLElement || _ instanceof SVGElement) {\n this._target = _;\n }\n return this;\n }\n\n isDOMHidden(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n // Note: Will return false for visible===hidden (which is ok as it still takes up space on the page)\n return this._isRootNode && this._placeholderElement.node().offsetParent === null;\n }\n\n hasSize() {\n return !isNaN(this.width()) && !isNaN(this.height());\n }\n\n protected publishedWidgets(): Widget[] {\n let widgets = [];\n this.publishedProperties(true).forEach(function (meta) {\n if (!meta.ext || meta.ext.render !== false) {\n switch (meta.type) {\n case \"widget\":\n const widget = this[meta.id]();\n if (widget) {\n widgets.push(widget);\n }\n break;\n case \"widgetArray\":\n widgets = widgets.concat(this[meta.id]());\n break;\n }\n }\n }, this);\n return widgets;\n }\n\n // Render ---\n private _prevNow = 0;\n render(callback?: (w: Widget) => void) {\n if ((window as any).__hpcc_debug) {\n const now = Date.now();\n if (now - this._prevNow < 500) {\n console.error(\"Double Render: \" + (now - this._prevNow) + \" - \" + this.id() + \" - \" + this.classID());\n }\n this._prevNow = now;\n }\n\n callback = callback || function () { };\n if (!this._placeholderElement || !this.visible() || this.isDOMHidden() || !this.hasSize()) {\n callback(this);\n return this;\n }\n if (this._placeholderElement) {\n if (!this._tag)\n throw new Error(\"No DOM tag specified\");\n\n const elements = this._placeholderElement.selectAll(\"#\" + this._id).data([this], function (d) { return d._id; });\n elements.enter().append(this._tag)\n .classed(this._class, true)\n .attr(\"id\", this._id)\n // .attr(\"opacity\", 0.50) // Uncomment to debug position offsets ---\n .each(function (context2) {\n context2._element = d3Select(this);\n context2.enter(this, context2._element);\n if ((window as any).__hpcc_debug) {\n context2.leakCheck(this);\n }\n })\n .merge(elements)\n .each(function (context2) {\n const element = d3Select(this);\n const classed = context2.classed();\n for (const key in classed) {\n element.classed(key, classed[key]);\n }\n context2.preUpdate(this, context2._element);\n context2.update(this, context2._element);\n context2.postUpdate(this, context2._element);\n })\n ;\n elements.exit()\n .each(function (context2) {\n d3Select(this).datum(null);\n context2.exit(this, context2._element);\n })\n .remove()\n ;\n this._renderCount++;\n }\n\n // ASync Render Contained Widgets ---\n const widgets = this.publishedWidgets();\n\n const context = this;\n switch (widgets.length) {\n case 0:\n callback(this);\n break;\n case 1:\n widgets[0].render(function () {\n callback(context);\n });\n break;\n default:\n let renderCount = widgets.length;\n widgets.forEach(function (widget, _idx) {\n setTimeout(function () {\n widget.render(function () {\n if (--renderCount === 0) {\n callback(context);\n }\n });\n }, 0);\n });\n break;\n }\n return this;\n }\n\n renderPromise(): Promise<Widget> {\n return new Promise((resolve, reject) => {\n this.render((w: Widget) => {\n resolve(w);\n });\n });\n }\n\n private _lazyRender = debounce(function (debouncedCallback?: (w: Widget) => void) {\n this.render(debouncedCallback);\n }, 100);\n\n lazyRender(callback?: (w: Widget) => void): this {\n this._lazyRender(callback);\n return this;\n }\n\n animationFrameRender(): this {\n if (requestAnimationFrame) {\n requestAnimationFrame(() => {\n this.render();\n });\n } else {\n // Not a real replacement for requestAnimationFrame ---\n this.renderPromise();\n }\n return this;\n }\n\n enter(_domNode: HTMLElement, _element) { }\n preUpdate(_domNode: HTMLElement, _element) { }\n update(_domNode: HTMLElement, _element) { }\n postUpdate(_domNode: HTMLElement, _element) { }\n exit(_domNode?: HTMLElement, _element?) {\n this.publishedWidgets().forEach(w => w.target(null));\n }\n}\nWidget.prototype._class += \" common_Widget\";\n\nexport interface Widget {\n fields(): Field[];\n fields(_: Field[]): this;\n classed(classID: string): boolean;\n classed(classID: string, _: boolean): this;\n classed(): { [classID: string]: boolean };\n classed(_: { [classID: string]: boolean }): this;\n}\n\nWidget.prototype._idSeed = \"_w\";\n\nWidget.prototype.publishProxy(\"fields\", \"_db\", \"fields\");\nWidget.prototype.publish(\"classed\", {}, \"object\", \"HTML Classes\", null, { tags: [\"Private\"] });\nconst origClassed = Widget.prototype.classed;\nWidget.prototype.classed = function (this: Widget, str_obj?: string | { [classID: string]: boolean }, _?: boolean) {\n if (typeof str_obj === \"string\") {\n if (arguments.length === 1) return origClassed.call(this)[str_obj];\n const classed = origClassed.call(this);\n origClassed.call(this, { ...classed, [str_obj]: _ });\n return this;\n }\n return origClassed.apply(this, arguments);\n};\n","import { select as d3Select } from \"d3-selection\";\nimport { Widget } from \"./Widget\";\n\nexport class HTMLWidget extends Widget {\n\n private observer;\n protected _drawStartPos: \"origin\" | \"center\";\n protected _boundingBox;\n\n constructor() {\n super();\n\n this._drawStartPos = \"origin\";\n this._tag = \"div\";\n this._boundingBox = null;\n }\n\n calcFrameWidth(element) {\n const retVal = parseFloat(element.style(\"padding-left\")) +\n parseFloat(element.style(\"padding-right\")) +\n parseFloat(element.style(\"margin-left\")) +\n parseFloat(element.style(\"margin-right\")) +\n parseFloat(element.style(\"border-left-width\")) +\n parseFloat(element.style(\"border-right-width\"))\n ;\n return retVal;\n }\n\n calcWidth(element) {\n return parseFloat(element.style(\"width\")) - this.calcFrameWidth(element);\n }\n\n calcFrameHeight(element) {\n const retVal = parseFloat(element.style(\"padding-top\")) +\n parseFloat(element.style(\"padding-bottom\")) +\n parseFloat(element.style(\"margin-top\")) +\n parseFloat(element.style(\"margin-bottom\")) +\n parseFloat(element.style(\"border-top-width\")) +\n parseFloat(element.style(\"border-bottom-width\"))\n ;\n return retVal;\n }\n\n calcHeight(element) {\n return parseFloat(element.style(\"height\")) + this.calcFrameHeight(element);\n }\n\n hasHScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollWidth\") > element.property(\"clientWidth\");\n }\n\n hasVScroll(element?) {\n element = element || this._element;\n return element.property(\"scrollHeight\") > element.property(\"clientHeight\");\n }\n\n clientWidth() {\n return this._size.width - this.calcFrameWidth(this._element);\n }\n\n clientHeight() {\n return this._size.height - this.calcFrameHeight(this._element);\n }\n\n getBBox(refresh = false, round = false) {\n if (refresh || this._boundingBox === null) {\n const domNode = this._element.node() ? this._element.node().firstElementChild : null; // Needs to be first child, as element has its width/height forced onto it.\n if (domNode instanceof Element) {\n const rect = domNode.getBoundingClientRect();\n this._boundingBox = {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n reposition(pos?) {\n // const retVal = super.reposition(pos);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"left\", pos.x + \"px\")\n .style(\"top\", pos.y + \"px\")\n ;\n }\n return this;\n }\n\n resize(size?) {\n const retVal = super.resize(size);\n if (this._placeholderElement) {\n this._placeholderElement\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n }\n return retVal;\n }\n\n // Properties ---\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n // Target is a SVG Node, so create an item in the Overlay and force it \"over\" the overlay element (cough) ---\n this._isRootNode = false;\n const overlay = this.locateOverlayNode();\n this._placeholderElement = overlay.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n .style(\"overflow\", \"hidden\")\n ;\n this._overlayElement = d3Select(this._target);\n\n this._prevPos = null;\n this.observer = new MutationObserver(_mutation => {\n this.syncOverlay();\n });\n\n let domNode = this._overlayElement.node();\n while (domNode) {\n this.observer.observe(domNode, { attributes: true });\n domNode = domNode.parentNode;\n }\n } else if (this._target) { // HTMLElement\n this._placeholderElement = d3Select(this._target);\n if (!this._size.width && !this._size.height) {\n const width = parseFloat(this._placeholderElement.style(\"width\"));\n const height = parseFloat(this._placeholderElement.style(\"height\"));\n this.size({\n width,\n height\n });\n }\n this._placeholderElement = d3Select(this._target).append(\"div\");\n }\n }\n return retVal;\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n if (this._drawStartPos === \"origin\") {\n this._element\n .style(\"position\", \"relative\")\n .style(\"left\", this._pos.x + \"px\")\n .style(\"top\", this._pos.y + \"px\")\n ;\n } else {\n const bbox = this.getBBox(true);\n this._element\n .style(\"position\", \"relative\")\n .style(\"float\", \"left\")\n .style(\"left\", this._pos.x + (this._size.width - bbox.width) / 2 + \"px\")\n .style(\"top\", this._pos.y + (this._size.height - bbox.height) / 2 + \"px\")\n ;\n }\n }\n\n exit(domNode?, element?) {\n if (this.observer) {\n this.observer.disconnect();\n }\n this._prevPos = null;\n if (this._placeholderElement) {\n this._placeholderElement.remove();\n }\n super.exit(domNode, element);\n }\n}\nHTMLWidget.prototype._class += \" common_HTMLWidget\";\n","import { HTMLWidget } from \"./HTMLWidget\";\n\nexport class CanvasWidget extends HTMLWidget {\n\n _ctx: CanvasRenderingContext2D;\n constructor() {\n super();\n this._tag = \"canvas\";\n }\n\n resize(size) {\n const retVal = super.resize(size);\n try {\n this._element.attr(\"width\", this._size.width);\n this._element.attr(\"height\", this._size.height);\n this.resetContext();\n } catch (e) {\n console.error(e);\n }\n return retVal;\n }\n\n resetContext() {\n this._ctx = this._element.node().getContext(\"2d\");\n }\n\n click(d, c) {\n // console.log(d);\n }\n}\nCanvasWidget.prototype._class += \" common_CanvasWidget\";\n","const _version = \"1.14.2-dev\";\nexport function version() {\n return _version;\n}\n\nexport const ieVersion = (function () {\n const ua = navigator.userAgent;\n let tem;\n const M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return parseFloat(tem[1]);\n }\n if (/msie/i.test(M[1])) {\n return parseFloat(M[2]);\n }\n return null;\n})();\n\nexport const isIE = ieVersion !== null;\nexport const svgMarkerGlitch = isIE && ieVersion <= 12;\n\nlet _scrollBarWidth = null;\nexport function getScrollbarWidth() {\n if (_scrollBarWidth === null) {\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n // @ts-ignore\n outer.style.msOverflowStyle = \"scrollbar\";\n\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = \"scroll\";\n\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode.removeChild(outer);\n\n _scrollBarWidth = widthNoScroll - widthWithScroll;\n }\n return _scrollBarWidth;\n}\n\n// Polyfills ---\n(window as any).MutationObserver = (window as any).MutationObserver || (window as any).WebKitMutationObserver || (window as any).MozMutationObserver || function (callback) {\n // Just enough for HTMLOverlay and C3 ---\n this.callback = callback;\n this.listeners = [];\n\n const MutationListener = function (callback2, domNode, type) {\n this.callback = callback2;\n this.domNode = domNode;\n this.type = type;\n };\n MutationListener.prototype = {\n handleEvent(evt) {\n const mutation = {\n type: this.type,\n target: this.domNode,\n addedNodes: [],\n removedNodes: [],\n previousSibling: evt.target.previousSibling,\n nextSibling: evt.target.nextSibling,\n attributeName: null,\n attributeNamespace: null,\n oldValue: null\n };\n this.callback([mutation]);\n }\n };\n\n this.observe = function (domNode, config) {\n let listener = null;\n if (config.attributes) {\n listener = new MutationListener(this.callback, domNode, \"attributes\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMAttrModified\", listener, true);\n }\n\n if (config.characterData) {\n listener = new MutationListener(this.callback, domNode, \"characterData\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMCharacterDataModified\", listener, true);\n }\n\n if (config.childList) {\n listener = new MutationListener(this.callback, domNode, \"childList\");\n this.listeners.push(listener);\n domNode.addEventListener(\"DOMNodeInserted\", listener, true);\n domNode.addEventListener(\"DOMNodeRemoved\", listener, true);\n }\n };\n\n this.disconnect = function () {\n this.listeners.forEach(function (item) {\n switch (item.type) {\n case \"attributes\":\n item.domNode.removeEventListener(\"DOMAttrModified\", item, true);\n break;\n case \"characterData\":\n item.domNode.removeEventListener(\"DOMCharacterDataModified\", item, true);\n break;\n case \"childList\":\n item.domNode.removeEventListener(\"DOMNodeRemoved\", item, true);\n item.domNode.removeEventListener(\"DOMNodeInserted\", item, true);\n break;\n }\n });\n this.listeners = [];\n };\n};\n\n(Math as any).sign = (Math as any).sign || function (x) {\n x = +x; // convert to a number\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n","import { easeCubicInOut as d3CubicInOut } from \"d3-ease\";\n\nexport class Transition {\n\n protected _widget;\n protected _duration;\n protected _delay;\n protected _ease;\n\n constructor(widget) {\n this._widget = widget;\n this._duration = 250;\n this._delay = 0;\n this._ease = d3CubicInOut;\n }\n\n duration(_) {\n if (!arguments.length) return this._duration;\n this._duration = _;\n return this._widget;\n }\n\n delay(_) {\n if (!arguments.length) return this._delay;\n this._delay = _;\n return this._widget;\n }\n\n ease(_) {\n if (!arguments.length) return this._ease;\n this._ease = _;\n return this._widget;\n }\n\n apply(selection) {\n if (this._duration || this._delay) {\n return selection.transition()\n .duration(this._duration)\n .delay(this._delay)\n .ease(this._ease)\n ;\n }\n return selection;\n }\n}\n","import { rgb as d3Rgb } from \"d3-color\";\nimport { select as d3Select } from \"d3-selection\";\nimport { fontAwsesomeStyle } from \"./FAChar\";\nimport { svgMarkerGlitch } from \"./Platform\";\nimport { Transition } from \"./Transition\";\nimport { debounce, downloadBlob, downloadString, timestamp } from \"./Utility\";\nimport { ISize, Widget } from \"./Widget\";\n\ntype Point = { x: number, y: number };\ntype Rect = { x: number, y: number, width: number, height: number };\n\nconst lerp = function (point: Point, that: Point, t: number): Point {\n // From https://github.com/thelonious/js-intersections\n return {\n x: point.x + (that.x - point.x) * t,\n y: point.y + (that.y - point.y) * t\n };\n};\n\ntype LineIntersection = { type: \"Intersection\" | \"No Intersection\" | \"Coincident\" | \"Parallel\", points: Point[] };\nconst intersectLineLine = function (a1: Point, a2: Point, b1: Point, b2: Point): LineIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: LineIntersection = { type: \"Parallel\", points: [] };\n const uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x);\n const uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n if (uB !== 0) {\n const ua = uaT / uB;\n const ub = ubT / uB;\n\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result.type = \"Intersection\";\n result.points.push({\n x: a1.x + ua * (a2.x - a1.x),\n y: a1.y + ua * (a2.y - a1.y)\n });\n } else {\n result.type = \"No Intersection\";\n }\n } else {\n if (uaT === 0 || ubT === 0) {\n result.type = \"Coincident\";\n } else {\n result.type = \"Parallel\";\n }\n }\n\n return result;\n};\n\ntype CircleIntersection = { type: \"Outside\" | \"Tangent\" | \"Inside\" | \"Intersection\", points: Point[] };\nconst intersectCircleLine = function (c: Point, r: number, a1: Point, a2: Point): CircleIntersection {\n // From https://github.com/thelonious/js-intersections\n const result: CircleIntersection = { type: \"Intersection\", points: [] };\n const a = (a2.x - a1.x) * (a2.x - a1.x) +\n (a2.y - a1.y) * (a2.y - a1.y);\n const b = 2 * ((a2.x - a1.x) * (a1.x - c.x) +\n (a2.y - a1.y) * (a1.y - c.y));\n const cc = c.x * c.x + c.y * c.y + a1.x * a1.x + a1.y * a1.y -\n 2 * (c.x * a1.x + c.y * a1.y) - r * r;\n const deter = b * b - 4 * a * cc;\n\n if (deter < 0) {\n result.type = \"Outside\";\n } else if (deter === 0) {\n result.type = \"Tangent\";\n // NOTE: should calculate this point\n } else {\n const e = Math.sqrt(deter);\n const u1 = (-b + e) / (2 * a);\n const u2 = (-b - e) / (2 * a);\n\n if ((u1 < 0 || u1 > 1) && (u2 < 0 || u2 > 1)) {\n if ((u1 < 0 && u2 < 0) || (u1 > 1 && u2 > 1)) {\n result.type = \"Outside\";\n } else {\n result.type = \"Inside\";\n }\n } else {\n result.type = \"Intersection\";\n\n if (0 <= u1 && u1 <= 1)\n result.points.push(lerp(a1, a2, u1));\n\n if (0 <= u2 && u2 <= 1)\n result.points.push(lerp(a1, a2, u2));\n }\n }\n\n return result;\n};\n\nexport class SVGGlowFilter {\n protected filter;\n protected feOffset;\n protected feColorMatrix;\n protected feGaussianBlur;\n protected feBlend;\n\n constructor(target, id: string) {\n this.filter = target.append(\"filter\")\n .attr(\"id\", id)\n .attr(\"width\", \"130%\")\n .attr(\"height\", \"130%\");\n this.feOffset = this.filter.append(\"feOffset\")\n .attr(\"result\", \"offOut\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"dx\", \"0\")\n .attr(\"dy\", \"0\");\n this.feColorMatrix = this.filter.append(\"feColorMatrix\")\n .attr(\"result\", \"matrixOut\")\n .attr(\"in\", \"offOut\")\n .attr(\"type\", \"matrix\")\n .attr(\"values\", this.rgb2ColorMatrix(\"red\"))\n ;\n this.feGaussianBlur = this.filter.append(\"feGaussianBlur\")\n .attr(\"result\", \"blurOut\")\n .attr(\"in\", \"matrixOut\")\n .attr(\"stdDeviation\", \"3\")\n ;\n this.feBlend = this.filter.append(\"feBlend\")\n .attr(\"in\", \"SourceGraphic\")\n .attr(\"in2\", \"blurOut\")\n .attr(\"mode\", \"normal\")\n ;\n }\n\n rgb2ColorMatrix(color: string): string {\n const rgb = d3Rgb(color);\n return [\n rgb.r / 255, 0, 0, 0, rgb.r ? 1 : 0,\n 0, rgb.g / 255, 0, 0, rgb.g ? 1 : 0,\n 0, 0, rgb.b / 255, 0, rgb.b ? 1 : 0,\n 0, 0, 0, 1, 0\n ].join(\" \");\n }\n\n update(color: string) {\n this.feColorMatrix.attr(\"values\", this.rgb2ColorMatrix(color));\n }\n}\n\nexport class SVGWidget extends Widget {\n static _class = \"common_SVGWidget\";\n\n _tag;\n\n protected _boundingBox;\n protected transition;\n protected _drawStartPos: \"center\" | \"origin\";\n protected _svgSelectionFilter;\n protected _parentRelativeDiv;\n protected _parentOverlay;\n\n constructor() {\n super();\n\n this._tag = \"g\";\n\n this._boundingBox = null;\n\n this.transition = new Transition(this);\n\n this._drawStartPos = \"center\";\n }\n\n // Properties ---\n move(_, transitionDuration?) {\n const retVal = this.pos(_);\n if (arguments.length) {\n (transitionDuration ? this._element.transition().duration(transitionDuration) : this._element)\n .attr(\"transform\", `translate(${_.x} ${_.y})scale(${this._widgetScale})`)\n ;\n }\n return retVal;\n }\n\n _enableOverflow = false;\n enableOverflow(): boolean;\n enableOverflow(_: boolean): this;\n enableOverflow(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflow;\n this._enableOverflow = _;\n return this;\n }\n\n _enableOverflowScroll = true;\n enableOverflowScroll(): boolean;\n enableOverflowScroll(_: boolean): this;\n enableOverflowScroll(_?: boolean): boolean | this {\n if (!arguments.length) return this._enableOverflowScroll;\n this._enableOverflowScroll = _;\n return this;\n }\n\n size(): ISize;\n size(_): this;\n size(_?): ISize | this {\n const retVal = super.size.apply(this, arguments);\n if (arguments.length) {\n this._boundingBox = null;\n }\n return retVal;\n }\n\n resize(_size?: { width: number, height: number }) {\n const retVal = super.resize.apply(this, arguments);\n if (this._parentRelativeDiv) {\n this._parentRelativeDiv\n .style(\"width\", this._size.width + \"px\")\n .style(\"height\", this._size.height + \"px\")\n ;\n switch (this._drawStartPos) {\n case \"origin\":\n this.pos({\n x: 0,\n y: 0\n });\n break;\n case \"center\":\n /* falls through */\n default:\n this.pos({\n x: this._size.width / 2,\n y: this._size.height / 2\n });\n break;\n }\n }\n if (!isNaN(this._size.width)) this._placeholderElement.attr(\"width\", this._size.width);\n if (!isNaN(this._size.height)) this._placeholderElement.attr(\"height\", this._size.height);\n return retVal;\n }\n // Glow Highlighting ---\n svgGlowID(): string {\n return `sel${this.id()}_glow`;\n }\n\n target(): null | HTMLElement | SVGElement;\n target(_: null | string | HTMLElement | SVGElement): this;\n target(_?: null | string | HTMLElement | SVGElement): null | HTMLElement | SVGElement | this {\n const retVal = super.target.apply(this, arguments);\n if (arguments.length) {\n if (this._target instanceof SVGElement) {\n this._isRootNode = false;\n this._placeholderElement = d3Select(this._target);\n this._parentWidget = this._placeholderElement.datum();\n if (!this._parentWidget || this._parentWidget._id === this._id) {\n this._parentWidget = this.locateParentWidget(this._target.parentNode);\n }\n this._parentOverlay = this.locateOverlayNode();\n const svg = this.locateSVGNode(this._target);\n const svgDefs = d3Select(svg).select<SVGDefsElement>(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n } else if (this._target) {\n // Target is a DOM Node, so create a SVG Element ---\n this._parentRelativeDiv = d3Select(this._target).append(\"div\")\n .style(\"position\", \"relative\")\n ;\n this._placeholderElement = this._parentRelativeDiv.append(\"svg\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n const svgDefs = this._placeholderElement.append(\"defs\");\n this._svgSelectionFilter = new SVGGlowFilter(svgDefs, this.svgGlowID());\n this._parentOverlay = this._parentRelativeDiv.append(\"div\")\n .style(\"position\", \"absolute\")\n .style(\"top\", \"0px\")\n .style(\"left\", \"0px\")\n ;\n if (this._size.width && this._size.height) {\n this.resize(this._size);\n } else {\n this.resize({ width: 0, height: 0 });\n }\n }\n }\n return retVal;\n }\n\n parentOverlay() {\n return this._parentOverlay;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._svgSelectionFilter) {\n this._svgSelectionFilter.update(this.selectionGlowColor());\n }\n }\n\n postUpdate(domNode, element) {\n super.postUpdate(domNode, element);\n let transX;\n let transY;\n if (this._drawStartPos === \"origin\" && this._target instanceof SVGElement) {\n transX = (this._pos.x - this._size.width / 2);\n transY = (this._pos.y - this._size.height / 2);\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n } else {\n transX = this._pos.x;\n transY = this._pos.y;\n if (this._enableOverflow) {\n // Individual Widgets will need to size and position themselves corrrectly (and have calculated a BBox) ---\n if ((transX < 0 || transY < 0) && this._boundingBox) {\n transX = transX < 0 ? 0 : transX;\n transY = transY < 0 ? 0 : transY;\n if (this._enableOverflowScroll) {\n this._parentRelativeDiv.style(\"overflow\", \"scroll\");\n }\n this._placeholderElement.attr(\"width\", this._boundingBox.width);\n this._placeholderElement.attr(\"height\", this._boundingBox.height);\n } else {\n this._parentRelativeDiv.style(\"overflow\", null);\n }\n }\n this._element.attr(\"transform\", \"translate(\" + transX + \",\" + transY + \")scale(\" + this._widgetScale + \")\");\n }\n }\n\n exit(domNode?, element?) {\n if (this._parentRelativeDiv) {\n this._parentOverlay.remove();\n this._placeholderElement.remove();\n this._parentRelativeDiv.remove();\n }\n super.exit(domNode, element);\n }\n\n getOffsetPos(): Point {\n let retVal = { x: 0, y: 0 };\n if (this._parentWidget) {\n retVal = this._parentWidget.getOffsetPos();\n retVal.x += this._pos.x;\n retVal.y += this._pos.y;\n return retVal;\n }\n return retVal;\n }\n\n getBBox(refresh = false, round = false): Rect {\n if (refresh || this._boundingBox === null) {\n const svgNode: SVGElement = this._element.node();\n if (svgNode instanceof SVGElement) {\n this._boundingBox = (svgNode as any).getBBox();\n }\n }\n if (this._boundingBox === null) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: (round ? Math.round(this._boundingBox.x) : this._boundingBox.x) * this._widgetScale,\n y: (round ? Math.round(this._boundingBox.y) : this._boundingBox.y) * this._widgetScale,\n width: (round ? Math.round(this._boundingBox.width) : this._boundingBox.width) * this._widgetScale,\n height: (round ? Math.round(this._boundingBox.height) : this._boundingBox.height) * this._widgetScale\n };\n }\n\n // Intersections ---\n contains(point: Point): boolean {\n return this.containsRect(point);\n }\n\n containsRect(point: Point): boolean {\n const size = this.getBBox();\n return point.x >= size.x && point.x <= size.x + size.width && point.y >= size.y && point.y <= size.y + size.height;\n }\n\n containsCircle(radius: number, point: Point) {\n const center = this.getOffsetPos();\n return this.distance(center, point) <= radius;\n }\n\n intersection(pointA: Point, pointB: Point): Point | null {\n return this.intersectRect(pointA, pointB);\n }\n\n intersectRect(pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const size = this.getBBox();\n if (pointA.x === pointB.x && pointA.y === pointB.y) {\n return pointA;\n }\n const TL = { x: center.x - size.width / 2, y: center.y - size.height / 2 };\n const TR = { x: center.x + size.width / 2, y: center.y - size.height / 2 };\n const BR = { x: center.x + size.width / 2, y: center.y + size.height / 2 };\n const BL = { x: center.x - size.width / 2, y: center.y + size.height / 2 };\n let intersection = intersectLineLine(TL, TR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(TR, BR, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BR, BL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n intersection = intersectLineLine(BL, TL, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n intersectRectRect(rect1: Rect, rect2: Rect): Rect {\n const x = Math.max(rect1.x, rect2.x);\n const y = Math.max(rect1.y, rect2.y);\n const xLimit = (rect1.x < rect2.x) ? Math.min(rect1.x + rect1.width, rect2.x + rect2.width) : Math.min(rect2.x + rect2.width, rect1.x + rect1.width);\n const yLimit = (rect1.y < rect2.y) ? Math.min(rect1.y + rect1.height, rect2.y + rect2.height) : Math.min(rect2.y + rect2.height, rect1.y + rect1.height);\n return {\n x,\n y,\n width: xLimit - x,\n height: yLimit - y\n };\n }\n\n intersectCircle(radius: number, pointA: Point, pointB: Point): Point | null {\n const center = this.getOffsetPos();\n const intersection = intersectCircleLine(center, radius, pointA, pointB);\n if (intersection.points.length) {\n return { x: intersection.points[0].x, y: intersection.points[0].y };\n }\n return null;\n }\n\n distance(pointA: Point, pointB: Point): number {\n return Math.sqrt((pointA.x - pointB.x) * (pointA.x - pointB.x) + (pointA.y - pointB.y) * (pointA.y - pointB.y));\n }\n\n // Download ---\n serializeSVG(extraStyles: string = fontAwsesomeStyle): string {\n const origSvg = this.locateSVGNode(this._element.node());\n const cloneSVG = origSvg.cloneNode(true) as SVGSVGElement;\n const origNodes = d3Select(origSvg).selectAll(\"*\").nodes();\n d3Select(cloneSVG).selectAll(\"*\").each(function (this: SVGElement, d, i) {\n const compStyles = window.getComputedStyle(origNodes[i] as SVGElement);\n for (let i = 0; i < compStyles.length; ++i) {\n const styleName = compStyles.item(i);\n const styleValue = compStyles.getPropertyValue(styleName);\n const stylePriority = compStyles.getPropertyPriority(styleName);\n this.style.setProperty(styleName, styleValue, stylePriority);\n }\n });\n\n if (extraStyles) {\n const defs = cloneSVG.getElementsByTagName(\"defs\");\n if (defs.length) {\n const extraStyle = document.createElement(\"style\");\n extraStyle.setAttribute(\"type\", \"text/css\");\n extraStyle.innerText = extraStyles;\n defs[0].appendChild(extraStyle);\n }\n }\n\n const serializer = new XMLSerializer();\n return serializer.serializeToString(cloneSVG);\n }\n\n toBlob(extraStyles: string = fontAwsesomeStyle): Blob {\n return new Blob([this.serializeSVG(extraStyles)], { type: \"image/svg+xml\" });\n }\n\n rasterize(extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]): Promise<Blob> {\n const widgets = [this, ...extraWidgets];\n const sizes = widgets.map(widget => widget.locateSVGNode(widget.element().node()).getBoundingClientRect());\n const width = sizes.reduce((prev, curr) => prev + curr.width, 0);\n const height = Math.max(...sizes.map(s => s.height));\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = width + \"px\";\n const ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = \"transparent\";\n return new Promise((resolve, reject) => {\n let xPos = 0;\n Promise.all(widgets.map((widget, i) => {\n const x = xPos;\n const y = (height - sizes[i].height) / 2;\n xPos += sizes[i].width;\n return new Promise<void>((resolve, reject) => {\n const image = new Image();\n image.onerror = reject;\n image.onload = () => {\n ctx.drawImage(image, 0, 0, sizes[i].width, sizes[i].height, x, y, sizes[i].width, sizes[i].height);\n resolve();\n };\n image.src = URL.createObjectURL(widget.toBlob(extraStyles));\n });\n })).then(() => {\n ctx.canvas.toBlob(resolve); // Not supported by Edge browser\n });\n });\n }\n\n downloadSVG(extraStyles: string = fontAwsesomeStyle) {\n downloadString(\"SVG\", this.serializeSVG(extraStyles));\n }\n\n downloadPNG(filename: string = `image_${timestamp()}`, extraStyles: string = fontAwsesomeStyle, ...extraWidgets: SVGWidget[]) {\n this.rasterize(extraStyles, ...extraWidgets).then(blob => downloadBlob(blob, `${filename}.png`));\n }\n\n // IE Fixers ---\n _pushMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[marker-start],path[marker-end]\")\n .attr(\"fixme-start\", function () { return this.getAttribute(\"marker-start\"); })\n .attr(\"fixme-end\", function () { return this.getAttribute(\"marker-end\"); })\n .attr(\"marker-start\", null)\n .attr(\"marker-end\", null)\n ;\n }\n }\n\n _popMarkers(element?) {\n if (svgMarkerGlitch) {\n element = element || this._element;\n element.selectAll(\"path[fixme-start],path[fixme-end]\")\n .attr(\"marker-start\", function () {\n return this.getAttribute(\"fixme-start\");\n })\n .attr(\"marker-end\", function () { return this.getAttribute(\"fixme-end\"); })\n .attr(\"fixme-start\", null)\n .attr(\"fixme-end\", null)\n ;\n }\n }\n\n _popMarkersDebounced = debounce(function (element) {\n if (svgMarkerGlitch) {\n this._popMarkers(element);\n }\n }, 250);\n\n _fixIEMarkers(element?) {\n if (svgMarkerGlitch) {\n this._pushMarkers(element);\n this._popMarkersDebounced(element);\n }\n }\n}\nSVGWidget.prototype._class += \" common_SVGWidget\";\n\nexport interface SVGWidget {\n selectionGlowColor(): string;\n selectionGlowColor(_: string): this;\n}\n\nSVGWidget.prototype.publish(\"selectionGlowColor\", \"red\", \"html-color\", \"Selection Glow Color\");\n","import { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Text.css\";\n\nexport class Text extends SVGWidget {\n\n private _textElement;\n\n constructor() {\n super();\n }\n\n getBBox(refresh = false, round = false) {\n const textParts = this.text().split(\"\\n\");\n const lineHeight = this.fontSize() || 12;\n const height = lineHeight * textParts.length;\n const widths: number[] = textParts.map(line => {\n return this.textSize(line, this.fontFamily() || \"Verdana\", lineHeight).width;\n });\n const width = Math.max(...widths);\n const retVal = {\n x: - width / 2,\n y: - height / 2 - lineHeight / (this.fontFamily() === \"FontAwesome\" ? 4 : 6), // baseLine offset\n width,\n height\n };\n switch (this.anchor()) {\n case \"start\":\n retVal.x = 0;\n break;\n case \"end\":\n retVal.x = -width;\n break;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._textElement = element.append(\"text\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum([], { width: this.width() });\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const bbox = this.getBBox();\n\n this._textElement\n .style(\"font-size\", this.fontSize())\n .style(\"text-anchor\", this.anchor())\n .attr(\"transform\", d => `rotate(${this.rotation()}) translate(0,${bbox.y})`)\n ;\n\n const width = this.width();\n const context = this;\n const textParts = this.text().split(\"\\n\");\n const textLine = this._textElement.selectAll(\"tspan\").data(textParts);\n textLine.enter().append(\"tspan\")\n .attr(\"class\", function (_d, i) { return \"tspan_\" + i; })\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"0\")\n .merge(textLine)\n .style(\"font-family\", this.fontFamily())\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .text((d: string) => {\n if (!width) return d;\n let retVal = d;\n const lineHeight = context.fontSize() || 12;\n let clipPos = retVal.length - 1;\n while (clipPos > -3 && this.textSize(retVal, this.fontFamily() || \"Verdana\", lineHeight).width > width) {\n retVal = retVal.substr(0, --clipPos) + \"...\".substr(0, clipPos + 3);\n }\n return retVal;\n })\n ;\n textLine.exit()\n .remove()\n ;\n\n }\n }\n\n click() {\n }\n\n dblclick() {\n }\n}\nText.prototype._class += \" common_Text\";\n\nexport interface Text {\n text(): string;\n text(_: string): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontSize(): number;\n fontSize(_: number): this;\n anchor(): \"start\" | \"middle\" | \"end\";\n anchor(_: \"start\" | \"middle\" | \"end\"): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_default(): string;\n colorFill_default(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorStroke_default(): string;\n colorStroke_default(_: string): this;\n rotation(): number;\n rotation(_: number): Text;\n}\n\nText.prototype.publish(\"text\", \"\", \"string\", \"Display Text\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"fontFamily\", null, \"string\", \"Font Family\", null, { tags: [\"Intermediate\"], optional: true });\nText.prototype.publish(\"fontSize\", null, \"number\", \"Font Size (pixels)\", null, { tags: [\"Intermediate\"] });\nText.prototype.publish(\"anchor\", \"middle\", \"set\", \"Anchor Position\", [\"start\", \"middle\", \"end\"], { tags: [\"Intermediate\"] });\nText.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"colorStroke\", null, \"html-color\", \"Fill Color\", null, { tags: [\"Basic\"] });\nText.prototype.publish(\"rotation\", 0, \"number\", \"Degrees of rotation\", null, { tags: [\"Basic\"] });\n","import { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport * as Utility from \"./Utility\";\n\nimport \"../src/FAChar.css\";\n\nexport class FAChar extends SVGWidget {\n\n protected _text;\n\n constructor() {\n super();\n\n this._text = new Text()\n .fontFamily(\"FontAwesome\")\n ;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._text\n .target(domNode)\n ;\n element\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n calcChar(): string {\n return Utility.faChar(this.char());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._text\n .text(this.calcChar())\n .fontFamily(this.text_fontFamily())\n .scale((this.fontSize() || 14) / 14) // Scale rather than fontSize to prevent Chrome glitch ---\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._text\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n click() {\n // console.log(\"Click:\", this);\n }\n\n dblclick() {\n // console.log(\"Double click:\", this);\n }\n\n char: { (): string; (_: string): FAChar; };\n fontSize: { (): number; (_: number): FAChar; };\n text_colorFill: { (): string; (_: string): FAChar; };\n text_fontFamily: { (): string; (_: string): FAChar; };\n}\nFAChar.prototype._class += \" common_FAChar\";\n\nFAChar.prototype.publish(\"char\", \"\", \"set\", \"Font Awesome Item\", Utility.faKeys(), { tags: [\"Private\"] });\nFAChar.prototype.publish(\"fontSize\", null, \"number\", \"Font Size\", null, { tags: [\"Private\"] });\nFAChar.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nFAChar.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\", \"FontAwesome\");\n\n// openssl base64 -A -in fontawesome-webfont.ttf -out tmp.txt\nconst fontAwesomeOpenType = \"AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk=\";\nexport const fontAwsesomeStyle = `\\\n@font-face {\\\n font-family: \"FontAwesome\";\\\n src: url(\"data:font/opentype;base64,${fontAwesomeOpenType}\") format(\"opentype\");\\\n}`;\n","var index = {\n schemeGroups: {\n sequential: [\"BuGn\", \"BuPu\", \"GnBu\", \"OrRd\", \"PuBu\", \"PuBuGn\", \"PuRd\", \"RdPu\", \"YlGn\", \"YlGnBu\", \"YlOrBr\", \"YlOrRd\"],\n singlehue: [\"Blues\", \"Greens\", \"Greys\", \"Oranges\", \"Purples\", \"Reds\"],\n diverging: [\"BrBG\", \"PiYG\", \"PRGn\", \"PuOr\", \"RdBu\", \"RdGy\", \"RdYlBu\", \"RdYlGn\", \"Spectral\"],\n qualitative: [\"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"]\n }, YlGn: {\n 3: [\"#f7fcb9\", \"#addd8e\", \"#31a354\"],\n 4: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#238443\"],\n 5: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#31a354\", \"#006837\"],\n 6: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#31a354\", \"#006837\"],\n 7: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 8: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 9: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#006837\", \"#004529\"]\n }, YlGnBu: {\n 3: [\"#edf8b1\", \"#7fcdbb\", \"#2c7fb8\"],\n 4: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#225ea8\"],\n 5: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 6: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 7: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 8: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 9: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#253494\", \"#081d58\"]\n }, GnBu: {\n 3: [\"#e0f3db\", \"#a8ddb5\", \"#43a2ca\"],\n 4: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#2b8cbe\"],\n 5: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 6: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 7: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 8: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 9: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#0868ac\", \"#084081\"]\n }, BuGn: {\n 3: [\"#e5f5f9\", \"#99d8c9\", \"#2ca25f\"],\n 4: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#238b45\"],\n 5: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 6: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 7: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 8: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 9: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, PuBuGn: {\n 3: [\"#ece2f0\", \"#a6bddb\", \"#1c9099\"],\n 4: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#02818a\"],\n 5: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 6: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 7: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 8: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 9: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016c59\", \"#014636\"]\n }, PuBu: {\n 3: [\"#ece7f2\", \"#a6bddb\", \"#2b8cbe\"],\n 4: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#0570b0\"],\n 5: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 6: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 7: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 8: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 9: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#045a8d\", \"#023858\"]\n }, BuPu: {\n 3: [\"#e0ecf4\", \"#9ebcda\", \"#8856a7\"],\n 4: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#88419d\"],\n 5: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 6: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 7: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 8: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 9: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#810f7c\", \"#4d004b\"]\n }, RdPu: {\n 3: [\"#fde0dd\", \"#fa9fb5\", \"#c51b8a\"],\n 4: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#ae017e\"],\n 5: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 6: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 7: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 8: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 9: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\", \"#49006a\"]\n }, PuRd: {\n 3: [\"#e7e1ef\", \"#c994c7\", \"#dd1c77\"],\n 4: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#ce1256\"],\n 5: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 6: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 7: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 8: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 9: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#980043\", \"#67001f\"]\n }, OrRd: {\n 3: [\"#fee8c8\", \"#fdbb84\", \"#e34a33\"],\n 4: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#d7301f\"],\n 5: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 6: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 7: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 8: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 9: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#b30000\", \"#7f0000\"]\n }, YlOrRd: {\n 3: [\"#ffeda0\", \"#feb24c\", \"#f03b20\"],\n 4: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#e31a1c\"],\n 5: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 6: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 7: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 8: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 9: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#bd0026\", \"#800026\"]\n }, YlOrBr: {\n 3: [\"#fff7bc\", \"#fec44f\", \"#d95f0e\"],\n 4: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#cc4c02\"],\n 5: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 6: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 7: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 8: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 9: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#993404\", \"#662506\"]\n }, Purples: {\n 3: [\"#efedf5\", \"#bcbddc\", \"#756bb1\"],\n 4: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#6a51a3\"],\n 5: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 6: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 7: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 8: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 9: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#54278f\", \"#3f007d\"]\n }, Blues: {\n 3: [\"#deebf7\", \"#9ecae1\", \"#3182bd\"],\n 4: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#2171b5\"],\n 5: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 6: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 7: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 8: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 9: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#08519c\", \"#08306b\"]\n }, Greens: {\n 3: [\"#e5f5e0\", \"#a1d99b\", \"#31a354\"],\n 4: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#238b45\"],\n 5: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 6: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 7: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 8: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 9: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, Oranges: {\n 3: [\"#fee6ce\", \"#fdae6b\", \"#e6550d\"],\n 4: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#d94701\"],\n 5: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 6: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 7: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 8: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 9: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#a63603\", \"#7f2704\"]\n }, Reds: {\n 3: [\"#fee0d2\", \"#fc9272\", \"#de2d26\"],\n 4: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#cb181d\"],\n 5: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 6: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 7: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 8: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 9: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#a50f15\", \"#67000d\"]\n }, Greys: {\n 3: [\"#f0f0f0\", \"#bdbdbd\", \"#636363\"],\n 4: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#525252\"],\n 5: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n 6: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#636363\", \"#252525\"],\n 7: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 8: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 9: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\", \"#000000\"]\n }, PuOr: {\n 3: [\"#f1a340\", \"#f7f7f7\", \"#998ec3\"],\n 4: [\"#e66101\", \"#fdb863\", \"#b2abd2\", \"#5e3c99\"],\n 5: [\"#e66101\", \"#fdb863\", \"#f7f7f7\", \"#b2abd2\", \"#5e3c99\"],\n 6: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 7: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 8: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 9: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 10: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"],\n 11: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"]\n }, BrBG: {\n 3: [\"#d8b365\", \"#f5f5f5\", \"#5ab4ac\"],\n 4: [\"#a6611a\", \"#dfc27d\", \"#80cdc1\", \"#018571\"],\n 5: [\"#a6611a\", \"#dfc27d\", \"#f5f5f5\", \"#80cdc1\", \"#018571\"],\n 6: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 7: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 8: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 9: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 10: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"],\n 11: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"]\n }, PRGn: {\n 3: [\"#af8dc3\", \"#f7f7f7\", \"#7fbf7b\"],\n 4: [\"#7b3294\", \"#c2a5cf\", \"#a6dba0\", \"#008837\"],\n 5: [\"#7b3294\", \"#c2a5cf\", \"#f7f7f7\", \"#a6dba0\", \"#008837\"],\n 6: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 7: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 8: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 9: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 10: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"],\n 11: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"]\n }, PiYG: {\n 3: [\"#e9a3c9\", \"#f7f7f7\", \"#a1d76a\"],\n 4: [\"#d01c8b\", \"#f1b6da\", \"#b8e186\", \"#4dac26\"],\n 5: [\"#d01c8b\", \"#f1b6da\", \"#f7f7f7\", \"#b8e186\", \"#4dac26\"],\n 6: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 7: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 8: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 9: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 10: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"],\n 11: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"]\n }, RdBu: {\n 3: [\"#ef8a62\", \"#f7f7f7\", \"#67a9cf\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#92c5de\", \"#0571b0\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#f7f7f7\", \"#92c5de\", \"#0571b0\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"]\n }, RdGy: {\n 3: [\"#ef8a62\", \"#ffffff\", \"#999999\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#bababa\", \"#404040\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#ffffff\", \"#bababa\", \"#404040\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"]\n }, RdYlBu: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91bfdb\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abd9e9\", \"#2c7bb6\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"]\n }, Spectral: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#99d594\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abdda4\", \"#2b83ba\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abdda4\", \"#2b83ba\"],\n 6: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 7: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 8: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 9: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 10: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"],\n 11: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"]\n }, RdYlGn: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91cf60\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#a6d96a\", \"#1a9641\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#a6d96a\", \"#1a9641\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"]\n }, Accent: {\n 3: [\"#7fc97f\", \"#beaed4\", \"#fdc086\"],\n 4: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\"],\n 5: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\"],\n 6: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\"],\n 7: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\"],\n 8: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\", \"#666666\"]\n }, Dark2: {\n 3: [\"#1b9e77\", \"#d95f02\", \"#7570b3\"],\n 4: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\"],\n 5: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\"],\n 6: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\"],\n 7: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\"],\n 8: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\", \"#666666\"]\n }, Paired: {\n 3: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\"],\n 4: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\"],\n 5: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\"],\n 6: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\"],\n 7: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\"],\n 8: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\"],\n 9: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\"],\n 10: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\"],\n 11: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\"],\n 12: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\", \"#b15928\"]\n }, Pastel1: {\n 3: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\"],\n 4: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\"],\n 5: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\"],\n 6: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\"],\n 7: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\"],\n 8: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\"],\n 9: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\", \"#f2f2f2\"]\n }, Pastel2: {\n 3: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\"],\n 4: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\"],\n 5: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\"],\n 6: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\"],\n 7: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\"],\n 8: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\", \"#cccccc\"]\n }, Set1: {\n 3: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\"],\n 4: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\"],\n 5: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\"],\n 6: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\"],\n 7: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\"],\n 8: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\"],\n 9: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\", \"#999999\"]\n }, Set2: {\n 3: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\"],\n 4: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\"],\n 5: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\"],\n 6: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\"],\n 7: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\"],\n 8: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\", \"#b3b3b3\"]\n }, Set3: {\n 3: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\"],\n 4: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\"],\n 5: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\"],\n 6: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\"],\n 7: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\"],\n 8: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\"],\n 9: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\"],\n 10: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\"],\n 11: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\"],\n 12: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\", \"#ffed6f\"]\n }\n};\n\nexport default index;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal(range) {\n var index = map(),\n domain = [],\n unknown = implicit;\n\n range = range == null ? [] : slice.call(range);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nexport default function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n return rescale();\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(deinterpolate, reinterpolate);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport constant from \"./constant\";\nimport nice from \"./nice\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport default function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n","import constant from \"./constant\";\nimport {linearish} from \"./linear\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nexport default function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nexport function sqrt() {\n return pow().exponent(0.5);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1];\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range);\n };\n\n return linearish(scale);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {linearish} from \"./linear\";\n\nexport default function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n","import * as _colorbrewer from \"colorbrewer\";\nimport { values as d3Values } from \"d3-collection\";\nimport { rgb as d3RGB } from \"d3-color\";\nimport { interpolateLab as d3InterpolateLab } from \"d3-interpolate\";\nimport { interpolateInferno as d3InterpolateInferno, interpolateMagma as d3InterpolateMagma, interpolatePlasma as d3InterpolatePlasma, interpolateViridis as d3InterpolateViridis, scaleLinear as d3ScaleLinear, scaleOrdinal as d3ScaleOrdinal, scaleQuantize as d3ScaleQuantize, scaleSequential as d3ScaleSequential, schemeCategory10 as d3SchemeCategory10, schemeCategory20 as d3SchemeCategory20, schemeCategory20b as d3SchemeCategory20b, schemeCategory20c as d3SchemeCategory20c } from \"d3-scale\";\nimport { select as d3Select } from \"d3-selection\";\n\nconst d3Schemes = {\n category10: d3SchemeCategory10,\n category20: d3SchemeCategory20,\n category20b: d3SchemeCategory20b,\n category20c: d3SchemeCategory20c\n};\n\nconst m_colorbrewer = _colorbrewer.default || _colorbrewer;\n\nconst m_d3 = {\n Viridis: d3InterpolateViridis,\n Magma: d3InterpolateMagma,\n Inferno: d3InterpolateInferno,\n Plasma: d3InterpolatePlasma\n};\n\nconst d3Ordinal = [\n \"category10\", \"category20\", \"category20b\", \"category20c\"\n];\n\nconst brewerOrdinal = [\n \"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"\n];\n\nconst hpccOrdinal = [\n \"hpcc10\", \"hpcc20\"\n];\n\n// These color schemes are from www.flatuicolors.com\nconst flatuiSchemes = {\n FlatUI_default: [\"rgb(26, 188, 156)\", \"rgb(46, 204, 113)\", \"rgb(52, 152, 219)\", \"rgb(155, 89, 182)\", \"rgb(52, 73, 94)\", \"rgb(22, 160, 133)\", \"rgb(39, 174, 96)\", \"rgb(41, 128, 185)\", \"rgb(142, 68, 173)\", \"rgb(44, 62, 80)\", \"rgb(241, 196, 15)\", \"rgb(230, 126, 34)\", \"rgb(231, 76, 60)\", \"rgb(236, 240, 241)\", \"rgb(149, 165, 166)\", \"rgb(243, 156, 18)\", \"rgb(211, 84, 0)\", \"rgb(192, 57, 43)\", \"rgb(189, 195, 199)\", \"rgb(127, 140, 141)\"],\n FlatUI_American: [\"rgb(85, 239, 196)\", \"rgb(129, 236, 236)\", \"rgb(116, 185, 255)\", \"rgb(162, 155, 254)\", \"rgb(223, 230, 233)\", \"rgb(0, 184, 148)\", \"rgb(0, 206, 201)\", \"rgb(9, 132, 227)\", \"rgb(108, 92, 231)\", \"rgb(178, 190, 195)\", \"rgb(255, 234, 167)\", \"rgb(250, 177, 160)\", \"rgb(255, 118, 117)\", \"rgb(253, 121, 168)\", \"rgb(99, 110, 114)\", \"rgb(253, 203, 110)\", \"rgb(225, 112, 85)\", \"rgb(214, 48, 49)\", \"rgb(232, 67, 147)\", \"rgb(45, 52, 54)\"],\n FlatUI_Aussie: [\"rgb(246, 229, 141)\", \"rgb(255, 190, 118)\", \"rgb(255, 121, 121)\", \"rgb(186, 220, 88)\", \"rgb(223, 249, 251)\", \"rgb(249, 202, 36)\", \"rgb(240, 147, 43)\", \"rgb(235, 77, 75)\", \"rgb(106, 176, 76)\", \"rgb(199, 236, 238)\", \"rgb(126, 214, 223)\", \"rgb(224, 86, 253)\", \"rgb(104, 109, 224)\", \"rgb(48, 51, 107)\", \"rgb(149, 175, 192)\", \"rgb(34, 166, 179)\", \"rgb(190, 46, 221)\", \"rgb(72, 52, 212)\", \"rgb(19, 15, 64)\", \"rgb(83, 92, 104)\"],\n FlatUI_British: [\"rgb(0, 168, 255)\", \"rgb(156, 136, 255)\", \"rgb(251, 197, 49)\", \"rgb(76, 209, 55)\", \"rgb(72, 126, 176)\", \"rgb(0, 151, 230)\", \"rgb(140, 122, 230)\", \"rgb(225, 177, 44)\", \"rgb(68, 189, 50)\", \"rgb(64, 115, 158)\", \"rgb(232, 65, 24)\", \"rgb(245, 246, 250)\", \"rgb(127, 143, 166)\", \"rgb(39, 60, 117)\", \"rgb(53, 59, 72)\", \"rgb(194, 54, 22)\", \"rgb(220, 221, 225)\", \"rgb(113, 128, 147)\", \"rgb(25, 42, 86)\", \"rgb(47, 54, 64)\"],\n FlatUI_Canadian: [\"rgb(255, 159, 243)\", \"rgb(254, 202, 87)\", \"rgb(255, 107, 107)\", \"rgb(72, 219, 251)\", \"rgb(29, 209, 161)\", \"rgb(243, 104, 224)\", \"rgb(255, 159, 67)\", \"rgb(238, 82, 83)\", \"rgb(10, 189, 227)\", \"rgb(16, 172, 132)\", \"rgb(0, 210, 211)\", \"rgb(84, 160, 255)\", \"rgb(95, 39, 205)\", \"rgb(200, 214, 229)\", \"rgb(87, 101, 116)\", \"rgb(1, 163, 164)\", \"rgb(46, 134, 222)\", \"rgb(52, 31, 151)\", \"rgb(131, 149, 167)\", \"rgb(34, 47, 62)\"],\n FlatUI_Chinese: [\"rgb(236, 204, 104)\", \"rgb(255, 127, 80)\", \"rgb(255, 107, 129)\", \"rgb(164, 176, 190)\", \"rgb(87, 96, 111)\", \"rgb(255, 165, 2)\", \"rgb(255, 99, 72)\", \"rgb(255, 71, 87)\", \"rgb(116, 125, 140)\", \"rgb(47, 53, 66)\", \"rgb(123, 237, 159)\", \"rgb(112, 161, 255)\", \"rgb(83, 82, 237)\", \"rgb(255, 255, 255)\", \"rgb(223, 228, 234)\", \"rgb(46, 213, 115)\", \"rgb(30, 144, 255)\", \"rgb(55, 66, 250)\", \"rgb(241, 242, 246)\", \"rgb(206, 214, 224)\"],\n FlatUI_Dutch: [\"rgb(255, 195, 18)\", \"rgb(196, 229, 56)\", \"rgb(18, 203, 196)\", \"rgb(253, 167, 223)\", \"rgb(237, 76, 103)\", \"rgb(247, 159, 31)\", \"rgb(163, 203, 56)\", \"rgb(18, 137, 167)\", \"rgb(217, 128, 250)\", \"rgb(181, 52, 113)\", \"rgb(238, 90, 36)\", \"rgb(0, 148, 50)\", \"rgb(6, 82, 221)\", \"rgb(153, 128, 250)\", \"rgb(131, 52, 113)\", \"rgb(234, 32, 39)\", \"rgb(0, 98, 102)\", \"rgb(27, 20, 100)\", \"rgb(87, 88, 187)\", \"rgb(111, 30, 81)\"],\n FlatUI_French: [\"rgb(250, 211, 144)\", \"rgb(248, 194, 145)\", \"rgb(106, 137, 204)\", \"rgb(130, 204, 221)\", \"rgb(184, 233, 148)\", \"rgb(246, 185, 59)\", \"rgb(229, 80, 57)\", \"rgb(74, 105, 189)\", \"rgb(96, 163, 188)\", \"rgb(120, 224, 143)\", \"rgb(250, 152, 58)\", \"rgb(235, 47, 6)\", \"rgb(30, 55, 153)\", \"rgb(60, 99, 130)\", \"rgb(56, 173, 169)\", \"rgb(229, 142, 38)\", \"rgb(183, 21, 64)\", \"rgb(12, 36, 97)\", \"rgb(10, 61, 98)\", \"rgb(7, 153, 146)\"],\n FlatUI_German: [\"rgb(252, 92, 101)\", \"rgb(253, 150, 68)\", \"rgb(254, 211, 48)\", \"rgb(38, 222, 129)\", \"rgb(43, 203, 186)\", \"rgb(235, 59, 90)\", \"rgb(250, 130, 49)\", \"rgb(247, 183, 49)\", \"rgb(32, 191, 107)\", \"rgb(15, 185, 177)\", \"rgb(69, 170, 242)\", \"rgb(75, 123, 236)\", \"rgb(165, 94, 234)\", \"rgb(209, 216, 224)\", \"rgb(119, 140, 163)\", \"rgb(45, 152, 218)\", \"rgb(56, 103, 214)\", \"rgb(136, 84, 208)\", \"rgb(165, 177, 194)\", \"rgb(75, 101, 132)\"],\n FlatUI_Indian: [\"rgb(254, 164, 127)\", \"rgb(37, 204, 247)\", \"rgb(234, 181, 67)\", \"rgb(85, 230, 193)\", \"rgb(202, 211, 200)\", \"rgb(249, 127, 81)\", \"rgb(27, 156, 252)\", \"rgb(248, 239, 186)\", \"rgb(88, 177, 159)\", \"rgb(44, 58, 71)\", \"rgb(179, 55, 113)\", \"rgb(59, 59, 152)\", \"rgb(253, 114, 114)\", \"rgb(154, 236, 219)\", \"rgb(214, 162, 232)\", \"rgb(109, 33, 79)\", \"rgb(24, 44, 97)\", \"rgb(252, 66, 123)\", \"rgb(189, 197, 129)\", \"rgb(130, 88, 159)\"],\n FlatUI_Russian: [\"rgb(243, 166, 131)\", \"rgb(247, 215, 148)\", \"rgb(119, 139, 235)\", \"rgb(231, 127, 103)\", \"rgb(207, 106, 135)\", \"rgb(241, 144, 102)\", \"rgb(245, 205, 121)\", \"rgb(84, 109, 229)\", \"rgb(225, 95, 65)\", \"rgb(196, 69, 105)\", \"rgb(120, 111, 166)\", \"rgb(248, 165, 194)\", \"rgb(99, 205, 218)\", \"rgb(234, 134, 133)\", \"rgb(89, 98, 117)\", \"rgb(87, 75, 144)\", \"rgb(247, 143, 179)\", \"rgb(61, 193, 211)\", \"rgb(230, 103, 103)\", \"rgb(48, 57, 82)\"],\n FlatUI_Spanish: [\"rgb(64, 64, 122)\", \"rgb(112, 111, 211)\", \"rgb(247, 241, 227)\", \"rgb(52, 172, 224)\", \"rgb(51, 217, 178)\", \"rgb(44, 44, 84)\", \"rgb(71, 71, 135)\", \"rgb(170, 166, 157)\", \"rgb(34, 112, 147)\", \"rgb(33, 140, 116)\", \"rgb(255, 82, 82)\", \"rgb(255, 121, 63)\", \"rgb(209, 204, 192)\", \"rgb(255, 177, 66)\", \"rgb(255, 218, 121)\", \"rgb(179, 57, 57)\", \"rgb(205, 97, 51)\", \"rgb(132, 129, 122)\", \"rgb(204, 142, 53)\", \"rgb(204, 174, 98)\"],\n FlatUI_Swedish: [\"rgb(239, 87, 119)\", \"rgb(87, 95, 207)\", \"rgb(75, 207, 250)\", \"rgb(52, 231, 228)\", \"rgb(11, 232, 129)\", \"rgb(245, 59, 87)\", \"rgb(60, 64, 198)\", \"rgb(15, 188, 249)\", \"rgb(0, 216, 214)\", \"rgb(5, 196, 107)\", \"rgb(255, 192, 72)\", \"rgb(255, 221, 89)\", \"rgb(255, 94, 87)\", \"rgb(210, 218, 226)\", \"rgb(72, 84, 96)\", \"rgb(255, 168, 1)\", \"rgb(255, 211, 42)\", \"rgb(255, 63, 52)\", \"rgb(128, 142, 155)\", \"rgb(30, 39, 46)\"],\n FlatUI_Turkish: [\"rgb(205, 132, 241)\", \"rgb(255, 204, 204)\", \"rgb(255, 77, 77)\", \"rgb(255, 175, 64)\", \"rgb(255, 250, 101)\", \"rgb(197, 108, 240)\", \"rgb(255, 184, 184)\", \"rgb(255, 56, 56)\", \"rgb(255, 159, 26)\", \"rgb(255, 242, 0)\", \"rgb(50, 255, 126)\", \"rgb(126, 255, 245)\", \"rgb(24, 220, 255)\", \"rgb(125, 95, 255)\", \"rgb(75, 75, 75)\", \"rgb(58, 227, 116)\", \"rgb(103, 230, 220)\", \"rgb(23, 192, 235)\", \"rgb(113, 88, 226)\", \"rgb(61, 61, 61)\"]\n};\nconst flatuiOrdinal = Object.keys(flatuiSchemes);\n\nconst ordinalCache = {};\n\nexport interface PaletteFunc {\n switch(id?: string, colors?: string[]);\n type(): \"ordinal\" | \"rainbow\";\n}\n\nexport interface OrdinalPaletteFunc extends PaletteFunc {\n (label: string): string;\n}\nexport function fetchOrdinalItem(): string[];\nexport function fetchOrdinalItem(id: string, colors?: string[]): OrdinalPaletteFunc;\nexport function fetchOrdinalItem(id?: string, colors?: string[]): string[] | OrdinalPaletteFunc {\n if (!id) return palette_ordinal();\n let retVal = ordinalCache[id];\n if (!retVal) {\n retVal = palette_ordinal(id, colors);\n ordinalCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_ordinal(id?, colors?): any {\n if (!id) return [\"default\"].concat(d3Ordinal.concat(brewerOrdinal).concat(hpccOrdinal).concat(flatuiOrdinal));\n let scale = null;\n\n if (colors) {\n scale = d3ScaleOrdinal().range(colors);\n } else {\n if (d3Ordinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal(d3Schemes[id]);\n } else if (flatuiOrdinal.indexOf(id) >= 0) {\n scale = d3ScaleOrdinal().range(flatuiSchemes[id]);\n } else if (hpccOrdinal.indexOf(id) >= 0) {\n let newColors = [];\n switch (id) {\n case \"hpcc10\":\n const defColors = palette_ordinal(\"default\").colors();\n newColors = defColors.filter(function (_item, idx) {\n if (idx % 2) {\n return true;\n }\n return false;\n });\n break;\n case \"hpcc20\":\n newColors = palette_ordinal(\"category10\").colors().concat(palette_ordinal(\"hpcc10\").colors());\n break;\n }\n scale = d3ScaleOrdinal().range(newColors);\n } else if (brewerOrdinal.indexOf(id) >= 0) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = d3ScaleOrdinal().range(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (!scale) {\n // Default to Category20 ---\n scale = d3ScaleOrdinal(d3SchemeCategory20);\n }\n colors = scale.range();\n }\n const ordinal: any = function (_) {\n return scale(_);\n };\n ordinal.type = function () {\n return \"ordinal\";\n };\n ordinal.id = function (_) {\n if (!arguments.length) return id;\n id = _;\n return ordinal;\n };\n ordinal.colors = function (_) {\n if (!arguments.length) return colors;\n colors = _;\n return ordinal;\n };\n ordinal.clone = function (newID) {\n ordinalCache[newID] = palette_ordinal(newID, this.colors());\n return ordinalCache[newID];\n\n };\n ordinal.cloneNotExists = function (newID) {\n if (ordinalCache[newID]) {\n return ordinalCache[newID];\n }\n return this.clone(newID);\n };\n ordinal.switch = function (_id, _colors) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchOrdinalItem(_id, _colors) : fetchOrdinalItem();\n };\n\n return ordinal;\n}\n\nconst rainbowCache = {};\nexport interface RainbowPaletteFunc extends PaletteFunc {\n (value: number, domainLow: number, domainHigh: number): string;\n}\nexport function fetchRainbowItem(): string[];\nexport function fetchRainbowItem(id: string): RainbowPaletteFunc;\nexport function fetchRainbowItem(id: string, colors: string[], steps?: number): RainbowPaletteFunc;\nexport function fetchRainbowItem(id?: string, colors?: string[], steps?: number): string[] | RainbowPaletteFunc {\n if (!id) return palette_rainbow();\n let retVal = rainbowCache[id];\n if (!retVal) {\n retVal = palette_rainbow(id, colors, steps);\n rainbowCache[id] = retVal;\n }\n return retVal;\n}\n\nfunction palette_rainbow(id?, _colors?, _steps?) {\n if (!arguments.length) {\n const retVal = [\"default\"];\n for (const key in m_colorbrewer) {\n if (brewerOrdinal.indexOf(key) === -1) {\n retVal.push(key);\n }\n }\n return retVal;\n }\n\n let scale = null;\n let colors = _colors;\n\n const _custom = function (colors, steps?) {\n steps = steps || 32;\n const subPaletteSize = Math.ceil(steps / (colors.length - 1));\n const range = [];\n let prevColor = null;\n colors.forEach(function (color) {\n if (prevColor) {\n const scale = d3ScaleLinear()\n .domain([0, subPaletteSize])\n .range([prevColor, color])\n .interpolate(d3InterpolateLab as any)\n ;\n for (let i = 0; i < subPaletteSize; ++i) {\n range.push(scale(i));\n }\n }\n prevColor = color;\n });\n scale = d3ScaleQuantize().domain([0, 100]).range(range);\n return scale;\n };\n\n if (_colors) {\n scale = _custom(_colors, _steps);\n } else {\n if (m_colorbrewer[id]) {\n let largestPalette = 12;\n while (largestPalette > 0) {\n if (m_colorbrewer[id][largestPalette]) {\n scale = _custom(m_colorbrewer[id][largestPalette]);\n break;\n }\n --largestPalette;\n }\n }\n if (m_d3[id]) {\n scale = d3ScaleSequential(m_d3[id]).domain([0, 100]);\n }\n if (!scale) {\n scale = _custom(m_colorbrewer.RdYlGn[11]);\n }\n colors = scale.range ? scale.range() : scale;\n\n }\n const rainbow: any = function (x, low, high) {\n if (low === high) {\n return scale.domain([low - 1, high + 1])(x);\n }\n return scale.domain([low, high])(x);\n };\n rainbow.type = function () {\n return \"rainbow\";\n };\n rainbow.id = function (_) {\n if (!arguments.length) return id;\n id = _;\n return rainbow;\n };\n rainbow.colors = function (_) {\n if (!arguments.length) return colors;\n colors = _;\n return rainbow;\n };\n rainbow.clone = function (newID) {\n rainbowCache[newID] = palette_rainbow(newID, this.colors());\n return rainbowCache[newID];\n };\n rainbow.cloneNotExists = function (newID) {\n if (rainbowCache[newID]) {\n return rainbowCache[newID];\n }\n return this.clone(newID);\n };\n rainbow.switch = function (_id, _colors) {\n if (id === _id) {\n return this;\n }\n return arguments.length ? fetchRainbowItem(_id, _colors) : fetchRainbowItem();\n };\n\n return rainbow;\n}\n\nexport function test(ordinalDivID, brewerDivID, customDivID, customArr, steps) {\n d3Select(ordinalDivID)\n .selectAll(\".palette\")\n .data(palette_ordinal(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch\").data(function (d) { return palette_ordinal(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch\")\n .style(\"background-color\", function (d: any) { return d; });\n\n d3Select(brewerDivID)\n .selectAll(\".palette\")\n .data(palette_rainbow(), function (d: any) { return d; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function (d: any) { return d; })\n .on(\"click\", function (d: any) {\n console.info(d3Values(d.value).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function (d) { return palette_rainbow(d).colors(); })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"height\", (256 / 32) + \"px\")\n .style(\"background-color\", function (d: any) { return d; });\n\n const palette = { id: customArr.join(\"_\") + steps, scale: palette_rainbow(\"custom\", customArr, steps) };\n d3Select(customDivID)\n .selectAll(\".palette\")\n .data([palette], function (d: any) { return d.id; })\n .enter().append(\"span\")\n .attr(\"class\", \"palette\")\n .attr(\"title\", function () { return \"aaa\"; /*d.from + \"->\" + d.to;*/ })\n .on(\"click\", function (d) {\n console.info(d3Values(d.id).map(JSON.stringify as any).join(\"\\n\"));\n })\n .selectAll(\".swatch2\").data(function () {\n const retVal = [];\n for (let i = 0; i <= 255; ++i) {\n retVal.push(palette.scale(i, 0, 255));\n }\n return retVal;\n })\n .enter().append(\"span\")\n .attr(\"class\", \"swatch2\")\n .style(\"background-color\", function (d) { return d; });\n}\n\nm_colorbrewer.RdWhGr = {\n 3: [\"red\", \"white\", \"green\"]\n};\n\nexport const ordinal = fetchOrdinalItem;\nexport const rainbow = fetchRainbowItem;\nexport function textColor(backgroundColor: string): string {\n let rgb;\n switch (backgroundColor) {\n case \"\":\n case \"transparent\":\n rgb = d3RGB(\"white\");\n break;\n default:\n rgb = d3RGB(backgroundColor);\n }\n return ((rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114) > 149) ? \"black\" : \"white\";\n}\n","import { select as d3Select } from \"d3-selection\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Shape.css\";\n\nexport class Shape extends SVGWidget {\n protected _tooltipElement;\n\n constructor() {\n super();\n }\n\n contains(point) {\n switch (this.shape()) {\n case \"circle\":\n return this.containsCircle(this.radius(), point);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n intersection(pointA, pointB) {\n switch (this.shape()) {\n case \"circle\":\n return this.intersectCircle(this.radius(), pointA, pointB);\n }\n return SVGWidget.prototype.intersection.apply(this, arguments);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n }\n\n _prevHash;\n update(_domNode, element) {\n const shape = element.selectAll(\"rect,circle,ellipse,path\").data([this.shape()], function (d) { return d; });\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const context = this;\n shape.enter().append(this.getShapeElementTag(this.shape()))\n .attr(\"class\", \"common_Shape\")\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement = element2.append(\"title\");\n })\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n .merge(shape)\n .style(\"fill\", this.colorFill())\n .style(\"stroke\", this.colorStroke())\n .each(function () {\n const element2 = d3Select(this);\n context._tooltipElement.text(context.tooltip());\n switch (context.shape()) {\n case \"circle\":\n const radius = context.radius();\n element2\n .attr(\"r\", radius)\n ;\n break;\n case \"square\":\n const width = Math.max(context.width(), context.height());\n element2\n .attr(\"x\", -width / 2)\n .attr(\"y\", -width / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", width)\n .attr(\"height\", width)\n ;\n break;\n case \"rect\":\n element2\n .attr(\"x\", -context.width() / 2)\n .attr(\"y\", -context.height() / 2)\n .attr(\"rx\", context.cornerRadius())\n .attr(\"ry\", context.cornerRadius())\n .attr(\"width\", context.width())\n .attr(\"height\", context.height())\n ;\n break;\n case \"ellipse\":\n element2\n .attr(\"rx\", context.width() / 2)\n .attr(\"ry\", context.height() / 2)\n ;\n break;\n case \"pin\":\n element2\n .attr(\"d\", context.pinPath())\n ;\n break;\n }\n })\n ;\n shape.exit().remove();\n }\n }\n getShapeElementTag(_shape) {\n switch (_shape) {\n case \"square\":\n return \"rect\";\n case \"pin\":\n return \"path\";\n }\n return _shape;\n }\n pinPath() {\n const radius = this.cornerRadius();\n const arrow_h = this.arrowHeight();\n const arrow_w = this.arrowWidth();\n const width = this.width();\n const height = this.height() - arrow_h;\n const x = 0 - width / 2;\n const y = 0 - height;\n const arrow_b = (width - radius * 2 - arrow_w) / 2;\n return \"M\" + x + \",\" + y +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + radius + \",\" + -radius +\n \"h\" + (width + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + radius + \",\" + radius +\n \"v\" + (height + -radius * 2) +\n \"a\" + radius + \",\" + radius + \" 0 0 1 \" + -radius + \",\" + radius +\n \"h\" + -arrow_b +\n \"l\" + -arrow_w / 2 + \",\" + arrow_h +\n \"l\" + -arrow_w / 2 + \",\" + -arrow_h +\n \"h\" + -arrow_b +\n \"a\" + -radius + \",\" + -radius + \" 0 0 1 \" + -radius + \",\" + -radius +\n \"z\";\n }\n\n click() {\n }\n\n dblclick() {\n }\n\n}\nShape.prototype._class += \" common_Shape\";\n\nexport interface Shape {\n shape(): string;\n shape(_: string): this;\n colorStroke(): string;\n colorStroke(_: string): this;\n colorFill(): string;\n colorFill(_: string): this;\n colorFill_exists(): boolean;\n radius(): number;\n radius(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\n\nShape.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\", \"rect\", \"ellipse\", \"pin\"], { tags: [\"Private\"] });\nShape.prototype.publish(\"width\", 24, \"number\", \"Width\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"height\", 24, \"number\", \"Height\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"colorStroke\", null, \"html-color\", \"Stroke Color\", null, { optional: true });\nShape.prototype.publish(\"colorFill\", null, \"html-color\", \"Fill Color\", null, { optional: true });\nShape.prototype.publish(\"radius\", null, \"number\", \"Radius\", null, { tags: [\"Private\"] });\nShape.prototype.publish(\"cornerRadius\", 3, \"number\", \"cornerRadius\");\nShape.prototype.publish(\"arrowHeight\", 5, \"number\", \"arrowHeight\");\nShape.prototype.publish(\"arrowWidth\", 10, \"number\", \"arrowWidth\");\nShape.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n\nconst _origRadius = Shape.prototype.radius;\nShape.prototype.radius = function (_?) {\n const retVal = _origRadius.apply(this, arguments);\n if (arguments.length) {\n this.width(_);\n this.height(_);\n return retVal;\n }\n return Math.max(this.width(), this.height()) / 2;\n};\n","import { FAChar } from \"./FAChar\";\nimport { textColor } from \"./Palette\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Icon.css\";\n\nexport class Icon extends SVGWidget {\n\n protected _shapeWidget;\n protected _faChar;\n protected _defs;\n protected _root;\n protected _tooltipElement;\n\n constructor() {\n super();\n\n this._shapeWidget = new Shape();\n this._faChar = new FAChar();\n }\n\n getBBox(refresh = false, round = false) {\n const diameter = this.diameter();\n return {\n x: - diameter / 2,\n y: - diameter / 2,\n width: diameter,\n height: diameter\n };\n }\n\n contains(point) {\n return this._shapeWidget.contains(point);\n }\n\n intersection(pointA, pointB) {\n return this._shapeWidget.intersection(pointA, pointB);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._defs = element.append(\"defs\");\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_circle\")\n .append(\"circle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n ;\n this._defs.append(\"clipPath\")\n .attr(\"id\", \"clip_\" + this.id() + \"_square\")\n .append(\"rect\")\n ;\n this._root = element.append(\"g\");\n this._shapeWidget\n .target(this._root.node())\n ;\n this._faChar\n .target(element.node())\n ;\n this._tooltipElement = element.append(\"title\");\n const context = this;\n element\n .on(\"click\", function (el) {\n context.click(el);\n })\n .on(\"dblclick\", function (el) {\n context.dblclick(el);\n })\n ;\n }\n\n click(_domNode) {\n // console.log(\"Clicked the icon\");\n }\n\n dblclick(_domNode) {\n // console.log(\"Double clicked the icon\");\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const diameter = this.diameter();\n const radius = diameter / 2;\n this._defs.select(\"circle\")\n .attr(\"r\", radius)\n ;\n this._defs.select(\"rect\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n this._faChar\n .fontSize(diameter * (100 - this.paddingPercent()) / 100)\n .render()\n ;\n this._shapeWidget\n .shape(this.shape())\n .width(diameter)\n .height(diameter)\n .render()\n ;\n const image = this._root.selectAll(\"image\").data(this.imageUrl() ? [this.imageUrl()] : [], function (d) { return d; });\n image.enter()\n .append(\"image\")\n .attr(\"xlink:href\", this.imageUrl())\n .merge(image)\n .attr(\"clip-path\", \"url(#clip_\" + this.id() + \"_\" + this.shape() + \")\")\n .attr(\"x\", -radius)\n .attr(\"y\", -radius)\n .attr(\"width\", diameter)\n .attr(\"height\", diameter)\n ;\n if (this.shape_colorFill_exists() && !this.image_colorFill_exists()) {\n this.image_colorFill(textColor(this.shape_colorFill()));\n }\n image.exit()\n .remove()\n ;\n this._tooltipElement.text(this.tooltip());\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n this._shapeWidget\n .target(null)\n ;\n this._faChar\n .target(null)\n ;\n }\n\n shape: { (): string; (_: string): Icon; };\n faChar: { (): string; (_: string): Icon; };\n imageUrl: { (): string; (_: string): Icon; };\n image_colorFill: { (): string; (_: string): Icon; };\n image_colorFill_exists: () => boolean;\n tooltip: { (): string; (_: string): Icon; };\n diameter: { (): number; (_: number): Icon; };\n paddingPercent: { (): number; (_: number): Icon; };\n shape_colorFill: { (): string; (_: string): Icon; };\n shape_colorFill_exists: () => boolean;\n shape_colorStroke: { (): string; (_: string): Icon; };\n}\nIcon.prototype._class += \" common_Icon\";\n\nIcon.prototype.publish(\"shape\", \"circle\", \"set\", \"Shape Type\", [\"circle\", \"square\"], { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"faChar\", \"_faChar\", \"char\");\nIcon.prototype.publishProxy(\"fontFamily\", \"_faChar\", \"text_fontFamily\");\nIcon.prototype.publish(\"imageUrl\", null, \"string\", \"Image URL\", null, { optional: true });\nIcon.prototype.publishProxy(\"image_colorFill\", \"_faChar\", \"text_colorFill\");\nIcon.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"diameter\", 24, \"number\", \"Diameter\", null, { tags: [\"Private\"] });\nIcon.prototype.publish(\"paddingPercent\", 45, \"number\", \"Padding Percent\", null, { tags: [\"Private\"] });\nIcon.prototype.publishProxy(\"shape_colorFill\", \"_shapeWidget\", \"colorFill\");\nIcon.prototype.publishProxy(\"shape_colorStroke\", \"_shapeWidget\", \"colorStroke\");\n","import { local as d3Local } from \"d3-selection\";\nimport { Icon } from \"./Icon\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport { BBox, Widget } from \"./Widget\";\n\nexport interface IAnnotation {\n faChar: string;\n tooltip?: string;\n shape_colorFill?: string;\n shape_colorStroke?: string;\n image_colorFill?: string;\n shape?: string;\n}\n\nexport class Entity extends SVGWidget {\n protected _icon_widget: Icon;\n protected _background_widget: Shape;\n protected _title_widget: Text;\n protected _desc_widget: Text;\n protected _annotation_widgets: { [idx: number]: { widget: SVGWidget, bbox: BBox } };\n protected _element_anno;\n protected _element_background;\n protected _element_desc;\n protected _element_icon;\n protected _element_title;\n\n private _annotationLocal = d3Local<Icon>();\n\n constructor() {\n super();\n\n this._background_widget = new Shape();\n this._icon_widget = new Icon();\n this._title_widget = new Text();\n this._desc_widget = new Text();\n this._annotation_widgets = {};\n }\n getAnnotationsBBox(): BBox {\n let retVal: BBox;\n for (const key in this._annotation_widgets) {\n const bbox = this._annotation_widgets[key].bbox;\n if (!retVal) {\n retVal = bbox;\n } else {\n retVal.x = Math.min(retVal.x, bbox.x);\n retVal.y = Math.min(retVal.y, bbox.y);\n retVal.width = Math.max(retVal.width, bbox.width);\n retVal.height = Math.max(retVal.height, bbox.height);\n }\n }\n return retVal || { x: 0, y: 0, width: 0, height: 0 };\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n element\n .on(\"mouseover\", () => {\n element.classed(\"hovering\", true);\n this.render();\n })\n .on(\"mouseout\", () => {\n element.classed(\"hovering\", false);\n this.render();\n })\n ;\n\n this._element_background = element.append(\"g\").attr(\"class\", \"entity_shape\");\n this._element_icon = element.append(\"g\").attr(\"class\", \"entity_icon\");\n this._element_title = element.append(\"g\").attr(\"class\", \"entity_title\");\n this._element_desc = element.append(\"g\").attr(\"class\", \"entity_desc\");\n this._element_anno = element.append(\"g\").attr(\"class\", \"entity_anno\");\n\n this._background_widget\n .target(this._element_background.node());\n this._icon_widget\n .shape_colorFill(\"none\")\n .shape_colorStroke(\"none\")\n .target(this._element_icon.node());\n this._title_widget\n .target(this._element_title.node());\n this._desc_widget\n .target(this._element_desc.node());\n }\n update(domNode, element) {\n super.update(domNode, element);\n this._desc_widget\n .fontSize(this.descriptionFontSize());\n const context = this;\n this._annotation_widgets = {};\n let annoXPos = 0;\n const annotations = this._element_anno.selectAll(\".annotation\").data([...this.annotationIcons()].reverse());\n annotations.enter().append(\"g\")\n .attr(\"class\", \"annotation\")\n .each(function (this: SVGGElement, d, idx) {\n const anno = new Icon()\n .diameter(context.annotationDiameter())\n .paddingPercent(context.annotationPaddingPercent())\n .target(this)\n .shape(\"square\")\n ;\n context._annotationLocal.set(this, anno);\n })\n .merge(annotations)\n .each(function (this: SVGGElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n if (typeof d.faChar !== \"undefined\") anno.faChar(d.faChar);\n if (typeof d.shape !== \"undefined\") anno.shape(d.shape);\n if (typeof d.image_colorFill !== \"undefined\") anno.image_colorFill(d.image_colorFill);\n if (typeof d.shape_colorFill !== \"undefined\") anno.shape_colorFill(d.shape_colorFill);\n if (typeof d.shape_colorStroke !== \"undefined\") anno.shape_colorStroke(d.shape_colorStroke);\n const annoDiam = anno.diameter();\n anno\n .x(annoXPos - annoDiam)\n .y(annoDiam / 2)\n .render()\n ;\n annoXPos -= annoDiam + context.annotationSpacing();\n context._annotation_widgets[idx] = {\n widget: anno,\n bbox: anno.getBBox(true)\n };\n });\n annotations.exit()\n .each(function (this: HTMLElement, d, idx) {\n const anno = context._annotationLocal.get(this);\n anno.target(null);\n })\n .remove();\n }\n exit(domNode, element) {\n this._desc_widget.target(null);\n this._title_widget.target(null);\n this._icon_widget.target(null);\n this._background_widget.target(null);\n super.exit(domNode, element);\n }\n moveAnnotations(x_offset: number, y_offset: number) {\n this._element_anno.attr(\"transform\", `translate(${x_offset}, ${y_offset})`);\n }\n render(callback?: (w: Widget) => void) {\n return super.render(w => {\n this._background_widget.render();\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntity.prototype._class += \" common_Entity\";\n\nexport interface Entity {\n arrowHeight(): number;\n arrowHeight(_: number): this;\n arrowWidth(): number;\n arrowWidth(_: number): this;\n cornerRadius(): number;\n cornerRadius(_: number): this;\n padding(): number;\n padding(_: number): this;\n paddingPercent(): number;\n paddingPercent(_: number): this;\n\n annotationIcons(): IAnnotation[];\n annotationIcons(_: IAnnotation[]): this;\n annotationDiameter(): number;\n annotationDiameter(_: number): this;\n annotationSpacing(): number;\n annotationSpacing(_: number): this;\n annotationPaddingPercent(): number;\n annotationPaddingPercent(_: number): this;\n icon(): string;\n icon(_: string): this;\n iconColor(): string;\n iconColor(_: string): this;\n iconDiameter(): number;\n iconDiameter(_: number): this;\n iconPaddingPercent(): number;\n iconPaddingPercent(_: number): this;\n description(): string;\n description(_: string): this;\n descriptionColor(): string;\n descriptionColor(_: string): this;\n descriptionFontFamily(): string;\n descriptionFontFamily(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n title(): string;\n title(_: string): this;\n titleColor(): string;\n titleColor(_: string): this;\n titleFontFamily(): string;\n titleFontFamily(_: string): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n backgroundShape(): string;\n backgroundShape(_: string): this;\n backgroundColorFill(): string;\n backgroundColorFill(_: string): this;\n backgroundColorStroke(): string;\n backgroundColorStroke(_: string): this;\n}\n\nEntity.prototype.publish(\"padding\", 8, \"number\", \"padding\");\n\nEntity.prototype.publish(\"annotationPaddingPercent\", 38, \"number\", \"annotationPaddingPercent\");\nEntity.prototype.publish(\"annotationDiameter\", 14, \"number\", \"Annotation Diameter\");\nEntity.prototype.publish(\"annotationIcons\", [], \"array\", \"annotationIcons\"); // TODO: is this really used?\nEntity.prototype.publish(\"annotationSpacing\", 3, \"number\", \"annotationSpacing\");\n\nEntity.prototype.publishProxy(\"icon\", \"_icon_widget\", \"faChar\");\nEntity.prototype.publishProxy(\"iconColor\", \"_icon_widget\", \"image_colorFill\");\nEntity.prototype.publishProxy(\"iconDiameter\", \"_icon_widget\", \"diameter\");\nEntity.prototype.publishProxy(\"iconPaddingPercent\", \"_icon_widget\", \"paddingPercent\");\n\nEntity.prototype.publishProxy(\"title\", \"_title_widget\", \"text\");\nEntity.prototype.publishProxy(\"titleColor\", \"_title_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"titleFontFamily\", \"_title_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"titleFontSize\", \"_title_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"description\", \"_desc_widget\", \"text\");\nEntity.prototype.publishProxy(\"descriptionColor\", \"_desc_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"descriptionFontFamily\", \"_desc_widget\", \"fontFamily\");\nEntity.prototype.publishProxy(\"descriptionFontSize\", \"_desc_widget\", \"fontSize\");\n\nEntity.prototype.publishProxy(\"backgroundShape\", \"_background_widget\", \"shape\");\nEntity.prototype.publishProxy(\"backgroundColorFill\", \"_background_widget\", \"colorFill\");\nEntity.prototype.publishProxy(\"backgroundColorStroke\", \"_background_widget\", \"colorStroke\");\n\nEntity.prototype.publishProxy(\"cornerRadius\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowHeight\", \"_background_widget\");\nEntity.prototype.publishProxy(\"arrowWidth\", \"_background_widget\");\n","import { Entity } from \"./Entity\";\n\nexport class EntityCard extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update() {\n super.update.apply(this, arguments);\n\n this._icon_widget.render();\n this._title_widget.render();\n this._desc_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const desc_bbox = this._desc_widget.getBBox(true);\n\n let anno_w = 0;\n let anno_h = 0;\n const anno_gap = this.annotationSpacing();\n for (const i of Object.keys(this._annotation_widgets)) {\n anno_w += this._annotation_widgets[i].bbox.width + anno_gap;\n anno_h = anno_h > this._annotation_widgets[i].bbox.height ? anno_h : this._annotation_widgets[i].bbox.height;\n }\n\n const _background_h = this.fixedHeight() !== null ? this.fixedHeight() : Math.max(\n title_bbox.height + desc_bbox.height + (this.padding() * 3),\n anno_h + icon_bbox.height + (this.padding() * 3)\n );\n const _background_w = this.fixedWidth() !== null ? this.fixedWidth() : Math.max(\n title_bbox.width + icon_bbox.width + (this.padding() * 3),\n anno_w + desc_bbox.width + (this.padding() * 3)\n );\n this._background_widget\n .height(_background_h)\n .width(_background_w);\n\n this._title_widget.move({\n x: -(_background_w / 2) + (title_bbox.width / 2) + this.padding(),\n y: -(_background_h / 2) + (title_bbox.height / 2) + this.padding()\n });\n this._icon_widget.move({\n x: (_background_w / 2) - (icon_bbox.width / 2) - this.padding(),\n y: -(_background_h / 2) + (icon_bbox.height / 2) + this.padding()\n });\n this._desc_widget.move({\n x: -(_background_w / 2) + (desc_bbox.width / 2) + this.padding(),\n y: (_background_h / 2) - (desc_bbox.height / 2) - this.padding()\n });\n this.moveAnnotations((_background_w / 2), (_background_h / 2) - anno_h - this.padding());\n }\n}\nEntityCard.prototype._class += \" common_EntityCard\";\n\nexport interface EntityCard {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityCard.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityCard.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n","import { Entity } from \"./Entity\";\n\nexport class EntityPin extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n super.update.apply(this, arguments);\n\n const is_hovering = element.classed(\"hovering\");\n\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n this._title_widget.display(!this.titleOnlyShowOnHover() || is_hovering);\n this._icon_widget.display(!this.iconOnlyShowOnHover() || is_hovering);\n this._desc_widget.display(!this.descriptionOnlyShowOnHover() || is_hovering);\n\n this._background_widget\n .height(background_bbox.height)\n .width(background_bbox.width);\n const icon_y = -background_bbox.height + icon_bbox.height + (this.padding() / 2);\n const title_y = icon_y + (icon_bbox.height / 2) + (title_bbox.height / 2) + this.padding();\n const desc_y = title_y + (title_bbox.height / 2) + (desc_bbox.height / 2) + this.padding();\n const anno_y = desc_y + (desc_bbox.height / 2) + this.padding();\n this._title_widget.move({\n x: 0,\n y: title_y\n });\n this._desc_widget.move({\n x: 0,\n y: desc_y\n });\n this._icon_widget.move({\n x: 0,\n y: icon_y\n });\n this.moveAnnotations(background_bbox.width / 2, anno_y);\n\n }\n calcHeight() {\n const is_hovering = true;\n this._icon_widget.render();\n this._desc_widget.render();\n this._title_widget.render();\n const title_bbox = !this.titleOnlyShowOnHover() || is_hovering ? this._title_widget.getBBox(true) : { height: 0, width: 0 };\n const icon_bbox = !this.iconOnlyShowOnHover() || is_hovering ? this._icon_widget.getBBox(true) : { height: 0, width: 0 };\n const desc_bbox = !this.descriptionOnlyShowOnHover() || is_hovering ? this._desc_widget.getBBox(true) : { height: 0, width: 0 };\n const _anno_h = !this.annotationOnlyShowOnHover() || is_hovering ? this.annotationIcons().length > 0 ? this.annotationDiameter() + this.padding() : 0 : 0;\n const background_bbox = this.calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h);\n\n return background_bbox.height;\n }\n calcBackgroundBBox(is_hovering, title_bbox, icon_bbox, desc_bbox, _anno_h) {\n const content_width = Math.max(title_bbox.width, icon_bbox.width, desc_bbox.width);\n const background_bbox = {\n width: content_width + (this.padding() * 2),\n height: icon_bbox.height + title_bbox.height + _anno_h + this.arrowHeight() + desc_bbox.height + (this.padding() * 5)\n };\n let remove_padding = 0;\n if (this.titleOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.iconOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.descriptionOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n if (this.annotationIcons().length === 0 || this.annotationOnlyShowOnHover() && !is_hovering) {\n remove_padding += this.padding();\n }\n background_bbox.height -= remove_padding;\n return background_bbox;\n }\n}\nEntityPin.prototype._class += \" common_EntityPin\";\n\nexport interface EntityPin {\n titleOnlyShowOnHover(): boolean;\n titleOnlyShowOnHover(_: boolean): this;\n iconOnlyShowOnHover(): boolean;\n iconOnlyShowOnHover(_: boolean): this;\n descriptionOnlyShowOnHover(): boolean;\n descriptionOnlyShowOnHover(_: boolean): this;\n annotationOnlyShowOnHover(): boolean;\n annotationOnlyShowOnHover(_: boolean): this;\n}\n\nEntityPin.prototype.publish(\"titleOnlyShowOnHover\", false, \"boolean\", \"titleOnlyShowOnHover\");\nEntityPin.prototype.publish(\"iconOnlyShowOnHover\", false, \"boolean\", \"iconOnlyShowOnHover\");\nEntityPin.prototype.publish(\"descriptionOnlyShowOnHover\", false, \"boolean\", \"descriptionOnlyShowOnHover\");\nEntityPin.prototype.publish(\"annotationOnlyShowOnHover\", false, \"boolean\", \"annotationOnlyShowOnHover\");\n","import { local as d3Local, select as d3Select } from \"d3-selection\";\nimport { Entity } from \"./Entity\";\nimport { HTMLWidget } from \"./HTMLWidget\";\nimport { publish } from \"./PropertyExt\";\nimport * as Utility from \"./Utility\";\nimport { InputField } from \"./Widget\";\n\nimport \"../src/EntityRect.css\";\n\nexport class EntityRect extends Entity {\n protected _element_textbox;\n constructor() {\n super();\n }\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n update(domNode, element) {\n this._desc_widget.text(\"\");\n super.update(domNode, element);\n }\n render(callback?: (w: EntityRect) => void) {\n return super.render((w: EntityRect) => {\n const icon_bbox = w.icon() === \"\" ? { width: 0, height: 0 } : this._icon_widget.getBBox(true);\n const title_bbox = this._title_widget.getBBox(true);\n const annotations_bbox = this.getAnnotationsBBox();\n\n let width = this.fixedWidth();\n if (!width) {\n width = icon_bbox.width + title_bbox.width + annotations_bbox.width + this.padding() * 4;\n }\n\n let height = this.fixedHeight();\n if (!height) {\n height = Math.max(icon_bbox.height, title_bbox.height, annotations_bbox.height) + this.padding() * 2;\n }\n\n this._background_widget\n .width(width)\n .height(height)\n .render()\n ;\n\n this._icon_widget.move({\n x: -(width / 2) + (icon_bbox.width),\n y: 0\n });\n\n this.moveAnnotations(width / 2, -annotations_bbox.height / 2);\n const iconWidth = icon_bbox.width > 0 ? icon_bbox.width + this.padding() : 0;\n const titleX = -(width / 2) + iconWidth + this.padding();\n const annoWidth = this.padding() / 2 + annotations_bbox.width + this.padding();\n const titleW = width - iconWidth - annoWidth;\n\n this._title_widget\n .move({\n x: titleX,\n y: 0\n })\n .anchor(\"start\")\n .width(titleW)\n .render()\n ;\n\n if (callback) {\n callback(w);\n }\n });\n }\n}\nEntityRect.prototype._class += \" common_EntityRect\";\n\nexport interface EntityRect {\n fixedWidth(): number;\n fixedWidth(_: number): this;\n fixedHeight(): number;\n fixedHeight(_: number): this;\n}\n\nEntityRect.prototype.publish(\"fixedWidth\", null, \"number\", \"fixedWidth\");\nEntityRect.prototype.publish(\"fixedHeight\", null, \"number\", \"fixedHeight\");\n\nexport class EntityRectList extends HTMLWidget {\n static __inputs: InputField[] = [{\n id: \"borderColor\",\n type: \"string\"\n }, {\n id: \"icon\",\n type: \"string\"\n }, {\n id: \"iconColor\",\n type: \"string\"\n }, {\n id: \"title\",\n type: \"string\"\n }];\n\n @publish(64, \"number\", \"fixedHeight\")\n fixedHeight: publish<this, number>;\n @publish(\"#f8f8f8\", \"string\", \"Default Background Color\", null, { inputType: \"html-color\" })\n backgroundColor: publish<this, string>;\n @publish(null, \"set\", \"Background Color Column\", function () { return this.columns(); }, { optional: true })\n backgroundColorColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Border Color\", null, { inputType: \"html-color\" })\n borderColor: publish<this, string>;\n @publish(null, \"set\", \"Border Color Column\", function () { return this.columns(); }, { optional: true })\n borderColorColumn: publish<this, string>;\n @publish(\"\", \"string\", \"Icon\")\n icon: publish<this, string>;\n @publish(null, \"set\", \"Icon Column\", function () { return this.columns(); }, { optional: true })\n iconColumn: publish<this, string>;\n @publish(\"red\", \"string\", \"Default Icon Color\", null, { inputType: \"html-color\" })\n iconColor: publish<this, string>;\n @publish(null, \"set\", \"Icon Color Column \", function () { return this.columns(); }, { optional: true })\n iconColorColumn: publish<this, string>;\n @publish(null, \"set\", \"Title Column\", function () { return this.columns(); }, { optional: true })\n titleColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Title Color\", null, { inputType: \"html-color\" })\n titleColor: publish<this, string>;\n @publish(null, \"set\", \"Title Color Column \", function () { return this.columns(); }, { optional: true })\n titleColorColumn: publish<this, string>;\n @publish(null, \"set\", \"Description Column\", function () { return this.columns(); }, { optional: true })\n descriptionColumn: publish<this, string>;\n @publish(\"black\", \"string\", \"Default Description Color\", null, { inputType: \"html-color\" })\n descriptionColor: publish<this, string>;\n @publish(null, \"set\", \"Description Color Column \", function () { return this.columns(); }, { optional: true })\n descriptionColorColumn: publish<this, string>;\n\n private _enityRectLocal = d3Local<EntityRect>();\n\n constructor() {\n super();\n Utility.SimpleSelectionMixin.call(this, true);\n }\n\n entityRectData() {\n const columns = this.columns();\n const idxColumns = [\n \"backgroundColor\",\n \"borderColor\",\n \"icon\",\n \"iconColor\",\n \"title\",\n \"titleColor\",\n \"description\",\n \"descriptionColor\"\n ];\n const idxs = idxColumns.map(idxColumn => columns.indexOf(this[`${idxColumn}Column`]()));\n return this.data().map(row => {\n const retVal = {\n origRow: row\n };\n for (let i = 0; i < idxColumns.length; ++i) {\n retVal[idxColumns[i]] = idxs[i] >= 0 ? row[idxs[i]] : typeof this[`${idxColumns[i]}`] === \"function\" ? this[`${idxColumns[i]}`]() : \"\";\n }\n return retVal;\n }, this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n d3Select(domNode.parentNode)\n .style(\"overflow-x\", \"hidden\")\n .style(\"overflow-y\", \"scroll\")\n ;\n this._selection.widgetElement(element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const margin = { left: 8, top: 8, right: 8, bottom: 8 };\n const width = this.width() - margin.left - margin.right - 20; // -20 for VScroll (could do better)\n const height = this.fixedHeight() - margin.top - margin.bottom;\n\n const svg = element.selectAll(\"svg\").data(this.entityRectData());\n svg.enter().append(\"svg\")\n .attr(\"class\", \"entityRectItem\")\n .call(this._selection.enter.bind(this._selection))\n .on(\"click\", function (d) {\n context.click(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .on(\"dblclick\", function (d) {\n context.dblclick(context.rowToObj(d.origRow), context.titleColumn(), context._selection.selected(this));\n })\n .each(function () {\n const entityRect = new EntityRect()\n .target(this)\n ;\n context._enityRectLocal.set(this, entityRect);\n })\n .merge(svg)\n .style(\"border-color\", d => d.borderColor)\n .each(function (d) {\n context._enityRectLocal.get(this)\n .pos({ x: width / 2, y: height / 2 })\n .resize({ width, height })\n .fixedWidth(width)\n .fixedHeight(height)\n .backgroundShape(\"rect\")\n .backgroundColorFill(d.backgroundColor)\n .backgroundColorStroke(\"none\")\n .icon(d.icon)\n .iconColor(d.iconColor)\n .iconDiameter(height / 2.6666)\n .iconPaddingPercent(0)\n .title(d.title)\n .titleFontSize(height / 2.6666)\n .titleColor(d.titleColor)\n .description(d.description)\n .descriptionColor(d.descriptionColor)\n .render()\n ;\n })\n ;\n svg.exit().remove();\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n // Events ---\n click(row, column, selected) {\n // console.log(\"Click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n dblclick(row, column, selected) {\n // console.log(\"Double click: \" + JSON.stringify(row) + \", \" + column + \",\" + selected);\n }\n\n // SimpleSelectionMixin\n _selection;\n}\nEntityRectList.prototype._class += \" common_EntityRectList\";\n","import { textColor } from \"./Palette\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\nimport { ISize } from \"./Widget\";\n\nimport \"../src/TextBox.css\";\n\nexport class TextBox extends SVGWidget {\n\n protected _shape: Shape;\n protected _text: Text;\n\n constructor() {\n super();\n\n this._shape = new Shape()\n .shape(\"rect\")\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n this._text = new Text()\n .on(\"click\", () => {\n this.click();\n })\n .on(\"dblclick\", () => {\n this.dblclick();\n })\n ;\n }\n\n padding(_) {\n this.paddingLeft(_);\n this.paddingRight(_);\n this.paddingTop(_);\n this.paddingBottom(_);\n return this;\n }\n\n getTextX(width) {\n switch (this.anchor()) {\n case \"start\":\n return -width / 2;\n case \"end\":\n return width / 2;\n }\n return 0;\n }\n\n getBBox(refresh = false, round = false) {\n const textBBox = this._text.getBBox(true);\n const width = this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight();\n const height = this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom();\n return {\n x: -width - 2,\n y: -height - 2,\n width,\n height\n };\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n delete this._prevHash;\n this._shape\n .target(domNode)\n .tooltip(this.tooltip())\n ;\n this._text\n .target(domNode)\n ;\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n\n const textBBox = this._text.getBBox(true);\n const size = {\n width: this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight(),\n height: this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom()\n };\n\n this._shape\n .width(size.width)\n .height(size.height)\n .render()\n ;\n\n this._text\n .x(this.getTextX(textBBox.width))\n .colorFill_default(this._shape.colorFill_exists() ? textColor(this._shape.colorFill()) : undefined)\n .render()\n ;\n\n if (this.fixedSize()) {\n switch (this.anchor()) {\n case \"start\":\n this._text\n .x(-this.fixedSize().width / 2 + textBBox.width / 2 + (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n case \"end\":\n this._text\n .x(this.fixedSize().width / 2 - textBBox.width / 2 - (this.paddingLeft() + this.paddingRight()) / 2)\n .render()\n ;\n break;\n }\n }\n this._text.visible(textBBox.width <= size.width && textBBox.height <= size.height);\n }\n }\n\n exit(domNode, element) {\n this._shape\n .target(null)\n ;\n this._text\n .target(null)\n ;\n super.exit(domNode, element);\n }\n\n click() {\n }\n\n dblclick() {\n }\n\n text: { (): string; (_: string): TextBox; };\n fontSize: { (): number; (_: number): TextBox; };\n shape_colorFill: { (): string; (_: string): TextBox; };\n shape_colorStroke: { (): string; (_: string): TextBox; };\n text_colorFill: { (): string; (_: string): TextBox; };\n text_fontFamily: { (): string; (_: string): TextBox; };\n paddingLeft: { (): number; (_: number): TextBox; };\n paddingRight: { (): number; (_: number): TextBox; };\n paddingTop: { (): number; (_: number): TextBox; };\n paddingBottom: { (): number; (_: number): TextBox; };\n anchor: { (): \"start\" | \"middle\" | \"end\"; (_: \"start\" | \"middle\" | \"end\"): TextBox; };\n fixedSize: { (): ISize; (_: ISize): TextBox; };\n tooltip: { (): string; (_: string): TextBox; };\n}\nTextBox.prototype._class += \" common_TextBox\";\n\nTextBox.prototype.publishProxy(\"text\", \"_text\");\nTextBox.prototype.publishProxy(\"fontSize\", \"_text\", \"fontSize\");\nTextBox.prototype.publishProxy(\"shape_colorStroke\", \"_shape\", \"colorStroke\");\nTextBox.prototype.publishProxy(\"shape_colorFill\", \"_shape\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_colorFill\", \"_text\", \"colorFill\");\nTextBox.prototype.publishProxy(\"text_fontFamily\", \"_text\", \"fontFamily\");\nTextBox.prototype.publish(\"paddingLeft\", 4, \"number\", \"Left padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingRight\", 4, \"number\", \"Right padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingTop\", 4, \"number\", \"Top padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publish(\"paddingBottom\", 4, \"number\", \"Bottom padding (in pixels)\", null, { tags: [\"Private\"] });\nTextBox.prototype.publishProxy(\"anchor\", \"_text\");\nTextBox.prototype.publish(\"fixedSize\", null);\n\nTextBox.prototype.publish(\"tooltip\", \"\", \"string\", \"Tooltip\", null, { tags: [\"Private\"] });\n","import { Entity } from \"./Entity\";\nimport { TextBox } from \"./TextBox\";\n\nexport class EntityVertex extends Entity {\n protected _textbox_widget: TextBox;\n protected _element_textbox;\n constructor() {\n super();\n this._textbox_widget = new TextBox();\n }\n enter(domNode, element) {\n this._element_textbox = element.append(\"g\").attr(\"class\", \"entity_textbox\");\n super.enter(domNode, element);\n this._textbox_widget.target(this._element_textbox.node());\n }\n update() {\n super.update.apply(this, arguments);\n this._textbox_widget\n .text(this._title_widget.text());\n this._icon_widget\n .shape_colorFill(this.iconColorFill())\n .shape_colorStroke(this.iconColorStroke());\n this._background_widget\n .colorFill(\"none\")\n .colorStroke(\"none\");\n\n this._icon_widget.render();\n this._textbox_widget.render();\n const icon_bbox = this._icon_widget.getBBox(true);\n const text_bbox = this._textbox_widget.getBBox(true);\n let _icon_x = 0;\n let _icon_y = -(text_bbox.height / 2) - (icon_bbox.height / 3);\n switch (this.iconAnchor()) {\n case \"start\":\n _icon_x = -(text_bbox.width / 2) + (icon_bbox.width / 3);\n break;\n case \"end\":\n _icon_x = (text_bbox.width / 2) - (icon_bbox.width / 3);\n break;\n case \"left\":\n _icon_x = -(text_bbox.width / 2) - (icon_bbox.width / 2);\n _icon_y = 0;\n break;\n }\n this._icon_widget.move({\n x: _icon_x,\n y: _icon_y\n });\n this.moveAnnotations(text_bbox.width / 2, text_bbox.height / 2);\n }\n exit(domNode, element) {\n this._textbox_widget.target(null);\n super.exit(domNode, element);\n }\n}\nEntityVertex.prototype._class += \" common_EntityVertex\";\n\nexport interface EntityVertex {\n iconAnchor(): string;\n iconAnchor(_: string): this;\n iconColorFill(): string;\n iconColorFill(_: string): this;\n iconColorStroke(): string;\n iconColorStroke(_: string): this;\n shape_colorStroke(): string;\n shape_colorStroke(_: string): this;\n shape_colorFill(): string;\n shape_colorFill(_: string): this;\n text_colorFill(): string;\n text_colorFill(_: string): this;\n\n textboxColorStroke(): string;\n textboxColorStroke(_: string): this;\n textboxColorFill(): string;\n textboxColorFill(_: string): this;\n textboxFontColor(): string;\n textboxFontColor(_: string): this;\n}\n\nEntityVertex.prototype.publish(\"iconAnchor\", \"start\", \"set\", \"Horizontal anchor position of icon\", [\"\", \"start\", \"middle\", \"end\", \"left\"]);\nEntityVertex.prototype.publish(\"iconColorFill\", null, \"html-color\", \"iconColorFill\");\nEntityVertex.prototype.publish(\"iconColorStroke\", null, \"html-color\", \"iconColorStroke\");\n\nEntityVertex.prototype.publishProxy(\"textboxColorStroke\", \"_textbox_widget\", \"shape_colorStroke\");\nEntityVertex.prototype.publishProxy(\"textboxColorFill\", \"_textbox_widget\", \"shape_colorFill\");\nEntityVertex.prototype.publishProxy(\"textboxFontColor\", \"_textbox_widget\", \"text_colorFill\");\n","import { select as d3Select } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget\";\n\nexport class Image extends HTMLWidget {\n private _imgElement;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n const img = element.selectAll(\"img\").data(this.source() ? [this.source()] : [], function (d) { return d; });\n img.enter()\n .append(\"img\")\n .attr(\"src\", this.source())\n .style(\"opacity\", 0)\n .on(\"load\", function () {\n context._imgElement = d3Select(this);\n context.styleImageElement();\n context._imgElement.style(\"opacity\", 1);\n })\n ;\n this.styleImageElement();\n img.exit()\n .remove()\n ;\n }\n\n styleImageElement() {\n if (!this._imgElement) return;\n switch (this.sizing()) {\n case \"actual\":\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n break;\n case \"fit\":\n if (this.lockAspectRatio()) {\n this._imgElement.style(\"width\", \"auto\");\n this._imgElement.style(\"height\", \"auto\");\n const bbox = this._imgElement.node().getBoundingClientRect();\n const xScale = bbox.width / this.width();\n const yScale = bbox.height / this.height();\n if (xScale > yScale) {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", (bbox.height / xScale) + \"px\");\n } else {\n this._imgElement.style(\"width\", (bbox.width / yScale) + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n } else {\n this._imgElement.style(\"width\", this.width() + \"px\");\n this._imgElement.style(\"height\", this.height() + \"px\");\n }\n break;\n case \"custom\":\n this._imgElement.style(\"width\", this.customWidth());\n this._imgElement.style(\"height\", this.customHeight());\n break;\n }\n switch (this.alignment()) {\n case \"origin\":\n break;\n case \"center\":\n const bbox = this._imgElement.node().getBoundingClientRect();\n this._imgElement.style(\"margin-left\", `${(this.width() - bbox.width) / 2}px`);\n this._imgElement.style(\"margin-top\", `${(this.height() - bbox.height) / 2}px`);\n break;\n }\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n source: { (): string; (_: string): Image; };\n sizing: { (): string; (_: string): Image; };\n customWidth: { (): string; (_: string): Image; };\n customHeight: { (): string; (_: string): Image; };\n lockAspectRatio: { (): boolean; (_: boolean): Image; };\n alignment: { (): string; (_: string): Image; };\n}\nImage.prototype._class += \" common_Image\";\n\nImage.prototype.publish(\"source\", null, \"string\", \"Image Source\", null, { tags: [\"Basic\"] });\nImage.prototype.publish(\"sizing\", \"actual\", \"set\", \"Controls sizing mode\", [\"actual\", \"fit\", \"custom\"], { tags: [\"Basic\"] });\nImage.prototype.publish(\"customWidth\", \"50%\", \"string\", \"Applies this width to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"customHeight\", \"20%\", \"string\", \"Applies this height to IMG element if 'sizing' is set to 'custom' (user should set 'px' or 'em' etc.)\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"custom\" });\nImage.prototype.publish(\"lockAspectRatio\", true, \"boolean\", \"Locks the aspect ratio when scaling/stretching\", null, { tags: [\"Basic\"], disable: (w) => w.sizing() !== \"fit\" });\nImage.prototype.publish(\"alignment\", \"center\", \"set\", \"Image Alignment\", [\"center\", \"origin\"], { tags: [\"Basic\"] });\n","import { IList } from \"./IList\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { TextBox } from \"./TextBox\";\n\nimport \"../src/List.css\";\n\nexport class List extends SVGWidget implements IList {\n\n protected _listWidgets;\n\n constructor() {\n super();\n\n this._listWidgets = {};\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n const line = element.selectAll(\".line\").data(this.data(), function (d) { return d; });\n const lineEnter = line.enter().append(\"g\")\n .attr(\"class\", \"line\")\n .each(function (d) {\n const newTextBox = new TextBox()\n .target(this)\n .paddingTop(0)\n .paddingBottom(0)\n .paddingLeft(8)\n .paddingRight(8)\n .text(d)\n .render()\n ;\n newTextBox.element()\n .on(\"click\", function (d2) {\n context.click(d2.text());\n })\n .on(\"dblclick\", function (d2) {\n context.dblclick(d2.text());\n })\n ;\n context._listWidgets[d] = newTextBox;\n })\n ;\n\n let listHeight = 0;\n let listWidth = 0;\n for (const key in this._listWidgets) {\n if (!this._listWidgets.hasOwnProperty(key)) continue;\n const bbox = this._listWidgets[key].getBBox();\n listHeight += bbox.height;\n if (listWidth < bbox.width)\n listWidth = bbox.width;\n }\n\n let yPos = -listHeight / 2; // + lineHeight / 2;\n lineEnter.merge(line).each(function (d) {\n const widget = context._listWidgets[d];\n const bbox = widget.getBBox();\n widget\n .pos({ x: 0, y: yPos + bbox.height / 2 })\n .anchor(context.anchor())\n .fixedSize({ width: listWidth, height: bbox.height })\n .render()\n ;\n yPos += bbox.height;\n });\n line.exit()\n .remove()\n .each(function (d) {\n context._listWidgets[d].target(null);\n delete context._listWidgets[d];\n })\n ;\n }\n\n exit(domNode, element) {\n for (const key in this._listWidgets) {\n if (this._listWidgets.hasOwnProperty(key)) {\n this._listWidgets[key].target(null);\n }\n }\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n // console.log(\"Click: \" + d);\n }\n\n dblclick(d) {\n // console.log(\"Double click: \" + d);\n }\n\n anchor: { (): string; (_: string): List; };\n}\nList.prototype._class += \" common_List\";\n\nList.prototype.publish(\"anchor\", \"start\", \"set\", \"Anchor Position\", [\"\", \"start\", \"middle\", \"end\"], { tags: [\"Private\"] });\n","import { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Icon } from \"./Icon\";\nimport { IMenu } from \"./IMenu\";\nimport { List } from \"./List\";\nimport { SVGWidget } from \"./SVGWidget\";\n\nimport \"../src/Menu.css\";\n\nexport class Menu extends SVGWidget implements IMenu {\n protected _icon = new Icon().shape(\"square\").diameter(14).paddingPercent(0);\n protected _list = new List();\n protected _open;\n\n constructor() {\n super();\n\n const context = this;\n this._list.click = function (d) {\n d3Event.stopPropagation();\n context.hideMenu();\n context.click(d);\n };\n this._open = false;\n }\n\n toggleMenu() {\n if (!this._open) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n\n showMenu() {\n this.preShowMenu();\n this._open = true;\n this._list\n .data(this.data())\n .render()\n ;\n\n const bbox = this._icon.getBBox(true);\n const menuBBox = this._list.getBBox(true);\n const pos = {\n x: bbox.width / 2 - menuBBox.width / 2,\n y: bbox.height / 2 + menuBBox.height / 2\n };\n this._list\n .move(pos)\n ;\n const context = this;\n d3Select(\"body\")\n .on(\"click.\" + this._id, function () {\n if (context._open) {\n context.hideMenu();\n }\n })\n ;\n }\n\n hideMenu() {\n d3Select(\"body\")\n .on(\"click.\" + this._id, null)\n ;\n this._open = false;\n this._list\n .data([])\n .render()\n ;\n this.postHideMenu();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._icon\n .target(domNode)\n .render()\n ;\n\n this._list\n .target(domNode)\n .render()\n ;\n\n const context = this;\n this._icon.element()\n .on(\"click\", function () {\n d3Event.stopPropagation();\n context.toggleMenu();\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", this.data().length === 0)\n ;\n\n this._icon\n .faChar(this.faChar())\n .paddingPercent(this.paddingPercent())\n .render()\n ;\n }\n\n exit(domNode, element) {\n this._icon\n .target(null)\n ;\n\n this._list\n .target(null)\n ;\n\n super.exit(domNode, element);\n }\n\n // Events ---\n click(d) {\n }\n preShowMenu() {\n }\n postHideMenu() {\n }\n\n faChar: { (): string; (_: string): Menu; };\n paddingPercent: { (): number; (_: number): Menu; };\n}\nMenu.prototype._class += \" common_Menu\";\n\nMenu.prototype.publishProxy(\"faChar\", \"_icon\", null, \"\\uf0c9\");\nMenu.prototype.publishProxy(\"paddingPercent\", \"_icon\", null, 10);\n","import { PropertyExt, publish } from \"./PropertyExt\";\n\nexport class ProgressBar extends PropertyExt {\n\n @publish(5000, \"number\", \"Half Life\")\n halfLife: publish<this, number>;\n @publish(1.2, \"number\", \"Decay\")\n decay: publish<this, number>;\n @publish(2, \"number\", \"Size\")\n size: publish<this, number>;\n @publish(\"#2ed573\", \"string\", \"Color\")\n color: publish<this, string>;\n @publish(true, \"boolean\", \"Bar Blur\")\n blurBar: publish<this, boolean>;\n @publish(50, \"number\", \"Blur Size\")\n blurSize: publish<this, number>;\n @publish(\"#7bed9f\", \"string\", \"Blur Color (hex)\", null, { optional: true })\n blurColor: publish<this, string>;\n @publish(0.35, \"number\", \"Blur Opacity\")\n blurOpacity: publish<this, number>;\n\n protected _elementID: string;\n protected _running: boolean = false;\n protected _style;\n\n constructor() {\n super();\n }\n\n calcCSS(halflife: number, perc: number) {\n const bar_size = this.size();\n const bar_color = this.color();\n const blur_opacity = this.blurOpacity();\n const blur_opacity_hex = blur_opacity * 255 >= 16 ? Math.floor(blur_opacity * 255).toString(16).slice(-2) : \"00\";\n const blur_color = this.blurColor() || bar_color;\n const blur_size = this.blurSize();\n const blur_fx = this.blurBar() ? `background: radial-gradient(ellipse at 50% 50%, ${blur_color}${blur_opacity_hex}, ${blur_color}00, #00000000 ${blur_size}px);` : \"\";\n return `\n #${this._elementID}::before{\n content:\" \";display:block;position:absolute;\n height:${bar_size}px;width:${perc}%;\n left:0;top:0;\n background-color: ${bar_color};\n transition: width ${(halflife / 1000)}s;\n }\n #${this._elementID}::after{\n content:\" \";display:block;position:absolute;\n height:${blur_size}px;width:${blur_size * 2}px;\n left:calc(${perc}% - ${blur_size}px);\n top:${-((blur_size / 2) - (bar_size / 2))}px;\n background-color: ${bar_color};\n transition: left ${(halflife / 1000)}s;\n transform: rotate(1deg) translate(-${blur_size / 2.5}px,0px) scale(1.5,0.5);\n ${blur_fx}\n }\n `;\n }\n\n start() {\n this._running = true;\n this.updateProgress(this.halfLife(), 10);\n }\n\n finish() {\n this.updateProgress(100, 100);\n }\n\n enter(domNode, element) {\n this._elementID = element.attr(\"id\");\n if (!this._elementID) throw new Error(\"Target element requires an id attribute.\");\n this._style = element.insert(\"style\");\n }\n\n exit(_domNode, _element) {\n this._running = false;\n if (this._style)\n this._style.remove();\n delete this._style;\n }\n\n protected updateProgress(halflife: number, perc: number) {\n if (!this._running) return;\n if (this._style) {\n this._style.html(this.calcCSS(halflife, perc));\n }\n\n const percLimit = 95;\n halflife *= this.decay();\n perc = perc ? perc : 10;\n if (perc < percLimit) {\n setTimeout(() => {\n const _remaining = 100 - perc;\n this.updateProgress(halflife, perc + (_remaining / 2));\n }, perc === 10 ? 100 : halflife);\n } else if (perc === 100) {\n setTimeout(() => {\n this._running = false;\n if (this._style) {\n this._style.html(\"\");\n }\n }, halflife);\n }\n }\n}\nProgressBar.prototype._class += \" common_ProgressBar\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { Icon } from \"./Icon\";\nimport { Menu } from \"./Menu\";\nimport { Shape } from \"./Shape\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { Text } from \"./Text\";\n\nimport \"../src/Surface.css\";\n\nexport class Surface extends SVGWidget {\n _origMenuParam;\n _origShowContent;\n\n protected _iconWidget;\n protected _containerWidget;\n protected _titleRectWidget;\n protected _textWidget;\n _menuWidget;\n protected _surfaceButtons;\n\n protected _clipRect;\n protected buttonContainer;\n\n constructor() {\n super();\n\n this._iconWidget = new Icon()\n .faChar(\"\\uf07b\")\n .paddingPercent(50)\n ;\n this._containerWidget = new Shape()\n .class(\"container\")\n .shape(\"rect\")\n ;\n this._titleRectWidget = new Shape()\n .class(\"title\")\n .shape(\"rect\")\n ;\n this._textWidget = new Text()\n .class(\"title\")\n ;\n this._menuWidget = new Menu()\n .paddingPercent(0)\n ;\n const context = this;\n this._menuWidget.preShowMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(false);\n }\n };\n this._menuWidget.postHideMenu = function () {\n if (context.content() && context.content().hasOverlay()) {\n context.content().visible(true);\n }\n };\n\n this._surfaceButtons = [];\n }\n\n enter(_domNode, _element) {\n super.enter(_domNode, _element);\n const element = _element.append(\"g\").attr(\"class\", \"frame\");\n const domNode = element.node();\n this._clipRect = element.append(\"defs\").append(\"clipPath\")\n .attr(\"id\", this.id() + \"_clip\")\n .append(\"rect\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"width\", this._size.width)\n .attr(\"height\", this._size.height)\n ;\n this._titleRectWidget\n .target(domNode)\n .render()\n .display(this.showTitle() && this.showIcon())\n ;\n this._iconWidget\n .target(domNode)\n .render()\n ;\n this._menuWidget\n .target(_domNode)\n ;\n this._textWidget\n .target(domNode)\n ;\n this._containerWidget\n .target(domNode)\n ;\n this.buttonContainer = d3Select(this._target).append(\"div\").attr(\"class\", \"svg-button-container\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n\n let width = this.width() - 1;\n const height = this.height() - 1;\n\n this._iconWidget\n .display(this.showTitle() && this.showIcon())\n .shape(this.icon_shape())\n .render()\n ;\n this._menuWidget\n .render()\n ;\n this._textWidget\n .text(this.title())\n .display(this.showTitle())\n .render()\n ;\n\n const surfaceButtons = this.buttonContainer.selectAll(\".surface-button\").data(this.buttonAnnotations());\n surfaceButtons.enter().append(\"button\").attr(\"class\", \"surface-button\")\n .each(function (button, idx) {\n const el = context._surfaceButtons[idx] = d3Select(this)\n .attr(\"class\", \"surface-button \" + (button.class ? button.class : \"\"))\n .attr(\"id\", button.id)\n .style(\"padding\", button.padding)\n .style(\"width\", button.width)\n .style(\"height\", button.height)\n .style(\"cursor\", \"pointer\")\n .on(\"click\", function (d) { context.click(d); });\n if (button.font === \"FontAwesome\") {\n el\n .append(\"i\")\n .attr(\"class\", \"fa\")\n .text(function () { return button.label; });\n } else {\n el\n .text(function () { return button.label; });\n }\n })\n ;\n surfaceButtons.exit()\n .each(function (_d, idx) {\n const element2 = d3Select(this);\n delete context._surfaceButtons[idx];\n element2.remove();\n })\n ;\n\n const buttonClientHeight = this.showTitle() ? Math.max.apply(null, this._surfaceButtons.map(function (d) { return d.node().offsetHeight; })) : 0;\n const iconClientSize = this.showTitle() && this.showIcon() ? this._iconWidget.getBBox(true) : { width: 0, height: 0 };\n const textClientSize = this._textWidget.getBBox(true);\n const menuClientSize = this._menuWidget.getBBox(true);\n const _titleRegionHeight = Math.max(iconClientSize.height, textClientSize.height, menuClientSize.height, buttonClientHeight);\n const titleRegionHeight = this.showTitle() ? _titleRegionHeight : 0;\n const yTitle = (-height + _titleRegionHeight) / 2;\n\n const titleTextHeight = this.showTitle() ? Math.max(textClientSize.height, menuClientSize.height, buttonClientHeight) : 0;\n const titleTextWidth = this.showTitle() ? textClientSize.width + menuClientSize.width : 0;\n if (titleTextWidth > width) {\n width = titleTextWidth;\n }\n\n const topMargin = titleRegionHeight <= titleTextHeight ? 0 : (titleRegionHeight - titleTextHeight) / 2;\n const leftMargin = topMargin;\n\n this._titleRectWidget\n .pos({ x: leftMargin, y: yTitle })\n .width(width - leftMargin * 2)\n .height(titleTextHeight)\n .display(this.showTitle())\n .render()\n ;\n this._iconWidget\n .move({ x: -width / 2 + iconClientSize.width / 2, y: yTitle })\n ;\n this._menuWidget\n .move({ x: width / 2 - menuClientSize.width / 2 - this.menuPadding(), y: yTitle })\n ;\n this._textWidget\n .move({ x: (iconClientSize.width / 2 - menuClientSize.width / 2) / 2, y: yTitle })\n ;\n\n const xPos = context._titleRectWidget.node().getBoundingClientRect().left + (context._size.width - leftMargin * 2) - context.buttonGutter() - this.buttonContainer.node().offsetWidth;\n const yPos = context._titleRectWidget.node().getBoundingClientRect().top + ((titleTextHeight - this.buttonContainer.node().offsetHeight) / 2);\n if (!isNaN(xPos)) {\n this.buttonContainer.style(\"left\", xPos + \"px\");\n }\n if (!isNaN(yPos)) {\n this.buttonContainer.style(\"top\", yPos + \"px\");\n }\n\n if (this.showTitle()) {\n this._containerWidget\n .pos({ x: leftMargin / 2, y: titleRegionHeight / 2 - topMargin / 2 })\n .width(width - leftMargin)\n .height(height - titleRegionHeight + topMargin)\n .render()\n ;\n } else {\n this._containerWidget\n .pos({ x: 0, y: 0 })\n .width(width)\n .height(height)\n .render()\n ;\n }\n\n if (this.showContent()) {\n const xOffset = leftMargin;\n const yOffset = titleRegionHeight - topMargin;\n\n const content = element.selectAll(\".content\").data(this.content() ? [this.content()] : [], function (d) { return d._id; });\n content.enter().append(\"g\")\n .attr(\"class\", \"content\")\n .attr(\"clip-path\", \"url(#\" + this.id() + \"_clip)\")\n .each(function (d) {\n d.target(this);\n })\n .merge(content)\n .attr(\"transform\", \"translate(\" + (leftMargin / 2) + \", \" + (titleRegionHeight / 2 - topMargin / 2) + \")\")\n .each(function (d) {\n const padding = {\n left: 0,\n top: 0,\n right: 1,\n bottom: 1\n };\n d\n .resize({\n width: width - xOffset - (padding.left + padding.right),\n height: height - yOffset - (padding.top + padding.bottom)\n })\n ;\n })\n ;\n if (this.content()) {\n this._clipRect\n .attr(\"x\", -(width - xOffset) / 2)\n .attr(\"y\", -(height - yOffset) / 2)\n .attr(\"width\", width - xOffset)\n .attr(\"height\", height - yOffset)\n ;\n }\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n if (this._menuWidget.element() && this._menuWidget.element().node() && this._menuWidget.element().node().parentNode) {\n this._menuWidget.element().node().parentNode.appendChild(this._menuWidget.element().node()); // Make sure menu is on top (Z-Order POV)\n }\n }\n\n exit(domNode, element) {\n this._titleRectWidget\n .target(null)\n ;\n this._iconWidget\n .target(null)\n ;\n this._menuWidget\n .target(null)\n ;\n this._textWidget\n .target(null)\n ;\n this._containerWidget\n .target(null)\n ;\n if (this.content()) {\n this.content().target(null);\n }\n super.exit(domNode, element);\n }\n\n intersection(pointA, pointB) {\n const hits = [];\n const i1 = this._iconWidget.intersection(pointA, pointB, this._pos);\n if (i1) {\n hits.push({ i: i1, d: this.distance(i1, pointB) });\n }\n const i2 = this._titleRectWidget.intersection(pointA, pointB);\n if (i2) {\n hits.push({ i: i2, d: this.distance(i2, pointB) });\n }\n const i3 = this._containerWidget.intersection(pointA, pointB);\n if (i3) {\n hits.push({ i: i3, d: this.distance(i3, pointB) });\n }\n let nearest = null;\n hits.forEach(function (item) {\n if (nearest === null || nearest.d > item.d) {\n nearest = item;\n }\n });\n return nearest && nearest.i ? nearest.i : null;\n }\n\n click(d) {\n }\n\n showTitle: { (): boolean; (_: boolean): Surface; };\n title: { (): string; (_: string): Surface; };\n titleFontSize: { (): string; (_: string): Surface; };\n showIcon: { (): boolean; (_: boolean): Surface; };\n icon_faChar: { (): string; (_: string): Surface; };\n icon_shape: { (): string; (_: string): Surface; };\n content: { (): any; (_: any): Surface; };\n buttonAnnotations: { (): any[]; (_: any[]): Surface; };\n buttonGutter: { (): number; (_: number): Surface; };\n showContent: { (): boolean; (_: boolean): Surface; };\n menu: { (): any[]; (_: any[]): Surface; };\n menuPadding: { (): number; (_: number): Surface; };\n}\nSurface.prototype._class += \" common_Surface\";\n\nSurface.prototype.publish(\"showTitle\", true, \"boolean\", \"Show Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Basic\"] });\nSurface.prototype.publishProxy(\"titleFontSize\", \"_textWidget\", \"fontSize\");\nSurface.prototype.publish(\"showIcon\", true, \"boolean\", \"Show Title\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publishProxy(\"icon_faChar\", \"_iconWidget\", \"faChar\");\nSurface.prototype.publishProxy(\"icon_shape\", \"_iconWidget\", \"shape\");\n\nSurface.prototype.publish(\"content\", null, \"widget\", \"Content\", null, { tags: [\"Private\"] });\n\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"buttonGutter\", 25, \"number\", \"Space Between Menu and Buttons\", null, { tags: [\"Intermediate\"] });\n\nSurface.prototype.publish(\"showContent\", true, \"boolean\", \"Show Content\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menu\", [], \"array\", \"Menu List Data\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"menuPadding\", 2, \"number\", \"Menu Padding\", null, { tags: [\"Advanced\"] });\n\nSurface.prototype._origMenuParam = Surface.prototype.menu;\nSurface.prototype.menu = function (this: Surface, _?) {\n Surface.prototype._origMenuParam.apply(this, arguments);\n if (arguments.length) {\n this._menuWidget.data(_);\n return this;\n }\n return this._menuWidget.data();\n};\n\nSurface.prototype._origShowContent = Surface.prototype.showContent;\nSurface.prototype.showContent = function (_?) {\n const retVal = Surface.prototype._origShowContent.apply(this, arguments);\n if (arguments.length) {\n if (this.content()) {\n this.content().visible(this.showContent());\n }\n }\n return retVal;\n};\n","import { dispatch as d3Dispatch } from \"d3-dispatch\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { event as d3Event, select as d3Select } from \"d3-selection\";\nimport { Surface } from \"./Surface\";\n\nimport \"../src/ResizeSurface.css\";\n\nexport class ResizeSurface extends Surface {\n\n protected handleWidth;\n protected handles;\n protected dispatch;\n protected drag;\n protected _domNode;\n protected _dragHandlePos;\n protected _dragStartPos;\n protected _dragStartSize;\n protected _prevPosSize;\n protected _textPosSize;\n protected _iconPosSize;\n\n constructor() {\n super();\n\n this.handleWidth = 8;\n this.handles = [{ loc: \"NW\" }, { loc: \"N\" }, { loc: \"NE\" }, { loc: \"E\" }, { loc: \"SE\" }, { loc: \"S\" }, { loc: \"SW\" }, { loc: \"W\" }];\n\n const context = this;\n this.dispatch = d3Dispatch(\"sizestart\", \"size\", \"sizeend\");\n this.drag = d3Drag()\n .subject(function (d) { return d; })\n ;\n this.drag\n .on(\"start\", function (d) {\n context.dispatch.call(\"sizestart\", context, d.loc);\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context._dragHandlePos = { x: d.x, y: d.y };\n context._dragStartPos = context.pos();\n context._dragStartSize = context.size();\n context._prevPosSize = {\n x: context._dragStartPos.x,\n y: context._dragStartPos.y,\n width: context._dragStartSize.width,\n height: context._dragStartSize.height\n };\n context._textPosSize = context._textWidget.getBBox(true);\n context._iconPosSize = context._iconWidget.getBBox(true);\n context.showContent(false);\n }\n })\n .on(\"drag\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n const _dx = d3Event.x - context._dragHandlePos.x;\n const _dy = d3Event.y - context._dragHandlePos.y;\n const delta = { x: 0, y: 0, w: 0, h: 0 };\n switch (d.loc) {\n case \"NW\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n /* falls through */\n case \"N\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n break;\n case \"NE\":\n delta.y = _dy / 2;\n delta.h = -_dy;\n /* falls through */\n case \"E\":\n delta.x = _dx / 2;\n delta.w = _dx;\n break;\n case \"SE\":\n delta.x = _dx / 2;\n delta.w = _dx;\n /* falls through */\n case \"S\":\n delta.y = _dy / 2;\n delta.h = _dy;\n break;\n case \"SW\":\n delta.y = _dy / 2;\n delta.h = _dy;\n /* falls through */\n case \"W\":\n delta.x = _dx / 2;\n delta.w = -_dx;\n break;\n }\n const posSize = {\n x: context._dragStartPos.x + delta.x,\n y: context._dragStartPos.y + delta.y,\n width: context._dragStartSize.width + delta.w,\n height: context._dragStartSize.height + delta.h\n };\n if (posSize.width < context._iconPosSize.width * 2 + context._textPosSize.width) {\n posSize.x = context._prevPosSize.x;\n posSize.width = context._prevPosSize.width;\n }\n if (posSize.height < context._textPosSize.height + 48) {\n posSize.y = context._prevPosSize.y;\n posSize.height = context._prevPosSize.height;\n }\n context\n .pos({ x: posSize.x, y: posSize.y })\n .size({ width: posSize.width, height: posSize.height })\n .render()\n .getBBox(true)\n ;\n context.dispatch.call(\"size\", context, d.loc);\n context._prevPosSize = posSize;\n }\n })\n .on(\"end\", function (d) {\n if (context.allowResize()) {\n d3Event.sourceEvent.stopPropagation();\n context\n .showContent(true)\n .render()\n ;\n context._containerWidget.getBBox(true);\n context._titleRectWidget.getBBox(true);\n context.dispatch.call(\"sizeend\", context, d.loc);\n }\n })\n ;\n }\n\n move(_) {\n const retVal = super.move.apply(this, arguments);\n this.updateHandles(this._domNode, this._element);\n return retVal;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this.updateHandles(domNode, element);\n }\n\n updateHandles(_domNode, _element) {\n const sizeHandles = this._placeholderElement.selectAll(\"rect\").data(this.handles, function (d) { return d.loc; });\n const sizeHandlesEnter = sizeHandles.enter().append(\"rect\")\n .attr(\"class\", function (d) { return \"resize\" + d.loc; })\n .call(this.drag)\n ;\n\n const l = this._pos.x + this._containerWidget._pos.x - this._containerWidget.width() / 2;\n const t = this._pos.y + this._titleRectWidget._pos.y - this._titleRectWidget.height() / 2;\n const r = this._pos.x + this._containerWidget._pos.x + this._containerWidget.width() / 2;\n const b = this._pos.y + this._containerWidget._pos.y + this._containerWidget.height() / 2;\n const w = r - l;\n const h = b - t;\n const context = this;\n sizeHandlesEnter.merge(sizeHandles)\n .each(function (d) {\n switch (d.loc) {\n case \"NW\":\n d.x = l - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"N\":\n d.x = l + context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"NE\":\n d.x = r - context.handleWidth / 2;\n d.y = t - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"E\":\n d.x = r - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n case \"SE\":\n d.x = r - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"S\":\n d.x = l + context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = w - context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"SW\":\n d.x = l - context.handleWidth / 2;\n d.y = b - context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = context.handleWidth;\n break;\n case \"W\":\n d.x = l - context.handleWidth / 2;\n d.y = t + context.handleWidth / 2;\n d.width = context.handleWidth;\n d.height = h - context.handleWidth;\n break;\n }\n d3Select(this)\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n })\n ;\n }\n allowResize: { (): boolean; (_: boolean): ResizeSurface; };\n}\nResizeSurface.prototype._class += \" common_ResizeSurface\";\n\nResizeSurface.prototype.publish(\"allowResize\", true, \"boolean\", \"Sets if surface can be resized\", null, { tags: [\"Private\", \"Shared\"] });\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","import { event as d3Event } from \"d3-selection\";\nimport { HTMLWidget } from \"./HTMLWidget\";\nimport { fa5Class } from \"./Utility\";\nimport { Widget } from \"./Widget\";\n\nimport \"../src/TitleBar.css\";\n\n// Lite button for titlebar ---\nexport class Button extends HTMLWidget {\n private _enabled = true;\n private _i;\n\n constructor() {\n super();\n this._tag = \"a\";\n }\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n const context = this;\n this._i = this._element\n .attr(\"href\", \"#\")\n .on(\"click\", function () {\n context.click();\n d3Event.preventDefault();\n })\n .on(\"mousemove\", this.mouseMove)\n .on(\"mouseout\", this.mouseOut)\n .append(\"i\")\n ;\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n this._i.attr(\"class\", `fa ${fa5Class(this.faChar())} fa-lg fa-fw`);\n }\n\n // Events ---\n click() {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n}\nButton.prototype._class += \" common_Button\";\nexport interface Button {\n faChar(): string;\n faChar(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nButton.prototype.publish(\"faChar\", \"\", \"string\", \"FontAwesome class\");\nButton.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// Sticky button ---\nexport class StickyButton extends Button {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element.classed(\"selected\", this.selected());\n }\n}\nStickyButton.prototype._class += \" common_StickyButton\";\nexport interface StickyButton {\n selected(): boolean;\n selected(_: boolean): this;\n}\nStickyButton.prototype.publish(\"selected\", false, \"boolean\");\n\n// Toggle button ---\nexport class ToggleButton extends StickyButton {\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this\n .selected(!this.selected())\n .render()\n ;\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n}\nToggleButton.prototype._class += \" common_ToggleButton\";\n\n// Spacer ---\nexport class Spacer extends HTMLWidget {\n\n enter(domNode: HTMLElement, element) {\n super.enter(domNode, element);\n element\n .attr(\"class\", this.vline() ? \"spacer vline\" : \"spacer\")\n .attr(\"href\", \"#\")\n .append(\"i\")\n ;\n }\n}\nSpacer.prototype._class += \" common_Spacer\";\n\nexport interface Spacer {\n vline(): boolean;\n vline(_: boolean): this;\n}\nSpacer.prototype.publish(\"vline\", true, \"boolean\");\n\nexport class SelectDropDown extends HTMLWidget {\n private _enabled = true;\n\n constructor() {\n super();\n this._tag = \"select\";\n }\n\n enabled(): boolean;\n enabled(_: boolean): this;\n enabled(_?: boolean): boolean | this {\n if (!arguments.length) return this._enabled;\n this._enabled = _;\n return this;\n }\n\n enter(domNode: HTMLSelectElement, element) {\n super.enter(domNode, element);\n const context = this;\n element.on(\"change\", function (d) {\n const values = context.values();\n for (const key in context.values()) {\n if (this.value === values[key]) {\n context.selected(key);\n break;\n }\n }\n context.click(this.value);\n });\n }\n\n update(domNode: HTMLElement, element) {\n super.update(domNode, element);\n element\n .classed(\"disabled\", !this.enabled())\n .attr(\"title\", this.tooltip())\n ;\n\n const values = this.values();\n\n const options = element.selectAll(\".icon-bar-select-option\").data(Object.keys(values));\n const optionUpdate = options.enter().append(\"option\")\n .attr(\"class\", \"icon-bar-select-option\")\n .merge(options)\n .attr(\"value\", r => values[r])\n .attr(\"selected\", r => r === this.selected() ? \"selected\" : null)\n .text(r => r)\n ;\n options.exit().remove();\n optionUpdate.order();\n }\n\n // Events ---\n click(value) {\n }\n\n mouseMove(d, idx, groups) {\n }\n\n mouseOut(d, idx, groups) {\n }\n}\nSelectDropDown.prototype._class += \" common_SelectDropDown\";\nexport interface SelectDropDown {\n values(): { [key: string]: string };\n values(_: { [key: string]: string }): this;\n selected(): string;\n selected(_: string): this;\n tooltip(): string;\n tooltip(_: string): this;\n}\nSelectDropDown.prototype.publish(\"values\", {}, \"object\", \"Label, Values\");\nSelectDropDown.prototype.publish(\"selected\", \"\", \"string\", \"Selected Item\");\nSelectDropDown.prototype.publish(\"tooltip\", \"\", \"string\", \"Displays as the button alt text attribute\");\n\n// IconBar ---\nexport class IconBar extends HTMLWidget {\n _divIconBar;\n _buttons: Widget[] = [];\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._divIconBar = element.append(\"div\")\n .attr(\"class\", \"icon-bar\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n let buttons = this.buttons().filter(button => this.hiddenButtons().indexOf(button) < 0);\n buttons = buttons.reduce((prev, item, idx) => {\n if (item instanceof Spacer) {\n if ((prev.length === 0 || idx === buttons.length - 1)) {\n return prev;\n } else if (buttons[idx + 1] instanceof Spacer) {\n return prev;\n }\n }\n prev.push(item);\n return prev;\n }, []);\n const icons = this._divIconBar.selectAll(\".icon-bar-item\").data(buttons, (d: Widget) => d.id());\n icons.enter().append(\"div\")\n .attr(\"class\", \"icon-bar-item\")\n .each(function (this: HTMLElement, d: Widget) {\n d.target(this);\n })\n .merge(icons)\n .each(function (d: Widget) {\n d.render();\n })\n ;\n icons.exit()\n .each(function (d: Widget) {\n d.target(null);\n })\n .remove()\n ;\n icons.order();\n }\n\n exit(domNode, element) {\n this.buttons().forEach(b => b.target(null));\n super.exit(domNode, element);\n }\n}\nIconBar.prototype._class += \" common_IconBar\";\n\nexport interface IconBar {\n buttons(): Widget[];\n buttons(_: Widget[]): this;\n hiddenButtons(): Widget[];\n hiddenButtons(_: Widget[]): this;\n}\nIconBar.prototype.publish(\"buttons\", [], \"widgetArray\", null, { internal: true });\nIconBar.prototype.publish(\"hiddenButtons\", [], \"widgetArray\", null, { internal: true });\n\n// SelectionBar ---\nexport class SelectionButton extends StickyButton {\n _owner: SelectionBar;\n\n enter(domNode: HTMLElement, element) {\n element.on(\"click.sel\", (d, idx, groups) => {\n this.selected(true).render();\n d3Event.preventDefault();\n });\n super.enter(domNode, element);\n }\n\n selected(): boolean;\n selected(_: boolean): this;\n selected(_?: boolean): boolean | this {\n const retVal = super.selected.apply(this, arguments);\n if (_ && this._owner) {\n this._owner.buttons().filter(sb => sb !== this && sb instanceof SelectionButton).forEach((sb: SelectionButton) => sb.selected(false).render());\n this._owner.selected(this);\n }\n return retVal;\n }\n}\nSelectionButton.prototype._class += \" common_SelectionButton\";\n\nexport class SelectionBar extends IconBar {\n\n buttons(): Array<SelectionButton | Spacer>;\n buttons(_: Array<SelectionButton | Spacer>): this;\n buttons(_?: Array<SelectionButton | Spacer>): Array<SelectionButton | Spacer> | this {\n const retVal = super.buttons.apply(this, arguments);\n if (arguments.length) {\n _.filter(b => b instanceof SelectionButton).forEach((sb: SelectionButton) => {\n sb._owner = this;\n });\n }\n return retVal;\n }\n\n // Events ---\n selected(row: SelectionButton) {\n }\n}\nSelectionBar.prototype._class += \" common_SelectionBar\";\n\n// Titlebar ---\nexport class TitleBar extends IconBar {\n\n _divTitle;\n _divTitleIcon;\n _divTitleText;\n _divDescriptionText;\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n this._divTitle = element.append(\"div\")\n .attr(\"class\", \"title-title\")\n .style(\"min-width\", \"0px\")\n ;\n this._divTitleIcon = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-icon\")\n .style(\"font-family\", this.titleIconFont())\n .style(\"font-size\", `${this.titleIconFontSize()}px`)\n .style(\"width\", `${this.titleIconFontSize()}px`)\n ;\n this._divTitle.append(\"div\")\n .attr(\"class\", \"data-count\")\n ;\n this._divTitleText = this._divTitle.append(\"div\")\n .attr(\"class\", \"title-text\")\n .style(\"font-family\", this.titleFont())\n .style(\"font-size\", `${this.titleFontSize()}px`)\n ;\n this._divDescriptionText = this._divTitle.append(\"div\")\n .attr(\"class\", \"description-text\")\n .style(\"font-family\", this.descriptionFont())\n ;\n\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n this._divTitleIcon\n .text(this.titleIcon())\n .style(\"display\", this.titleIcon() !== \"\" ? \"inline-block\" : \"none\")\n ;\n this._divTitleText\n .text(this.title())\n .attr(\"title\", this.title())\n ;\n this._divDescriptionText\n .style(\"display\", this.description_exists() ? \"block\" : \"none\")\n .style(\"font-size\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .style(\"line-height\", this.description_exists() ? `${this.descriptionFontSize()}px` : null)\n .text(this.description())\n ;\n\n super.update(domNode, element);\n }\n}\nTitleBar.prototype._class += \" common_TitleBar\";\n\nexport interface TitleBar {\n title(): string;\n title(_: string): this;\n titleIcon(): string;\n titleIcon(_: string): this;\n titleIconFont(): string;\n titleIconFont(_: string): this;\n titleFont(): string;\n titleFont(_: string): this;\n titleIconFontSize(): number;\n titleIconFontSize(_: number): this;\n titleFontSize(): number;\n titleFontSize(_: number): this;\n description(): string;\n description(_: string): this;\n description_exists(): boolean;\n descriptionFont(): string;\n descriptionFont(_: string): this;\n descriptionFontSize(): number;\n descriptionFontSize(_: number): this;\n}\nTitleBar.prototype.publish(\"titleIcon\", \"\", \"string\", \"Icon text\");\nTitleBar.prototype.publish(\"titleIconFont\", \"\", \"string\", \"Icon font-family\");\nTitleBar.prototype.publish(\"titleIconFontSize\", 28, \"number\", \"Icon font-size (pixels)\");\nTitleBar.prototype.publish(\"title\", \"\", \"string\", \"Title text\");\nTitleBar.prototype.publish(\"titleFont\", \"\", \"string\", \"Title font-family\");\nTitleBar.prototype.publish(\"titleFontSize\", 20, \"number\", \"Title font-size (pixels)\");\nTitleBar.prototype.publish(\"description\", null, \"string\", \"Description text\", null, { optional: true });\nTitleBar.prototype.publish(\"descriptionFont\", \"\", \"string\", \"Description font-family\");\nTitleBar.prototype.publish(\"descriptionFontSize\", 10, \"number\", \"Description font-size (pixels)\");\n","import { event as d3Event, mouse as d3Mouse } from \"d3-selection\";\nimport { zoom as d3Zoom, zoomIdentity as d3ZoomIdentity } from \"d3-zoom\";\nimport { SVGWidget } from \"./SVGWidget\";\nimport { safeRaise } from \"./Utility\";\nimport { Button, IconBar, Spacer, ToggleButton } from \"./TitleBar\";\n\nimport \"../src/SVGZoomWidget.css\";\n\nexport type MouseMode = \"zoom\" | \"marqueeSelection\";\n\nexport class SVGZoomWidget extends SVGWidget {\n\n protected _renderElement;\n\n private _currZoom;\n protected _zoomScale = 1;\n protected _zoomTranslate = [0, 0];\n protected _zoomRoot;\n protected _zoomGrab;\n protected _zoomG;\n private _prevZoomable;\n\n protected _marqueeSelectionRoot;\n protected _marqueeSelection;\n\n protected _autoSelectionMode = false;\n\n protected _toggleMarqueeSelection = new ToggleButton().faChar(\"fa-square-o\").tooltip(\"Marquee Selection\")\n .on(\"click\", () => {\n if (this._toggleMarqueeSelection.selected()) {\n this.mouseMode(\"marqueeSelection\");\n }\n this.updateIconBar();\n })\n ;\n\n protected _toggleZoom = new ToggleButton().faChar(\"fa-mouse-pointer\").tooltip(\"Zoom\")\n .on(\"click\", () => {\n if (this._toggleZoom.selected()) {\n this.mouseMode(\"zoom\");\n }\n this.updateIconBar();\n })\n ;\n\n _iconBar = new IconBar()\n .buttons([\n this._toggleMarqueeSelection,\n this._toggleZoom,\n new Spacer().vline(false),\n new Button().faChar(\"fa-arrows-alt\").tooltip(\"Zoom to fit\")\n .on(\"click\", () => {\n this.zoomToFit();\n }),\n new Spacer().vline(false),\n new Button().faChar(\"fa-plus\").tooltip(\"Zoom in\")\n .on(\"click\", () => {\n this.zoomPlus();\n }),\n new Button().faChar(\"fa-minus\").tooltip(\"Zoom out\")\n .on(\"click\", () => {\n this.zoomMinus();\n })\n ])\n ;\n\n constructor() {\n super();\n\n this._currZoom = d3Zoom()\n .scaleExtent([0.05, 20])\n .on(\"zoom end\", (evt) => {\n this.onZoomed();\n })\n ;\n }\n\n getScreenBBox(target: any) {\n let targetel = target;\n\n while (targetel.getScreenCTM == null && targetel.parentNode == null) {\n targetel = targetel.parentNode;\n }\n\n const bbox: any = {};\n const matrix = targetel.getScreenCTM();\n const tbbox = targetel.getBBox();\n const width = tbbox.width;\n const height = tbbox.height;\n const x = tbbox.x;\n const y = tbbox.y;\n const point = this._placeholderElement.node().createSVGPoint();\n point.x = x;\n point.y = y;\n\n bbox.nw = point.matrixTransform(matrix);\n point.x += width;\n bbox.ne = point.matrixTransform(matrix);\n point.y += height;\n bbox.se = point.matrixTransform(matrix);\n point.x -= width;\n bbox.sw = point.matrixTransform(matrix);\n point.y -= height / 2;\n bbox.w = point.matrixTransform(matrix);\n point.x += width;\n bbox.e = point.matrixTransform(matrix);\n point.x -= width / 2;\n point.y -= height / 2;\n bbox.n = point.matrixTransform(matrix);\n point.y += height;\n bbox.s = point.matrixTransform(matrix);\n\n return {\n x: bbox.nw.x,\n y: bbox.nw.y,\n width: bbox.se.x - bbox.nw.x,\n height: bbox.se.y - bbox.nw.y\n };\n }\n\n zoomScale(): number {\n return this._zoomScale;\n }\n\n zoomTranslate(): number[] {\n return this._zoomTranslate;\n }\n\n zoomExtent(range): void {\n this._currZoom.scaleExtent(range);\n }\n\n zoomTo(translate?, scale?, transitionDuration = 250) {\n translate = translate || this._zoomTranslate;\n scale = scale || this._zoomScale;\n transitionDuration = transitionDuration === undefined ? this.zoomDuration() : transitionDuration;\n\n this._zoomRoot.transition().duration(transitionDuration)\n .call(this._currZoom.transform, d3ZoomIdentity.translate(translate[0], translate[1]).scale(scale))\n ;\n }\n\n zoomPlus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1.33)\n ;\n }\n\n zoomMinus() {\n this._zoomRoot.transition()\n .call(this._currZoom.scaleBy, 1 / 1.33)\n ;\n }\n\n centerOnBBox(bbox, transitionDuration?) {\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const width = this.width();\n const height = this.height();\n\n const scale = this.zoomScale();\n const translate = [width / 2 - scale * x, height / 2 - scale * y];\n this.zoomTo(translate, scale, transitionDuration);\n }\n }\n\n getRenderElementBBox() {\n return this._renderElement.node().getBBox();\n }\n\n calcZoomToBBox(bbox, widthOnly: boolean = false, scale?: number) {\n const width = this.width();\n const height = this.height();\n if (bbox.width && bbox.height) {\n const x = bbox.x + bbox.width / 2;\n const y = bbox.y + bbox.height / 2;\n const dx = bbox.width;\n const dy = bbox.height;\n\n let newScale = scale || 1 / (widthOnly ? dx / width : Math.max(dx / width, dy / height));\n if (this.zoomToFitLimit_exists() && newScale > this.zoomToFitLimit()) {\n newScale = this.zoomToFitLimit();\n }\n const translate = [width / 2 - newScale * x, height / 2 - newScale * y];\n return { translate, newScale };\n }\n return { translate: [width / 2, height / 2], newScale: scale };\n }\n\n zoomToBBox(bbox, transitionDuration?, widthOnly: boolean = false, scale?: number) {\n const { translate, newScale } = this.calcZoomToBBox(bbox, widthOnly, scale);\n this.zoomTo(translate, newScale, transitionDuration);\n }\n\n zoomToScale(scale, transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, undefined, scale);\n }\n }\n\n zoomToWidth(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration, true);\n }\n }\n\n zoomToFit(transitionDuration?) {\n if (this._renderElement) {\n const bbox = this.getRenderElementBBox();\n this.zoomToBBox(bbox, transitionDuration);\n }\n }\n\n onZoomed() {\n if (d3Event && d3Event.transform && this.mouseMode() === \"zoom\") {\n this.zoomed(d3Event.transform);\n }\n }\n\n zoomed(transform) {\n this._zoomScale = transform.k;\n this._zoomTranslate = [transform.x, transform.y];\n this._zoomG.attr(\"transform\", transform);\n }\n\n updateIconBar() {\n this._toggleMarqueeSelection.selected(this.mouseMode() === \"marqueeSelection\").render();\n this._toggleZoom.selected(this.mouseMode() === \"zoom\").render();\n }\n\n mousedownMarqueeSelection() {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n this._marqueeSelection = this.element().append(\"rect\")\n .attr(\"class\", \"marqueeSelection\")\n .attr(\"rx\", 6)\n .attr(\"ry\", 6)\n .attr(\"x\", p[0])\n .attr(\"y\", p[1])\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n ;\n this.startMarqueeSelection();\n }\n\n mousemoveMarqueeSelection() {\n if (this._marqueeSelection) {\n const p = d3Mouse(this._marqueeSelectionRoot.node());\n const d = {\n x: parseInt(this._marqueeSelection.attr(\"x\"), 10),\n y: parseInt(this._marqueeSelection.attr(\"y\"), 10),\n width: parseInt(this._marqueeSelection.attr(\"width\"), 10),\n height: parseInt(this._marqueeSelection.attr(\"height\"), 10)\n };\n const move = {\n x: p[0] - d.x,\n y: p[1] - d.y\n };\n\n if (move.x < 1 || (move.x * 2 < d.width)) {\n d.x = p[0];\n d.width -= move.x;\n } else {\n d.width = move.x;\n }\n\n if (move.y < 1 || (move.y * 2 < d.height)) {\n d.y = p[1];\n d.height -= move.y;\n } else {\n d.height = move.y;\n }\n\n this._marqueeSelection\n .attr(\"x\", d.x)\n .attr(\"y\", d.y)\n .attr(\"width\", d.width)\n .attr(\"height\", d.height)\n ;\n\n this.updateMarqueeSelection({\n x: (d.x - this._zoomTranslate[0]) / this._zoomScale,\n y: (d.y - this._zoomTranslate[1]) / this._zoomScale,\n width: d.width / this._zoomScale,\n height: d.height / this._zoomScale\n });\n }\n }\n\n mouseupMarqueeSelection() {\n if (this._marqueeSelection) {\n this._marqueeSelection.remove();\n delete this._marqueeSelection;\n if (this._autoSelectionMode) {\n this._autoSelectionMode = false;\n this.mouseMode(\"zoom\");\n this.updateIconBar();\n }\n this.endMarqueeSelection();\n }\n }\n\n enter(domNode, _element) {\n super.enter(domNode, _element);\n _element.style(\"user-select\", \"none\");\n\n this._marqueeSelectionRoot = _element.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .style(\"fill\", \"transparent\")\n .style(\"cursor\", \"crosshair\")\n .on(\"mousedown\", () => {\n this.mousedownMarqueeSelection();\n })\n .on(\"mousemove\", () => {\n this.mousemoveMarqueeSelection();\n })\n .on(\"mouseup mouseout\", () => {\n this.mouseupMarqueeSelection();\n })\n ;\n\n this._zoomRoot = _element.append(\"g\");\n\n this._zoomGrab = this._zoomRoot.append(\"rect\")\n .attr(\"class\", \"zoomBackground\")\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n .on(\"mousedown\", () => {\n if (d3Event.shiftKey && this.mouseMode() === \"zoom\") {\n d3Event.stopPropagation();\n this.mouseMode(\"marqueeSelection\");\n this._autoSelectionMode = true;\n this.mousedownMarqueeSelection();\n }\n })\n ;\n this._zoomG = this._zoomRoot.append(\"g\");\n this._renderElement = this._zoomG.append(\"g\");\n\n if (this._prevZoomable !== this.zoomable()) {\n if (this.zoomable()) {\n this._zoomRoot.call(this._currZoom);\n } else {\n this._zoomRoot.on(\".zoom\", null);\n }\n this._prevZoomable = this.zoomable();\n }\n\n this._iconBar.target(this._zoomRoot.node());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._zoomGrab\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._marqueeSelectionRoot\n .attr(\"width\", this.width())\n .attr(\"height\", this.height())\n ;\n\n this._iconBar\n .visible(this.zoomable() && this.showToolbar())\n .render((w: IconBar) => {\n const bbox = w.getBBox();\n w.reposition({ x: this.width() - bbox.width - 4, y: -4 });\n })\n ;\n }\n\n exit(domNode, element) {\n this._iconBar.target(null);\n super.exit(domNode, element);\n }\n\n // Events\n startMarqueeSelection() {\n }\n\n updateMarqueeSelection(rect: { x: number, y: number, width: number, height: number }) {\n }\n\n endMarqueeSelection() {\n }\n}\nSVGZoomWidget.prototype._class += \" common_SVGZoomWidget\";\n\nexport interface SVGZoomWidget {\n showToolbar(): boolean;\n showToolbar(_: boolean): this;\n zoomable(): boolean;\n zoomable(_: boolean): this;\n zoomDuration(): number;\n zoomDuration(_: number): this;\n zoomToFitLimit(): number;\n zoomToFitLimit(_: number): this;\n zoomToFitLimit_exists(): boolean;\n mouseMode(_: MouseMode): this;\n mouseMode(): MouseMode;\n}\nSVGZoomWidget.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nSVGZoomWidget.prototype.publish(\"zoomable\", true, \"boolean\", \"Enable/Disable Zooming\");\nSVGZoomWidget.prototype.publish(\"zoomDuration\", 250, \"number\", \"Transition Duration\");\nSVGZoomWidget.prototype.publish(\"zoomToFitLimit\", undefined, \"number\", \"Zoom to fit limit\", undefined, { optional: true });\nSVGZoomWidget.prototype.publish(\"mouseMode\", \"zoom\", \"set\", \"Mouse Mode (zoom | marqueeSelection)\", [\"zoom\", \"marqueeSelection\"]);\n\nconst _origMouseMode = SVGZoomWidget.prototype.mouseMode;\nSVGZoomWidget.prototype.mouseMode = function (_?, transitionDuration?) {\n const retVal = _origMouseMode.apply(this, arguments);\n if (arguments.length) {\n if (_ === \"zoom\") {\n safeRaise(this._zoomRoot.node());\n } else {\n safeRaise(this._marqueeSelectionRoot.node());\n }\n this.updateIconBar();\n }\n return retVal;\n};\n","import { publish } from \"./PropertyExt\";\nimport { Widget } from \"./Widget\";\n\nexport class WidgetArray extends Widget {\n\n @publish([], \"widgetArray\", \"Widget Array\")\n content: publish<this, Widget[]>;\n\n constructor() {\n super();\n }\n}\nWidgetArray.prototype._class += \" common_WidgetArray\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export * from \"./__package__\";\nexport * from \"./CanvasWidget\";\nexport * from \"./Class\";\nimport * as Database from \"./Database\";\nexport { Database };\nexport * from \"./Entity\";\nexport * from \"./EntityCard\";\nexport * from \"./EntityPin\";\nexport * from \"./EntityRect\";\nexport * from \"./EntityVertex\";\nexport * from \"./FAChar\";\nexport * from \"./HTMLWidget\";\nexport * from \"./Icon\";\nexport * from \"./IList\";\nexport * from \"./Image\";\nexport * from \"./IMenu\";\nexport * from \"./List\";\nexport * from \"./Menu\";\nimport * as Palette from \"./Palette\";\nexport { Palette };\nimport * as Platform from \"./Platform\";\nexport { Platform };\nexport * from \"./ProgressBar\";\nexport * from \"./PropertyExt\";\nexport * from \"./ResizeSurface\";\nexport * from \"./Shape\";\nexport * from \"./Surface\";\nexport * from \"./SVGWidget\";\nexport * from \"./SVGZoomWidget\";\nexport * from \"./Text\";\nexport * from \"./TextBox\";\nexport * from \"./TitleBar\";\nimport * as Utility from \"./Utility\";\nexport { Utility };\nexport * from \"./Widget\";\nexport * from \"./WidgetArray\";\n\nexport * from \"d3-array\";\nexport * from \"d3-brush\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-format\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-scale\";\nexport * from \"d3-selection\";\nexport * from \"d3-time-format\";\nexport * from \"d3-transition\";\nexport * from \"d3-zoom\";\n\nimport { event as _d3Event } from \"d3-selection\";\nexport const d3Event = () => _d3Event;\n","export function linear(t) {\n return +t;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\n\nexport default function() {\n return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n"],"mappings":"wTAAO,ICgBHA,EAAgB,SAASC,EAAGC,GAI9B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,CAAE,GACzE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,GAAG,EAC5FP,EAAcC,EAAGC,EAC1B,EAEO,SAASS,EAAUV,EAAGC,GAC3B,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,CAAE,CADrCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,EACjF,CAEO,IAAII,EAAW,WAQpB,OAPAA,EAAWf,OAAOgB,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIf,KADTc,EAAIG,UAAUF,GACOnB,OAAOK,UAAUC,eAAeC,KAAKW,EAAGd,KAAIa,EAAEb,GAAKc,EAAEd,IAE9E,OAAOa,CACb,EACSF,EAASQ,MAAMX,KAAMS,UAC9B,EAcO,SAASG,EAAWC,EAAYC,EAAQC,EAAKC,GAClD,IAA2H9B,EAAvH+B,EAAIR,UAAUC,OAAQQ,EAAID,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAO5B,OAAO+B,yBAAyBL,EAAQC,GAAOC,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIT,EAAIM,EAAWH,OAAS,EAAGH,GAAK,EAAGA,KAASrB,EAAI2B,EAAWN,MAAIW,GAAKD,EAAI,EAAI/B,EAAEgC,GAAKD,EAAI,EAAI/B,EAAE4B,EAAQC,EAAKG,GAAKhC,EAAE4B,EAAQC,KAASG,GAChJ,OAAOD,EAAI,GAAKC,GAAK9B,OAAOkC,eAAeR,EAAQC,EAAKG,GAAIA,CAC9D,CAmDO,SAASK,EAAWC,EAAaC,GACtC,GAAuB,iBAAZL,SAAoD,mBAArBA,QAAQM,SAAyB,OAAON,QAAQM,SAASF,EAAaC,EAClH,CAqGO,SAASE,EAAcC,EAAIC,EAAMC,GACtC,GAAIA,GAA6B,IAArBrB,UAAUC,OAAc,IAAK,IAA4BqB,EAAxBxB,EAAI,EAAGyB,EAAIH,EAAKnB,OAAYH,EAAIyB,EAAGzB,KACxEwB,GAAQxB,KAAKsB,IACRE,IAAIA,EAAKxC,MAAME,UAAUwC,MAAMtC,KAAKkC,EAAM,EAAGtB,IAClDwB,EAAGxB,GAAKsB,EAAKtB,IAGrB,OAAOqB,EAAGM,OAAOH,GAAMxC,MAAME,UAAUwC,MAAMtC,KAAKkC,GACpD,CAiGkD,mBAApBM,iBAAiCA,gBC9TxD,IAAIC,EAAQ,+BAEnBC,EAAe,CACbC,IAAK,6BACLF,MAAOA,EACPG,MAAO,+BACPC,IAAK,uCACLC,MAAO,iCCLM,SAAAC,EAASC,GACtB,IAAIC,EAASD,GAAQ,GAAIpC,EAAIqC,EAAOC,QAAQ,KAE5C,OADItC,GAAK,GAAqC,WAA/BqC,EAASD,EAAKV,MAAM,EAAG1B,MAAiBoC,EAAOA,EAAKV,MAAM1B,EAAI,IACtE8B,EAAW3C,eAAekD,GAAU,CAACE,MAAOT,EAAWO,GAASG,MAAOJ,GAAQA,CACxF,CCHA,SAASK,EAAeL,GACtB,OAAO,WACL,IAAIM,EAAWjD,KAAKkD,cAChBC,EAAMnD,KAAKoD,aACf,OAAOD,IAAQf,GAASa,EAASI,gBAAgBD,eAAiBhB,EAC5Da,EAASK,cAAcX,GACvBM,EAASM,gBAAgBJ,EAAKR,EACxC,CACA,CAEA,SAASa,EAAaC,GACpB,OAAO,WACL,OAAOzD,KAAKkD,cAAcK,gBAAgBE,EAASX,MAAOW,EAASV,MACvE,CACA,CAEe,SAAAW,EAASf,GACtB,IAAIc,EAAWf,EAAUC,GACzB,OAAQc,EAASV,MACXS,EACAR,GAAgBS,EACxB,CCxBA,SAASE,IAAO,CAED,SAAAC,EAASA,GACtB,OAAmB,MAAZA,EAAmBD,EAAO,WAC/B,OAAO3D,KAAK6D,cAAcD,EAC9B,CACA,CCNA,SAASE,IACP,MAAO,EACT,CAEe,SAAAC,EAASH,GACtB,OAAmB,MAAZA,EAAmBE,EAAQ,WAChC,OAAO9D,KAAKgE,iBAAiBJ,EACjC,CACA,CCRe,SAAAK,EAASL,GACtB,OAAO,WACL,OAAO5D,KAAKkE,QAAQN,EACxB,CACA,CCJe,SAAAO,EAASC,GACtB,OAAO,IAAI7E,MAAM6E,EAAO1D,OAC1B,CCKO,SAAS2D,EAAUC,EAAQC,GAChCvE,KAAKkD,cAAgBoB,EAAOpB,cAC5BlD,KAAKoD,aAAekB,EAAOlB,aAC3BpD,KAAKwE,MAAQ,KACbxE,KAAKyE,QAAUH,EACftE,KAAK0E,SAAWH,CAClB,CAEAF,EAAU5E,UAAY,CACpBQ,YAAaoE,EACbM,YAAa,SAASC,GAAS,OAAO5E,KAAKyE,QAAQI,aAAaD,EAAO5E,KAAKwE,MAAO,EACnFK,aAAc,SAASD,EAAOE,GAAQ,OAAO9E,KAAKyE,QAAQI,aAAaD,EAAOE,EAAM,EACpFjB,cAAe,SAASD,GAAY,OAAO5D,KAAKyE,QAAQZ,cAAcD,EAAU,EAChFI,iBAAkB,SAASJ,GAAY,OAAO5D,KAAKyE,QAAQT,iBAAiBJ,EAAU,GChBxF,IAAImB,EAAY,IAEhB,SAASC,EAAUV,EAAQW,EAAOC,EAAOd,EAAQe,EAAMC,GASrD,IARA,IACIC,EADA9E,EAAI,EAEJ+E,EAAcL,EAAMvE,OACpB6E,EAAaH,EAAK1E,OAKfH,EAAIgF,IAAchF,GACnB8E,EAAOJ,EAAM1E,KACf8E,EAAKX,SAAWU,EAAK7E,GACrB6D,EAAO7D,GAAK8E,GAEZH,EAAM3E,GAAK,IAAI8D,EAAUC,EAAQc,EAAK7E,IAK1C,KAAOA,EAAI+E,IAAe/E,GACpB8E,EAAOJ,EAAM1E,MACf4E,EAAK5E,GAAK8E,EAGhB,CAEA,SAASG,EAAQlB,EAAQW,EAAOC,EAAOd,EAAQe,EAAMC,EAAMrE,GACzD,IAAIR,EACA8E,EAKAI,EAJAC,EAAiB,GACjBJ,EAAcL,EAAMvE,OACpB6E,EAAaH,EAAK1E,OAClBiF,EAAY,IAAIpG,MAAM+F,GAK1B,IAAK/E,EAAI,EAAGA,EAAI+E,IAAe/E,GACzB8E,EAAOJ,EAAM1E,MACfoF,EAAUpF,GAAKkF,EAAWV,EAAYhE,EAAIpB,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,GACnEQ,KAAYC,EACdP,EAAK5E,GAAK8E,EAEVK,EAAeD,GAAYJ,GAQjC,IAAK9E,EAAI,EAAGA,EAAIgF,IAAchF,GAExB8E,EAAOK,EADXD,EAAWV,EAAYhE,EAAIpB,KAAK2E,EAAQc,EAAK7E,GAAIA,EAAG6E,MAElDhB,EAAO7D,GAAK8E,EACZA,EAAKX,SAAWU,EAAK7E,GACrBmF,EAAeD,GAAY,MAE3BP,EAAM3E,GAAK,IAAI8D,EAAUC,EAAQc,EAAK7E,IAK1C,IAAKA,EAAI,EAAGA,EAAI+E,IAAe/E,GACxB8E,EAAOJ,EAAM1E,KAAQmF,EAAeC,EAAUpF,MAAQ8E,IACzDF,EAAK5E,GAAK8E,EAGhB,CCrDA,SAASO,EAAUC,EAAG1G,GACpB,OAAO0G,EAAI1G,GAAK,EAAI0G,EAAI1G,EAAI,EAAI0G,GAAK1G,EAAI,EAAI2G,GAC/C,CCrBA,SAASC,EAAWpD,GAClB,OAAO,WACL3C,KAAKgG,gBAAgBrD,EACzB,CACA,CAEA,SAASsD,EAAaxC,GACpB,OAAO,WACLzD,KAAKkG,kBAAkBzC,EAASX,MAAOW,EAASV,MACpD,CACA,CAEA,SAASoD,EAAaxD,EAAMyD,GAC1B,OAAO,WACLpG,KAAKqG,aAAa1D,EAAMyD,EAC5B,CACA,CAEA,SAASE,EAAe7C,EAAU2C,GAChC,OAAO,WACLpG,KAAKuG,eAAe9C,EAASX,MAAOW,EAASV,MAAOqD,EACxD,CACA,CAEA,SAASI,EAAa7D,EAAMyD,GAC1B,OAAO,WACL,IAAIK,EAAIL,EAAMzF,MAAMX,KAAMS,WACjB,MAALgG,EAAWzG,KAAKgG,gBAAgBrD,GAC/B3C,KAAKqG,aAAa1D,EAAM8D,EACjC,CACA,CAEA,SAASC,EAAejD,EAAU2C,GAChC,OAAO,WACL,IAAIK,EAAIL,EAAMzF,MAAMX,KAAMS,WACjB,MAALgG,EAAWzG,KAAKkG,kBAAkBzC,EAASX,MAAOW,EAASV,OAC1D/C,KAAKuG,eAAe9C,EAASX,MAAOW,EAASV,MAAO0D,EAC7D,CACA,CCxCe,SAAAE,EAAStB,GACtB,OAAQA,EAAKnC,eAAiBmC,EAAKnC,cAAcyD,aACzCtB,EAAKpC,UAAYoC,GAClBA,EAAKsB,WACd,CCFA,SAASC,EAAYjE,GACnB,OAAO,WACL3C,KAAK6G,MAAMC,eAAenE,EAC9B,CACA,CAEA,SAASoE,EAAcpE,EAAMyD,EAAOY,GAClC,OAAO,WACLhH,KAAK6G,MAAMI,YAAYtE,EAAMyD,EAAOY,EACxC,CACA,CAEA,SAASE,EAAcvE,EAAMyD,EAAOY,GAClC,OAAO,WACL,IAAIP,EAAIL,EAAMzF,MAAMX,KAAMS,WACjB,MAALgG,EAAWzG,KAAK6G,MAAMC,eAAenE,GACpC3C,KAAK6G,MAAMI,YAAYtE,EAAM8D,EAAGO,EACzC,CACA,CAWO,SAASG,EAAW9B,EAAM1C,GAC/B,OAAO0C,EAAKwB,MAAMO,iBAAiBzE,IAC5BgE,EAAYtB,GAAMgC,iBAAiBhC,EAAM,MAAM+B,iBAAiBzE,EACzE,CClCA,SAAS2E,EAAe3E,GACtB,OAAO,kBACE3C,KAAK2C,EAChB,CACA,CAEA,SAAS4E,EAAiB5E,EAAMyD,GAC9B,OAAO,WACLpG,KAAK2C,GAAQyD,CACjB,CACA,CAEA,SAASoB,EAAiB7E,EAAMyD,GAC9B,OAAO,WACL,IAAIK,EAAIL,EAAMzF,MAAMX,KAAMS,WACjB,MAALgG,SAAkBzG,KAAK2C,GACtB3C,KAAK2C,GAAQ8D,CACtB,CACA,CClBA,SAASgB,EAAWC,GAClB,OAAOA,EAAOC,OAAOC,MAAM,QAC7B,CAEA,SAASC,EAAUxC,GACjB,OAAOA,EAAKwC,WAAa,IAAIC,EAAUzC,EACzC,CAEA,SAASyC,EAAUzC,GACjBrF,KAAK+H,MAAQ1C,EACbrF,KAAKgI,OAASP,EAAWpC,EAAK4C,aAAa,UAAY,GACzD,CAsBA,SAASC,EAAW7C,EAAM8C,GAExB,IADA,IAAIC,EAAOP,EAAUxC,GAAO9E,GAAK,EAAGC,EAAI2H,EAAMzH,SACrCH,EAAIC,GAAG4H,EAAKC,IAAIF,EAAM5H,GACjC,CAEA,SAAS+H,EAAcjD,EAAM8C,GAE3B,IADA,IAAIC,EAAOP,EAAUxC,GAAO9E,GAAK,EAAGC,EAAI2H,EAAMzH,SACrCH,EAAIC,GAAG4H,EAAKG,OAAOJ,EAAM5H,GACpC,CAEA,SAASiI,EAAYL,GACnB,OAAO,WACLD,EAAWlI,KAAMmI,EACrB,CACA,CAEA,SAASM,EAAaN,GACpB,OAAO,WACLG,EAActI,KAAMmI,EACxB,CACA,CAEA,SAASO,EAAgBP,EAAO/B,GAC9B,OAAO,YACJA,EAAMzF,MAAMX,KAAMS,WAAayH,EAAaI,GAAetI,KAAMmI,EACtE,CACA,CC3DA,SAASQ,IACP3I,KAAK4I,YAAc,EACrB,CAEA,SAASC,EAAazC,GACpB,OAAO,WACLpG,KAAK4I,YAAcxC,CACvB,CACA,CAEA,SAAS0C,EAAa1C,GACpB,OAAO,WACL,IAAIK,EAAIL,EAAMzF,MAAMX,KAAMS,WAC1BT,KAAK4I,YAAmB,MAALnC,EAAY,GAAKA,CACxC,CACA,CCfA,SAASsC,IACP/I,KAAKgJ,UAAY,EACnB,CAEA,SAASC,EAAa7C,GACpB,OAAO,WACLpG,KAAKgJ,UAAY5C,CACrB,CACA,CAEA,SAAS8C,EAAa9C,GACpB,OAAO,WACL,IAAIK,EAAIL,EAAMzF,MAAMX,KAAMS,WAC1BT,KAAKgJ,UAAiB,MAALvC,EAAY,GAAKA,CACtC,CACA,CCfA,SAAS0C,IACHnJ,KAAKoJ,aAAapJ,KAAKqJ,WAAW1E,YAAY3E,KACpD,CCFA,SAASsJ,KACHtJ,KAAKuJ,iBAAiBvJ,KAAKqJ,WAAWxE,aAAa7E,KAAMA,KAAKqJ,WAAWG,WAC/E,CCCA,SAASC,KACP,OAAO,IACT,CCLA,SAASlB,KACP,IAAIjE,EAAStE,KAAKqJ,WACd/E,GAAQA,EAAOoF,YAAY1J,KACjC,CCHA,SAAS2J,KACP,IAAIC,EAAQ5J,KAAK6J,WAAU,GAAQvF,EAAStE,KAAKqJ,WACjD,OAAO/E,EAASA,EAAOO,aAAa+E,EAAO5J,KAAKoJ,aAAeQ,CACjE,CAEA,SAASE,KACP,IAAIF,EAAQ5J,KAAK6J,WAAU,GAAOvF,EAAStE,KAAKqJ,WAChD,OAAO/E,EAASA,EAAOO,aAAa+E,EAAO5J,KAAKoJ,aAAeQ,CACjE,CPKA9B,EAAUrI,UAAY,CACpB4I,IAAK,SAAS1F,GACJ3C,KAAKgI,OAAOnF,QAAQF,GACpB,IACN3C,KAAKgI,OAAO+B,KAAKpH,GACjB3C,KAAK+H,MAAM1B,aAAa,QAASrG,KAAKgI,OAAOgC,KAAK,MAExD,EACEzB,OAAQ,SAAS5F,GACf,IAAIpC,EAAIP,KAAKgI,OAAOnF,QAAQF,GACxBpC,GAAK,IACPP,KAAKgI,OAAOiC,OAAO1J,EAAG,GACtBP,KAAK+H,MAAM1B,aAAa,QAASrG,KAAKgI,OAAOgC,KAAK,MAExD,EACEE,SAAU,SAASvH,GACjB,OAAO3C,KAAKgI,OAAOnF,QAAQF,IAAS,CACxC,GQ9BA,IAAIwH,GAAe,IAERC,QAAQ,KAEK,oBAAbnH,YAEH,iBADQA,SAASI,kBAErB8G,GAAe,CAACE,WAAY,YAAaC,WAAY,cAIzD,SAASC,GAAsBC,EAAUC,EAAOxF,GAE9C,OADAuF,EAAWE,GAAgBF,EAAUC,EAAOxF,GACrC,SAASmF,GACd,IAAIO,EAAUP,EAAMQ,cACfD,IAAYA,IAAY3K,MAAkD,EAAxC2K,EAAQE,wBAAwB7K,QACrEwK,EAAS7K,KAAKK,KAAMoK,EAE1B,CACA,CAEA,SAASM,GAAgBF,EAAUC,EAAOxF,GACxC,OAAO,SAAS6F,GACd,IAAIC,EAASX,QACbA,QAAQU,EACR,IACEN,EAAS7K,KAAKK,KAAMA,KAAK0E,SAAU+F,EAAOxF,EAChD,CAAK,QACCmF,QAAQW,CACd,CACA,CACA,CAUA,SAASC,GAASC,GAChB,OAAO,WACL,IAAIC,EAAKlL,KAAKmL,KACd,GAAKD,EAAL,CACA,IAAK,IAAkCE,EAA9BC,EAAI,EAAG9K,GAAK,EAAG+K,EAAIJ,EAAGxK,OAAW2K,EAAIC,IAAKD,EAC7CD,EAAIF,EAAGG,GAAMJ,EAASM,MAAQH,EAAEG,OAASN,EAASM,MAASH,EAAEzI,OAASsI,EAAStI,KAGjFuI,IAAK3K,GAAK6K,EAFVpL,KAAKwL,oBAAoBJ,EAAEG,KAAMH,EAAEZ,SAAUY,EAAEK,WAK7ClL,EAAG2K,EAAGxK,OAASH,SACTP,KAAKmL,IATR,CAUb,CACA,CAEA,SAASO,GAAMT,EAAU7E,EAAOqF,GAC9B,IAAIE,EAAOxB,GAAazK,eAAeuL,EAASM,MAAQhB,GAAwBG,GAChF,OAAO,SAASxL,EAAGqB,EAAG0E,GACpB,IAAoBmG,EAAhBF,EAAKlL,KAAKmL,KAASX,EAAWmB,EAAKvF,EAAO7F,EAAG0E,GACjD,GAAIiG,EAAI,IAAK,IAAIG,EAAI,EAAGC,EAAIJ,EAAGxK,OAAQ2K,EAAIC,IAAKD,EAC9C,IAAKD,EAAIF,EAAGG,IAAIE,OAASN,EAASM,MAAQH,EAAEzI,OAASsI,EAAStI,KAI5D,OAHA3C,KAAKwL,oBAAoBJ,EAAEG,KAAMH,EAAEZ,SAAUY,EAAEK,SAC/CzL,KAAK4L,iBAAiBR,EAAEG,KAAMH,EAAEZ,SAAWA,EAAUY,EAAEK,QAAUA,QACjEL,EAAEhF,MAAQA,GAIdpG,KAAK4L,iBAAiBX,EAASM,KAAMf,EAAUiB,GAC/CL,EAAI,CAACG,KAAMN,EAASM,KAAM5I,KAAMsI,EAAStI,KAAMyD,MAAOA,EAAOoE,SAAUA,EAAUiB,QAASA,GACrFP,EACAA,EAAGnB,KAAKqB,GADJpL,KAAKmL,KAAO,CAACC,EAE1B,CACA,CAuBO,SAASS,GAAYf,EAAQN,EAAUsB,EAAMC,GAClD,IAAIhB,EAASX,QACbU,EAAOkB,YAAc5B,QACrBA,QAAQU,EACR,IACE,OAAON,EAAS7J,MAAMmL,EAAMC,EAChC,CAAG,QACC3B,QAAQW,CACZ,CACA,CCxGA,SAASkB,GAAc5G,EAAMkG,EAAMW,GACjC,IAAIC,EAASxF,EAAYtB,GACrB+E,EAAQ+B,EAAOC,YAEE,mBAAVhC,EACTA,EAAQ,IAAIA,EAAMmB,EAAMW,IAExB9B,EAAQ+B,EAAOlJ,SAASoJ,YAAY,SAChCH,GAAQ9B,EAAMkC,UAAUf,EAAMW,EAAOK,QAASL,EAAOM,YAAapC,EAAMqC,OAASP,EAAOO,QACvFrC,EAAMkC,UAAUf,GAAM,GAAO,IAGpClG,EAAK4G,cAAc7B,EACrB,CAEA,SAASsC,GAAiBnB,EAAMW,GAC9B,OAAO,WACL,OAAOD,GAAcjM,KAAMuL,EAAMW,EACrC,CACA,CAEA,SAASS,GAAiBpB,EAAMW,GAC9B,OAAO,WACL,OAAOD,GAAcjM,KAAMuL,EAAMW,EAAOvL,MAAMX,KAAMS,WACxD,CACA,CCKO,IAAImM,GAAO,CAAC,MAEZ,SAASC,GAAUC,EAAQC,GAChC/M,KAAKgN,QAAUF,EACf9M,KAAKiN,SAAWF,CAClB,CAEA,SAASG,KACP,OAAO,IAAIL,GAAU,CAAC,CAAC5J,SAASI,kBAAmBuJ,GACrD,CCvCe,SAAAO,GAASvJ,GACtB,MAA2B,iBAAbA,EACR,IAAIiJ,GAAU,CAAC,CAAC5J,SAASY,cAAcD,KAAa,CAACX,SAASI,kBAC9D,IAAIwJ,GAAU,CAAC,CAACjJ,IAAYgJ,GACpC,CDqCAC,GAAUpN,UAAYyN,GAAUzN,UAAY,CAC1CQ,YAAa4M,GACbM,OE1Ca,SAASA,GACA,mBAAXA,IAAuBA,EAASvJ,EAASuJ,IAEpD,IAAK,IAAIL,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,IAAI7N,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAC3F,IAAK,IAAiFhG,EAAMgI,EAAnFpI,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAQ4M,EAAWF,EAAU/B,GAAK,IAAI9L,MAAMiB,GAAmBD,EAAI,EAAGA,EAAIC,IAAKD,GAC9G8E,EAAOJ,EAAM1E,MAAQ8M,EAAUF,EAAOxN,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,MAClE,aAAcI,IAAMgI,EAAQ3I,SAAWW,EAAKX,UAChD4I,EAAS/M,GAAK8M,GAKpB,OAAO,IAAIR,GAAUO,EAAWpN,KAAKiN,SACvC,EF8BEM,UG3Ca,SAASJ,GACA,mBAAXA,IAAuBA,EAASpJ,EAAYoJ,IAEvD,IAAK,IAAIL,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,GAAIL,EAAU,GAAI1B,EAAI,EAAGA,EAAIC,IAAKD,EAC/F,IAAK,IAAyChG,EAArCJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAcH,EAAI,EAAGA,EAAIC,IAAKD,GAC9D8E,EAAOJ,EAAM1E,MACf6M,EAAUrD,KAAKoD,EAAOxN,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,IACnD8H,EAAQhD,KAAK1E,IAKnB,OAAO,IAAIwH,GAAUO,EAAWL,EAClC,EH+BES,OI5Ca,SAASC,GACD,mBAAVA,IAAsBA,EAAQxJ,EAAQwJ,IAEjD,IAAK,IAAIX,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,IAAI7N,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAC3F,IAAK,IAAuEhG,EAAnEJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAQ4M,EAAWF,EAAU/B,GAAK,GAAU9K,EAAI,EAAGA,EAAIC,IAAKD,GAC3F8E,EAAOJ,EAAM1E,KAAOkN,EAAM9N,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,IAC1DqI,EAASvD,KAAK1E,GAKpB,OAAO,IAAIwH,GAAUO,EAAWpN,KAAKiN,SACvC,EJiCE7H,KhB4Ba,SAASgB,EAAOrF,GAC7B,IAAKqF,EAGH,OAFAhB,EAAO,IAAI7F,MAAMS,KAAK0N,QAASrC,GAAK,EACpCrL,KAAK2N,MAAK,SAASzO,GAAKkG,IAAOiG,GAAKnM,CAAE,IAC/BkG,EAGT,IqBnFsBwI,ErBmFlBC,EAAO9M,EAAMyE,EAAUR,EACvB+H,EAAU/M,KAAKiN,SACfH,EAAS9M,KAAKgN,QAEG,mBAAV5G,IqBvFWwH,ErBuF4BxH,EAAjBA,EqBtF1B,WACL,OAAOwH,CACX,GrBsFE,IAAK,IAAItC,EAAIwB,EAAOpM,OAAQ0D,EAAS,IAAI7E,MAAM+L,GAAIpG,EAAQ,IAAI3F,MAAM+L,GAAInG,EAAO,IAAI5F,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAAG,CAC/G,IAAI/G,EAASyI,EAAQ1B,GACjBpG,EAAQ6H,EAAOzB,GACf/F,EAAcL,EAAMvE,OACpB0E,EAAOgB,EAAMzG,KAAK2E,EAAQA,GAAUA,EAAOI,SAAU2G,EAAG0B,GACxDxH,EAAaH,EAAK1E,OAClBoN,EAAa5I,EAAMmG,GAAK,IAAI9L,MAAMgG,GAClCwI,EAAc3J,EAAOiH,GAAK,IAAI9L,MAAMgG,GAGxCsI,EAAKvJ,EAAQW,EAAO6I,EAAYC,EAFhB5I,EAAKkG,GAAK,IAAI9L,MAAM+F,GAEoBF,EAAMrE,GAK9D,IAAK,IAAoBiN,EAAUlJ,EAA1BmJ,EAAK,EAAGC,EAAK,EAAmBD,EAAK1I,IAAc0I,EAC1D,GAAID,EAAWF,EAAWG,GAAK,CAE7B,IADIA,GAAMC,IAAIA,EAAKD,EAAK,KACfnJ,EAAOiJ,EAAYG,OAAUA,EAAK3I,IAC3CyI,EAASxJ,MAAQM,GAAQ,IACjC,CAEA,CAKE,OAHAV,EAAS,IAAIyI,GAAUzI,EAAQ2I,IACxBoB,OAASjJ,EAChBd,EAAOgK,MAAQjJ,EACRf,CACT,EgBpEEc,MjB9Ca,WACb,OAAO,IAAI2H,GAAU7M,KAAKmO,QAAUnO,KAAKgN,QAAQqB,IAAIlK,GAASnE,KAAKiN,SACrE,EiB6CE9H,KM/Ca,WACb,OAAO,IAAI0H,GAAU7M,KAAKoO,OAASpO,KAAKgN,QAAQqB,IAAIlK,GAASnE,KAAKiN,SACpE,EN8CEjD,KOnDa,SAASsE,EAASC,EAAUC,GACzC,IAAItJ,EAAQlF,KAAKkF,QAASd,EAASpE,KAAMmF,EAAOnF,KAAKmF,OAIrD,OAHAD,EAA2B,mBAAZoJ,EAAyBA,EAAQpJ,GAASA,EAAMuJ,OAAOH,EAAU,IAChE,MAAZC,IAAkBnK,EAASmK,EAASnK,IAC1B,MAAVoK,EAAgBrJ,EAAKoD,SAAeiG,EAAOrJ,GACxCD,GAASd,EAASc,EAAMwJ,MAAMtK,GAAQuK,QAAUvK,CACzD,EP8CEsK,MQlDa,SAASxB,GAEtB,IAAK,IAAI0B,EAAU5O,KAAKgN,QAAS6B,EAAU3B,EAAUF,QAAS8B,EAAKF,EAAQlO,OAAQqO,EAAKF,EAAQnO,OAAQ4K,EAAI0D,KAAKC,IAAIH,EAAIC,GAAKG,EAAS,IAAI3P,MAAMuP,GAAKzD,EAAI,EAAGA,EAAIC,IAAKD,EACpK,IAAK,IAAmGhG,EAA/F8J,EAASP,EAAQvD,GAAI+D,EAASP,EAAQxD,GAAI7K,EAAI2O,EAAOzO,OAAQgO,EAAQQ,EAAO7D,GAAK,IAAI9L,MAAMiB,GAAUD,EAAI,EAAGA,EAAIC,IAAKD,GACxH8E,EAAO8J,EAAO5O,IAAM6O,EAAO7O,MAC7BmO,EAAMnO,GAAK8E,GAKjB,KAAOgG,EAAIyD,IAAMzD,EACf6D,EAAO7D,GAAKuD,EAAQvD,GAGtB,OAAO,IAAIwB,GAAUqC,EAAQlP,KAAKiN,SACpC,ERoCE0B,MSrDa,WAEb,IAAK,IAAI7B,EAAS9M,KAAKgN,QAAS3B,GAAK,EAAGC,EAAIwB,EAAOpM,SAAU2K,EAAIC,GAC/D,IAAK,IAA8DjG,EAA1DJ,EAAQ6H,EAAOzB,GAAI9K,EAAI0E,EAAMvE,OAAS,EAAGoE,EAAOG,EAAM1E,KAAYA,GAAK,IAC1E8E,EAAOJ,EAAM1E,MACXuE,GAA6C,EAArCO,EAAKwF,wBAAwB/F,IAAWA,EAAKuE,WAAWxE,aAAaQ,EAAMP,GACvFA,EAAOO,GAKb,OAAOrF,IACT,ET0CEqP,KfpDa,SAASC,GAGtB,SAASC,EAAY1J,EAAG1G,GACtB,OAAO0G,GAAK1G,EAAImQ,EAAQzJ,EAAEnB,SAAUvF,EAAEuF,WAAamB,GAAK1G,CAC5D,CAJOmQ,IAASA,EAAU1J,GAMxB,IAAK,IAAIkH,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ8O,EAAa,IAAIjQ,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAAG,CAC/F,IAAK,IAAmFhG,EAA/EJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAQ+O,EAAYD,EAAWnE,GAAK,IAAI9L,MAAMiB,GAAUD,EAAI,EAAGA,EAAIC,IAAKD,GACxG8E,EAAOJ,EAAM1E,MACfkP,EAAUlP,GAAK8E,GAGnBoK,EAAUJ,KAAKE,EACnB,CAEE,OAAO,IAAI1C,GAAU2C,EAAYxP,KAAKiN,UAAU0B,OAClD,EeoCEhP,KUvDa,WACb,IAAI+P,EAAWjP,UAAU,GAGzB,OAFAA,UAAU,GAAKT,KACf0P,EAAS/O,MAAM,KAAMF,WACdT,IACT,EVmDE2P,MWxDa,WACb,IAAIA,EAAQ,IAAIpQ,MAAMS,KAAK0N,QAASnN,GAAK,EAEzC,OADAP,KAAK2N,MAAK,WAAagC,IAAQpP,GAAKP,IAAK,IAClC2P,CACT,EXqDEtK,KYzDa,WAEb,IAAK,IAAIyH,EAAS9M,KAAKgN,QAAS3B,EAAI,EAAGC,EAAIwB,EAAOpM,OAAQ2K,EAAIC,IAAKD,EACjE,IAAK,IAAIpG,EAAQ6H,EAAOzB,GAAI9K,EAAI,EAAGC,EAAIyE,EAAMvE,OAAQH,EAAIC,IAAKD,EAAG,CAC/D,IAAI8E,EAAOJ,EAAM1E,GACjB,GAAI8E,EAAM,OAAOA,CACvB,CAGE,OAAO,IACT,EZgDEqI,Ka1Da,WACb,IAAIA,EAAO,EAEX,OADA1N,KAAK2N,MAAK,aAAeD,CAAK,IACvBA,CACT,EbuDE5J,Mc3Da,WACb,OAAQ9D,KAAKqF,MACf,Ed0DEsI,Ke5Da,SAAS+B,GAEtB,IAAK,IAAI5C,EAAS9M,KAAKgN,QAAS3B,EAAI,EAAGC,EAAIwB,EAAOpM,OAAQ2K,EAAIC,IAAKD,EACjE,IAAK,IAAgDhG,EAA5CJ,EAAQ6H,EAAOzB,GAAI9K,EAAI,EAAGC,EAAIyE,EAAMvE,OAAcH,EAAIC,IAAKD,GAC9D8E,EAAOJ,EAAM1E,KAAImP,EAAS/P,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,GAI/D,OAAOjF,IACT,EfoDE4P,KdnBa,SAASjN,EAAMyD,GAC5B,IAAI3C,EAAWf,EAAUC,GAEzB,GAAIlC,UAAUC,OAAS,EAAG,CACxB,IAAI2E,EAAOrF,KAAKqF,OAChB,OAAO5B,EAASV,MACVsC,EAAKwK,eAAepM,EAASX,MAAOW,EAASV,OAC7CsC,EAAK4C,aAAaxE,EAC5B,CAEE,OAAOzD,KAAK2N,MAAe,MAATvH,EACX3C,EAASV,MAAQkD,EAAeF,EAAgC,mBAAVK,EACtD3C,EAASV,MAAQ2D,EAAiBF,EAClC/C,EAASV,MAAQuD,EAAiBH,GAAgB1C,EAAU2C,GACrE,EcMES,MZxCa,SAASlE,EAAMyD,EAAOY,GACnC,OAAOvG,UAAUC,OAAS,EACpBV,KAAK2N,MAAe,MAATvH,EACLQ,EAA+B,mBAAVR,EACrBc,EACAH,GAAepE,EAAMyD,EAAmB,MAAZY,EAAmB,GAAKA,IAC1DG,EAAWnH,KAAKqF,OAAQ1C,EAChC,EYkCEmN,SX3Ca,SAASnN,EAAMyD,GAC5B,OAAO3F,UAAUC,OAAS,EACpBV,KAAK2N,MAAe,MAATvH,EACPkB,EAAkC,mBAAVlB,EACxBoB,EACAD,GAAkB5E,EAAMyD,IAC5BpG,KAAKqF,OAAO1C,EACpB,EWqCEoN,QVHa,SAASpN,EAAMyD,GAC5B,IAAI+B,EAAQV,EAAW9E,EAAO,IAE9B,GAAIlC,UAAUC,OAAS,EAAG,CAExB,IADA,IAAI0H,EAAOP,EAAU7H,KAAKqF,QAAS9E,GAAK,EAAGC,EAAI2H,EAAMzH,SAC5CH,EAAIC,OAAQ4H,EAAK8B,SAAS/B,EAAM5H,IAAK,OAAO,EACrD,OAAO,CACX,CAEE,OAAOP,KAAK2N,MAAuB,mBAAVvH,EACnBsC,EAAkBtC,EAClBoC,EACAC,GAAcN,EAAO/B,GAC7B,EUTE4J,KThDa,SAAS5J,GACtB,OAAO3F,UAAUC,OACXV,KAAK2N,KAAc,MAATvH,EACNuC,GAA+B,mBAAVvC,EACrB0C,EACAD,GAAczC,IAClBpG,KAAKqF,OAAOuD,WACpB,ES0CEqH,KRjDa,SAAS7J,GACtB,OAAO3F,UAAUC,OACXV,KAAK2N,KAAc,MAATvH,EACN2C,GAA+B,mBAAV3C,EACrB8C,EACAD,GAAc7C,IAClBpG,KAAKqF,OAAO2D,SACpB,EQ2CEG,MP/Da,WACb,OAAOnJ,KAAK2N,KAAKxE,EACnB,EO8DEG,MNhEa,WACb,OAAOtJ,KAAK2N,KAAKrE,GACnB,EM+DEmF,OgBnEa,SAAS9L,GACtB,IAAIzC,EAAyB,mBAATyC,EAAsBA,EAAOe,EAAQf,GACzD,OAAO3C,KAAKmN,QAAO,WACjB,OAAOnN,KAAK2E,YAAYzE,EAAOS,MAAMX,KAAMS,WAC/C,GACA,EhB+DEyP,OL/Da,SAASvN,EAAMwN,GAC5B,IAAIjQ,EAAyB,mBAATyC,EAAsBA,EAAOe,EAAQf,GACrDwK,EAAmB,MAAVgD,EAAiB1G,GAAiC,mBAAX0G,EAAwBA,EAASvM,EAASuM,GAC9F,OAAOnQ,KAAKmN,QAAO,WACjB,OAAOnN,KAAK6E,aAAa3E,EAAOS,MAAMX,KAAMS,WAAY0M,EAAOxM,MAAMX,KAAMS,YAAc,KAC7F,GACA,EK0DE8H,OJlEa,WACb,OAAOvI,KAAK2N,KAAKpF,GACnB,EIiEEqB,MH9Da,SAASwG,GACtB,OAAOpQ,KAAKmN,OAAOiD,EAAOtG,GAAsBH,GAClD,EG6DEpF,MiBzEa,SAAS6B,GACtB,OAAO3F,UAAUC,OACXV,KAAK8P,SAAS,WAAY1J,GAC1BpG,KAAKqF,OAAOX,QACpB,EjBsEEwG,GFEa,SAASD,EAAU7E,EAAOqF,GACvC,IAA+ClL,EAAyBF,EAApEgQ,EA5CN,SAAwBA,GACtB,OAAOA,EAAU1I,OAAOC,MAAM,SAASyG,KAAI,SAAShO,GAClD,IAAIsC,EAAO,GAAIpC,EAAIF,EAAEwC,QAAQ,KAE7B,OADItC,GAAK,IAAGoC,EAAOtC,EAAE4B,MAAM1B,EAAI,GAAIF,EAAIA,EAAE4B,MAAM,EAAG1B,IAC3C,CAACgL,KAAMlL,EAAGsC,KAAMA,EAC3B,GACA,CAsCkB2N,CAAerF,EAAW,IAAQzK,EAAI6P,EAAU3P,OAEhE,KAAID,UAAUC,OAAS,GAAvB,CAcA,IAFAwK,EAAK9E,EAAQsF,GAAQV,GACN,MAAXS,IAAiBA,GAAU,GAC1BlL,EAAI,EAAGA,EAAIC,IAAKD,EAAGP,KAAK2N,KAAKzC,EAAGmF,EAAU9P,GAAI6F,EAAOqF,IAC1D,OAAOzL,IALT,CATI,IAAIkL,EAAKlL,KAAKqF,OAAO8F,KACrB,GAAID,EAAI,IAAK,IAA0BE,EAAtBC,EAAI,EAAGC,EAAIJ,EAAGxK,OAAW2K,EAAIC,IAAKD,EACjD,IAAK9K,EAAI,EAAG6K,EAAIF,EAAGG,GAAI9K,EAAIC,IAAKD,EAC9B,IAAKF,EAAIgQ,EAAU9P,IAAIgL,OAASH,EAAEG,MAAQlL,EAAEsC,OAASyI,EAAEzI,KACrD,OAAOyI,EAAEhF,KAWnB,EEpBEmK,SD9Ca,SAAShF,EAAMW,GAC5B,OAAOlM,KAAK2N,MAAwB,mBAAXzB,EACnBS,GACAD,IAAkBnB,EAAMW,GAChC,GmBjCA,IAAIsE,GAAS,EAEE,SAASzN,KACtB,OAAO,IAAI0N,EACb,CAEA,SAASA,KACPzQ,KAAK0Q,EAAI,OAASF,IAAQG,SAAS,GACrC,CCNe,SAAA3E,KAEb,IADA,IAAqB4E,EAAjBC,EAAUzG,QACPwG,EAASC,EAAQ7E,aAAa6E,EAAUD,EAC/C,OAAOC,CACT,CCNe,SAAAC,GAASzL,EAAM+E,GAC5B,IAAI9H,EAAM+C,EAAK0L,iBAAmB1L,EAElC,GAAI/C,EAAI0O,eAAgB,CACtB,IAAIC,EAAQ3O,EAAI0O,iBAGhB,OAFAC,EAAMrD,EAAIxD,EAAM8G,QAASD,EAAME,EAAI/G,EAAMgH,QAElC,EADPH,EAAQA,EAAMI,gBAAgBhM,EAAKiM,eAAeC,YACpC3D,EAAGqD,EAAME,EAC3B,CAEE,IAAIK,EAAOnM,EAAKoM,wBAChB,MAAO,CAACrH,EAAM8G,QAAUM,EAAKE,KAAOrM,EAAKsM,WAAYvH,EAAMgH,QAAUI,EAAKI,IAAMvM,EAAKwM,UACvF,CCTe,SAAAC,GAASzM,GACtB,IAAI+E,EAAQ4B,KAEZ,OADI5B,EAAM2H,iBAAgB3H,EAAQA,EAAM2H,eAAe,IAChDd,GAAM5L,EAAM+E,EACrB,CCJe,SAAA4H,GAAS3M,EAAM4M,EAASC,GACjCzR,UAAUC,OAAS,IAAGwR,EAAaD,EAASA,EAAUjG,KAAc+F,gBAExE,IAAK,IAA6CC,EAAzCzR,EAAI,EAAGC,EAAIyR,EAAUA,EAAQvR,OAAS,EAAUH,EAAIC,IAAKD,EAChE,IAAKyR,EAAQC,EAAQ1R,IAAI2R,aAAeA,EACtC,OAAOjB,GAAM5L,EAAM2M,GAIvB,OAAO,IACT,CJHAvB,GAAMhR,UAAYsD,GAAMtD,UAAY,CAClCQ,YAAawQ,GACb0B,IAAK,SAAS9M,GAEZ,IADA,IAAI+M,EAAKpS,KAAK0Q,IACL0B,KAAM/M,SAAaA,EAAOA,EAAKgE,YAAa,OACrD,OAAOhE,EAAK+M,EAChB,EACEC,IAAK,SAAShN,EAAMe,GAClB,OAAOf,EAAKrF,KAAK0Q,GAAKtK,CAC1B,EACEmC,OAAQ,SAASlD,GACf,OAAOrF,KAAK0Q,KAAKrL,UAAeA,EAAKrF,KAAK0Q,EAC9C,EACEC,SAAU,WACR,OAAO3Q,KAAK0Q,CAChB,GKzBA,IAAI4B,GAAO,CAAClM,MAAO,WAAW,GAE9B,SAASmK,KACP,IAAK,IAAyClQ,EAArCE,EAAI,EAAGC,EAAIC,UAAUC,OAAQgQ,EAAI,GAAOnQ,EAAIC,IAAKD,EAAG,CAC3D,KAAMF,EAAII,UAAUF,GAAK,KAAQF,KAAKqQ,GAAM,QAAQ6B,KAAKlS,GAAI,MAAM,IAAImS,MAAM,iBAAmBnS,GAChGqQ,EAAErQ,GAAK,EACX,CACE,OAAO,IAAIoS,GAAS/B,EACtB,CAEA,SAAS+B,GAAS/B,GAChB1Q,KAAK0Q,EAAIA,CACX,CAoDA,SAASyB,GAAI5G,EAAM5I,GACjB,IAAK,IAA4B1B,EAAxBV,EAAI,EAAGC,EAAI+K,EAAK7K,OAAWH,EAAIC,IAAKD,EAC3C,IAAKU,EAAIsK,EAAKhL,IAAIoC,OAASA,EACzB,OAAO1B,EAAEmF,KAGf,CAEA,SAASiM,GAAI9G,EAAM5I,EAAM+M,GACvB,IAAK,IAAInP,EAAI,EAAGC,EAAI+K,EAAK7K,OAAQH,EAAIC,IAAKD,EACxC,GAAIgL,EAAKhL,GAAGoC,OAASA,EAAM,CACzB4I,EAAKhL,GAAK+R,GAAM/G,EAAOA,EAAKtJ,MAAM,EAAG1B,GAAG2B,OAAOqJ,EAAKtJ,MAAM1B,EAAI,IAC9D,KACN,CAGE,OADgB,MAAZmP,GAAkBnE,EAAKxB,KAAK,CAACpH,KAAMA,EAAMyD,MAAOsJ,IAC7CnE,CACT,CA1DAkH,GAAShT,UAAY8Q,GAAS9Q,UAAY,CACxCQ,YAAawS,GACbvH,GAAI,SAASD,EAAUyE,GACrB,IAEIrP,EAd2BqS,EAY3BhC,EAAI1Q,KAAK0Q,EACTiC,GAb2BD,EAaOhC,GAAfzF,EAAW,IAZnBtD,OAAOC,MAAM,SAASyG,KAAI,SAAShO,GAClD,IAAIsC,EAAO,GAAIpC,EAAIF,EAAEwC,QAAQ,KAE7B,GADItC,GAAK,IAAGoC,EAAOtC,EAAE4B,MAAM1B,EAAI,GAAIF,EAAIA,EAAE4B,MAAM,EAAG1B,IAC9CF,IAAMqS,EAAMhT,eAAeW,GAAI,MAAM,IAAImS,MAAM,iBAAmBnS,GACtE,MAAO,CAACkL,KAAMlL,EAAGsC,KAAMA,EAC3B,KASQpC,GAAK,EACLC,EAAImS,EAAEjS,OAGV,KAAID,UAAUC,OAAS,GAAvB,CAOA,GAAgB,MAAZgP,GAAwC,mBAAbA,EAAyB,MAAM,IAAI8C,MAAM,qBAAuB9C,GAC/F,OAASnP,EAAIC,GACX,GAAIH,GAAK4K,EAAW0H,EAAEpS,IAAIgL,KAAMmF,EAAErQ,GAAKgS,GAAI3B,EAAErQ,GAAI4K,EAAStI,KAAM+M,QAC3D,GAAgB,MAAZA,EAAkB,IAAKrP,KAAKqQ,EAAGA,EAAErQ,GAAKgS,GAAI3B,EAAErQ,GAAI4K,EAAStI,KAAM,MAG1E,OAAO3C,IAVX,CAFM,OAASO,EAAIC,OAAQH,GAAK4K,EAAW0H,EAAEpS,IAAIgL,QAAUlL,EAAI8R,GAAIzB,EAAErQ,GAAI4K,EAAStI,OAAQ,OAAOtC,CAajG,EACEuS,KAAM,WACJ,IAAIA,EAAO,GAAIlC,EAAI1Q,KAAK0Q,EACxB,IAAK,IAAIrQ,KAAKqQ,EAAGkC,EAAKvS,GAAKqQ,EAAErQ,GAAG4B,QAChC,OAAO,IAAIwQ,GAASG,EACxB,EACEjT,KAAM,SAAS4L,EAAMO,GACnB,IAAKtL,EAAIC,UAAUC,OAAS,GAAK,EAAG,IAAK,IAAgCF,EAAGH,EAA/B0L,EAAO,IAAIxM,MAAMiB,GAAID,EAAI,EAASA,EAAIC,IAAKD,EAAGwL,EAAKxL,GAAKE,UAAUF,EAAI,GACnH,IAAKP,KAAK0Q,EAAEhR,eAAe6L,GAAO,MAAM,IAAIiH,MAAM,iBAAmBjH,GACrE,IAAuBhL,EAAI,EAAGC,GAAzBH,EAAIL,KAAK0Q,EAAEnF,IAAoB7K,OAAQH,EAAIC,IAAKD,EAAGF,EAAEE,GAAG6F,MAAMzF,MAAMmL,EAAMC,EACnF,EACEpL,MAAO,SAAS4K,EAAMO,EAAMC,GAC1B,IAAK/L,KAAK0Q,EAAEhR,eAAe6L,GAAO,MAAM,IAAIiH,MAAM,iBAAmBjH,GACrE,IAAK,IAAIlL,EAAIL,KAAK0Q,EAAEnF,GAAOhL,EAAI,EAAGC,EAAIH,EAAEK,OAAQH,EAAIC,IAAKD,EAAGF,EAAEE,GAAG6F,MAAMzF,MAAMmL,EAAMC,EACvF,GC7DA,IAII8G,GACAC,GALAC,GAAQ,EACRC,GAAU,EACVC,GAAW,EACXC,GAAY,IAGZC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcE,KAC3EC,GAA6B,iBAAXvH,QAAuBA,OAAOwH,sBAAwBxH,OAAOwH,sBAAsB9F,KAAK1B,QAAU,SAASyH,GAAKC,WAAWD,EAAG,GAAI,EAEjJ,SAASJ,KACd,OAAOJ,KAAaM,GAASI,IAAWV,GAAWE,GAAME,MAAQH,GACnE,CAEA,SAASS,KACPV,GAAW,CACb,CAEO,SAASW,KACd/T,KAAKgU,MACLhU,KAAKiU,MACLjU,KAAKwE,MAAQ,IACf,CAyBO,SAAS0P,GAAMxE,EAAUyE,EAAOC,GACrC,IAAI/T,EAAI,IAAI0T,GAEZ,OADA1T,EAAEgU,QAAQ3E,EAAUyE,EAAOC,GACpB/T,CACT,CAaA,SAASiU,KACPlB,IAAYD,GAAYG,GAAME,OAASH,GACvCN,GAAQC,GAAU,EAClB,KAdK,WACLQ,OACET,GAEF,IADA,IAAkBwB,EAAdlU,EAAIwS,GACDxS,IACAkU,EAAInB,GAAW/S,EAAE4T,QAAU,GAAG5T,EAAE2T,MAAMrU,KAAK,KAAM4U,GACtDlU,EAAIA,EAAEmE,QAENuO,EACJ,CAMIyB,EACJ,CAAG,QACCzB,GAAQ,EAWZ,WACE,IAAI0B,EAAmBC,EAAfC,EAAK9B,GAAcuB,EAAOQ,IAClC,KAAOD,GACDA,EAAGX,OACDI,EAAOO,EAAGV,QAAOG,EAAOO,EAAGV,OAC/BQ,EAAKE,EAAIA,EAAKA,EAAGnQ,QAEjBkQ,EAAKC,EAAGnQ,MAAOmQ,EAAGnQ,MAAQ,KAC1BmQ,EAAKF,EAAKA,EAAGjQ,MAAQkQ,EAAK7B,GAAW6B,GAGzC5B,GAAW2B,EACXI,GAAMT,EACR,CAvBIU,GACA1B,GAAW,CACf,CACA,CAEA,SAAS2B,KACP,IAAIvB,EAAMF,GAAME,MAAOW,EAAQX,EAAML,GACjCgB,EAAQjB,KAAWG,IAAac,EAAOhB,GAAYK,EACzD,CAiBA,SAASqB,GAAMT,GACTrB,KACAC,KAASA,GAAUgC,aAAahC,KACxBoB,EAAOhB,GACP,IACNgB,EAAOQ,MAAU5B,GAAUa,WAAWS,GAAMF,EAAOd,GAAME,MAAQH,KACjEJ,KAAUA,GAAWgC,cAAchC,OAElCA,KAAUE,GAAYG,GAAME,MAAOP,GAAWiC,YAAYH,GAAM7B,KACrEH,GAAQ,EAAGW,GAASY,KAExB,CC3Ge,SAAAtB,GAAStD,EAAUyE,EAAOC,GACvC,IAAI/T,EAAI,IAAI0T,GAMZ,OALAI,EAAiB,MAATA,EAAgB,GAAKA,EAC7B9T,EAAEgU,SAAQ,SAASc,GACjB9U,EAAE+U,OACF1F,EAASyF,EAAUhB,EACvB,GAAKA,EAAOC,GACH/T,CACT,CDgBA0T,GAAMtU,UAAYyU,GAAMzU,UAAY,CAClCQ,YAAa8T,GACbM,QAAS,SAAS3E,EAAUyE,EAAOC,GACjC,GAAwB,mBAAb1E,EAAyB,MAAM,IAAI7P,UAAU,8BACxDuU,GAAgB,MAARA,EAAeZ,MAASY,IAAkB,MAATD,EAAgB,GAAKA,GACzDnU,KAAKwE,OAASsO,KAAa9S,OAC1B8S,GAAUA,GAAStO,MAAQxE,KAC1B6S,GAAW7S,KAChB8S,GAAW9S,MAEbA,KAAKgU,MAAQtE,EACb1P,KAAKiU,MAAQG,EACbS,IACJ,EACEO,KAAM,WACApV,KAAKgU,QACPhU,KAAKgU,MAAQ,KACbhU,KAAKiU,MAAQW,IACbC,KAEN,GE3CA,IAAIQ,GAAU9E,GAAS,QAAS,MAAO,SAAU,aAC7C+E,GAAa,GAENC,GAAU,EACVC,GAAY,EACZC,GAAW,EACXC,GAAU,EACVC,GAAU,EACVC,GAAS,EACTC,GAAQ,EAEJ,SAAAC,GAASzQ,EAAM1C,EAAMyP,EAAI3H,EAAOxF,EAAO8Q,GACpD,IAAIC,EAAY3Q,EAAK4Q,aACrB,GAAKD,GACA,GAAI5D,KAAM4D,EAAW,YADV3Q,EAAK4Q,aAAe,IAmCtC,SAAgB5Q,EAAM+M,EAAI8D,GACxB,IACIC,EADAH,EAAY3Q,EAAK4Q,aAQrB,SAASH,EAASX,GAChBe,EAAKE,MAAQZ,GACbU,EAAKhC,MAAMG,QAAQgC,EAAOH,EAAK/B,MAAO+B,EAAK9B,MAGvC8B,EAAK/B,OAASgB,GAASkB,EAAMlB,EAAUe,EAAK/B,MACpD,CAEE,SAASkC,EAAMlB,GACb,IAAI5U,EAAG8K,EAAG7K,EAAG4K,EAGb,GAAI8K,EAAKE,QAAUZ,GAAW,OAAOJ,IAErC,IAAK7U,KAAKyV,EAER,IADA5K,EAAI4K,EAAUzV,IACRoC,OAASuT,EAAKvT,KAApB,CAKA,GAAIyI,EAAEgL,QAAUV,GAAS,OAAO1C,GAAQqD,GAGpCjL,EAAEgL,QAAUT,IACdvK,EAAEgL,MAAQP,GACVzK,EAAE8I,MAAMkB,OACRhK,EAAEF,GAAGvL,KAAK,YAAa0F,EAAMA,EAAKX,SAAU0G,EAAEX,MAAOW,EAAEnG,cAChD+Q,EAAUzV,KAITA,EAAI6R,IACZhH,EAAEgL,MAAQP,GACVzK,EAAE8I,MAAMkB,OACRhK,EAAEF,GAAGvL,KAAK,SAAU0F,EAAMA,EAAKX,SAAU0G,EAAEX,MAAOW,EAAEnG,cAC7C+Q,EAAUzV,GApBO,CAwC5B,GAZAyS,IAAQ,WACFkD,EAAKE,QAAUV,KACjBQ,EAAKE,MAAQT,GACbO,EAAKhC,MAAMG,QAAQiC,EAAMJ,EAAK/B,MAAO+B,EAAK9B,MAC1CkC,EAAKnB,GAEb,IAIIe,EAAKE,MAAQX,GACbS,EAAKhL,GAAGvL,KAAK,QAAS0F,EAAMA,EAAKX,SAAUwR,EAAKzL,MAAOyL,EAAKjR,OACxDiR,EAAKE,QAAUX,GAAnB,CAKA,IAJAS,EAAKE,MAAQV,GAGbS,EAAQ,IAAI5W,MAAMiB,EAAI0V,EAAKC,MAAMzV,QAC5BH,EAAI,EAAG8K,GAAK,EAAG9K,EAAIC,IAAKD,GACvB6K,EAAI8K,EAAKC,MAAM5V,GAAG6F,MAAMzG,KAAK0F,EAAMA,EAAKX,SAAUwR,EAAKzL,MAAOyL,EAAKjR,UACrEkR,IAAQ9K,GAAKD,GAGjB+K,EAAMzV,OAAS2K,EAAI,CAVU,CAWjC,CAEE,SAASiL,EAAKnB,GAKZ,IAJA,IAAI9U,EAAI8U,EAAUe,EAAKK,SAAWL,EAAKM,KAAK7W,KAAK,KAAMwV,EAAUe,EAAKK,WAAaL,EAAKhC,MAAMG,QAAQe,GAAOc,EAAKE,MAAQR,GAAQ,GAC9HrV,GAAK,EACLC,EAAI2V,EAAMzV,SAELH,EAAIC,GACX2V,EAAM5V,GAAGZ,KAAK0F,EAAMhF,GAIlB6V,EAAKE,QAAUR,KACjBM,EAAKhL,GAAGvL,KAAK,MAAO0F,EAAMA,EAAKX,SAAUwR,EAAKzL,MAAOyL,EAAKjR,OAC1DmQ,IAEN,CAEE,SAASA,IAIP,IAAK,IAAI7U,KAHT2V,EAAKE,MAAQP,GACbK,EAAKhC,MAAMkB,cACJY,EAAU5D,GACH4D,EAAW,cAClB3Q,EAAK4Q,YAChB,CA9FED,EAAU5D,GAAM8D,EAChBA,EAAKhC,MAAQA,GAAM4B,EAAU,EAAGI,EAAK9B,KA8FvC,CAtIElU,CAAOmF,EAAM+M,EAAI,CACfzP,KAAMA,EACN8H,MAAOA,EACPxF,MAAOA,EACPiG,GAAImK,GACJc,MAAOb,GACPlB,KAAM2B,EAAO3B,KACbD,MAAO4B,EAAO5B,MACdoC,SAAUR,EAAOQ,SACjBC,KAAMT,EAAOS,KACbtC,MAAO,KACPkC,MAAOb,IAEX,CAEO,SAASkB,GAAKpR,EAAM+M,GACzB,IAAI0D,EAAW3D,GAAI9M,EAAM+M,GACzB,GAAI0D,EAASM,MAAQb,GAAS,MAAM,IAAI/C,MAAM,+BAC9C,OAAOsD,CACT,CAEO,SAASzD,GAAIhN,EAAM+M,GACxB,IAAI0D,EAAW3D,GAAI9M,EAAM+M,GACzB,GAAI0D,EAASM,MAAQV,GAAS,MAAM,IAAIlD,MAAM,6BAC9C,OAAOsD,CACT,CAEO,SAAS3D,GAAI9M,EAAM+M,GACxB,IAAI0D,EAAWzQ,EAAK4Q,aACpB,IAAKH,KAAcA,EAAWA,EAAS1D,IAAM,MAAM,IAAII,MAAM,wBAC7D,OAAOsD,CACT,CC/Ce,SAAAY,GAASrR,EAAM1C,GAC5B,IACImT,EACAa,EAEApW,EAJAyV,EAAY3Q,EAAK4Q,aAGjBnS,GAAQ,EAGZ,GAAKkS,EAAL,CAIA,IAAKzV,KAFLoC,EAAe,MAARA,EAAe,KAAOA,EAAO,GAE1BqT,GACHF,EAAWE,EAAUzV,IAAIoC,OAASA,GACvCgU,EAASb,EAASM,MAAQX,IAAYK,EAASM,MAAQR,GACvDE,EAASM,MAAQP,GACjBC,EAAS5B,MAAMkB,OACfU,EAAS5K,GAAGvL,KAAKgX,EAAS,YAAc,SAAUtR,EAAMA,EAAKX,SAAUoR,EAASrL,MAAOqL,EAAS7Q,cACzF+Q,EAAUzV,IAL8BuD,GAAQ,EAQrDA,UAAcuB,EAAK4Q,YAbP,CAclB,CCvBe,SAAAW,GAAS3W,EAAa4W,EAASpX,GAC5CQ,EAAYR,UAAYoX,EAAQpX,UAAYA,EAC5CA,EAAUQ,YAAcA,CAC1B,CAEO,SAAS6W,GAAOxS,EAAQyS,GAC7B,IAAItX,EAAYL,OAAOc,OAAOoE,EAAO7E,WACrC,IAAK,IAAIsB,KAAOgW,EAAYtX,EAAUsB,GAAOgW,EAAWhW,GACxD,OAAOtB,CACT,CCPO,SAASuX,KAAQ,CAEjB,IAAIC,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,oDACNC,GAAM,qDACNC,GAAQ,qBACRC,GAAe,IAAIC,OAAO,UAAUL,MAAOA,MAAOA,UAClDM,GAAe,IAAID,OAAO,UAAUH,MAAOA,MAAOA,UAClDK,GAAgB,IAAIF,OAAO,WAAWL,MAAOA,MAAOA,MAAOC,UAC3DO,GAAgB,IAAIH,OAAO,WAAWH,MAAOA,MAAOA,MAAOD,UAC3DQ,GAAe,IAAIJ,OAAO,UAAUJ,MAAOC,MAAOA,UAClDQ,GAAgB,IAAIL,OAAO,WAAWJ,MAAOC,MAAOA,MAAOD,UAE3DU,GAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAkBf,SAASC,KACP,OAAOnhB,KAAKohB,MAAMC,WACpB,CAUA,SAASC,KACP,OAAOthB,KAAKohB,MAAMG,WACpB,CAEe,SAASC,GAAMC,GAC5B,IAAInW,EAAGtJ,EAEP,OADAyf,GAAUA,EAAS,IAAI9Z,OAAO+Z,eACtBpW,EAAIgM,GAAMqK,KAAKF,KAAYzf,EAAIsJ,EAAE,GAAG5K,OAAQ4K,EAAIsW,SAAStW,EAAE,GAAI,IAAW,IAANtJ,EAAU6f,GAAKvW,GAC/E,IAANtJ,EAAU,IAAI8f,GAAKxW,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAANtJ,EAAU+f,GAAKzW,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANtJ,EAAU+f,GAAMzW,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAIiM,GAAaoK,KAAKF,IAAW,IAAIK,GAAIxW,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAImM,GAAakK,KAAKF,IAAW,IAAIK,GAAW,IAAPxW,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIoM,GAAciK,KAAKF,IAAWM,GAAKzW,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIqM,GAAcgK,KAAKF,IAAWM,GAAY,IAAPzW,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIsM,GAAa+J,KAAKF,IAAWO,GAAK1W,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAIuM,GAAc8J,KAAKF,IAAWO,GAAK1W,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEwM,GAAMpY,eAAe+hB,GAAUI,GAAK/J,GAAM2J,IAC/B,gBAAXA,EAA2B,IAAIK,GAAIhc,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAAS+b,GAAKrhB,GACZ,OAAO,IAAIshB,GAAIthB,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,EAC1D,CAEA,SAASuhB,GAAK7gB,EAAG+gB,EAAG9iB,EAAG0G,GAErB,OADIA,GAAK,IAAG3E,EAAI+gB,EAAI9iB,EAAI2G,KACjB,IAAIgc,GAAI5gB,EAAG+gB,EAAG9iB,EAAG0G,EAC1B,CAEO,SAASqc,GAAW9W,GAEzB,OADMA,aAAa4L,KAAQ5L,EAAIoW,GAAMpW,IAChCA,EAEE,IAAI0W,IADX1W,EAAIA,EAAEgW,OACWlgB,EAAGkK,EAAE6W,EAAG7W,EAAEjM,EAAGiM,EAAE+W,SAFjB,IAAIL,EAGrB,CAEO,SAASV,GAAIlgB,EAAG+gB,EAAG9iB,EAAGgjB,GAC3B,OAA4B,IAArB1hB,UAAUC,OAAewhB,GAAWhhB,GAAK,IAAI4gB,GAAI5gB,EAAG+gB,EAAG9iB,EAAc,MAAXgjB,EAAkB,EAAIA,EACzF,CAEO,SAASL,GAAI5gB,EAAG+gB,EAAG9iB,EAAGgjB,GAC3BniB,KAAKkB,GAAKA,EACVlB,KAAKiiB,GAAKA,EACVjiB,KAAKb,GAAKA,EACVa,KAAKmiB,SAAWA,CAClB,CA8BA,SAASC,KACP,MAAO,IAAIC,GAAIriB,KAAKkB,KAAKmhB,GAAIriB,KAAKiiB,KAAKI,GAAIriB,KAAKb,IAClD,CAMA,SAASmjB,KACP,MAAMzc,EAAI0c,GAAOviB,KAAKmiB,SACtB,MAAO,GAAS,IAANtc,EAAU,OAAS,UAAU2c,GAAOxiB,KAAKkB,OAAOshB,GAAOxiB,KAAKiiB,OAAOO,GAAOxiB,KAAKb,KAAW,IAAN0G,EAAU,IAAM,KAAKA,MACrH,CAEA,SAAS0c,GAAOJ,GACd,OAAOM,MAAMN,GAAW,EAAInT,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAGkT,GACtD,CAEA,SAASK,GAAOpc,GACd,OAAO4I,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,IAAKD,KAAK2T,MAAMvc,IAAU,GACxD,CAEA,SAASic,GAAIjc,GAEX,QADAA,EAAQoc,GAAOpc,IACC,GAAK,IAAM,IAAMA,EAAMuK,SAAS,GAClD,CAEA,SAASqR,GAAKY,EAAGtiB,EAAG0B,EAAG6D,GAIrB,OAHIA,GAAK,EAAG+c,EAAItiB,EAAI0B,EAAI8D,IACf9D,GAAK,GAAKA,GAAK,EAAG4gB,EAAItiB,EAAIwF,IAC1BxF,GAAK,IAAGsiB,EAAI9c,KACd,IAAI+c,GAAID,EAAGtiB,EAAG0B,EAAG6D,EAC1B,CAEO,SAASid,GAAW1X,GACzB,GAAIA,aAAayX,GAAK,OAAO,IAAIA,GAAIzX,EAAEwX,EAAGxX,EAAE9K,EAAG8K,EAAEpJ,EAAGoJ,EAAE+W,SAEtD,GADM/W,aAAa4L,KAAQ5L,EAAIoW,GAAMpW,KAChCA,EAAG,OAAO,IAAIyX,GACnB,GAAIzX,aAAayX,GAAK,OAAOzX,EAE7B,IAAIlK,GADJkK,EAAIA,EAAEgW,OACIlgB,EAAI,IACV+gB,EAAI7W,EAAE6W,EAAI,IACV9iB,EAAIiM,EAAEjM,EAAI,IACV8P,EAAMD,KAAKC,IAAI/N,EAAG+gB,EAAG9iB,GACrBujB,EAAM1T,KAAK0T,IAAIxhB,EAAG+gB,EAAG9iB,GACrByjB,EAAI9c,IACJxF,EAAIoiB,EAAMzT,EACVjN,GAAK0gB,EAAMzT,GAAO,EAUtB,OATI3O,GACasiB,EAAX1hB,IAAMwhB,GAAUT,EAAI9iB,GAAKmB,EAAc,GAAT2hB,EAAI9iB,GAC7B8iB,IAAMS,GAAUvjB,EAAI+B,GAAKZ,EAAI,GAC5BY,EAAI+gB,GAAK3hB,EAAI,EACvBA,GAAK0B,EAAI,GAAM0gB,EAAMzT,EAAM,EAAIyT,EAAMzT,EACrC2T,GAAK,IAELtiB,EAAI0B,EAAI,GAAKA,EAAI,EAAI,EAAI4gB,EAEpB,IAAIC,GAAID,EAAGtiB,EAAG0B,EAAGoJ,EAAE+W,QAC5B,CAEO,SAASY,GAAIH,EAAGtiB,EAAG0B,EAAGmgB,GAC3B,OAA4B,IAArB1hB,UAAUC,OAAeoiB,GAAWF,GAAK,IAAIC,GAAID,EAAGtiB,EAAG0B,EAAc,MAAXmgB,EAAkB,EAAIA,EACzF,CAEA,SAASU,GAAID,EAAGtiB,EAAG0B,EAAGmgB,GACpBniB,KAAK4iB,GAAKA,EACV5iB,KAAKM,GAAKA,EACVN,KAAKgC,GAAKA,EACVhC,KAAKmiB,SAAWA,CAClB,CAsCA,SAASa,GAAO5c,GAEd,OADAA,GAASA,GAAS,GAAK,KACR,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAAS6c,GAAO7c,GACd,OAAO4I,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAG7I,GAAS,GAC1C,CAGA,SAAS8c,GAAQN,EAAG7T,EAAIoU,GACtB,OAGY,KAHJP,EAAI,GAAK7T,GAAMoU,EAAKpU,GAAM6T,EAAI,GAChCA,EAAI,IAAMO,EACVP,EAAI,IAAM7T,GAAMoU,EAAKpU,IAAO,IAAM6T,GAAK,GACvC7T,EACR,CAlOA6H,GAAOI,GAAOwK,GAAO,CACnB,IAAA5O,CAAKwQ,GACH,OAAOhkB,OAAOgB,OAAO,IAAIJ,KAAKC,YAAaD,KAAMojB,EACrD,EACE,WAAAC,GACE,OAAOrjB,KAAKohB,MAAMiC,aACtB,EACEhB,IAAKlB,GACLE,UAAWF,GACXmC,WAUF,WACE,OAAOtjB,KAAKohB,MAAMkC,YACpB,EAXEC,UAaF,WACE,OAAOT,GAAW9iB,MAAMujB,WAC1B,EAdEhC,UAAWD,GACX3Q,SAAU2Q,KAiEZ1K,GAAOkL,GAAKV,GAAKtK,GAAOE,GAAO,CAC7B,QAAAE,CAASsM,GAEP,OADAA,EAAS,MAALA,EAAYtM,GAAWlI,KAAKyU,IAAIvM,GAAUsM,GACvC,IAAI1B,GAAI9hB,KAAKkB,EAAIsiB,EAAGxjB,KAAKiiB,EAAIuB,EAAGxjB,KAAKb,EAAIqkB,EAAGxjB,KAAKmiB,QAC5D,EACE,MAAAlL,CAAOuM,GAEL,OADAA,EAAS,MAALA,EAAYvM,GAASjI,KAAKyU,IAAIxM,GAAQuM,GACnC,IAAI1B,GAAI9hB,KAAKkB,EAAIsiB,EAAGxjB,KAAKiiB,EAAIuB,EAAGxjB,KAAKb,EAAIqkB,EAAGxjB,KAAKmiB,QAC5D,EACE,GAAAf,GACE,OAAOphB,IACX,EACE,KAAA0jB,GACE,OAAO,IAAI5B,GAAIU,GAAOxiB,KAAKkB,GAAIshB,GAAOxiB,KAAKiiB,GAAIO,GAAOxiB,KAAKb,GAAIojB,GAAOviB,KAAKmiB,SAC/E,EACE,WAAAkB,GACE,OAAS,IAAOrjB,KAAKkB,GAAKlB,KAAKkB,EAAI,QAC1B,IAAOlB,KAAKiiB,GAAKjiB,KAAKiiB,EAAI,QAC1B,IAAOjiB,KAAKb,GAAKa,KAAKb,EAAI,OAC3B,GAAKa,KAAKmiB,SAAWniB,KAAKmiB,SAAW,CACjD,EACEE,IAAKD,GACLf,UAAWe,GACXkB,WASF,WACE,MAAO,IAAIjB,GAAIriB,KAAKkB,KAAKmhB,GAAIriB,KAAKiiB,KAAKI,GAAIriB,KAAKb,KAAKkjB,GAA+C,KAA1CI,MAAMziB,KAAKmiB,SAAW,EAAIniB,KAAKmiB,WAC3F,EAVEZ,UAAWe,GACX3R,SAAU2R,MAyEZ1L,GAAOiM,GAAKE,GAAKjM,GAAOE,GAAO,CAC7B,QAAAE,CAASsM,GAEP,OADAA,EAAS,MAALA,EAAYtM,GAAWlI,KAAKyU,IAAIvM,GAAUsM,GACvC,IAAIX,GAAI7iB,KAAK4iB,EAAG5iB,KAAKM,EAAGN,KAAKgC,EAAIwhB,EAAGxjB,KAAKmiB,QACpD,EACE,MAAAlL,CAAOuM,GAEL,OADAA,EAAS,MAALA,EAAYvM,GAASjI,KAAKyU,IAAIxM,GAAQuM,GACnC,IAAIX,GAAI7iB,KAAK4iB,EAAG5iB,KAAKM,EAAGN,KAAKgC,EAAIwhB,EAAGxjB,KAAKmiB,QACpD,EACE,GAAAf,GACE,IAAIwB,EAAI5iB,KAAK4iB,EAAI,IAAqB,KAAd5iB,KAAK4iB,EAAI,GAC7BtiB,EAAImiB,MAAMG,IAAMH,MAAMziB,KAAKM,GAAK,EAAIN,KAAKM,EACzC0B,EAAIhC,KAAKgC,EACTmhB,EAAKnhB,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAK1B,EACjCyO,EAAK,EAAI/M,EAAImhB,EACjB,OAAO,IAAIrB,GACToB,GAAQN,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAK7T,EAAIoU,GAC1CD,GAAQN,EAAG7T,EAAIoU,GACfD,GAAQN,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAK7T,EAAIoU,GACzCnjB,KAAKmiB,QAEX,EACE,KAAAuB,GACE,OAAO,IAAIb,GAAIG,GAAOhjB,KAAK4iB,GAAIK,GAAOjjB,KAAKM,GAAI2iB,GAAOjjB,KAAKgC,GAAIugB,GAAOviB,KAAKmiB,SAC/E,EACE,WAAAkB,GACE,OAAQ,GAAKrjB,KAAKM,GAAKN,KAAKM,GAAK,GAAKmiB,MAAMziB,KAAKM,KACzC,GAAKN,KAAKgC,GAAKhC,KAAKgC,GAAK,GACzB,GAAKhC,KAAKmiB,SAAWniB,KAAKmiB,SAAW,CACjD,EACE,SAAAoB,GACE,MAAM1d,EAAI0c,GAAOviB,KAAKmiB,SACtB,MAAO,GAAS,IAANtc,EAAU,OAAS,UAAUmd,GAAOhjB,KAAK4iB,OAAwB,IAAjBK,GAAOjjB,KAAKM,QAA+B,IAAjB2iB,GAAOjjB,KAAKgC,MAAkB,IAAN6D,EAAU,IAAM,KAAKA,MACrI,KCzXO,MAAM8d,GAAU3U,KAAK4U,GAAK,IACpBC,GAAU,IAAM7U,KAAK4U,GCK9BE,GAAK,OACLC,GAAK,EACLC,GAAK,OACLvP,GAAK,EAAI,GACTE,GAAK,EAAI,GACTD,GAAK,EAAIC,GAAKA,GACdsP,GAAKtP,GAAKA,GAAKA,GAEnB,SAASuP,GAAW9Y,GAClB,GAAIA,aAAa+Y,GAAK,OAAO,IAAIA,GAAI/Y,EAAEpJ,EAAGoJ,EAAEvF,EAAGuF,EAAEjM,EAAGiM,EAAE+W,SACtD,GAAI/W,aAAagZ,GAAK,OAAOC,GAAQjZ,GAC/BA,aAAa0W,KAAM1W,EAAI8W,GAAW9W,IACxC,IAGuEwC,EAAG0W,EAHtEpjB,EAAIqjB,GAASnZ,EAAElK,GACf+gB,EAAIsC,GAASnZ,EAAE6W,GACf9iB,EAAIolB,GAASnZ,EAAEjM,GACfgS,EAAIqT,IAAS,SAAYtjB,EAAI,SAAY+gB,EAAI,SAAY9iB,GAAK4kB,IAKlE,OAJI7iB,IAAM+gB,GAAKA,IAAM9iB,EAAGyO,EAAI0W,EAAInT,GAC9BvD,EAAI4W,IAAS,SAAYtjB,EAAI,SAAY+gB,EAAI,SAAY9iB,GAAK2kB,IAC9DQ,EAAIE,IAAS,SAAYtjB,EAAI,SAAY+gB,EAAI,SAAY9iB,GAAK6kB,KAEzD,IAAIG,GAAI,IAAMhT,EAAI,GAAI,KAAOvD,EAAIuD,GAAI,KAAOA,EAAImT,GAAIlZ,EAAE+W,QAC/D,CAMe,SAASsC,GAAIziB,EAAG6D,EAAG1G,EAAGgjB,GACnC,OAA4B,IAArB1hB,UAAUC,OAAewjB,GAAWliB,GAAK,IAAImiB,GAAIniB,EAAG6D,EAAG1G,EAAc,MAAXgjB,EAAkB,EAAIA,EACzF,CAEO,SAASgC,GAAIniB,EAAG6D,EAAG1G,EAAGgjB,GAC3BniB,KAAKgC,GAAKA,EACVhC,KAAK6F,GAAKA,EACV7F,KAAKb,GAAKA,EACVa,KAAKmiB,SAAWA,CAClB,CAyBA,SAASqC,GAAQnkB,GACf,OAAOA,EAAI4jB,GAAKjV,KAAKyU,IAAIpjB,EAAG,EAAI,GAAKA,EAAIqU,GAAKD,EAChD,CAEA,SAASiQ,GAAQrkB,GACf,OAAOA,EAAIsU,GAAKtU,EAAIA,EAAIA,EAAIqU,IAAMrU,EAAIoU,GACxC,CAEA,SAASkQ,GAAS/W,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQoB,KAAKyU,IAAI7V,EAAG,EAAI,KAAO,KAC5E,CAEA,SAAS2W,GAAS3W,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQoB,KAAKyU,KAAK7V,EAAI,MAAS,MAAO,IAC3E,CAEA,SAASgX,GAAWxZ,GAClB,GAAIA,aAAagZ,GAAK,OAAO,IAAIA,GAAIhZ,EAAEwX,EAAGxX,EAAEnK,EAAGmK,EAAEpJ,EAAGoJ,EAAE+W,SAEtD,GADM/W,aAAa+Y,KAAM/Y,EAAI8Y,GAAW9Y,IAC5B,IAARA,EAAEvF,GAAmB,IAARuF,EAAEjM,EAAS,OAAO,IAAIilB,GAAIte,IAAK,EAAIsF,EAAEpJ,GAAKoJ,EAAEpJ,EAAI,IAAM,EAAI8D,IAAKsF,EAAEpJ,EAAGoJ,EAAE+W,SACvF,IAAIS,EAAI5T,KAAK6V,MAAMzZ,EAAEjM,EAAGiM,EAAEvF,GAAKge,GAC/B,OAAO,IAAIO,GAAIxB,EAAI,EAAIA,EAAI,IAAMA,EAAG5T,KAAK8V,KAAK1Z,EAAEvF,EAAIuF,EAAEvF,EAAIuF,EAAEjM,EAAIiM,EAAEjM,GAAIiM,EAAEpJ,EAAGoJ,EAAE+W,QAC/E,CAMO,SAAS4C,GAAInC,EAAG3hB,EAAGe,EAAGmgB,GAC3B,OAA4B,IAArB1hB,UAAUC,OAAekkB,GAAWhC,GAAK,IAAIwB,GAAIxB,EAAG3hB,EAAGe,EAAc,MAAXmgB,EAAkB,EAAIA,EACzF,CAEO,SAASiC,GAAIxB,EAAG3hB,EAAGe,EAAGmgB,GAC3BniB,KAAK4iB,GAAKA,EACV5iB,KAAKiB,GAAKA,EACVjB,KAAKgC,GAAKA,EACVhC,KAAKmiB,SAAWA,CAClB,CAEA,SAASkC,GAAQjZ,GACf,GAAIqX,MAAMrX,EAAEwX,GAAI,OAAO,IAAIuB,GAAI/Y,EAAEpJ,EAAG,EAAG,EAAGoJ,EAAE+W,SAC5C,IAAIS,EAAIxX,EAAEwX,EAAIe,GACd,OAAO,IAAIQ,GAAI/Y,EAAEpJ,EAAGgN,KAAKgW,IAAIpC,GAAKxX,EAAEnK,EAAG+N,KAAKiW,IAAIrC,GAAKxX,EAAEnK,EAAGmK,EAAE+W,QAC9D,CAlEAvL,GAAOuN,GAAKM,GAAK3N,GAAOE,GAAO,CAC7B,QAAAE,CAASsM,GACP,OAAO,IAAIW,GAAInkB,KAAKgC,EAzCd,IAyC4B,MAALwhB,EAAY,EAAIA,GAAIxjB,KAAK6F,EAAG7F,KAAKb,EAAGa,KAAKmiB,QAC1E,EACE,MAAAlL,CAAOuM,GACL,OAAO,IAAIW,GAAInkB,KAAKgC,EA5Cd,IA4C4B,MAALwhB,EAAY,EAAIA,GAAIxjB,KAAK6F,EAAG7F,KAAKb,EAAGa,KAAKmiB,QAC1E,EACE,GAAAf,GACE,IAAIjQ,GAAKnR,KAAKgC,EAAI,IAAM,IACpB4L,EAAI6U,MAAMziB,KAAK6F,GAAKsL,EAAIA,EAAInR,KAAK6F,EAAI,IACrCye,EAAI7B,MAAMziB,KAAKb,GAAKgS,EAAIA,EAAInR,KAAKb,EAAI,IAIzC,OAAO,IAAI2iB,GACT6C,GAAU,WAJZ/W,EAAIkW,GAAKY,GAAQ9W,IAIW,WAH5BuD,EAAI4S,GAAKW,GAAQvT,IAG2B,UAF5CmT,EAAIN,GAAKU,GAAQJ,KAGfK,IAAU,SAAY/W,EAAI,UAAYuD,EAAI,QAAYmT,GACtDK,GAAU,SAAY/W,EAAI,SAAYuD,EAAI,UAAYmT,GACtDtkB,KAAKmiB,QAEX,KAgDAvL,GAAOwN,GAAKW,GAAKjO,GAAOE,GAAO,CAC7B,QAAAE,CAASsM,GACP,OAAO,IAAIY,GAAIpkB,KAAK4iB,EAAG5iB,KAAKiB,EAAGjB,KAAKgC,EA7G9B,IA6G4C,MAALwhB,EAAY,EAAIA,GAAIxjB,KAAKmiB,QAC1E,EACE,MAAAlL,CAAOuM,GACL,OAAO,IAAIY,GAAIpkB,KAAK4iB,EAAG5iB,KAAKiB,EAAGjB,KAAKgC,EAhH9B,IAgH4C,MAALwhB,EAAY,EAAIA,GAAIxjB,KAAKmiB,QAC1E,EACE,GAAAf,GACE,OAAOiD,GAAQrkB,MAAMohB,KACzB,KCrHA,IAAI8D,IAAK,OACLC,GAAI,QACJC,IAAK,OACLC,IAAK,OACLC,GAAI,QACJC,GAAKD,GAAID,GACTG,GAAKF,GAAIH,GACTM,GAAQN,GAAIC,GAAIC,GAAIH,GAgBT,SAASQ,GAAU9C,EAAGtiB,EAAG0B,EAAGmgB,GACzC,OAA4B,IAArB1hB,UAAUC,OAfnB,SAA0B0K,GACxB,GAAIA,aAAaua,GAAW,OAAO,IAAIA,GAAUva,EAAEwX,EAAGxX,EAAE9K,EAAG8K,EAAEpJ,EAAGoJ,EAAE+W,SAC5D/W,aAAa0W,KAAM1W,EAAI8W,GAAW9W,IACxC,IAAIlK,EAAIkK,EAAElK,EAAI,IACV+gB,EAAI7W,EAAE6W,EAAI,IACV9iB,EAAIiM,EAAEjM,EAAI,IACV6C,GAAKyjB,GAAQtmB,EAAIomB,GAAKrkB,EAAIskB,GAAKvD,IAAMwD,GAAQF,GAAKC,IAClDI,EAAKzmB,EAAI6C,EACTwhB,GAAK8B,IAAKrD,EAAIjgB,GAAKojB,GAAIQ,GAAMP,GAC7B/kB,EAAI0O,KAAK8V,KAAKtB,EAAIA,EAAIoC,EAAKA,IAAON,GAAItjB,GAAK,EAAIA,IAC/C4gB,EAAItiB,EAAI0O,KAAK6V,MAAMrB,EAAGoC,GAAM/B,GAAU,IAAM/d,IAChD,OAAO,IAAI6f,GAAU/C,EAAI,EAAIA,EAAI,IAAMA,EAAGtiB,EAAG0B,EAAGoJ,EAAE+W,QACpD,CAGkC0D,CAAiBjD,GAAK,IAAI+C,GAAU/C,EAAGtiB,EAAG0B,EAAc,MAAXmgB,EAAkB,EAAIA,EACrG,CAEO,SAASwD,GAAU/C,EAAGtiB,EAAG0B,EAAGmgB,GACjCniB,KAAK4iB,GAAKA,EACV5iB,KAAKM,GAAKA,EACVN,KAAKgC,GAAKA,EACVhC,KAAKmiB,SAAWA,CAClB,CCpCO,SAAS2D,GAAMnR,EAAIoR,EAAIC,EAAIC,EAAIC,GACpC,IAAIxR,EAAKC,EAAKA,EAAIsP,EAAKvP,EAAKC,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAID,EAAKuP,GAAM8B,GAC9B,EAAI,EAAIrR,EAAK,EAAIuP,GAAM+B,GACvB,EAAI,EAAIrR,EAAK,EAAID,EAAK,EAAIuP,GAAMgC,EACjChC,EAAKiC,GAAM,CACnB,CAEe,SAAAC,GAASC,GACtB,IAAI5lB,EAAI4lB,EAAO1lB,OAAS,EACxB,OAAO,SAASL,GACd,IAAIE,EAAIF,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAGG,EAAI,GAAKwO,KAAKqX,MAAMhmB,EAAIG,GAChEwlB,EAAKI,EAAO7lB,GACZ0lB,EAAKG,EAAO7lB,EAAI,GAChBwlB,EAAKxlB,EAAI,EAAI6lB,EAAO7lB,EAAI,GAAK,EAAIylB,EAAKC,EACtCC,EAAK3lB,EAAIC,EAAI,EAAI4lB,EAAO7lB,EAAI,GAAK,EAAI0lB,EAAKD,EAC9C,OAAOF,IAAOzlB,EAAIE,EAAIC,GAAKA,EAAGulB,EAAIC,EAAIC,EAAIC,EAC9C,CACA,CChBe,SAAAI,GAASF,GACtB,IAAI5lB,EAAI4lB,EAAO1lB,OACf,OAAO,SAASL,GACd,IAAIE,EAAIyO,KAAKqX,QAAQhmB,GAAK,GAAK,IAAMA,EAAIA,GAAKG,GAC1CulB,EAAKK,GAAQ7lB,EAAIC,EAAI,GAAKA,GAC1BwlB,EAAKI,EAAO7lB,EAAIC,GAChBylB,EAAKG,GAAQ7lB,EAAI,GAAKC,GACtB0lB,EAAKE,GAAQ7lB,EAAI,GAAKC,GAC1B,OAAOslB,IAAOzlB,EAAIE,EAAIC,GAAKA,EAAGulB,EAAIC,EAAIC,EAAIC,EAC9C,CACA,CCZe,SAAAK,GAAS3Y,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCFA,SAAS4Y,GAAO3gB,EAAG3G,GACjB,OAAO,SAASmB,GACd,OAAOwF,EAAIxF,EAAInB,CACnB,CACA,CAQO,SAASunB,GAAI5gB,EAAG1G,GACrB,IAAID,EAAIC,EAAI0G,EACZ,OAAO3G,EAAIsnB,GAAO3gB,EAAG3G,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAM8P,KAAK2T,MAAMzjB,EAAI,KAAOA,GAAKwnB,GAASjE,MAAM5c,GAAK1G,EAAI0G,EAC1G,CAEO,SAAS8gB,GAAMxV,GACpB,OAAoB,IAAZA,GAAKA,GAAWyV,GAAU,SAAS/gB,EAAG1G,GAC5C,OAAOA,EAAI0G,EAbf,SAAqBA,EAAG1G,EAAGgS,GACzB,OAAOtL,EAAImJ,KAAKyU,IAAI5d,EAAGsL,GAAIhS,EAAI6P,KAAKyU,IAAItkB,EAAGgS,GAAKtL,EAAGsL,EAAI,EAAIA,EAAG,SAAS9Q,GACrE,OAAO2O,KAAKyU,IAAI5d,EAAIxF,EAAIlB,EAAGgS,EAC/B,CACA,CASmB0V,CAAYhhB,EAAG1G,EAAGgS,GAAKuV,GAASjE,MAAM5c,GAAK1G,EAAI0G,EAClE,CACA,CAEe,SAAS+gB,GAAQ/gB,EAAG1G,GACjC,IAAID,EAAIC,EAAI0G,EACZ,OAAO3G,EAAIsnB,GAAO3gB,EAAG3G,GAAKwnB,GAASjE,MAAM5c,GAAK1G,EAAI0G,EACpD,CJUA+Q,GAAO+O,GAAWD,GAAW5O,GAAOE,GAAO,CACzC,QAAAE,CAASsM,GAEP,OADAA,EAAS,MAALA,EAAYtM,GAAWlI,KAAKyU,IAAIvM,GAAUsM,GACvC,IAAImC,GAAU3lB,KAAK4iB,EAAG5iB,KAAKM,EAAGN,KAAKgC,EAAIwhB,EAAGxjB,KAAKmiB,QAC1D,EACE,MAAAlL,CAAOuM,GAEL,OADAA,EAAS,MAALA,EAAYvM,GAASjI,KAAKyU,IAAIxM,GAAQuM,GACnC,IAAImC,GAAU3lB,KAAK4iB,EAAG5iB,KAAKM,EAAGN,KAAKgC,EAAIwhB,EAAGxjB,KAAKmiB,QAC1D,EACE,GAAAf,GACE,IAAIwB,EAAIH,MAAMziB,KAAK4iB,GAAK,GAAK5iB,KAAK4iB,EAAI,KAAOe,GACzC3hB,GAAKhC,KAAKgC,EACV6D,EAAI4c,MAAMziB,KAAKM,GAAK,EAAIN,KAAKM,EAAI0B,GAAK,EAAIA,GAC1C8kB,EAAO9X,KAAKgW,IAAIpC,GAChBmE,EAAO/X,KAAKiW,IAAIrC,GACpB,OAAO,IAAId,GACT,KAAO9f,EAAI6D,GAAKqf,GAAI4B,EAAO3B,GAAI4B,IAC/B,KAAO/kB,EAAI6D,GAAKuf,GAAI0B,EAAOzB,GAAI0B,IAC/B,KAAO/kB,EAAI6D,GAAKyf,GAAIwB,IACpB9mB,KAAKmiB,QAEX,KKtDA,IAAA6E,GAAe,SAAUC,EAAS9V,GAChC,IAAIqQ,EAAQmF,GAAMxV,GAElB,SAASiQ,EAAI/K,EAAO6Q,GAClB,IAAIhmB,EAAIsgB,GAAOnL,EAAQ8Q,GAAS9Q,IAAQnV,GAAIgmB,EAAMC,GAASD,IAAMhmB,GAC7D+gB,EAAIT,EAAMnL,EAAM4L,EAAGiF,EAAIjF,GACvB9iB,EAAIqiB,EAAMnL,EAAMlX,EAAG+nB,EAAI/nB,GACvBgjB,EAAUyE,GAAQvQ,EAAM8L,QAAS+E,EAAI/E,SACzC,OAAO,SAAS9hB,GAKd,OAJAgW,EAAMnV,EAAIA,EAAEb,GACZgW,EAAM4L,EAAIA,EAAE5hB,GACZgW,EAAMlX,EAAIA,EAAEkB,GACZgW,EAAM8L,QAAUA,EAAQ9hB,GACjBgW,EAAQ,EACrB,CACA,CAIE,OAFA+K,EAAIuF,MAAQM,EAEL7F,CACR,CApBc,CAoBZ,GAEH,SAASgG,GAAUC,GACjB,OAAO,SAASC,GACd,IAII/mB,EAAGihB,EAJHhhB,EAAI8mB,EAAO5mB,OACXQ,EAAI,IAAI3B,MAAMiB,GACdyhB,EAAI,IAAI1iB,MAAMiB,GACdrB,EAAI,IAAII,MAAMiB,GAElB,IAAKD,EAAI,EAAGA,EAAIC,IAAKD,EACnBihB,EAAQ2F,GAASG,EAAO/mB,IACxBW,EAAEX,GAAKihB,EAAMtgB,GAAK,EAClB+gB,EAAE1hB,GAAKihB,EAAMS,GAAK,EAClB9iB,EAAEoB,GAAKihB,EAAMriB,GAAK,EAMpB,OAJA+B,EAAImmB,EAAOnmB,GACX+gB,EAAIoF,EAAOpF,GACX9iB,EAAIkoB,EAAOloB,GACXqiB,EAAMW,QAAU,EACT,SAAS9hB,GAId,OAHAmhB,EAAMtgB,EAAIA,EAAEb,GACZmhB,EAAMS,EAAIA,EAAE5hB,GACZmhB,EAAMriB,EAAIA,EAAEkB,GACLmhB,EAAQ,EACrB,CACA,CACA,CAEU,IAAC+F,GAAWH,GAAUtB,IACrB0B,GAAiBJ,GAAUd,ICtDvB,SAAAmB,GAAS5hB,EAAG1G,GACpBA,IAAGA,EAAI,IACZ,IAEIoB,EAFAC,EAAIqF,EAAImJ,KAAKC,IAAI9P,EAAEuB,OAAQmF,EAAEnF,QAAU,EACvCO,EAAI9B,EAAE8C,QAEV,OAAO,SAAS5B,GACd,IAAKE,EAAI,EAAGA,EAAIC,IAAKD,EAAGU,EAAEV,GAAKsF,EAAEtF,IAAM,EAAIF,GAAKlB,EAAEoB,GAAKF,EACvD,OAAOY,CACX,CACA,CAEO,SAASymB,GAAc9Z,GAC5B,OAAO+Z,YAAYC,OAAOha,MAAQA,aAAaia,SACjD,CCNO,SAASC,GAAajiB,EAAG1G,GAC9B,IAIIoB,EAJAwnB,EAAK5oB,EAAIA,EAAEuB,OAAS,EACpBsnB,EAAKniB,EAAImJ,KAAKC,IAAI8Y,EAAIliB,EAAEnF,QAAU,EAClCkN,EAAI,IAAIrO,MAAMyoB,GACd/mB,EAAI,IAAI1B,MAAMwoB,GAGlB,IAAKxnB,EAAI,EAAGA,EAAIynB,IAAMznB,EAAGqN,EAAErN,GAAK6F,GAAMP,EAAEtF,GAAIpB,EAAEoB,IAC9C,KAAOA,EAAIwnB,IAAMxnB,EAAGU,EAAEV,GAAKpB,EAAEoB,GAE7B,OAAO,SAASF,GACd,IAAKE,EAAI,EAAGA,EAAIynB,IAAMznB,EAAGU,EAAEV,GAAKqN,EAAErN,GAAGF,GACrC,OAAOY,CACX,CACA,CCrBe,SAAAgnB,GAASpiB,EAAG1G,GACzB,IAAID,EAAI,IAAIuU,KACZ,OAAO5N,GAAKA,EAAG1G,GAAKA,EAAG,SAASkB,GAC9B,OAAOnB,EAAEgpB,QAAQriB,GAAK,EAAIxF,GAAKlB,EAAIkB,GAAInB,CAC3C,CACA,CCLe,SAAAipB,GAAStiB,EAAG1G,GACzB,OAAO0G,GAAKA,EAAG1G,GAAKA,EAAG,SAASkB,GAC9B,OAAOwF,GAAK,EAAIxF,GAAKlB,EAAIkB,CAC7B,CACA,CCFe,SAAA+nB,GAASviB,EAAG1G,GACzB,IAEIqkB,EAFAjjB,EAAI,GACJU,EAAI,GAMR,IAAKuiB,KAHK,OAAN3d,GAA2B,iBAANA,IAAgBA,EAAI,IACnC,OAAN1G,GAA2B,iBAANA,IAAgBA,EAAI,IAEnCA,EACJqkB,KAAK3d,EACPtF,EAAEijB,GAAKpd,GAAMP,EAAE2d,GAAIrkB,EAAEqkB,IAErBviB,EAAEuiB,GAAKrkB,EAAEqkB,GAIb,OAAO,SAASnjB,GACd,IAAKmjB,KAAKjjB,EAAGU,EAAEuiB,GAAKjjB,EAAEijB,GAAGnjB,GACzB,OAAOY,CACX,CACA,CCpBA,IAAIonB,GAAM,8CACNC,GAAM,IAAI9Q,OAAO6Q,GAAIzX,OAAQ,KAclB,SAAA2X,GAAS1iB,EAAG1G,GACzB,IACIqpB,EACAC,EACAC,EAHAC,EAAKN,GAAIO,UAAYN,GAAIM,UAAY,EAIrCroB,GAAK,EACLD,EAAI,GACJuoB,EAAI,GAMR,IAHAhjB,GAAQ,GAAI1G,GAAQ,IAGZqpB,EAAKH,GAAI1G,KAAK9b,MACd4iB,EAAKH,GAAI3G,KAAKxiB,MACfupB,EAAKD,EAAGhe,OAASke,IACpBD,EAAKvpB,EAAE8C,MAAM0mB,EAAID,GACbpoB,EAAEC,GAAID,EAAEC,IAAMmoB,EACbpoB,IAAIC,GAAKmoB,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxBnoB,EAAEC,GAAID,EAAEC,IAAMkoB,EACbnoB,IAAIC,GAAKkoB,GAEdnoB,IAAIC,GAAK,KACTsoB,EAAE9e,KAAK,CAACxJ,EAAGA,EAAGqN,EAAGkb,GAAON,EAAIC,MAE9BE,EAAKL,GAAIM,UAYX,OARID,EAAKxpB,EAAEuB,SACTgoB,EAAKvpB,EAAE8C,MAAM0mB,GACTroB,EAAEC,GAAID,EAAEC,IAAMmoB,EACbpoB,IAAIC,GAAKmoB,GAKTpoB,EAAEI,OAAS,EAAKmoB,EAAE,GA7C3B,SAAa1pB,GACX,OAAO,SAASkB,GACd,OAAOlB,EAAEkB,GAAK,EAClB,CACA,CA0CQ0oB,CAAIF,EAAE,GAAGjb,GApDjB,SAAczO,GACZ,OAAO,WACL,OAAOA,CACX,CACA,CAiDQ6pB,CAAK7pB,IACJA,EAAI0pB,EAAEnoB,OAAQ,SAASL,GACtB,IAAK,IAAW+K,EAAP7K,EAAI,EAAMA,EAAIpB,IAAKoB,EAAGD,GAAG8K,EAAIyd,EAAEtoB,IAAIA,GAAK6K,EAAEwC,EAAEvN,GACrD,OAAOC,EAAE0J,KAAK,GACxB,EACA,CCrDe,SAAAif,GAASpjB,EAAG1G,GACzB,IAAkB8B,EAAdZ,SAAWlB,EACf,OAAY,MAALA,GAAmB,YAANkB,EAAkBqmB,GAASvnB,IAClC,WAANkB,EAAiByoB,GACZ,WAANzoB,GAAmBY,EAAIugB,GAAMriB,KAAOA,EAAI8B,EAAGmgB,IAAO1Z,GAClDvI,aAAaqiB,GAAQJ,GACrBjiB,aAAasU,KAAOyV,GACpBxB,GAAcvoB,GAAKsoB,GACnBloB,MAAM4pB,QAAQhqB,GAAK2oB,GACE,mBAAd3oB,EAAEiqB,SAAgD,mBAAfjqB,EAAEwR,UAA2B8R,MAAMtjB,GAAKipB,GAClFU,IAAQjjB,EAAG1G,EACnB,CCrBe,SAAAkqB,GAASxjB,EAAG1G,GACzB,OAAO0G,GAAKA,EAAG1G,GAAKA,EAAG,SAASkB,GAC9B,OAAO2O,KAAK2T,MAAM9c,GAAK,EAAIxF,GAAKlB,EAAIkB,EACxC,CACA,CCJA,ICEIipB,GACAC,GACAC,GACAC,GDLA5F,GAAU,IAAM7U,KAAK4U,GAEd8F,GAAW,CACpBC,WAAY,EACZC,WAAY,EACZC,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,GAGK,SAAAC,GAASpkB,EAAG1G,EAAG8B,EAAG/B,EAAGqV,EAAGX,GACrC,IAAImW,EAAQC,EAAQF,EAKpB,OAJIC,EAAS/a,KAAK8V,KAAKjf,EAAIA,EAAI1G,EAAIA,MAAI0G,GAAKkkB,EAAQ5qB,GAAK4qB,IACrDD,EAAQjkB,EAAI5E,EAAI9B,EAAID,KAAG+B,GAAK4E,EAAIikB,EAAO5qB,GAAKC,EAAI2qB,IAChDE,EAAShb,KAAK8V,KAAK7jB,EAAIA,EAAI/B,EAAIA,MAAI+B,GAAK+oB,EAAQ9qB,GAAK8qB,EAAQF,GAASE,GACtEnkB,EAAI3G,EAAIC,EAAI8B,IAAG4E,GAAKA,EAAG1G,GAAKA,EAAG2qB,GAASA,EAAOC,GAAUA,GACtD,CACLJ,WAAYpV,EACZqV,WAAYhW,EACZiW,OAAQ7a,KAAK6V,MAAM1lB,EAAG0G,GAAKge,GAC3BiG,MAAO9a,KAAKkb,KAAKJ,GAASjG,GAC1BkG,OAAQA,EACRC,OAAQA,EAEZ,CEtBA,SAASG,GAAqBC,EAAOC,EAASC,EAASC,GAErD,SAASC,EAAIlqB,GACX,OAAOA,EAAEI,OAASJ,EAAEkqB,MAAQ,IAAM,EACtC,CAqCE,OAAO,SAAS3kB,EAAG1G,GACjB,IAAImB,EAAI,GACJuoB,EAAI,GAOR,OANAhjB,EAAIukB,EAAMvkB,GAAI1G,EAAIirB,EAAMjrB,GAtC1B,SAAmBsrB,EAAIC,EAAIC,EAAIC,EAAItqB,EAAGuoB,GACpC,GAAI4B,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIrqB,EAAID,EAAEyJ,KAAK,aAAc,KAAMsgB,EAAS,KAAMC,GAClDzB,EAAE9e,KAAK,CAACxJ,EAAGA,EAAI,EAAGqN,EAAGkb,GAAO2B,EAAIE,IAAM,CAACpqB,EAAGA,EAAI,EAAGqN,EAAGkb,GAAO4B,EAAIE,IACrE,MAAeD,GAAMC,IACftqB,EAAEyJ,KAAK,aAAe4gB,EAAKN,EAAUO,EAAKN,EAEhD,CAgCIO,CAAUhlB,EAAE8jB,WAAY9jB,EAAE+jB,WAAYzqB,EAAEwqB,WAAYxqB,EAAEyqB,WAAYtpB,EAAGuoB,GA9BvE,SAAgBhjB,EAAG1G,EAAGmB,EAAGuoB,GACnBhjB,IAAM1G,GACJ0G,EAAI1G,EAAI,IAAKA,GAAK,IAAcA,EAAI0G,EAAI,MAAKA,GAAK,KACtDgjB,EAAE9e,KAAK,CAACxJ,EAAGD,EAAEyJ,KAAKygB,EAAIlqB,GAAK,UAAW,KAAMiqB,GAAY,EAAG3c,EAAGkb,GAAOjjB,EAAG1G,MAC/DA,GACTmB,EAAEyJ,KAAKygB,EAAIlqB,GAAK,UAAYnB,EAAIorB,EAEtC,CAwBIV,CAAOhkB,EAAEgkB,OAAQ1qB,EAAE0qB,OAAQvpB,EAAGuoB,GAtBhC,SAAehjB,EAAG1G,EAAGmB,EAAGuoB,GAClBhjB,IAAM1G,EACR0pB,EAAE9e,KAAK,CAACxJ,EAAGD,EAAEyJ,KAAKygB,EAAIlqB,GAAK,SAAU,KAAMiqB,GAAY,EAAG3c,EAAGkb,GAAOjjB,EAAG1G,KAC9DA,GACTmB,EAAEyJ,KAAKygB,EAAIlqB,GAAK,SAAWnB,EAAIorB,EAErC,CAiBIT,CAAMjkB,EAAEikB,MAAO3qB,EAAE2qB,MAAOxpB,EAAGuoB,GAf7B,SAAe4B,EAAIC,EAAIC,EAAIC,EAAItqB,EAAGuoB,GAChC,GAAI4B,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIrqB,EAAID,EAAEyJ,KAAKygB,EAAIlqB,GAAK,SAAU,KAAM,IAAK,KAAM,KACnDuoB,EAAE9e,KAAK,CAACxJ,EAAGA,EAAI,EAAGqN,EAAGkb,GAAO2B,EAAIE,IAAM,CAACpqB,EAAGA,EAAI,EAAGqN,EAAGkb,GAAO4B,EAAIE,IACrE,MAAsB,IAAPD,GAAmB,IAAPC,GACrBtqB,EAAEyJ,KAAKygB,EAAIlqB,GAAK,SAAWqqB,EAAK,IAAMC,EAAK,IAEjD,CASIE,CAAMjlB,EAAEkkB,OAAQlkB,EAAEmkB,OAAQ7qB,EAAE4qB,OAAQ5qB,EAAE6qB,OAAQ1pB,EAAGuoB,GACjDhjB,EAAI1G,EAAI,KACD,SAASkB,GAEd,IADA,IAA0B+K,EAAtB7K,GAAK,EAAGC,EAAIqoB,EAAEnoB,SACTH,EAAIC,GAAGF,GAAG8K,EAAIyd,EAAEtoB,IAAIA,GAAK6K,EAAEwC,EAAEvN,GACtC,OAAOC,EAAE0J,KAAK,GACpB,CACA,CACA,CAEU,IAAC+gB,GAA0BZ,IDtD9B,SAAkB/jB,GACvB,MAAc,SAAVA,EAAyBsjB,IACxBJ,KAASA,GAAUrmB,SAASK,cAAc,OAAQimB,GAAUtmB,SAASI,gBAAiBmmB,GAAUvmB,SAAS0D,aAC9G2iB,GAAQziB,MAAMmkB,UAAY5kB,EAC1BA,EAAQojB,GAAQniB,iBAAiBkiB,GAAQ5kB,YAAY2kB,IAAU,MAAMliB,iBAAiB,aACtFmiB,GAAQ7f,YAAY4f,IAEbW,KADP7jB,EAAQA,EAAMnE,MAAM,GAAI,GAAG2F,MAAM,MACT,IAAKxB,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IACjF,GC8CoE,OAAQ,MAAO,QACxE6kB,GAA0Bd,ID7C9B,SAAkB/jB,GACvB,OAAa,MAATA,EAAsBsjB,IACrBD,KAASA,GAAUxmB,SAASM,gBAAgB,6BAA8B,MAC/EkmB,GAAQpjB,aAAa,YAAaD,IAC5BA,EAAQqjB,GAAQuB,UAAUE,QAAQC,eAEjClB,IADP7jB,EAAQA,EAAMglB,QACSvlB,EAAGO,EAAMjH,EAAGiH,EAAMnF,EAAGmF,EAAMlH,EAAGkH,EAAMmO,EAAGnO,EAAMwN,GAFL8V,GAGjE,GCsCoE,KAAM,IAAK,KC9D3E2B,GAAMrc,KAAKsc,MACXC,GAAO,EACPC,GAAO,EACPC,GAAW,MAEf,SAAS3E,GAAKlZ,GACZ,QAASA,EAAIoB,KAAK0c,IAAI9d,IAAM,EAAIA,GAAK,CACvC,CAYe,SAAA+d,GAASC,EAAIC,GAC1B,IAKItrB,EACAurB,EANAC,EAAMH,EAAG,GAAII,EAAMJ,EAAG,GAAIK,EAAKL,EAAG,GAClCM,EAAML,EAAG,GAAIM,EAAMN,EAAG,GAAIO,EAAKP,EAAG,GAClCQ,EAAKH,EAAMH,EACXO,EAAKH,EAAMH,EACXO,EAAKF,EAAKA,EAAKC,EAAKA,EAKxB,GAAIC,EAAKd,GACPK,EAAI9c,KAAKwd,IAAIJ,EAAKH,GAAMZ,GACxB9qB,EAAI,SAASF,GACX,MAAO,CACL0rB,EAAM1rB,EAAIgsB,EACVL,EAAM3rB,EAAIisB,EACVL,EAAKjd,KAAK0c,IAAIL,GAAMhrB,EAAIyrB,GAEhC,MAIO,CACH,IAAIW,EAAKzd,KAAK8V,KAAKyH,GACfG,GAAMN,EAAKA,EAAKH,EAAKA,EAAKT,GAAOe,IAAO,EAAIN,EAAKV,GAAOkB,GACxDE,GAAMP,EAAKA,EAAKH,EAAKA,EAAKT,GAAOe,IAAO,EAAIH,EAAKb,GAAOkB,GACxDG,EAAK5d,KAAKwd,IAAIxd,KAAK8V,KAAK4H,EAAKA,EAAK,GAAKA,GACvCG,EAAK7d,KAAKwd,IAAIxd,KAAK8V,KAAK6H,EAAKA,EAAK,GAAKA,GAC3Cb,GAAKe,EAAKD,GAAMvB,GAChB9qB,EAAI,SAASF,GACX,IApCQuN,EAoCJtN,EAAID,EAAIyrB,EACRgB,EAAShG,GAAK8F,GACdG,EAAId,GAAMV,GAAOkB,IAAOK,GAtCpBlf,EAsCkCyd,GAAM/qB,EAAIssB,IArC/Chf,EAAIoB,KAAK0c,IAAI,EAAI9d,IAAM,IAAMA,EAAI,IAL5C,SAAcA,GACZ,QAASA,EAAIoB,KAAK0c,IAAI9d,IAAM,EAAIA,GAAK,CACvC,CAwCgEmZ,CAAK6F,IAC/D,MAAO,CACLb,EAAMgB,EAAIV,EACVL,EAAMe,EAAIT,EACVL,EAAKa,EAAShG,GAAKuE,GAAM/qB,EAAIssB,GAErC,CACA,CAIE,OAFArsB,EAAEgW,SAAe,IAAJuV,EAENvrB,CACT,CC5DA,SAASwiB,GAAI0D,GACX,OAAO,SAASpQ,EAAO6Q,GACrB,IAAItE,EAAI6D,GAAKpQ,EAAQ2W,GAAS3W,IAAQuM,GAAIsE,EAAM8F,GAAS9F,IAAMtE,GAC3DtiB,EAAIkhB,GAAMnL,EAAM/V,EAAG4mB,EAAI5mB,GACvB0B,EAAIwf,GAAMnL,EAAMrU,EAAGklB,EAAIllB,GACvBmgB,EAAUX,GAAMnL,EAAM8L,QAAS+E,EAAI/E,SACvC,OAAO,SAAS9hB,GAKd,OAJAgW,EAAMuM,EAAIA,EAAEviB,GACZgW,EAAM/V,EAAIA,EAAED,GACZgW,EAAMrU,EAAIA,EAAE3B,GACZgW,EAAM8L,QAAUA,EAAQ9hB,GACjBgW,EAAQ,EACrB,CACA,CACA,CAEA,IAAA4W,GAAelK,GAAI0D,IACRyG,GAAUnK,GAAIvB,ICjBV,SAASiD,GAAIpO,EAAO6Q,GACjC,IAAIllB,EAAIwf,IAAOnL,EAAQ8W,GAAS9W,IAAQrU,GAAIklB,EAAMiG,GAASjG,IAAMllB,GAC7D6D,EAAI2b,GAAMnL,EAAMxQ,EAAGqhB,EAAIrhB,GACvB1G,EAAIqiB,GAAMnL,EAAMlX,EAAG+nB,EAAI/nB,GACvBgjB,EAAUX,GAAMnL,EAAM8L,QAAS+E,EAAI/E,SACvC,OAAO,SAAS9hB,GAKd,OAJAgW,EAAMrU,EAAIA,EAAE3B,GACZgW,EAAMxQ,EAAIA,EAAExF,GACZgW,EAAMlX,EAAIA,EAAEkB,GACZgW,EAAM8L,QAAUA,EAAQ9hB,GACjBgW,EAAQ,EACnB,CACA,CCZA,SAAS0O,GAAI0B,GACX,OAAO,SAASpQ,EAAO6Q,GACrB,IAAItE,EAAI6D,GAAKpQ,EAAQ+W,GAAS/W,IAAQuM,GAAIsE,EAAMkG,GAASlG,IAAMtE,GAC3D3hB,EAAIugB,GAAMnL,EAAMpV,EAAGimB,EAAIjmB,GACvBe,EAAIwf,GAAMnL,EAAMrU,EAAGklB,EAAIllB,GACvBmgB,EAAUX,GAAMnL,EAAM8L,QAAS+E,EAAI/E,SACvC,OAAO,SAAS9hB,GAKd,OAJAgW,EAAMuM,EAAIA,EAAEviB,GACZgW,EAAMpV,EAAIA,EAAEZ,GACZgW,EAAMrU,EAAIA,EAAE3B,GACZgW,EAAM8L,QAAUA,EAAQ9hB,GACjBgW,EAAQ,EACrB,CACA,CACA,CAEA,IAAAgX,GAAetI,GAAI0B,IACR6G,GAAUvI,GAAIvD,ICjBzB,SAASkE,GAAUe,GACjB,OAAO,SAAU8G,EAAepc,GAG9B,SAASuU,EAAUrP,EAAO6Q,GACxB,IAAItE,EAAI6D,GAAKpQ,EAAQmX,GAAenX,IAAQuM,GAAIsE,EAAMsG,GAAetG,IAAMtE,GACvEtiB,EAAIkhB,GAAMnL,EAAM/V,EAAG4mB,EAAI5mB,GACvB0B,EAAIwf,GAAMnL,EAAMrU,EAAGklB,EAAIllB,GACvBmgB,EAAUX,GAAMnL,EAAM8L,QAAS+E,EAAI/E,SACvC,OAAO,SAAS9hB,GAKd,OAJAgW,EAAMuM,EAAIA,EAAEviB,GACZgW,EAAM/V,EAAIA,EAAED,GACZgW,EAAMrU,EAAIA,EAAEgN,KAAKyU,IAAIpjB,EAAG8Q,IACxBkF,EAAM8L,QAAUA,EAAQ9hB,GACjBgW,EAAQ,EACvB,CACA,CAII,OAlBAlF,GAAKA,EAgBLuU,EAAUiB,MAAQ4G,EAEX7H,CACR,CApBM,CAoBJ,EACL,CAEA,IAAA+H,GAAe/H,GAAUe,IACdiH,GAAgBhI,GAAUlE,IC1BrC,SAASmM,GAAYvb,EAAIzP,GACvB,IAAIirB,EAAQC,EACZ,OAAO,WACL,IAAI/X,EAAWzD,GAAIrS,KAAMoS,GACrB+D,EAAQL,EAASK,MAKrB,GAAIA,IAAUyX,EAEZ,IAAK,IAAIrtB,EAAI,EAAGC,GADhBqtB,EAASD,EAASzX,GACSzV,OAAQH,EAAIC,IAAKD,EAC1C,GAAIstB,EAAOttB,GAAGoC,OAASA,EAAM,EAC3BkrB,EAASA,EAAO5rB,SACTgI,OAAO1J,EAAG,GACjB,KACV,CAIIuV,EAASK,MAAQ0X,CACrB,CACA,CAEA,SAASC,GAAc1b,EAAIzP,EAAMyD,GAC/B,IAAIwnB,EAAQC,EACZ,GAAqB,mBAAVznB,EAAsB,MAAM,IAAIoM,MAC3C,OAAO,WACL,IAAIsD,EAAWzD,GAAIrS,KAAMoS,GACrB+D,EAAQL,EAASK,MAKrB,GAAIA,IAAUyX,EAAQ,CACpBC,GAAUD,EAASzX,GAAOlU,QAC1B,IAAK,IAAI5B,EAAI,CAACsC,KAAMA,EAAMyD,MAAOA,GAAQ7F,EAAI,EAAGC,EAAIqtB,EAAOntB,OAAQH,EAAIC,IAAKD,EAC1E,GAAIstB,EAAOttB,GAAGoC,OAASA,EAAM,CAC3BkrB,EAAOttB,GAAKF,EACZ,KACV,CAEUE,IAAMC,GAAGqtB,EAAO9jB,KAAK1J,EAC/B,CAEIyV,EAASK,MAAQ0X,CACrB,CACA,CAoBO,SAASE,GAAWC,EAAYrrB,EAAMyD,GAC3C,IAAIgM,EAAK4b,EAAWC,IAOpB,OALAD,EAAWrgB,MAAK,WACd,IAAImI,EAAWzD,GAAIrS,KAAMoS,IACxB0D,EAAS1P,QAAU0P,EAAS1P,MAAQ,KAAKzD,GAAQyD,EAAMzF,MAAMX,KAAMS,UACxE,IAES,SAAS4E,GACd,OAAO8M,GAAI9M,EAAM+M,GAAIhM,MAAMzD,EAC/B,CACA,CC7Ee,SAAAurB,GAASroB,EAAG1G,GACzB,IAAI8B,EACJ,OAAqB,iBAAN9B,EAAiBgvB,GAC1BhvB,aAAaqiB,GAAQwF,IACpB/lB,EAAIugB,GAAMriB,KAAOA,EAAI8B,EAAG+lB,IACzBuB,IAAmB1iB,EAAG1G,EAC9B,CCJA,SAAS4G,GAAWpD,GAClB,OAAO,WACL3C,KAAKgG,gBAAgBrD,EACzB,CACA,CAEA,SAASsD,GAAaxC,GACpB,OAAO,WACLzD,KAAKkG,kBAAkBzC,EAASX,MAAOW,EAASV,MACpD,CACA,CAEA,SAASoD,GAAaxD,EAAMurB,EAAaE,GACvC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUxuB,KAAKiI,aAAatF,GAChC,OAAO6rB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeJ,EAAYG,EAAWG,EAASJ,EACzD,CACA,CAEA,SAAS9nB,GAAe7C,EAAUyqB,EAAaE,GAC7C,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUxuB,KAAK6P,eAAepM,EAASX,MAAOW,EAASV,OAC3D,OAAOyrB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeJ,EAAYG,EAAWG,EAASJ,EACzD,CACA,CAEA,SAAS5nB,GAAa7D,EAAMurB,EAAa9nB,GACvC,IAAIioB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAAShoB,EAAMpG,MAC5B,GAAc,MAAVouB,EAGJ,OAFAI,EAAUxuB,KAAKiI,aAAatF,OAC5B4rB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeJ,EAAYG,EAAWG,EAASJ,IAL1CpuB,KAAKgG,gBAAgBrD,EAMzD,CACA,CAEA,SAAS+D,GAAejD,EAAUyqB,EAAa9nB,GAC7C,IAAIioB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAAShoB,EAAMpG,MAC5B,GAAc,MAAVouB,EAGJ,OAFAI,EAAUxuB,KAAK6P,eAAepM,EAASX,MAAOW,EAASV,WACvDwrB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeJ,EAAYG,EAAWG,EAASJ,IAL1CpuB,KAAKkG,kBAAkBzC,EAASX,MAAOW,EAASV,MAMpF,CACA,CCvDA,SAAS2rB,GAAYjrB,EAAU2C,GAC7B,IAAIqO,EAAIxG,EACR,SAASkI,IACP,IAAI5V,EAAI6F,EAAMzF,MAAMX,KAAMS,WAE1B,OADIF,IAAM0N,IAAIwG,GAAMxG,EAAK1N,IAV7B,SAA2BkD,EAAUlD,GACnC,OAAO,SAASF,GACdL,KAAKuG,eAAe9C,EAASX,MAAOW,EAASV,MAAOxC,EAAEZ,KAAKK,KAAMK,GACrE,CACA,CAMmCsuB,CAAkBlrB,EAAUlD,IACpDkU,CACX,CAEE,OADA0B,EAAMyY,OAASxoB,EACR+P,CACT,CAEA,SAAS0Y,GAAUlsB,EAAMyD,GACvB,IAAIqO,EAAIxG,EACR,SAASkI,IACP,IAAI5V,EAAI6F,EAAMzF,MAAMX,KAAMS,WAE1B,OADIF,IAAM0N,IAAIwG,GAAMxG,EAAK1N,IA3B7B,SAAyBoC,EAAMpC,GAC7B,OAAO,SAASF,GACdL,KAAKqG,aAAa1D,EAAMpC,EAAEZ,KAAKK,KAAMK,GACzC,CACA,CAuBmCyuB,CAAgBnsB,EAAMpC,IAC9CkU,CACX,CAEE,OADA0B,EAAMyY,OAASxoB,EACR+P,CACT,CChCA,SAAS4Y,GAAc3c,EAAIhM,GACzB,OAAO,WACLqQ,GAAKzW,KAAMoS,GAAI+B,OAAS/N,EAAMzF,MAAMX,KAAMS,UAC9C,CACA,CAEA,SAASuuB,GAAc5c,EAAIhM,GACzB,OAAOA,GAASA,EAAO,WACrBqQ,GAAKzW,KAAMoS,GAAI+B,MAAQ/N,CAC3B,CACA,CCVA,SAAS6oB,GAAiB7c,EAAIhM,GAC5B,OAAO,WACLiM,GAAIrS,KAAMoS,GAAImE,UAAYnQ,EAAMzF,MAAMX,KAAMS,UAChD,CACA,CAEA,SAASyuB,GAAiB9c,EAAIhM,GAC5B,OAAOA,GAASA,EAAO,WACrBiM,GAAIrS,KAAMoS,GAAImE,SAAWnQ,CAC7B,CACA,CCVA,IAAIyG,GAAYK,GAAUzN,UAAUQ,YCiBpC,SAAS2G,GAAYjE,GACnB,OAAO,WACL3C,KAAK6G,MAAMC,eAAenE,EAC9B,CACA,CCFA,IAAIyP,GAAK,EAEF,SAAS+c,GAAWriB,EAAQC,EAASpK,EAAMyP,GAChDpS,KAAKgN,QAAUF,EACf9M,KAAKiN,SAAWF,EAChB/M,KAAKovB,MAAQzsB,EACb3C,KAAKiuB,IAAM7b,CACb,CAEe,SAAS4b,GAAWrrB,GACjC,OAAOuK,KAAY8gB,WAAWrrB,EAChC,CAEO,SAAS0sB,KACd,QAASjd,EACX,CAEA,IAAIkd,GAAsBpiB,GAAUzN,UC9B7B,SAAS8vB,GAAUlvB,GACxB,QAASA,GAAK,IAAM,EAAIA,EAAIA,IAAMA,GAAK,EAAIA,GAAK,GAAK,CACvD,CCFO,SAASmvB,GAAWnvB,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,CF8BA8uB,GAAW1vB,UAAYuuB,GAAWvuB,UAAY,CAC5CQ,YAAakvB,GACbhiB,OGtCa,SAASA,GACtB,IAAIxK,EAAO3C,KAAKovB,MACZhd,EAAKpS,KAAKiuB,IAEQ,mBAAX9gB,IAAuBA,EAASvJ,EAASuJ,IAEpD,IAAK,IAAIL,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,IAAI7N,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAC3F,IAAK,IAAiFhG,EAAMgI,EAAnFpI,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAQ4M,EAAWF,EAAU/B,GAAK,IAAI9L,MAAMiB,GAAmBD,EAAI,EAAGA,EAAIC,IAAKD,GAC9G8E,EAAOJ,EAAM1E,MAAQ8M,EAAUF,EAAOxN,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,MAClE,aAAcI,IAAMgI,EAAQ3I,SAAWW,EAAKX,UAChD4I,EAAS/M,GAAK8M,EACdyI,GAASxI,EAAS/M,GAAIoC,EAAMyP,EAAI7R,EAAG+M,EAAU6E,GAAI9M,EAAM+M,KAK7D,OAAO,IAAI+c,GAAW/hB,EAAWpN,KAAKiN,SAAUtK,EAAMyP,EACxD,EHsBE7E,UIvCa,SAASJ,GACtB,IAAIxK,EAAO3C,KAAKovB,MACZhd,EAAKpS,KAAKiuB,IAEQ,mBAAX9gB,IAAuBA,EAASpJ,EAAYoJ,IAEvD,IAAK,IAAIL,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,GAAIL,EAAU,GAAI1B,EAAI,EAAGA,EAAIC,IAAKD,EAC/F,IAAK,IAAyChG,EAArCJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAcH,EAAI,EAAGA,EAAIC,IAAKD,EAClE,GAAI8E,EAAOJ,EAAM1E,GAAI,CACnB,IAAK,IAA2DqE,EAAvD6qB,EAAWtiB,EAAOxN,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,GAAeyqB,EAAUvd,GAAI9M,EAAM+M,GAAKoR,EAAI,EAAGxhB,EAAIytB,EAAS/uB,OAAQ8iB,EAAIxhB,IAAKwhB,GAC/H5e,EAAQ6qB,EAASjM,KACnB1N,GAASlR,EAAOjC,EAAMyP,EAAIoR,EAAGiM,EAAUC,GAG3CtiB,EAAUrD,KAAK0lB,GACf1iB,EAAQhD,KAAK1E,EACrB,CAIE,OAAO,IAAI8pB,GAAW/hB,EAAWL,EAASpK,EAAMyP,EAClD,EJmBE5E,OKzCa,SAASC,GACD,mBAAVA,IAAsBA,EAAQxJ,EAAQwJ,IAEjD,IAAK,IAAIX,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ0M,EAAY,IAAI7N,MAAM+L,GAAID,EAAI,EAAGA,EAAIC,IAAKD,EAC3F,IAAK,IAAuEhG,EAAnEJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAQ4M,EAAWF,EAAU/B,GAAK,GAAU9K,EAAI,EAAGA,EAAIC,IAAKD,GAC3F8E,EAAOJ,EAAM1E,KAAOkN,EAAM9N,KAAK0F,EAAMA,EAAKX,SAAUnE,EAAG0E,IAC1DqI,EAASvD,KAAK1E,GAKpB,OAAO,IAAI8pB,GAAW/hB,EAAWpN,KAAKiN,SAAUjN,KAAKovB,MAAOpvB,KAAKiuB,IACnE,EL8BEvf,MM3Ca,SAASsf,GACtB,GAAIA,EAAWC,MAAQjuB,KAAKiuB,IAAK,MAAM,IAAIzb,MAE3C,IAAK,IAAI5D,EAAU5O,KAAKgN,QAAS6B,EAAUmf,EAAWhhB,QAAS8B,EAAKF,EAAQlO,OAAQqO,EAAKF,EAAQnO,OAAQ4K,EAAI0D,KAAKC,IAAIH,EAAIC,GAAKG,EAAS,IAAI3P,MAAMuP,GAAKzD,EAAI,EAAGA,EAAIC,IAAKD,EACrK,IAAK,IAAmGhG,EAA/F8J,EAASP,EAAQvD,GAAI+D,EAASP,EAAQxD,GAAI7K,EAAI2O,EAAOzO,OAAQgO,EAAQQ,EAAO7D,GAAK,IAAI9L,MAAMiB,GAAUD,EAAI,EAAGA,EAAIC,IAAKD,GACxH8E,EAAO8J,EAAO5O,IAAM6O,EAAO7O,MAC7BmO,EAAMnO,GAAK8E,GAKjB,KAAOgG,EAAIyD,IAAMzD,EACf6D,EAAO7D,GAAKuD,EAAQvD,GAGtB,OAAO,IAAI8jB,GAAWjgB,EAAQlP,KAAKiN,SAAUjN,KAAKovB,MAAOpvB,KAAKiuB,IAChE,EN4BE/gB,UF1Ca,WACb,OAAO,IAAIL,GAAU7M,KAAKgN,QAAShN,KAAKiN,SAC1C,EEyCE+gB,WO5Ca,WAKb,IAJA,IAAIrrB,EAAO3C,KAAKovB,MACZO,EAAM3vB,KAAKiuB,IACX2B,EAAMP,KAEDviB,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ2K,EAAI,EAAGA,EAAIC,IAAKD,EACjE,IAAK,IAAyChG,EAArCJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAcH,EAAI,EAAGA,EAAIC,IAAKD,EAClE,GAAI8E,EAAOJ,EAAM1E,GAAI,CACnB,IAAImvB,EAAUvd,GAAI9M,EAAMsqB,GACxB7Z,GAASzQ,EAAM1C,EAAMitB,EAAKrvB,EAAG0E,EAAO,CAClCmP,KAAMsb,EAAQtb,KAAOsb,EAAQvb,MAAQub,EAAQnZ,SAC7CpC,MAAO,EACPoC,SAAUmZ,EAAQnZ,SAClBC,KAAMkZ,EAAQlZ,MAExB,CAIE,OAAO,IAAI2Y,GAAWriB,EAAQ9M,KAAKiN,SAAUtK,EAAMitB,EACrD,EPyBEjwB,KAAM2vB,GAAoB3vB,KAC1BgQ,MAAO2f,GAAoB3f,MAC3BtK,KAAMiqB,GAAoBjqB,KAC1BqI,KAAM4hB,GAAoB5hB,KAC1B5J,MAAOwrB,GAAoBxrB,MAC3B6J,KAAM2hB,GAAoB3hB,KAC1BzC,GQ7Ba,SAASvI,EAAM6H,GAC5B,IAAI4H,EAAKpS,KAAKiuB,IAEd,OAAOxtB,UAAUC,OAAS,EACpByR,GAAInS,KAAKqF,OAAQ+M,GAAIlH,GAAGA,GAAGvI,GAC3B3C,KAAK2N,KApBb,SAAoByE,EAAIzP,EAAM6H,GAC5B,IAAIqlB,EAAKC,EAAKC,EAThB,SAAeptB,GACb,OAAQA,EAAO,IAAIgF,OAAOC,MAAM,SAASooB,OAAM,SAAS3vB,GACtD,IAAIE,EAAIF,EAAEwC,QAAQ,KAElB,OADItC,GAAK,IAAGF,EAAIA,EAAE4B,MAAM,EAAG1B,KACnBF,GAAW,UAANA,CACjB,GACA,CAGsBgW,CAAM1T,GAAQ8T,GAAOpE,GACzC,OAAO,WACL,IAAIyD,EAAWia,EAAI/vB,KAAMoS,GACrBlH,EAAK4K,EAAS5K,GAKdA,IAAO2kB,IAAMC,GAAOD,EAAM3kB,GAAI0H,QAAQ1H,GAAGvI,EAAM6H,GAEnDsL,EAAS5K,GAAK4kB,CAClB,CACA,CAOkBG,CAAW7d,EAAIzP,EAAM6H,GACvC,ERwBEoF,KNgBa,SAASjN,EAAMyD,GAC5B,IAAI3C,EAAWf,EAAUC,GAAOpC,EAAiB,cAAbkD,EAA2B0mB,GAAuB+D,GACtF,OAAOluB,KAAK6uB,UAAUlsB,EAAuB,mBAAVyD,GAC5B3C,EAASV,MAAQ2D,GAAiBF,IAAc/C,EAAUlD,EAAGwtB,GAAW/tB,KAAM,QAAU2C,EAAMyD,IACtF,MAATA,GAAiB3C,EAASV,MAAQkD,GAAeF,IAAYtC,IAC5DA,EAASV,MAAQuD,GAAiBH,IAAc1C,EAAUlD,EAAG6F,GACtE,EMrBEyoB,ULpBa,SAASlsB,EAAMyD,GAC5B,IAAIrF,EAAM,QAAU4B,EACpB,GAAIlC,UAAUC,OAAS,EAAG,OAAQK,EAAMf,KAAKmW,MAAMpV,KAASA,EAAI6tB,OAChE,GAAa,MAATxoB,EAAe,OAAOpG,KAAKmW,MAAMpV,EAAK,MAC1C,GAAqB,mBAAVqF,EAAsB,MAAM,IAAIoM,MAC3C,IAAI/O,EAAWf,EAAUC,GACzB,OAAO3C,KAAKmW,MAAMpV,GAAM0C,EAASV,MAAQ2rB,GAAcG,IAAWprB,EAAU2C,GAC9E,EKcES,MDWa,SAASlE,EAAMyD,EAAOY,GACnC,IAAIzG,EAAqB,cAAhBoC,GAAQ,IAAsBwnB,GAAuB+D,GAC9D,OAAgB,MAAT9nB,EAAgBpG,KAClBkwB,WAAWvtB,EAjElB,SAAmBA,EAAMurB,GACvB,IAAIG,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU3nB,EAAM7G,KAAM2C,GACtB4rB,GAAWvuB,KAAK6G,MAAMC,eAAenE,GAAOkE,EAAM7G,KAAM2C,IAC5D,OAAO6rB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,EAC/CA,EAAeJ,EAAYG,EAAWG,EAASC,EAAWF,EACpE,CACA,CAsDwB4B,CAAUxtB,EAAMpC,IACjC2K,GAAG,aAAevI,EAAMiE,GAAYjE,IACpB,mBAAVyD,EAAuBpG,KAC7BkwB,WAAWvtB,EArClB,SAAuBA,EAAMurB,EAAa9nB,GACxC,IAAIioB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU3nB,EAAM7G,KAAM2C,GACtByrB,EAAShoB,EAAMpG,MACfuuB,EAAUH,EAAS,GAEvB,OADc,MAAVA,IAAoCpuB,KAAK6G,MAAMC,eAAenE,GAA9C4rB,EAAUH,EAA2CvnB,EAAM7G,KAAM2C,IAC9E6rB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeJ,EAAYG,EAAWG,EAASJ,GAC9E,CACA,CAwBwBlnB,CAAcvE,EAAMpC,EAAGwtB,GAAW/tB,KAAM,SAAW2C,EAAMyD,KAC1EuH,KAvBP,SAA0ByE,EAAIzP,GAC5B,IAAIktB,EAAKC,EAAKM,EAAwD7nB,EAA7CxH,EAAM,SAAW4B,EAAMyH,EAAQ,OAASrJ,EACjE,OAAO,WACL,IAAI+U,EAAWzD,GAAIrS,KAAMoS,GACrBlH,EAAK4K,EAAS5K,GACdV,EAAkC,MAAvBsL,EAAS1P,MAAMrF,GAAewH,IAAWA,EAAS3B,GAAYjE,SAAS0tB,EAKlFnlB,IAAO2kB,GAAOO,IAAc5lB,IAAWslB,GAAOD,EAAM3kB,GAAI0H,QAAQ1H,GAAGd,EAAOgmB,EAAY5lB,GAE1FsL,EAAS5K,GAAK4kB,CAClB,CACA,CASYQ,CAAiBtwB,KAAKiuB,IAAKtrB,IACjC3C,KACCkwB,WAAWvtB,EApDlB,SAAuBA,EAAMurB,EAAaE,GACxC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAU3nB,EAAM7G,KAAM2C,GAC1B,OAAO6rB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeJ,EAAYG,EAAWG,EAASJ,EACzD,CACA,CA0CwBrnB,CAAcpE,EAAMpC,EAAG6F,GAAQY,GAChDkE,GAAG,aAAevI,EAAM,KAC/B,ECrBEutB,WSzCa,SAASvtB,EAAMyD,EAAOY,GACnC,IAAIjG,EAAM,UAAY4B,GAAQ,IAC9B,GAAIlC,UAAUC,OAAS,EAAG,OAAQK,EAAMf,KAAKmW,MAAMpV,KAASA,EAAI6tB,OAChE,GAAa,MAATxoB,EAAe,OAAOpG,KAAKmW,MAAMpV,EAAK,MAC1C,GAAqB,mBAAVqF,EAAsB,MAAM,IAAIoM,MAC3C,OAAOxS,KAAKmW,MAAMpV,EAhBpB,SAAoB4B,EAAMyD,EAAOY,GAC/B,IAAI3G,EAAG4N,EACP,SAASkI,IACP,IAAI5V,EAAI6F,EAAMzF,MAAMX,KAAMS,WAE1B,OADIF,IAAM0N,IAAI5N,GAAK4N,EAAK1N,IAV5B,SAA0BoC,EAAMpC,EAAGyG,GACjC,OAAO,SAAS3G,GACdL,KAAK6G,MAAMI,YAAYtE,EAAMpC,EAAEZ,KAAKK,KAAMK,GAAI2G,EAClD,CACA,CAMkCupB,CAAiB5tB,EAAMpC,EAAGyG,IACjD3G,CACX,CAEE,OADA8V,EAAMyY,OAASxoB,EACR+P,CACT,CAOyB+Z,CAAWvtB,EAAMyD,EAAmB,MAAZY,EAAmB,GAAKA,GACzE,EToCEgJ,KU5Ca,SAAS5J,GACtB,OAAOpG,KAAKmW,MAAM,OAAyB,mBAAV/P,EARnC,SAAsBA,GACpB,OAAO,WACL,IAAIgoB,EAAShoB,EAAMpG,MACnBA,KAAK4I,YAAwB,MAAVwlB,EAAiB,GAAKA,CAC7C,CACA,CAIQtlB,CAAailB,GAAW/tB,KAAM,OAAQoG,IAf9C,SAAsBA,GACpB,OAAO,WACLpG,KAAK4I,YAAcxC,CACvB,CACA,CAYQyC,CAAsB,MAATzC,EAAgB,GAAKA,EAAQ,IAClD,EVyCEoqB,UW3Ca,SAASpqB,GACtB,IAAIrF,EAAM,OACV,GAAIN,UAAUC,OAAS,EAAG,OAAQK,EAAMf,KAAKmW,MAAMpV,KAASA,EAAI6tB,OAChE,GAAa,MAATxoB,EAAe,OAAOpG,KAAKmW,MAAMpV,EAAK,MAC1C,GAAqB,mBAAVqF,EAAsB,MAAM,IAAIoM,MAC3C,OAAOxS,KAAKmW,MAAMpV,EAhBpB,SAAmBqF,GACjB,IAAIqO,EAAIxG,EACR,SAASkI,IACP,IAAI5V,EAAI6F,EAAMzF,MAAMX,KAAMS,WAE1B,OADIF,IAAM0N,IAAIwG,GAAMxG,EAAK1N,IAV7B,SAAyBA,GACvB,OAAO,SAASF,GACdL,KAAK4I,YAAcrI,EAAEZ,KAAKK,KAAMK,EACpC,CACA,CAMmCowB,CAAgBlwB,IACxCkU,CACX,CAEE,OADA0B,EAAMyY,OAASxoB,EACR+P,CACT,CAOyBqa,CAAUpqB,GACnC,EXsCEmC,OYrDa,WACb,OAAOvI,KAAKkL,GAAG,aATjB,SAAwBkH,GACtB,OAAO,WACL,IAAI9N,EAAStE,KAAKqJ,WAClB,IAAK,IAAI9I,KAAKP,KAAKiW,aAAc,IAAK1V,IAAM6R,EAAI,OAC5C9N,GAAQA,EAAOoF,YAAY1J,KACnC,CACA,CAG+B0wB,CAAe1wB,KAAKiuB,KACnD,EZoDE9X,MRXa,SAASxT,EAAMyD,GAC5B,IAAIgM,EAAKpS,KAAKiuB,IAId,GAFAtrB,GAAQ,GAEJlC,UAAUC,OAAS,EAAG,CAExB,IADA,IACkCL,EAD9B8V,EAAQhE,GAAInS,KAAKqF,OAAQ+M,GAAI+D,MACxB5V,EAAI,EAAGC,EAAI2V,EAAMzV,OAAWH,EAAIC,IAAKD,EAC5C,IAAKF,EAAI8V,EAAM5V,IAAIoC,OAASA,EAC1B,OAAOtC,EAAE+F,MAGb,OAAO,IACX,CAEE,OAAOpG,KAAK2N,MAAe,MAATvH,EAAgBunB,GAAcG,IAAe1b,EAAIzP,EAAMyD,GAC3E,EQJE+N,MJjDa,SAAS/N,GACtB,IAAIgM,EAAKpS,KAAKiuB,IAEd,OAAOxtB,UAAUC,OACXV,KAAK2N,MAAuB,mBAAVvH,EACd2oB,GACAC,IAAe5c,EAAIhM,IACvB+L,GAAInS,KAAKqF,OAAQ+M,GAAI+B,KAC7B,EI0CEoC,SHlDa,SAASnQ,GACtB,IAAIgM,EAAKpS,KAAKiuB,IAEd,OAAOxtB,UAAUC,OACXV,KAAK2N,MAAuB,mBAAVvH,EACd6oB,GACAC,IAAkB9c,EAAIhM,IAC1B+L,GAAInS,KAAKqF,OAAQ+M,GAAImE,QAC7B,EG2CEC,KaxDa,SAASpQ,GACtB,IAAIgM,EAAKpS,KAAKiuB,IAEd,OAAOxtB,UAAUC,OACXV,KAAK2N,KAXb,SAAsByE,EAAIhM,GACxB,GAAqB,mBAAVA,EAAsB,MAAM,IAAIoM,MAC3C,OAAO,WACLH,GAAIrS,KAAMoS,GAAIoE,KAAOpQ,CACzB,CACA,CAMkBuqB,CAAave,EAAIhM,IAC3B+L,GAAInS,KAAKqF,OAAQ+M,GAAIoE,IAC7B,EbmDE0Q,IchEa,WACb,IAAI2I,EAAKC,EAAKhkB,EAAO9L,KAAMoS,EAAKtG,EAAKmiB,IAAKvgB,EAAO5B,EAAK4B,OACtD,OAAO,IAAIkjB,SAAQ,SAASC,EAASC,GACnC,IAAIC,EAAS,CAAC3qB,MAAO0qB,GACjB5J,EAAM,CAAC9gB,MAAO,WAA4B,KAATsH,GAAYmjB,GAAU,GAE3D/kB,EAAK6B,MAAK,WACR,IAAImI,EAAWzD,GAAIrS,KAAMoS,GACrBlH,EAAK4K,EAAS5K,GAKdA,IAAO2kB,KACTC,GAAOD,EAAM3kB,GAAI0H,QACblC,EAAEqgB,OAAOhnB,KAAKgnB,GAClBjB,EAAIpf,EAAEgG,UAAU3M,KAAKgnB,GACrBjB,EAAIpf,EAAEwW,IAAInd,KAAKmd,IAGjBpR,EAAS5K,GAAK4kB,CACpB,GACA,GACA,GCzBA,IAEWkB,GAAS,SAAUC,EAAO1c,GAGnC,SAASyc,EAAO3wB,GACd,OAAO2O,KAAKyU,IAAIpjB,EAAGkU,EACvB,CAIE,OARAA,GAAKA,EAMLyc,EAAOE,SAAWD,EAEXD,CACR,CAVmB,CAFL,GAcJG,GAAU,SAAUF,EAAO1c,GAGpC,SAAS4c,EAAQ9wB,GACf,OAAO,EAAI2O,KAAKyU,IAAI,EAAIpjB,EAAGkU,EAC/B,CAIE,OARAA,GAAKA,EAML4c,EAAQD,SAAWD,EAEZE,CACR,CAVoB,CAdN,GA0BJC,GAAY,SAAUH,EAAO1c,GAGtC,SAAS6c,EAAU/wB,GACjB,QAASA,GAAK,IAAM,EAAI2O,KAAKyU,IAAIpjB,EAAGkU,GAAK,EAAIvF,KAAKyU,IAAI,EAAIpjB,EAAGkU,IAAM,CACvE,CAIE,OARAA,GAAKA,EAML6c,EAAUF,SAAWD,EAEdG,CACR,CAVsB,CA1BR,GCAXC,GAAKriB,KAAK4U,GACV0N,GAASD,GAAK,EAUX,SAASE,GAASlxB,GACvB,OAAQ,EAAI2O,KAAKgW,IAAIqM,GAAKhxB,IAAM,CAClC,CCZO,SAASmxB,GAAK5jB,GACnB,OAA+C,oBAAvCoB,KAAKyU,IAAI,GAAI,GAAK7V,GAAK,YACjC,CCOO,SAAS6jB,GAASpxB,GACvB,QAASA,GAAK,IAAM,EAAImxB,GAAK,EAAInxB,GAAK,EAAImxB,GAAKnxB,EAAI,IAAM,CAC3D,CCJO,SAASqxB,GAAYrxB,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAI2O,KAAK8V,KAAK,EAAIzkB,EAAIA,GAAK2O,KAAK8V,KAAK,GAAKzkB,GAAK,GAAKA,GAAK,GAAK,CACxF,CCVA,IAAIssB,GAAK,EAAI,GACTgF,GAAK,EAAI,GACTC,GAAK,EAAI,GACTC,GAAK,EAAI,EACTC,GAAK,EAAI,GACTC,GAAK,GAAK,GACVC,GAAK,GAAK,GACVC,GAAK,GAAK,GACVC,GAAK,GAAK,GACVxF,GAAK,EAAIC,GAAKA,GAMX,SAASwF,GAAU9xB,GACxB,OAAQA,GAAKA,GAAKssB,GAAKD,GAAKrsB,EAAIA,EAAIA,EAAIuxB,GAAKlF,IAAMrsB,GAAKsxB,IAAMtxB,EAAIwxB,GAAKxxB,EAAI0xB,GAAKrF,IAAMrsB,GAAKyxB,IAAMzxB,EAAI2xB,GAAKtF,IAAMrsB,GAAK4xB,IAAM5xB,EAAI6xB,EACjI,CCjBA,IAAIE,GAAY,QAELC,GAAS,SAAUpB,EAAO3wB,GAGnC,SAAS+xB,EAAOhyB,GACd,OAAQA,GAAKA,GAAKA,GAAKC,GAAKD,EAAI,GAAKA,EACzC,CAIE,OARAC,GAAKA,EAML+xB,EAAOD,UAAYnB,EAEZoB,CACR,CAVmB,CAUjBD,IAEQE,GAAU,SAAUrB,EAAO3wB,GAGpC,SAASgyB,EAAQjyB,GACf,QAASA,EAAIA,IAAMA,EAAI,GAAKC,EAAID,GAAK,CACzC,CAIE,OARAC,GAAKA,EAMLgyB,EAAQF,UAAYnB,EAEbqB,CACR,CAVoB,CAUlBF,IAEQG,GAAY,SAAUtB,EAAO3wB,GAGtC,SAASiyB,EAAUlyB,GACjB,QAASA,GAAK,GAAK,EAAIA,EAAIA,IAAMC,EAAI,GAAKD,EAAIC,IAAMD,GAAK,GAAKA,IAAMC,EAAI,GAAKD,EAAIC,GAAK,GAAK,CAC/F,CAIE,OARAA,GAAKA,EAMLiyB,EAAUH,UAAYnB,EAEfsB,CACR,CAVsB,CAUpBH,IClCCI,GAAM,EAAIxjB,KAAK4U,GAIR6O,GAAY,SAAUxB,EAAOprB,EAAGrG,GACzC,IAAIc,EAAI0O,KAAK0jB,KAAK,GAAK7sB,EAAImJ,KAAK0T,IAAI,EAAG7c,MAAQrG,GAAKgzB,IAEpD,SAASC,EAAUpyB,GACjB,OAAOwF,EAAI2rB,OAASnxB,GAAM2O,KAAKiW,KAAK3kB,EAAID,GAAKb,EACjD,CAKE,OAHAizB,EAAUE,UAAY,SAAS9sB,GAAK,OAAOorB,EAAOprB,EAAGrG,EAAIgzB,GAAK,EAC9DC,EAAUG,OAAS,SAASpzB,GAAK,OAAOyxB,EAAOprB,EAAGrG,EAAG,EAE9CizB,CACR,CAXsB,CAHP,EACH,IAeFI,GAAa,SAAU5B,EAAOprB,EAAGrG,GAC1C,IAAIc,EAAI0O,KAAK0jB,KAAK,GAAK7sB,EAAImJ,KAAK0T,IAAI,EAAG7c,MAAQrG,GAAKgzB,IAEpD,SAASK,EAAWxyB,GAClB,OAAO,EAAIwF,EAAI2rB,GAAKnxB,GAAKA,GAAK2O,KAAKiW,KAAK5kB,EAAIC,GAAKd,EACrD,CAKE,OAHAqzB,EAAWF,UAAY,SAAS9sB,GAAK,OAAOorB,EAAOprB,EAAGrG,EAAIgzB,GAAK,EAC/DK,EAAWD,OAAS,SAASpzB,GAAK,OAAOyxB,EAAOprB,EAAGrG,EAAG,EAE/CqzB,CACR,CAXuB,CAhBR,EACH,IA4BFC,GAAe,SAAU7B,EAAOprB,EAAGrG,GAC5C,IAAIc,EAAI0O,KAAK0jB,KAAK,GAAK7sB,EAAImJ,KAAK0T,IAAI,EAAG7c,MAAQrG,GAAKgzB,IAEpD,SAASM,EAAazyB,GACpB,QAASA,EAAQ,EAAJA,EAAQ,GAAK,EACpBwF,EAAI2rB,IAAMnxB,GAAK2O,KAAKiW,KAAK3kB,EAAID,GAAKb,GAClC,EAAIqG,EAAI2rB,GAAKnxB,GAAK2O,KAAKiW,KAAK3kB,EAAID,GAAKb,IAAM,CACrD,CAKE,OAHAszB,EAAaH,UAAY,SAAS9sB,GAAK,OAAOorB,EAAOprB,EAAGrG,EAAIgzB,GAAK,EACjEM,EAAaF,OAAS,SAASpzB,GAAK,OAAOyxB,EAAOprB,EAAGrG,EAAG,EAEjDszB,CACR,CAbyB,CA7BV,EACH,ICCTC,GAAgB,CAClB3e,KAAM,KACND,MAAO,EACPoC,SAAU,IACVC,KAAMwc,IAGR,SAAStD,GAAQrqB,EAAM+M,GAErB,IADA,IAAI2D,IACKA,EAAS1Q,EAAK4Q,iBAAmBF,EAASA,EAAO3D,KACxD,KAAM/M,EAAOA,EAAKgE,YAChB,OAAO0pB,GAAc3e,KAAOZ,KAAOuf,GAGvC,OAAOhd,CACT,CChBA7I,GAAUzN,UAAUiX,UCFL,SAAS/T,GACtB,OAAO3C,KAAK2N,MAAK,WACf+I,GAAU1W,KAAM2C,EACpB,GACA,EDDAuK,GAAUzN,UAAUuuB,WDiBL,SAASrrB,GACtB,IAAIyP,EACA2D,EAEApT,aAAgBwsB,IAClB/c,EAAKzP,EAAKsrB,IAAKtrB,EAAOA,EAAKysB,QAE3Bhd,EAAKid,MAAUtZ,EAASgd,IAAe3e,KAAOZ,KAAO7Q,EAAe,MAARA,EAAe,KAAOA,EAAO,IAG3F,IAAK,IAAImK,EAAS9M,KAAKgN,QAAS1B,EAAIwB,EAAOpM,OAAQ2K,EAAI,EAAGA,EAAIC,IAAKD,EACjE,IAAK,IAAyChG,EAArCJ,EAAQ6H,EAAOzB,GAAI7K,EAAIyE,EAAMvE,OAAcH,EAAI,EAAGA,EAAIC,IAAKD,GAC9D8E,EAAOJ,EAAM1E,KACfuV,GAASzQ,EAAM1C,EAAMyP,EAAI7R,EAAG0E,EAAO8Q,GAAU2Z,GAAQrqB,EAAM+M,IAKjE,OAAO,IAAI+c,GAAWriB,EAAQ9M,KAAKiN,SAAUtK,EAAMyP,EACrD,EGtCA,IAAIxF,GAAO,CAAC,MCHG,SAAAhH,GAASC,EAAG1G,GACzB,OAAO0G,EAAI1G,GAAK,EAAI0G,EAAI1G,EAAI,EAAI0G,GAAK1G,EAAI,EAAI2G,GAC/C,CCAe,SAAAmtB,GAAS3jB,GA0BxB,IAA6BsE,EAxB3B,OADuB,IAAnBtE,EAAQ5O,SAyBekT,EAzB6BtE,EAA9BA,EA0BnB,SAASpQ,EAAG0O,GACjB,OAAOhI,GAAUgO,EAAE1U,GAAI0O,EAC3B,GA3BS,CACL8D,KAAM,SAAS7L,EAAG+H,EAAGslB,EAAIC,GAGvB,IAFU,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKttB,EAAEnF,QAChBwyB,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClB7jB,EAAQzJ,EAAEutB,GAAMxlB,GAAK,EAAGslB,EAAKE,EAAM,EAClCD,EAAKC,CAClB,CACM,OAAOF,CACb,EACIG,MAAO,SAASxtB,EAAG+H,EAAGslB,EAAIC,GAGxB,IAFU,MAAND,IAAYA,EAAK,GACX,MAANC,IAAYA,EAAKttB,EAAEnF,QAChBwyB,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClB7jB,EAAQzJ,EAAEutB,GAAMxlB,GAAK,EAAGulB,EAAKC,EAC5BF,EAAKE,EAAM,CACxB,CACM,OAAOF,CACb,EAEA,CCvBA,IAAII,GAAkBL,GAASrtB,IACpB2tB,GAAcD,GAAgBD,MAC9BG,GAAaF,GAAgB5hB,KCEjC,SAAS+hB,GAAK5tB,EAAG1G,GACtB,MAAO,CAAC0G,EAAG1G,EACb,CCTe,SAAAu0B,GAAS7tB,EAAG1G,GACzB,OAAOA,EAAI0G,GAAK,EAAI1G,EAAI0G,EAAI,EAAI1G,GAAK0G,EAAI,EAAIC,GAC/C,CCFe,SAAA6tB,GAAS/lB,GACtB,OAAa,OAANA,EAAa9H,KAAO8H,CAC7B,CCAe,SAAAgmB,GAASxN,EAAQyN,GAC9B,IAIIztB,EACA0tB,EALAtzB,EAAI4lB,EAAO1lB,OACX4K,EAAI,EACJ/K,GAAK,EACLwzB,EAAO,EAGPC,EAAM,EAEV,GAAe,MAAXH,EACF,OAAStzB,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO1C,EAAO7lB,OAG/ByzB,IAFAF,EAAQ1tB,EAAQ2tB,IAEA3tB,GADhB2tB,GAAQD,IAAUxoB,UAOtB,OAAS/K,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO+K,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,OAG9C4N,IAFAF,EAAQ1tB,EAAQ2tB,IAEA3tB,GADhB2tB,GAAQD,IAAUxoB,KAMxB,GAAIA,EAAI,EAAG,OAAO0oB,GAAO1oB,EAAI,EAC/B,CC9Be,SAAA2oB,GAASC,EAAOtgB,GAC7B,IAAInN,EAAI0tB,GAASD,EAAOtgB,GACxB,OAAOnN,EAAIuI,KAAK8V,KAAKre,GAAKA,CAC5B,CCLe,SAAA2tB,GAAShO,EAAQyN,GAC9B,IAEIztB,EACA6I,EACAyT,EAJAliB,EAAI4lB,EAAO1lB,OACXH,GAAK,EAKT,GAAe,MAAXszB,GACF,OAAStzB,EAAIC,GACX,GAA2B,OAAtB4F,EAAQggB,EAAO7lB,KAAe6F,GAASA,EAE1C,IADA6I,EAAMyT,EAAMtc,IACH7F,EAAIC,GACgB,OAAtB4F,EAAQggB,EAAO7lB,MACd0O,EAAM7I,IAAO6I,EAAM7I,GACnBsc,EAAMtc,IAAOsc,EAAMtc,SAQ/B,OAAS7F,EAAIC,GACX,GAA+C,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,KAAoBhgB,GAASA,EAE9D,IADA6I,EAAMyT,EAAMtc,IACH7F,EAAIC,GACoC,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,MAC7BnX,EAAM7I,IAAO6I,EAAM7I,GACnBsc,EAAMtc,IAAOsc,EAAMtc,IAOjC,MAAO,CAAC6I,EAAKyT,EACf,CCpCA,IAAIwR,GAAQ30B,MAAME,UAEPwC,GAAQiyB,GAAMjyB,MACdoM,GAAM6lB,GAAM7lB,ICHR,SAAAgmB,GAASzmB,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCJe,SAAA0mB,GAAS1mB,GACtB,OAAOA,CACT,CCFe,SAAA2mB,GAASle,EAAOjB,EAAMof,GACnCne,GAASA,EAAOjB,GAAQA,EAAMof,GAAQh0B,EAAIC,UAAUC,QAAU,GAAK0U,EAAOiB,EAAOA,EAAQ,EAAG,GAAK7V,EAAI,EAAI,GAAKg0B,EAM9G,IAJA,IAAIj0B,GAAK,EACLC,EAAoD,EAAhDwO,KAAK0T,IAAI,EAAG1T,KAAKylB,MAAMrf,EAAOiB,GAASme,IAC3CE,EAAQ,IAAIn1B,MAAMiB,KAEbD,EAAIC,GACXk0B,EAAMn0B,GAAK8V,EAAQ9V,EAAIi0B,EAGzB,OAAOE,CACT,CCZA,IAAIC,GAAM3lB,KAAK8V,KAAK,IAChB8P,GAAK5lB,KAAK8V,KAAK,IACf+P,GAAK7lB,KAAK8V,KAAK,GAEJ,SAAAgQ,GAASze,EAAOjB,EAAM2f,GACnC,IAAIC,EAEAx0B,EACAs0B,EACAN,EAHAj0B,GAAK,EAMT,GAD8Bw0B,GAASA,GAAzB1e,GAASA,MAAvBjB,GAAQA,IACc2f,EAAQ,EAAG,MAAO,CAAC1e,GAEzC,IADI2e,EAAU5f,EAAOiB,KAAO7V,EAAI6V,EAAOA,EAAQjB,EAAMA,EAAO5U,GACT,KAA9Cg0B,EAAOS,GAAc5e,EAAOjB,EAAM2f,MAAkBG,SAASV,GAAO,MAAO,GAEhF,GAAIA,EAAO,EAIT,IAHAne,EAAQrH,KAAKylB,KAAKpe,EAAQme,GAC1Bpf,EAAOpG,KAAKqX,MAAMjR,EAAOof,GACzBM,EAAQ,IAAIv1B,MAAMiB,EAAIwO,KAAKylB,KAAKrf,EAAOiB,EAAQ,MACtC9V,EAAIC,GAAGs0B,EAAMv0B,IAAM8V,EAAQ9V,GAAKi0B,OAKzC,IAHAne,EAAQrH,KAAKqX,MAAMhQ,EAAQme,GAC3Bpf,EAAOpG,KAAKylB,KAAKrf,EAAOof,GACxBM,EAAQ,IAAIv1B,MAAMiB,EAAIwO,KAAKylB,KAAKpe,EAAQjB,EAAO,MACtC7U,EAAIC,GAAGs0B,EAAMv0B,IAAM8V,EAAQ9V,GAAKi0B,EAK3C,OAFIQ,GAASF,EAAME,UAEZF,CACT,CAEO,SAASG,GAAc5e,EAAOjB,EAAM2f,GACzC,IAAIP,GAAQpf,EAAOiB,GAASrH,KAAK0T,IAAI,EAAGqS,GACpCI,EAAQnmB,KAAKqX,MAAMrX,KAAKwd,IAAIgI,GAAQxlB,KAAKomB,MACzCC,EAAQb,EAAOxlB,KAAKyU,IAAI,GAAI0R,GAChC,OAAOA,GAAS,GACTE,GAASV,GAAM,GAAKU,GAAST,GAAK,EAAIS,GAASR,GAAK,EAAI,GAAK7lB,KAAKyU,IAAI,GAAI0R,IAC1EnmB,KAAKyU,IAAI,IAAK0R,IAAUE,GAASV,GAAM,GAAKU,GAAST,GAAK,EAAIS,GAASR,GAAK,EAAI,EACzF,CAEO,SAASS,GAASjf,EAAOjB,EAAM2f,GACpC,IAAIQ,EAAQvmB,KAAKwmB,IAAIpgB,EAAOiB,GAASrH,KAAK0T,IAAI,EAAGqS,GAC7CU,EAAQzmB,KAAKyU,IAAI,GAAIzU,KAAKqX,MAAMrX,KAAKwd,IAAI+I,GAASvmB,KAAKomB,OACvDC,EAAQE,EAAQE,EAIpB,OAHIJ,GAASV,GAAKc,GAAS,GAClBJ,GAAST,GAAIa,GAAS,EACtBJ,GAASR,KAAIY,GAAS,GACxBrgB,EAAOiB,GAASof,EAAQA,CACjC,CClDe,SAAAC,GAAStP,GACtB,OAAOpX,KAAKylB,KAAKzlB,KAAKwd,IAAIpG,EAAO1lB,QAAUsO,KAAK2mB,KAAO,CACzD,CCAe,SAAAC,GAASxP,EAAQ5mB,EAAGq0B,GAEjC,GADe,MAAXA,IAAiBA,EAAU/K,IACzBtoB,EAAI4lB,EAAO1lB,OAAjB,CACA,IAAKlB,GAAKA,IAAM,GAAKgB,EAAI,EAAG,OAAQqzB,EAAQzN,EAAO,GAAI,EAAGA,GAC1D,GAAI5mB,GAAK,EAAG,OAAQq0B,EAAQzN,EAAO5lB,EAAI,GAAIA,EAAI,EAAG4lB,GAClD,IAAI5lB,EACAD,GAAKC,EAAI,GAAKhB,EACdyO,EAAKe,KAAKqX,MAAM9lB,GAChBs1B,GAAUhC,EAAQzN,EAAOnY,GAAKA,EAAImY,GAEtC,OAAOyP,IADOhC,EAAQzN,EAAOnY,EAAK,GAAIA,EAAK,EAAGmY,GACpByP,IAAWt1B,EAAI0N,EARf,CAS5B,CCbe,SAAA6nB,GAAS1P,EAAQyN,GAC9B,IAEIztB,EACAsc,EAHAliB,EAAI4lB,EAAO1lB,OACXH,GAAK,EAIT,GAAe,MAAXszB,GACF,OAAStzB,EAAIC,GACX,GAA2B,OAAtB4F,EAAQggB,EAAO7lB,KAAe6F,GAASA,EAE1C,IADAsc,EAAMtc,IACG7F,EAAIC,GACgB,OAAtB4F,EAAQggB,EAAO7lB,KAAe6F,EAAQsc,IACzCA,EAAMtc,QAQd,OAAS7F,EAAIC,GACX,GAA+C,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,KAAoBhgB,GAASA,EAE9D,IADAsc,EAAMtc,IACG7F,EAAIC,GACoC,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,KAAoBhgB,EAAQsc,IAC7DA,EAAMtc,GAOhB,OAAOsc,CACT,CC/Be,SAAAqT,GAAS3P,EAAQyN,GAC9B,IAGIztB,EAHA5F,EAAI4lB,EAAO1lB,OACX4K,EAAI9K,EACJD,GAAK,EAELyzB,EAAM,EAEV,GAAe,MAAXH,EACF,OAAStzB,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO1C,EAAO7lB,OAC1B+K,EADgC0oB,GAAO5tB,OAMhD,OAAS7F,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO+K,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,OACzC9a,EADoD0oB,GAAO5tB,EAKtE,GAAIkF,EAAG,OAAO0oB,EAAM1oB,CACtB,CCpBe,SAAA0qB,GAAS5P,EAAQyN,GAC9B,IAEIztB,EAFA5F,EAAI4lB,EAAO1lB,OACXH,GAAK,EAEL01B,EAAU,GAEd,GAAe,MAAXpC,EACF,OAAStzB,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO1C,EAAO7lB,MAC/B01B,EAAQlsB,KAAK3D,QAMjB,OAAS7F,EAAIC,GACNiiB,MAAMrc,EAAQ0iB,GAAO+K,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,MAC9C6P,EAAQlsB,KAAK3D,GAKnB,OAAO8vB,GAASD,EAAQ5mB,KAAKzJ,IAAY,GAC3C,CC3Be,SAAAuwB,GAAS/P,EAAQyN,GAC9B,IAEIztB,EACA6I,EAHAzO,EAAI4lB,EAAO1lB,OACXH,GAAK,EAIT,GAAe,MAAXszB,GACF,OAAStzB,EAAIC,GACX,GAA2B,OAAtB4F,EAAQggB,EAAO7lB,KAAe6F,GAASA,EAE1C,IADA6I,EAAM7I,IACG7F,EAAIC,GACgB,OAAtB4F,EAAQggB,EAAO7lB,KAAe0O,EAAM7I,IACvC6I,EAAM7I,QAQd,OAAS7F,EAAIC,GACX,GAA+C,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,KAAoBhgB,GAASA,EAE9D,IADA6I,EAAM7I,IACG7F,EAAIC,GACoC,OAA1C4F,EAAQytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,KAAoBnX,EAAM7I,IAC3D6I,EAAM7I,GAOhB,OAAO6I,CACT,CCjCe,SAAAmnB,GAAShQ,EAAQyN,GAC9B,IAEIztB,EAFA5F,EAAI4lB,EAAO1lB,OACXH,GAAK,EAELyzB,EAAM,EAEV,GAAe,MAAXH,EACF,OAAStzB,EAAIC,IACP4F,GAASggB,EAAO7lB,MAAIyzB,GAAO5tB,QAKjC,OAAS7F,EAAIC,IACP4F,GAASytB,EAAQzN,EAAO7lB,GAAIA,EAAG6lB,MAAS4N,GAAO5tB,GAIvD,OAAO4tB,CACT,CCjBe,SAAAqC,GAASjL,GACtB,KAAM5qB,EAAI4qB,EAAO1qB,QAAS,MAAO,GACjC,IAAK,IAAIH,GAAK,EAAG+K,EAAI2D,GAAImc,EAAQ1qB,IAAS21B,EAAY,IAAI92B,MAAM+L,KAAM/K,EAAI+K,GACxE,IAAK,IAAY9K,EAAR6K,GAAK,EAAMirB,EAAMD,EAAU91B,GAAK,IAAIhB,MAAMiB,KAAM6K,EAAI7K,GAC3D81B,EAAIjrB,GAAK+f,EAAO/f,GAAG9K,GAGvB,OAAO81B,CACT,CAEA,SAAS31B,GAAOxB,GACd,OAAOA,EAAEwB,MACX,CCdO,IAAIkC,GAAS,IAEpB,SAAS2zB,KAAM,CAkDf,SAASloB,GAAI+Z,EAAQxU,GACnB,IAAIvF,EAAM,IAAIkoB,GAGd,GAAInO,aAAkBmO,GAAKnO,EAAOza,MAAK,SAASvH,EAAOrF,GAAOsN,EAAIgE,IAAItR,EAAKqF,EAAO,SAG7E,GAAI7G,MAAM4pB,QAAQf,GAAS,CAC9B,IAEIhd,EAFA7K,GAAK,EACLC,EAAI4nB,EAAO1nB,OAGf,GAAS,MAALkT,EAAW,OAASrT,EAAIC,GAAG6N,EAAIgE,IAAI9R,EAAG6nB,EAAO7nB,SAC5C,OAASA,EAAIC,GAAG6N,EAAIgE,IAAIuB,EAAExI,EAAIgd,EAAO7nB,GAAIA,EAAG6nB,GAAShd,EAC9D,MAGO,GAAIgd,EAAQ,IAAK,IAAIrnB,KAAOqnB,EAAQ/Z,EAAIgE,IAAItR,EAAKqnB,EAAOrnB,IAE7D,OAAOsN,CACT,CCtEe,SAAAmoB,KACb,IAEIC,EACAC,EACAC,EAJAC,EAAO,GACPC,EAAW,GAKf,SAASl2B,EAAMuzB,EAAO4C,EAAOC,EAAcC,GACzC,GAAIF,GAASF,EAAKl2B,OAEhB,OADkB,MAAd+1B,GAAoBvC,EAAM7kB,KAAKonB,GAClB,MAAVC,EAAiBA,EAAOxC,GAASA,EAY1C,IATA,IAGIzuB,EACAW,EAEAggB,EANA7lB,GAAK,EACLC,EAAI0zB,EAAMxzB,OACVK,EAAM61B,EAAKE,KAGXG,EAAc5oB,KAEd6oB,EAASH,MAEJx2B,EAAIC,IACP4lB,EAAS6Q,EAAY9kB,IAAI1M,EAAW1E,EAAIqF,EAAQ8tB,EAAM3zB,IAAM,KAC9D6lB,EAAOrc,KAAK3D,GAEZ6wB,EAAY5kB,IAAI5M,EAAU,CAACW,IAQ/B,OAJA6wB,EAAYtpB,MAAK,SAASyY,EAAQrlB,GAChCi2B,EAAUE,EAAQn2B,EAAKJ,EAAMylB,EAAQ0Q,EAAOC,EAAcC,GAChE,IAEWE,CACX,CAEE,SAASC,EAAQ9oB,EAAKyoB,GACpB,KAAMA,EAAQF,EAAKl2B,OAAQ,OAAO2N,EAClC,IAAI6lB,EAAOkD,EAAUP,EAASC,EAAQ,GAGtC,OAFc,MAAVJ,GAAkBI,GAASF,EAAKl2B,OAAQwzB,EAAQ7lB,EAAI8oB,WACnDjD,EAAQ,GAAI7lB,EAAIV,MAAK,SAASlH,EAAG+c,GAAK0Q,EAAMnqB,KAAK,CAAChJ,IAAKyiB,EAAG4C,OAAQ+Q,EAAQ1wB,EAAGqwB,IAAS,KACzE,MAAXM,EAAkBlD,EAAM7kB,MAAK,SAASxJ,EAAG1G,GAAK,OAAOi4B,EAAQvxB,EAAE9E,IAAK5B,EAAE4B,IAAK,IAAMmzB,CAC5F,CAEE,OAAOyC,EAAO,CACZvO,OAAQ,SAAS8L,GAAS,OAAOvzB,EAAMuzB,EAAO,EAAGmD,GAAcC,GAAW,EAC1EjpB,IAAK,SAAS6lB,GAAS,OAAOvzB,EAAMuzB,EAAO,EAAGqD,GAAWC,GAAQ,EACjEL,QAAS,SAASjD,GAAS,OAAOiD,EAAQx2B,EAAMuzB,EAAO,EAAGqD,GAAWC,IAAS,EAAG,EACjFz2B,IAAK,SAAS7B,GAAmB,OAAd03B,EAAK7sB,KAAK7K,GAAWy3B,CAAK,EAC7CE,SAAU,SAASloB,GAA4C,OAAnCkoB,EAASD,EAAKl2B,OAAS,GAAKiO,EAAcgoB,CAAK,EAC3EF,WAAY,SAAS9nB,GAA6B,OAApB8nB,EAAa9nB,EAAcgoB,CAAK,EAC9DD,OAAQ,SAAS9iB,GAAiB,OAAZ8iB,EAAS9iB,EAAU+iB,CAAK,EAElD,CAEA,SAASU,KACP,MAAO,EACT,CAEA,SAASC,GAAUlP,EAAQrnB,EAAKqF,GAC9BgiB,EAAOrnB,GAAOqF,CAChB,CAEA,SAASmxB,KACP,OAAOlpB,IACT,CAEA,SAASmpB,GAAOnpB,EAAKtN,EAAKqF,GACxBiI,EAAIgE,IAAItR,EAAKqF,EACf,CCtEA,SAASqxB,KAAM,CFEflB,GAAI92B,UAAY4O,GAAI5O,UAAY,CAC9BQ,YAAas2B,GACbmB,IAAK,SAAS32B,GACZ,OAAQ6B,GAAS7B,KAAQf,IAC7B,EACEmS,IAAK,SAASpR,GACZ,OAAOf,KAAK4C,GAAS7B,EACzB,EACEsR,IAAK,SAAStR,EAAKqF,GAEjB,OADApG,KAAK4C,GAAS7B,GAAOqF,EACdpG,IACX,EACEuI,OAAQ,SAASxH,GACf,IAAI+O,EAAWlN,GAAS7B,EACxB,OAAO+O,KAAY9P,aAAeA,KAAK8P,EAC3C,EACE6nB,MAAO,WACL,IAAK,IAAI7nB,KAAY9P,KAAU8P,EAAS,KAAOlN,WAAe5C,KAAK8P,EACvE,EACE8mB,KAAM,WACJ,IAAIA,EAAO,GACX,IAAK,IAAI9mB,KAAY9P,KAAU8P,EAAS,KAAOlN,IAAQg0B,EAAK7sB,KAAK+F,EAAS7N,MAAM,IAChF,OAAO20B,CACX,EACExQ,OAAQ,WACN,IAAIA,EAAS,GACb,IAAK,IAAItW,KAAY9P,KAAU8P,EAAS,KAAOlN,IAAQwjB,EAAOrc,KAAK/J,KAAK8P,IACxE,OAAOsW,CACX,EACE+Q,QAAS,WACP,IAAIA,EAAU,GACd,IAAK,IAAIrnB,KAAY9P,KAAU8P,EAAS,KAAOlN,IAAQu0B,EAAQptB,KAAK,CAAChJ,IAAK+O,EAAS7N,MAAM,GAAImE,MAAOpG,KAAK8P,KACzG,OAAOqnB,CACX,EACEzpB,KAAM,WACJ,IAAIA,EAAO,EACX,IAAK,IAAIoC,KAAY9P,KAAU8P,EAAS,KAAOlN,MAAU8K,EACzD,OAAOA,CACX,EACE5J,MAAO,WACL,IAAK,IAAIgM,KAAY9P,KAAM,GAAI8P,EAAS,KAAOlN,GAAQ,OAAO,EAC9D,OAAO,CACX,EACE+K,KAAM,SAASiG,GACb,IAAK,IAAI9D,KAAY9P,KAAU8P,EAAS,KAAOlN,IAAQgR,EAAE5T,KAAK8P,GAAWA,EAAS7N,MAAM,GAAIjC,KAChG,GE7CA,IAAI43B,GAAQvpB,GAAI5O,UAkBhB,SAAS4S,GAAI+V,EAAQxU,GACnB,IAAIvB,EAAM,IAAIolB,GAGd,GAAIrP,aAAkBqP,GAAKrP,EAAOza,MAAK,SAASvH,GAASiM,EAAIhK,IAAIjC,EAAO,SAGnE,GAAIgiB,EAAQ,CACf,IAAI7nB,GAAK,EAAGC,EAAI4nB,EAAO1nB,OACvB,GAAS,MAALkT,EAAW,OAASrT,EAAIC,GAAG6R,EAAIhK,IAAI+f,EAAO7nB,SACzC,OAASA,EAAIC,GAAG6R,EAAIhK,IAAIuL,EAAEwU,EAAO7nB,GAAIA,EAAG6nB,GACjD,CAEE,OAAO/V,CACT,CCpCe,SAAAwlB,GAASxpB,GACtB,IAAI+X,EAAS,GACb,IAAK,IAAIrlB,KAAOsN,EAAK+X,EAAOrc,KAAKsE,EAAItN,IACrC,OAAOqlB,CACT,CDEAqR,GAAIh4B,UAAY4S,GAAI5S,UAAY,CAC9BQ,YAAaw3B,GACbC,IAAKE,GAAMF,IACXrvB,IAAK,SAASjC,GAGZ,OADApG,KAAK4C,IADLwD,GAAS,KACcA,EAChBpG,IACX,EACEuI,OAAQqvB,GAAMrvB,OACdovB,MAAOC,GAAMD,MACbvR,OAAQwR,GAAMhB,KACdlpB,KAAMkqB,GAAMlqB,KACZ5J,MAAO8zB,GAAM9zB,MACb6J,KAAMiqB,GAAMjqB,MEnBd,IAAImqB,GAAM,GACNC,GAAM,GAKV,SAASC,GAAgBC,GACvB,OAAO,IAAIC,SAAS,IAAK,WAAaD,EAAQ5pB,KAAI,SAAS1L,EAAMpC,GAC/D,OAAO43B,KAAKC,UAAUz1B,GAAQ,OAASpC,EAAI,SAC/C,IAAKyJ,KAAK,KAAO,IACjB,CAUA,SAASquB,GAAaC,GACpB,IAAIC,EAAYn5B,OAAOc,OAAO,MAC1B+3B,EAAU,GAUd,OARAK,EAAKE,SAAQ,SAASlC,GACpB,IAAK,IAAImC,KAAUnC,EACXmC,KAAUF,GACdN,EAAQluB,KAAKwuB,EAAUE,GAAUA,EAGzC,IAESR,CACT,CAEA,SAASS,GAAItyB,EAAOuyB,GAClB,IAAIr4B,EAAI8F,EAAQ,GAAI1F,EAASJ,EAAEI,OAC/B,OAAOA,EAASi4B,EAAQ,IAAIp5B,MAAMo5B,EAAQj4B,EAAS,GAAGsJ,KAAK,GAAK1J,EAAIA,CACtE,CAQA,SAASs4B,GAAW1P,GAClB,IAAI2P,EAAQ3P,EAAK4P,cACbC,EAAU7P,EAAK8P,gBACfC,EAAU/P,EAAKgQ,gBACfC,EAAejQ,EAAKkQ,qBACxB,OAAO3W,MAAMyG,GAAQ,eAXvB,SAAoBmQ,GAClB,OAAOA,EAAO,EAAI,IAAMX,IAAKW,EAAM,GAC/BA,EAAO,KAAO,IAAMX,GAAIW,EAAM,GAC9BX,GAAIW,EAAM,EAChB,CAQQC,CAAWpQ,EAAKqQ,kBAAuB,IAAMb,GAAIxP,EAAKsQ,cAAgB,EAAG,GAAK,IAAMd,GAAIxP,EAAKuQ,aAAc,IAC1GN,EAAe,IAAMT,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IAAML,GAAIO,EAAS,GAAK,IAAMP,GAAIS,EAAc,GAAK,IACnHF,EAAU,IAAMP,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IAAML,GAAIO,EAAS,GAAK,IAChFF,GAAWF,EAAQ,IAAMH,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IACjE,GACR,CAEe,SAAAW,GAASC,GACtB,IAAIC,EAAW,IAAIpiB,OAAO,KAAQmiB,EAAY,SAC1CE,EAAYF,EAAUG,WAAW,GAWrC,SAASC,EAAU/pB,EAAM4D,GACvB,IAIIvT,EAJAi4B,EAAO,GACP0B,EAAIhqB,EAAKtP,OACTu5B,EAAI,EACJz5B,EAAI,EAEJ05B,EAAMF,GAAK,EACXG,GAAM,EAMV,SAASC,IACP,GAAIF,EAAK,OAAOnC,GAChB,GAAIoC,EAAK,OAAOA,GAAM,EAAOrC,GAG7B,IAAIv3B,EAAUU,EAAPoK,EAAI4uB,EACX,GAzFM,KAyFFjqB,EAAK8pB,WAAWzuB,GAAc,CAChC,KAAO4uB,IAAMD,GA1FT,KA0FchqB,EAAK8pB,WAAWG,IA1F9B,KA0F8CjqB,EAAK8pB,aAAaG,KAIpE,OAHK15B,EAAI05B,IAAMD,EAAGE,GAAM,EA1FlB,MA2FIj5B,EAAI+O,EAAK8pB,WAAWG,MAAmBE,GAAM,EA1FlD,KA2FIl5B,IAAgBk5B,GAAM,EA5FzB,KA4FmCnqB,EAAK8pB,WAAWG,MAAkBA,GACpEjqB,EAAK/N,MAAMoJ,EAAI,EAAG9K,EAAI,GAAG85B,QAAQ,MAAO,IACvD,CAGM,KAAOJ,EAAID,GAAG,CACZ,GAlGM,MAkGD/4B,EAAI+O,EAAK8pB,WAAWv5B,EAAI05B,MAAmBE,GAAM,OACjD,GAlGA,KAkGIl5B,EAAgBk5B,GAAM,EAnGzB,KAmGmCnqB,EAAK8pB,WAAWG,MAAkBA,OACtE,GAAIh5B,IAAM44B,EAAW,SAC1B,OAAO7pB,EAAK/N,MAAMoJ,EAAG9K,EAC7B,CAGM,OAAO25B,GAAM,EAAMlqB,EAAK/N,MAAMoJ,EAAG2uB,EACvC,CAEI,IA5GU,KA+ENhqB,EAAK8pB,WAAWE,EAAI,MAAkBA,EA9EjC,KA+ELhqB,EAAK8pB,WAAWE,EAAI,MAAiBA,GA4BjC35B,EAAI+5B,OAAarC,IAAK,CAE5B,IADA,IAAIzB,EAAM,GACHj2B,IAAMy3B,IAAOz3B,IAAM03B,IAAKzB,EAAIvsB,KAAK1J,GAAIA,EAAI+5B,IAC5CxmB,GAA4B,OAAtB0iB,EAAM1iB,EAAE0iB,EAAK91B,OACvB83B,EAAKvuB,KAAKusB,EAChB,CAEI,OAAOgC,CACX,CAEE,SAASgC,EAAchC,EAAML,GAC3B,OAAOK,EAAKjqB,KAAI,SAASioB,GACvB,OAAO2B,EAAQ5pB,KAAI,SAASoqB,GAC1B,OAAO8B,EAAYjE,EAAImC,GAC/B,IAASzuB,KAAK2vB,EACd,GACA,CAgBE,SAASa,EAAUlE,GACjB,OAAOA,EAAIjoB,IAAIksB,GAAavwB,KAAK2vB,EACrC,CAEE,SAASY,EAAYn0B,GACnB,OAAgB,MAATA,EAAgB,GACjBA,aAAiBqN,KAAOmlB,GAAWxyB,GACnCwzB,EAASrnB,KAAKnM,GAAS,IAAM,IAAOA,EAAMi0B,QAAQ,KAAM,MAAU,IAClEj0B,CACV,CAEE,MAAO,CACLgkB,MA5FF,SAAepa,EAAM4D,GACnB,IAAI6mB,EAASxC,EAASK,EAAOyB,EAAU/pB,GAAM,SAASsmB,EAAK/1B,GACzD,GAAIk6B,EAAS,OAAOA,EAAQnE,EAAK/1B,EAAI,GACrC03B,EAAU3B,EAAKmE,EAAU7mB,EAtD/B,SAAyBqkB,EAASrkB,GAChC,IAAIwU,EAAS4P,GAAgBC,GAC7B,OAAO,SAAS3B,EAAK/1B,GACnB,OAAOqT,EAAEwU,EAAOkO,GAAM/1B,EAAG03B,EAC7B,CACA,CAiDmCyC,CAAgBpE,EAAK1iB,GAAKokB,GAAgB1B,EAC7E,IAEI,OADAgC,EAAKL,QAAUA,GAAW,GACnBK,CACX,EAsFIyB,UAAWA,EACXtY,OA5BF,SAAgB6W,EAAML,GAEpB,OADe,MAAXA,IAAiBA,EAAUI,GAAaC,IACrC,CAACL,EAAQ5pB,IAAIksB,GAAavwB,KAAK2vB,IAAYz3B,OAAOo4B,EAAchC,EAAML,IAAUjuB,KAAK,KAChG,EA0BI2wB,WAxBF,SAAoBrC,EAAML,GAExB,OADe,MAAXA,IAAiBA,EAAUI,GAAaC,IACrCgC,EAAchC,EAAML,GAASjuB,KAAK,KAC7C,EAsBI4wB,WApBF,SAAoBtC,GAClB,OAAOA,EAAKjqB,IAAImsB,GAAWxwB,KAAK,KACpC,EAmBIwwB,UAAWA,EACXD,YAAaA,EAEjB,CCjKA,IAAIM,GAAMnB,GAAI,KAEHoB,GAAWD,GAAIzQ,MACf2Q,GAAeF,GAAId,UACnBiB,GAAYH,GAAIpZ,OAChBwZ,GAAgBJ,GAAIF,WACpBO,GAAgBL,GAAID,WACpBO,GAAeN,GAAIL,UACnBY,GAAiBP,GAAIN,YCR5Bc,GAAM3B,GAAI,MAEH4B,GAAWD,GAAIjR,MACfmR,GAAeF,GAAItB,UACnByB,GAAYH,GAAI5Z,OAChBga,GAAgBJ,GAAIV,WACpBe,GAAgBL,GAAIT,WACpBe,GAAeN,GAAIb,UACnBoB,GAAiBP,GAAId,YCShC,IAAIsB,GAAQ,IAAIpoB,KAAK,oBAAoBqoB,YAAc,IAAIroB,KAAK,oBAAoBqoB,WCV7E,SAASC,GAAmBnuB,EAAGpO,GACpC,IAAKe,GAAKqN,EAAIpO,EAAIoO,EAAEouB,cAAcx8B,EAAI,GAAKoO,EAAEouB,iBAAiBn5B,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAItC,EAAG07B,EAAcruB,EAAE3L,MAAM,EAAG1B,GAIhC,MAAO,CACL07B,EAAYv7B,OAAS,EAAIu7B,EAAY,GAAKA,EAAYh6B,MAAM,GAAKg6B,GAChEruB,EAAE3L,MAAM1B,EAAI,GAEjB,CCjBe,SAAA2wB,GAAStjB,GACtB,OAAOA,EAAImuB,GAAmB/sB,KAAKwmB,IAAI5nB,KAASA,EAAE,GAAK9H,GACzD,CCHA,ICCWo2B,GDDPC,GAAK,2EAEM,SAASC,GAAgBC,GACtC,KAAM5uB,EAAQ0uB,GAAGxa,KAAK0a,IAAa,MAAM,IAAI7pB,MAAM,mBAAqB6pB,GACxE,IAAI5uB,EACJ,OAAO,IAAI6uB,GAAgB,CACzBC,KAAM9uB,EAAM,GACZ+uB,MAAO/uB,EAAM,GACbgvB,KAAMhvB,EAAM,GACZivB,OAAQjvB,EAAM,GACdub,KAAMvb,EAAM,GACZkrB,MAAOlrB,EAAM,GACbkvB,MAAOlvB,EAAM,GACbmvB,UAAWnvB,EAAM,IAAMA,EAAM,GAAGxL,MAAM,GACtC0F,KAAM8F,EAAM,GACZlC,KAAMkC,EAAM,KAEhB,CAIO,SAAS6uB,GAAgBD,GAC9Br8B,KAAKu8B,UAA0BlM,IAAnBgM,EAAUE,KAAqB,IAAMF,EAAUE,KAAO,GAClEv8B,KAAKw8B,WAA4BnM,IAApBgM,EAAUG,MAAsB,IAAMH,EAAUG,MAAQ,GACrEx8B,KAAKy8B,UAA0BpM,IAAnBgM,EAAUI,KAAqB,IAAMJ,EAAUI,KAAO,GAClEz8B,KAAK08B,YAA8BrM,IAArBgM,EAAUK,OAAuB,GAAKL,EAAUK,OAAS,GACvE18B,KAAKgpB,OAASqT,EAAUrT,KACxBhpB,KAAK24B,WAA4BtI,IAApBgM,EAAU1D,WAAsBtI,GAAagM,EAAU1D,MACpE34B,KAAK28B,QAAUN,EAAUM,MACzB38B,KAAK48B,eAAoCvM,IAAxBgM,EAAUO,eAA0BvM,GAAagM,EAAUO,UAC5E58B,KAAK2H,OAAS00B,EAAU10B,KACxB3H,KAAKuL,UAA0B8kB,IAAnBgM,EAAU9wB,KAAqB,GAAK8wB,EAAU9wB,KAAO,EACnE,CE/Be,SAAAsxB,GAASjvB,EAAGpO,GACzB,IAAIN,EAAI68B,GAAmBnuB,EAAGpO,GAC9B,IAAKN,EAAG,OAAO0O,EAAI,GACnB,IAAIquB,EAAc/8B,EAAE,GAChBgyB,EAAWhyB,EAAE,GACjB,OAAOgyB,EAAW,EAAI,KAAO,IAAI3xB,OAAO2xB,GAAUlnB,KAAK,KAAOiyB,EACxDA,EAAYv7B,OAASwwB,EAAW,EAAI+K,EAAYh6B,MAAM,EAAGivB,EAAW,GAAK,IAAM+K,EAAYh6B,MAAMivB,EAAW,GAC5G+K,EAAc,IAAI18B,MAAM2xB,EAAW+K,EAAYv7B,OAAS,GAAGsJ,KAAK,IACxE,CFUAoyB,GAAgB38B,UAAY68B,GAAgB78B,UAe5C68B,GAAgB78B,UAAUkR,SAAW,WACnC,OAAO3Q,KAAKu8B,KACNv8B,KAAKw8B,MACLx8B,KAAKy8B,KACLz8B,KAAK08B,QACJ18B,KAAKgpB,KAAO,IAAM,UACHqH,IAAfrwB,KAAK24B,MAAsB,GAAK3pB,KAAK0T,IAAI,EAAgB,EAAb1iB,KAAK24B,SACjD34B,KAAK28B,MAAQ,IAAM,UACAtM,IAAnBrwB,KAAK48B,UAA0B,GAAK,IAAM5tB,KAAK0T,IAAI,EAAoB,EAAjB1iB,KAAK48B,aAC3D58B,KAAK2H,KAAO,IAAM,IACnB3H,KAAKuL,IACb,EG1CA,IAAAuxB,GAAe,CACb,IAAK,SAASlvB,EAAGpO,GAAK,OAAY,IAAJoO,GAASmvB,QAAQv9B,EAAG,EAClDL,EAAK,SAASyO,GAAK,OAAOoB,KAAK2T,MAAM/U,GAAG+C,SAAS,EAAG,EACpD1P,EAAK,SAAS2M,GAAK,OAAOA,EAAI,EAAG,EACjC1O,ELRa,SAAS0O,GACtB,OAAOoB,KAAKwmB,IAAI5nB,EAAIoB,KAAK2T,MAAM/U,KAAO,KAChCA,EAAEovB,eAAe,MAAM3C,QAAQ,KAAM,IACrCzsB,EAAE+C,SAAS,GACnB,EKKE4D,EAAK,SAAS3G,EAAGpO,GAAK,OAAOoO,EAAEouB,cAAcx8B,EAAG,EAChDoU,EAAK,SAAShG,EAAGpO,GAAK,OAAOoO,EAAEmvB,QAAQv9B,EAAG,EAC1CyiB,EAAK,SAASrU,EAAGpO,GAAK,OAAOoO,EAAEqvB,YAAYz9B,EAAG,EAC9C4L,EAAK,SAASwC,GAAK,OAAOoB,KAAK2T,MAAM/U,GAAG+C,SAAS,EAAG,EACpDnR,EAAK,SAASoO,EAAGpO,GAAK,OAAOq9B,GAAkB,IAAJjvB,EAASpO,EAAG,EACvD0B,EAAK27B,GACLv8B,EFXa,SAASsN,EAAGpO,GACzB,IAAIN,EAAI68B,GAAmBnuB,EAAGpO,GAC9B,IAAKN,EAAG,OAAO0O,EAAI,GACnB,IAAIquB,EAAc/8B,EAAE,GAChBgyB,EAAWhyB,EAAE,GACbqB,EAAI2wB,GAAYgL,GAAuE,EAAtDltB,KAAK0T,KAAK,EAAG1T,KAAKC,IAAI,EAAGD,KAAKqX,MAAM6K,EAAW,MAAY,EAC5F1wB,EAAIy7B,EAAYv7B,OACpB,OAAOH,IAAMC,EAAIy7B,EACX17B,EAAIC,EAAIy7B,EAAc,IAAI18B,MAAMgB,EAAIC,EAAI,GAAGwJ,KAAK,KAChDzJ,EAAI,EAAI07B,EAAYh6B,MAAM,EAAG1B,GAAK,IAAM07B,EAAYh6B,MAAM1B,GAC1D,KAAO,IAAIhB,MAAM,EAAIgB,GAAGyJ,KAAK,KAAO+xB,GAAmBnuB,EAAGoB,KAAK0T,IAAI,EAAGljB,EAAIe,EAAI,IAAI,EAC1F,EECE28B,EAAK,SAAStvB,GAAK,OAAOoB,KAAK2T,MAAM/U,GAAG+C,SAAS,IAAIwsB,aAAc,EACnEvvB,EAAK,SAASA,GAAK,OAAOoB,KAAK2T,MAAM/U,GAAG+C,SAAS,GAAI,GCjBxC,SAAAysB,GAASxvB,GACtB,OAAOA,CACT,CCOA,ICPIyvB,GDOAhvB,GAAM9O,MAAME,UAAU4O,IACtBivB,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,SAAAC,GAASF,GACtB,IEbsBG,EAAUC,EFa5Bx4B,OAA4BorB,IAApBgN,EAAOG,eAA+CnN,IAArBgN,EAAOI,UAA0B/T,IEbxD8T,EFa+EnvB,GAAI1O,KAAK09B,EAAOG,SAAUE,QEb/FD,EFawGJ,EAAOI,UAAY,GEZpJ,SAASr3B,EAAOuyB,GAOrB,IANA,IAAIp4B,EAAI6F,EAAM1F,OACVL,EAAI,GACJgL,EAAI,EACJ4W,EAAIub,EAAS,GACb98B,EAAS,EAENH,EAAI,GAAK0hB,EAAI,IACdvhB,EAASuhB,EAAI,EAAI0W,IAAO1W,EAAIjT,KAAK0T,IAAI,EAAGiW,EAAQj4B,IACpDL,EAAE0J,KAAK3D,EAAMu3B,UAAUp9B,GAAK0hB,EAAG1hB,EAAI0hB,OAC9BvhB,GAAUuhB,EAAI,GAAK0W,KACxB1W,EAAIub,EAASnyB,GAAKA,EAAI,GAAKmyB,EAAS98B,QAGtC,OAAOL,EAAE20B,UAAUhrB,KAAKyzB,EAC5B,GFFMG,OAAqCvN,IAApBgN,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EC,OAAqCzN,IAApBgN,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EE,OAA6B1N,IAAnBgN,EAAOU,QAAwB,IAAMV,EAAOU,QAAU,GAChEC,OAA+B3N,IAApBgN,EAAOW,SAAyBtU,GGjBlC,SAASsU,GACtB,OAAO,SAAS53B,GACd,OAAOA,EAAMi0B,QAAQ,UAAU,SAAS95B,GACtC,OAAOy9B,GAAUz9B,EACvB,GACA,CACA,CHW4D09B,CAAe5vB,GAAI1O,KAAK09B,EAAOW,SAAUl+B,SAC/Fo+B,OAA6B7N,IAAnBgN,EAAOa,QAAwB,IAAMb,EAAOa,QAAU,GAChEC,OAAyB9N,IAAjBgN,EAAOc,MAAsB,IAAMd,EAAOc,MAAQ,GAC1DC,OAAqB/N,IAAfgN,EAAOe,IAAoB,MAAQf,EAAOe,IAAM,GAE1D,SAASC,EAAUhC,GAGjB,IAAIE,GAFJF,EAAYD,GAAgBC,IAEPE,KACjBC,EAAQH,EAAUG,MAClBC,EAAOJ,EAAUI,KACjBC,EAASL,EAAUK,OACnB1T,EAAOqT,EAAUrT,KACjB2P,EAAQ0D,EAAU1D,MAClBgE,EAAQN,EAAUM,MAClBC,EAAYP,EAAUO,UACtBj1B,EAAO00B,EAAU10B,KACjB4D,EAAO8wB,EAAU9wB,KAGR,MAATA,GAAcoxB,GAAQ,EAAMpxB,EAAO,KAG7BuxB,GAAYvxB,UAAqB8kB,IAAduM,IAA4BA,EAAY,IAAKj1B,GAAO,EAAM4D,EAAO,MAG1Fyd,GAAkB,MAATuT,GAA0B,MAAVC,KAAgBxT,GAAO,EAAMuT,EAAO,IAAKC,EAAQ,KAI9E,IAAI55B,EAAoB,MAAX85B,EAAiBkB,EAA4B,MAAXlB,GAAkB,SAASnqB,KAAKhH,GAAQ,IAAMA,EAAKmW,cAAgB,GAC9G4c,EAAoB,MAAX5B,EAAiBoB,EAAiB,OAAOvrB,KAAKhH,GAAQ2yB,EAAU,GAKzEK,EAAazB,GAAYvxB,GACzBizB,EAAc,aAAajsB,KAAKhH,GAUpC,SAASkW,EAAOrb,GACd,IAEI7F,EAAGC,EAAGS,EAFNw9B,EAAc77B,EACd87B,EAAcJ,EAGlB,GAAa,MAAT/yB,EACFmzB,EAAcH,EAAWn4B,GAASs4B,EAClCt4B,EAAQ,OACH,CAIL,IAAIu4B,GAHJv4B,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQqc,MAAMrc,GAASg4B,EAAMG,EAAWvvB,KAAKwmB,IAAIpvB,GAAQw2B,GAGrDj1B,IAAMvB,EIjFH,SAAS9F,GACtBs+B,EAAK,IAAK,IAAkC1wB,EAA9B1N,EAAIF,EAAEI,OAAQH,EAAI,EAAG0N,GAAM,EAAO1N,EAAIC,IAAKD,EACvD,OAAQD,EAAEC,IACR,IAAK,IAAK0N,EAAKC,EAAK3N,EAAG,MACvB,IAAK,IAAgB,IAAP0N,IAAUA,EAAK1N,GAAG2N,EAAK3N,EAAG,MACxC,QAAS,KAAMD,EAAEC,GAAI,MAAMq+B,EAAS3wB,EAAK,IAAGA,EAAK,GAGrD,OAAOA,EAAK,EAAI3N,EAAE2B,MAAM,EAAGgM,GAAM3N,EAAE2B,MAAMiM,EAAK,GAAK5N,CACrD,CJwE0Bu+B,CAAWz4B,IAGzBu4B,GAA4B,IAAVv4B,GAAwB,MAATq2B,IAAckC,GAAgB,GAGnEF,GAAeE,EAA0B,MAATlC,EAAeA,EAAO0B,EAAkB,MAAT1B,GAAyB,MAATA,EAAe,GAAKA,GAAQgC,EAC3GC,GAAwB,MAATnzB,EAAe+xB,GAAS,EAAIpB,GAAiB,GAAK,IAAMwC,GAAeC,GAA0B,MAATlC,EAAe,IAAM,IAIxH+B,EAEF,IADAj+B,GAAK,EAAGC,EAAI4F,EAAM1F,SACTH,EAAIC,GACX,GAA6B,IAAzBS,EAAImF,EAAM0zB,WAAWv5B,KAAcU,EAAI,GAAI,CAC7Cy9B,GAAqB,KAANz9B,EAAW88B,EAAU33B,EAAMnE,MAAM1B,EAAI,GAAK6F,EAAMnE,MAAM1B,IAAMm+B,EAC3Et4B,EAAQA,EAAMnE,MAAM,EAAG1B,GACvB,KACd,CAGA,CAGUo8B,IAAU3T,IAAM5iB,EAAQnB,EAAMmB,EAAOwO,MAGzC,IAAIlU,EAAS+9B,EAAY/9B,OAAS0F,EAAM1F,OAASg+B,EAAYh+B,OACzDo+B,EAAUp+B,EAASi4B,EAAQ,IAAIp5B,MAAMo5B,EAAQj4B,EAAS,GAAGsJ,KAAKuyB,GAAQ,GAM1E,OAHII,GAAS3T,IAAM5iB,EAAQnB,EAAM65B,EAAU14B,EAAO04B,EAAQp+B,OAASi4B,EAAQ+F,EAAYh+B,OAASkU,KAAWkqB,EAAU,IAG7GtC,GACN,IAAK,IAAKp2B,EAAQq4B,EAAcr4B,EAAQs4B,EAAcI,EAAS,MAC/D,IAAK,IAAK14B,EAAQq4B,EAAcK,EAAU14B,EAAQs4B,EAAa,MAC/D,IAAK,IAAKt4B,EAAQ04B,EAAQ78B,MAAM,EAAGvB,EAASo+B,EAAQp+B,QAAU,GAAK+9B,EAAcr4B,EAAQs4B,EAAcI,EAAQ78B,MAAMvB,GAAS,MAC9H,QAAS0F,EAAQ04B,EAAUL,EAAcr4B,EAAQs4B,EAGnD,OAAOV,EAAS53B,EACtB,CAMI,OAtEAw2B,OAA0BvM,IAAduM,EAA0B,EAChC,SAASrqB,KAAKhH,GAAQyD,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,GAAI2tB,IAC/C5tB,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,GAAI2tB,IAgE/Bnb,EAAO9Q,SAAW,WAChB,OAAO0rB,EAAY,EACzB,EAEW5a,CACX,CAYE,MAAO,CACLA,OAAQ4c,EACRU,aAZF,SAAsB1C,EAAWj2B,GAC/B,IAAIwN,EAAIyqB,IAAWhC,EAAYD,GAAgBC,IAAsB9wB,KAAO,IAAK8wB,IAC7E9nB,EAAiE,EAA7DvF,KAAK0T,KAAK,EAAG1T,KAAKC,IAAI,EAAGD,KAAKqX,MAAM6K,GAAS9qB,GAAS,KAC1Dod,EAAIxU,KAAKyU,IAAI,IAAKlP,GAClB3R,EAAS06B,GAAS,EAAI/oB,EAAI,GAC9B,OAAO,SAASnO,GACd,OAAOwN,EAAE4P,EAAIpd,GAASxD,CAC5B,CACA,EAMA,CCrIe,SAASo8B,GAAcjoB,GAIpC,OAHAsmB,GAAS4B,GAAaloB,GACtB0K,SAAS4b,GAAO5b,OAChBsd,eAAe1B,GAAO0B,aACf1B,EACT,CIjBe,SAAA6B,GAAS1K,GACtB,OAAOxlB,KAAK0T,IAAI,GAAIwO,GAASliB,KAAKwmB,IAAIhB,IACxC,CCFe,SAAA2K,GAAS3K,EAAMpuB,GAC5B,OAAO4I,KAAK0T,IAAI,EAAgE,EAA7D1T,KAAK0T,KAAK,EAAG1T,KAAKC,IAAI,EAAGD,KAAKqX,MAAM6K,GAAS9qB,GAAS,KAAW8qB,GAASliB,KAAKwmB,IAAIhB,IACxG,CCFe,SAAA4K,GAAS5K,EAAM9R,GAE5B,OADA8R,EAAOxlB,KAAKwmB,IAAIhB,GAAO9R,EAAM1T,KAAKwmB,IAAI9S,GAAO8R,EACtCxlB,KAAK0T,IAAI,EAAGwO,GAASxO,GAAOwO,GAASsD,IAAS,CACvD,CNFW/S,gBACAsd,sBAEXC,GAAc,CACZjB,QAAS,IACTN,UAAW,IACXD,SAAU,CAAC,GACXK,SAAU,CAAC,IAAK,IAChBM,MAAO,MOXT,IAAI1pB,GAAK,IAAIhB,KACTkB,GAAK,IAAIlB,KAEE,SAAS4rB,GAAYC,EAAQC,EAASxK,EAAOyK,GAE1D,SAASvsB,EAASiW,GAChB,OAAOoW,EAAOpW,EAA4B,IAArBzoB,UAAUC,OAAe,IAAI+S,KAAO,IAAIA,MAAMyV,IAAQA,CAC/E,CA6DE,OA3DAjW,EAASoT,MAAQ,SAAS6C,GACxB,OAAOoW,EAAOpW,EAAO,IAAIzV,MAAMyV,IAAQA,CAC3C,EAEEjW,EAASwhB,KAAO,SAASvL,GACvB,OAAOoW,EAAOpW,EAAO,IAAIzV,KAAKyV,EAAO,IAAKqW,EAAQrW,EAAM,GAAIoW,EAAOpW,GAAOA,CAC9E,EAEEjW,EAAS0P,MAAQ,SAASuG,GACxB,IAAIuW,EAAKxsB,EAASiW,GACduD,EAAKxZ,EAASwhB,KAAKvL,GACvB,OAAOA,EAAOuW,EAAKhT,EAAKvD,EAAOuW,EAAKhT,CACxC,EAEExZ,EAASysB,OAAS,SAASxW,EAAMsL,GAC/B,OAAO+K,EAAQrW,EAAO,IAAIzV,MAAMyV,GAAe,MAARsL,EAAe,EAAIxlB,KAAKqX,MAAMmO,IAAQtL,CACjF,EAEEjW,EAASyhB,MAAQ,SAASre,EAAOjB,EAAMof,GACrC,IAAgBxmB,EAAZ0mB,EAAQ,GAGZ,GAFAre,EAAQpD,EAASwhB,KAAKpe,GACtBme,EAAe,MAARA,EAAe,EAAIxlB,KAAKqX,MAAMmO,KAC/Bne,EAAQjB,GAAWof,EAAO,GAAI,OAAOE,EAC3C,GAAGA,EAAM3qB,KAAKiE,EAAW,IAAIyF,MAAM4C,IAASkpB,EAAQlpB,EAAOme,GAAO8K,EAAOjpB,SAClErI,EAAWqI,GAASA,EAAQjB,GACnC,OAAOsf,CACX,EAEEzhB,EAASzF,OAAS,SAAS+E,GACzB,OAAO8sB,IAAY,SAASnW,GAC1B,GAAIA,GAAQA,EAAM,KAAOoW,EAAOpW,IAAQ3W,EAAK2W,IAAOA,EAAKhB,QAAQgB,EAAO,EAC9E,IAAO,SAASA,EAAMsL,GAChB,GAAItL,GAAQA,EACV,GAAIsL,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAO+K,EAAQrW,GAAO,IAAK3W,EAAK2W,UAC3B,OAASsL,GAAQ,GACtB,KAAO+K,EAAQrW,EAAM,IAAM3W,EAAK2W,KAG1C,GACA,EAEM6L,IACF9hB,EAAS8hB,MAAQ,SAAS1e,EAAO6Q,GAG/B,OAFAzS,GAAGyT,SAAS7R,GAAQ1B,GAAGuT,SAAShB,GAChCoY,EAAO7qB,IAAK6qB,EAAO3qB,IACZ3F,KAAKqX,MAAM0O,EAAMtgB,GAAIE,IAClC,EAEI1B,EAAS+c,MAAQ,SAASwE,GAExB,OADAA,EAAOxlB,KAAKqX,MAAMmO,GACVU,SAASV,IAAWA,EAAO,EAC3BA,EAAO,EACTvhB,EAASzF,OAAOgyB,EACZ,SAAStgC,GAAK,OAAOsgC,EAAMtgC,GAAKs1B,GAAS,CAAE,EAC3C,SAASt1B,GAAK,OAAO+T,EAAS8hB,MAAM,EAAG71B,GAAKs1B,GAAS,CAAE,GAH7CvhB,EADoB,IAK9C,GAGSA,CACT,CCnEA,IAAI0sB,GAAc1sB,IAAS,WAE3B,IAAG,SAASiW,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EACvB,IAAG,SAASne,EAAO6Q,GACjB,OAAOA,EAAM7Q,CACf,IAGAspB,GAAY3P,MAAQ,SAASxM,GAE3B,OADAA,EAAIxU,KAAKqX,MAAM7C,GACV0R,SAAS1R,IAAQA,EAAI,EACpBA,EAAI,EACHvQ,IAAS,SAASiW,GACvBA,EAAKhB,QAAQlZ,KAAKqX,MAAM6C,EAAO1F,GAAKA,EACxC,IAAK,SAAS0F,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOhR,EAChC,IAAK,SAASnN,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASmN,CAC3B,IAPuBmc,GADgB,IASvC,EAG0BA,GAAYjL,MCzB/B,IAAIkL,GAAiB,IACjBC,GAAiB,IACjBC,GAAe,KACfC,GAAc,MACdC,GAAe,OCDtBC,GAAShtB,IAAS,SAASiW,GAC7BA,EAAKhB,QAAQgB,EAAOA,EAAKgX,kBAC3B,IAAG,SAAShX,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOoL,GAC9B,IAAG,SAASvpB,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASupB,EACzB,IAAG,SAAS1W,GACV,OAAOA,EAAKgQ,eACd,IAGqB+G,GAAOvL,MCX5B,IAAIyL,GAASltB,IAAS,SAASiW,GAC7BA,EAAKhB,QAAQgB,EAAOA,EAAKgX,kBAAoBhX,EAAKkX,aAAeR,GACnE,IAAG,SAAS1W,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOqL,GAC9B,IAAG,SAASxpB,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASwpB,EACzB,IAAG,SAAS3W,GACV,OAAOA,EAAKmX,YACd,IAGqBF,GAAOzL,MCX5B,IAAI4L,GAAOrtB,IAAS,SAASiW,GAC3BA,EAAKhB,QAAQgB,EAAOA,EAAKgX,kBAAoBhX,EAAKkX,aAAeR,GAAiB1W,EAAKmX,aAAeR,GACxG,IAAG,SAAS3W,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOsL,GAC9B,IAAG,SAASzpB,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASypB,EACzB,IAAG,SAAS5W,GACV,OAAOA,EAAK4S,UACd,IAGmBwE,GAAK5L,MCXxB,IAAI6L,GAAMttB,IAAS,SAASiW,GAC1BA,EAAKsX,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAStX,EAAMsL,GAChBtL,EAAKuX,QAAQvX,EAAKwX,UAAYlM,EAChC,IAAG,SAASne,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAAS6Q,EAAIyZ,oBAAsBtqB,EAAMsqB,qBAAuBd,IAAkBE,EAClG,IAAG,SAAS7W,GACV,OAAOA,EAAKwX,UAAY,CAC1B,ICRA,SAASE,GAAQrgC,GACf,OAAO0S,IAAS,SAASiW,GACvBA,EAAKuX,QAAQvX,EAAKwX,WAAaxX,EAAK2X,SAAW,EAAItgC,GAAK,GACxD2oB,EAAKsX,SAAS,EAAG,EAAG,EAAG,EAC3B,IAAK,SAAStX,EAAMsL,GAChBtL,EAAKuX,QAAQvX,EAAKwX,UAAmB,EAAPlM,EAClC,IAAK,SAASne,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAAS6Q,EAAIyZ,oBAAsBtqB,EAAMsqB,qBAAuBd,IAAkBG,EACpG,GACA,CDEkBO,GAAI7L,MCAf,IAAIoM,GAASF,GAAQ,GACjBG,GAASH,GAAQ,GACjBI,GAAUJ,GAAQ,GAClBK,GAAYL,GAAQ,GACpBM,GAAWN,GAAQ,GACnBO,GAASP,GAAQ,GACjBQ,GAAWR,GAAQ,GAETE,GAAOpM,MACPqM,GAAOrM,MACNsM,GAAQtM,MACNuM,GAAUvM,MACXwM,GAASxM,MACXyM,GAAOzM,MACL0M,GAAS1M,MC1BhC,IAAI2M,GAAQpuB,IAAS,SAASiW,GAC5BA,EAAKuX,QAAQ,GACbvX,EAAKsX,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAStX,EAAMsL,GAChBtL,EAAKoY,SAASpY,EAAKqY,WAAa/M,EAClC,IAAG,SAASne,EAAO6Q,GACjB,OAAOA,EAAIqa,WAAalrB,EAAMkrB,WAAyD,IAA3Cra,EAAIsa,cAAgBnrB,EAAMmrB,cACxE,IAAG,SAAStY,GACV,OAAOA,EAAKqY,UACd,IAGoBF,GAAM3M,MCZ1B,IAAI2E,GAAOpmB,IAAS,SAASiW,GAC3BA,EAAKoY,SAAS,EAAG,GACjBpY,EAAKsX,SAAS,EAAG,EAAG,EAAG,EACzB,IAAG,SAAStX,EAAMsL,GAChBtL,EAAKuY,YAAYvY,EAAKsY,cAAgBhN,EACxC,IAAG,SAASne,EAAO6Q,GACjB,OAAOA,EAAIsa,cAAgBnrB,EAAMmrB,aACnC,IAAG,SAAStY,GACV,OAAOA,EAAKsY,aACd,IAGAnI,GAAKrJ,MAAQ,SAASxM,GACpB,OAAQ0R,SAAS1R,EAAIxU,KAAKqX,MAAM7C,KAASA,EAAI,EAAYvQ,IAAS,SAASiW,GACzEA,EAAKuY,YAAYzyB,KAAKqX,MAAM6C,EAAKsY,cAAgBhe,GAAKA,GACtD0F,EAAKoY,SAAS,EAAG,GACjBpY,EAAKsX,SAAS,EAAG,EAAG,EAAG,EAC3B,IAAK,SAAStX,EAAMsL,GAChBtL,EAAKuY,YAAYvY,EAAKsY,cAAgBhN,EAAOhR,EACjD,IANoD,IAOpD,EAGmB6V,GAAK3E,MCtBxB,IAAIgN,GAAYzuB,IAAS,SAASiW,GAChCA,EAAKyY,cAAc,EAAG,EACxB,IAAG,SAASzY,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOqL,GAC9B,IAAG,SAASxpB,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASwpB,EACzB,IAAG,SAAS3W,GACV,OAAOA,EAAK8P,eACd,IAGwB0I,GAAUhN,MCXlC,IAAIkN,GAAU3uB,IAAS,SAASiW,GAC9BA,EAAK2Y,cAAc,EAAG,EAAG,EAC3B,IAAG,SAAS3Y,EAAMsL,GAChBtL,EAAKhB,SAASgB,EAAOsL,EAAOsL,GAC9B,IAAG,SAASzpB,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAASypB,EACzB,IAAG,SAAS5W,GACV,OAAOA,EAAK4P,aACd,IAGsB8I,GAAQlN,MCX9B,IAAIoN,GAAS7uB,IAAS,SAASiW,GAC7BA,EAAK6Y,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAS7Y,EAAMsL,GAChBtL,EAAK8Y,WAAW9Y,EAAKuQ,aAAejF,EACtC,IAAG,SAASne,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAAS0pB,EACzB,IAAG,SAAS7W,GACV,OAAOA,EAAKuQ,aAAe,CAC7B,ICRA,SAASwI,GAAW1hC,GAClB,OAAO0S,IAAS,SAASiW,GACvBA,EAAK8Y,WAAW9Y,EAAKuQ,cAAgBvQ,EAAKgZ,YAAc,EAAI3hC,GAAK,GACjE2oB,EAAK6Y,YAAY,EAAG,EAAG,EAAG,EAC9B,IAAK,SAAS7Y,EAAMsL,GAChBtL,EAAK8Y,WAAW9Y,EAAKuQ,aAAsB,EAAPjF,EACxC,IAAK,SAASne,EAAO6Q,GACjB,OAAQA,EAAM7Q,GAAS2pB,EAC3B,GACA,CDEqB8B,GAAOpN,MCArB,IAAIyN,GAAYF,GAAW,GACvBG,GAAYH,GAAW,GACvBI,GAAaJ,GAAW,GACxBK,GAAeL,GAAW,GAC1BM,GAAcN,GAAW,GACzBO,GAAYP,GAAW,GACvBQ,GAAcR,GAAW,GAEZE,GAAUzN,MACV0N,GAAU1N,MACT2N,GAAW3N,MACT4N,GAAa5N,MACd6N,GAAY7N,MACd8N,GAAU9N,MACR+N,GAAY/N,MC1BtC,IAAIgO,GAAWzvB,IAAS,SAASiW,GAC/BA,EAAK8Y,WAAW,GAChB9Y,EAAK6Y,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAS7Y,EAAMsL,GAChBtL,EAAKyZ,YAAYzZ,EAAKsQ,cAAgBhF,EACxC,IAAG,SAASne,EAAO6Q,GACjB,OAAOA,EAAIsS,cAAgBnjB,EAAMmjB,cAAkE,IAAjDtS,EAAIqS,iBAAmBljB,EAAMkjB,iBACjF,IAAG,SAASrQ,GACV,OAAOA,EAAKsQ,aACd,IAGuBkJ,GAAShO,MCZhC,IAAIkO,GAAU3vB,IAAS,SAASiW,GAC9BA,EAAKyZ,YAAY,EAAG,GACpBzZ,EAAK6Y,YAAY,EAAG,EAAG,EAAG,EAC5B,IAAG,SAAS7Y,EAAMsL,GAChBtL,EAAK2Z,eAAe3Z,EAAKqQ,iBAAmB/E,EAC9C,IAAG,SAASne,EAAO6Q,GACjB,OAAOA,EAAIqS,iBAAmBljB,EAAMkjB,gBACtC,IAAG,SAASrQ,GACV,OAAOA,EAAKqQ,gBACd,ICEA,SAASuJ,GAAU5jC,GACjB,GAAI,GAAKA,EAAEiS,GAAKjS,EAAEiS,EAAI,IAAK,CACzB,IAAI+X,EAAO,IAAIzV,MAAM,EAAGvU,EAAEoM,EAAGpM,EAAEA,EAAGA,EAAE6jC,EAAG7jC,EAAE8jC,EAAG9jC,EAAE4sB,EAAG5sB,EAAE+jC,GAEnD,OADA/Z,EAAKuY,YAAYviC,EAAEiS,GACZ+X,CACX,CACE,OAAO,IAAIzV,KAAKvU,EAAEiS,EAAGjS,EAAEoM,EAAGpM,EAAEA,EAAGA,EAAE6jC,EAAG7jC,EAAE8jC,EAAG9jC,EAAE4sB,EAAG5sB,EAAE+jC,EAClD,CAEA,SAASC,GAAQhkC,GACf,GAAI,GAAKA,EAAEiS,GAAKjS,EAAEiS,EAAI,IAAK,CACzB,IAAI+X,EAAO,IAAIzV,KAAKA,KAAK0vB,KAAK,EAAGjkC,EAAEoM,EAAGpM,EAAEA,EAAGA,EAAE6jC,EAAG7jC,EAAE8jC,EAAG9jC,EAAE4sB,EAAG5sB,EAAE+jC,IAE5D,OADA/Z,EAAK2Z,eAAe3jC,EAAEiS,GACf+X,CACX,CACE,OAAO,IAAIzV,KAAKA,KAAK0vB,IAAIjkC,EAAEiS,EAAGjS,EAAEoM,EAAGpM,EAAEA,EAAGA,EAAE6jC,EAAG7jC,EAAE8jC,EAAG9jC,EAAE4sB,EAAG5sB,EAAE+jC,GAC3D,CAEA,SAASG,GAAQjyB,EAAG7F,EAAGpM,GACrB,MAAO,CAACiS,EAAGA,EAAG7F,EAAGA,EAAGpM,EAAGA,EAAG6jC,EAAG,EAAGC,EAAG,EAAGlX,EAAG,EAAGmX,EAAG,EACjD,CAEe,SAAShE,GAAa5B,GACnC,IAAIgG,EAAkBhG,EAAOiG,SACzBC,EAAclG,EAAOnU,KACrBsa,EAAcnG,EAAOjpB,KACrBqvB,EAAiBpG,EAAOqG,QACxBC,EAAkBtG,EAAOuG,KACzBC,EAAuBxG,EAAOyG,UAC9BC,EAAgB1G,EAAO2G,OACvBC,EAAqB5G,EAAO6G,YAE5BC,EAAWC,GAASX,GACpBY,EAAeC,GAAab,GAC5Bc,EAAYH,GAAST,GACrBa,EAAgBF,GAAaX,GAC7Bc,EAAiBL,GAASP,GAC1Ba,EAAqBJ,GAAaT,GAClCc,EAAUP,GAASL,GACnBa,EAAcN,GAAaP,GAC3Bc,EAAeT,GAASH,GACxBa,EAAmBR,GAAaL,GAEhCc,EAAU,CACZl/B,EAkQF,SAA4B3G,GAC1B,OAAO2kC,EAAqB3kC,EAAE2hC,SAClC,EAnQI3b,EAqQF,SAAuBhmB,GACrB,OAAOykC,EAAgBzkC,EAAE2hC,SAC7B,EAtQI1hC,EAwQF,SAA0BD,GACxB,OAAO+kC,EAAmB/kC,EAAEqiC,WAChC,EAzQIpc,EA2QF,SAAqBjmB,GACnB,OAAO6kC,EAAc7kC,EAAEqiC,WAC3B,EA5QItgC,EAAK,KACL/B,EAAK8lC,GACLzwB,EAAKywB,GACLpxB,EAAKqxB,GACLhjB,EAAKijB,GACLC,EAAKC,GACLrC,EAAKsC,GACLpL,EAAKqL,GACLj6B,EAAKk6B,GACLtC,EAAKuC,GACLl6B,EAAKm6B,GACLzC,EAAK0C,GACLlmC,EAkQF,SAAsBN,GACpB,OAAOukC,IAAiBvkC,EAAE48B,YAAc,IAC5C,EAnQIjT,EAqQF,SAAuB3pB,GACrB,OAAO,KAAOA,EAAEqiC,WAAa,EACjC,EAtQIoE,EAAKC,GACLtlC,EAAKulC,GACL/Z,EAAKga,GACL/Y,EAAKgZ,GACLC,EAAKC,GACLC,EAAKC,GACLC,EAAKC,GACLC,EAAKC,GACL34B,EAAK,KACLsvB,EAAK,KACL/rB,EAAKmoB,GACLkN,EAAKC,GACLC,EAAKC,GACL,IAAKC,IAGHC,EAAa,CACfhhC,EAuPF,SAA+B3G,GAC7B,OAAO2kC,EAAqB3kC,EAAEgjC,YAClC,EAxPIhd,EA0PF,SAA0BhmB,GACxB,OAAOykC,EAAgBzkC,EAAEgjC,YAC7B,EA3PI/iC,EA6PF,SAA6BD,GAC3B,OAAO+kC,EAAmB/kC,EAAEs6B,cAChC,EA9PIrU,EAgQF,SAAwBjmB,GACtB,OAAO6kC,EAAc7kC,EAAEs6B,cAC3B,EAjQIv4B,EAAK,KACL/B,EAAK4nC,GACLvyB,EAAKuyB,GACLlzB,EAAKmzB,GACL9kB,EAAK+kB,GACL7B,EAAK8B,GACLlE,EAAKmE,GACLjN,EAAKkN,GACL97B,EAAK+7B,GACLnE,EAAKoE,GACL/7B,EAAKg8B,GACLtE,EAAKuE,GACL/nC,EAuPF,SAAyBN,GACvB,OAAOukC,IAAiBvkC,EAAE45B,eAAiB,IAC/C,EAxPIjQ,EA0PF,SAA0B3pB,GACxB,OAAO,KAAOA,EAAEs6B,cAAgB,EACpC,EA3PImM,EAAKC,GACLtlC,EAAKulC,GACL/Z,EAAK0b,GACLza,EAAK0a,GACLzB,EAAK0B,GACLxB,EAAKyB,GACLvB,EAAKwB,GACLtB,EAAKuB,GACLj6B,EAAK,KACLsvB,EAAK,KACL/rB,EAAK22B,GACLtB,EAAKuB,GACLrB,EAAKsB,GACL,IAAKpB,IAGHqB,EAAS,CACXpiC,EA4JF,SAA2B3G,EAAGwI,EAAQnH,GACpC,IAAIC,EAAIikC,EAAe9iB,KAAKja,EAAOzF,MAAM1B,IACzC,OAAOC,GAAKtB,EAAEknC,EAAI1B,EAAmBlkC,EAAE,GAAGkhB,eAAgBnhB,EAAIC,EAAE,GAAGE,SAAW,CAClF,EA9JIwkB,EAgKF,SAAsBhmB,EAAGwI,EAAQnH,GAC/B,IAAIC,EAAI+jC,EAAU5iB,KAAKja,EAAOzF,MAAM1B,IACpC,OAAOC,GAAKtB,EAAEknC,EAAI5B,EAAchkC,EAAE,GAAGkhB,eAAgBnhB,EAAIC,EAAE,GAAGE,SAAW,CAC7E,EAlKIvB,EAoKF,SAAyBD,EAAGwI,EAAQnH,GAClC,IAAIC,EAAIqkC,EAAaljB,KAAKja,EAAOzF,MAAM1B,IACvC,OAAOC,GAAKtB,EAAEoM,EAAIw5B,EAAiBtkC,EAAE,GAAGkhB,eAAgBnhB,EAAIC,EAAE,GAAGE,SAAW,CAChF,EAtKIykB,EAwKF,SAAoBjmB,EAAGwI,EAAQnH,GAC7B,IAAIC,EAAImkC,EAAQhjB,KAAKja,EAAOzF,MAAM1B,IAClC,OAAOC,GAAKtB,EAAEoM,EAAIs5B,EAAYpkC,EAAE,GAAGkhB,eAAgBnhB,EAAIC,EAAE,GAAGE,SAAW,CAC3E,EA1KIO,EA4KF,SAA6B/B,EAAGwI,EAAQnH,GACtC,OAAO2nC,EAAehpC,EAAGmkC,EAAiB37B,EAAQnH,EACtD,EA7KIrB,EAAKipC,GACL5zB,EAAK4zB,GACLv0B,EAAKw0B,GACLnmB,EAAKomB,GACLlD,EAAKmD,GACLvF,EAAKwF,GACLtO,EAAKsO,GACLl9B,EAAKm9B,GACLvF,EAAKwF,GACLn9B,EAAKo9B,GACL1F,EAAK2F,GACLnpC,EAuIF,SAAqBN,EAAGwI,EAAQnH,GAC9B,IAAIC,EAAI2jC,EAASxiB,KAAKja,EAAOzF,MAAM1B,IACnC,OAAOC,GAAKtB,EAAEM,EAAI6kC,EAAa7jC,EAAE,GAAGkhB,eAAgBnhB,EAAIC,EAAE,GAAGE,SAAW,CAC5E,EAzIImoB,EAAK+f,GACLjD,EAAKkD,GACLvoC,EAAKwoC,GACLhd,EAAKid,GACLhc,EAAKic,GACLhD,EAAKiD,GACL/C,EAAKgD,GACL9C,EAAK+C,GACL7C,EAAK8C,GACLx7B,EA0JF,SAAyB1O,EAAGwI,EAAQnH,GAClC,OAAO2nC,EAAehpC,EAAGqkC,EAAa77B,EAAQnH,EAClD,EA3JI28B,EA6JF,SAAyBh+B,EAAGwI,EAAQnH,GAClC,OAAO2nC,EAAehpC,EAAGskC,EAAa97B,EAAQnH,EAClD,EA9JI4Q,EAAKk3B,GACL7B,EAAK8B,GACL5B,EAAK2C,GACL,IAAKC,IAWP,SAASjL,EAAUhC,EAAW0I,GAC5B,OAAO,SAAS7b,GACd,IAIIjoB,EACAy3B,EACAjX,EANA/Z,EAAS,GACTnH,GAAK,EACL8K,EAAI,EACJ7K,EAAI67B,EAAU37B,OAOlB,IAFMwoB,aAAgBzV,OAAOyV,EAAO,IAAIzV,MAAMyV,MAErC3oB,EAAIC,GACqB,KAA5B67B,EAAUvC,WAAWv5B,KACvBmH,EAAOqC,KAAKsyB,EAAUp6B,MAAMoJ,EAAG9K,IACgB,OAA1Cm4B,EAAM6Q,GAAKtoC,EAAIo7B,EAAUmN,SAASjpC,KAAcU,EAAIo7B,EAAUmN,SAASjpC,GACvEm4B,EAAY,MAANz3B,EAAY,IAAM,KACzBwgB,EAASsjB,EAAQ9jC,MAAIA,EAAIwgB,EAAOyH,EAAMwP,IAC1ChxB,EAAOqC,KAAK9I,GACZoK,EAAI9K,EAAI,GAKZ,OADAmH,EAAOqC,KAAKsyB,EAAUp6B,MAAMoJ,EAAG9K,IACxBmH,EAAOsC,KAAK,GACzB,CACA,CAEE,SAASy/B,EAASpN,EAAWqK,GAC3B,OAAO,SAASh/B,GACd,IAEIgiC,EAAMnJ,EAFNrhC,EAAIkkC,GAAQ,UAAM/S,EAAW,GAGjC,GAFQ6X,EAAehpC,EAAGm9B,EAAW30B,GAAU,GAAI,IAE1CA,EAAOhH,OAAQ,OAAO,KAG/B,GAAI,MAAOxB,EAAG,OAAO,IAAIuU,KAAKvU,EAAEymC,GAChC,GAAI,MAAOzmC,EAAG,OAAO,IAAIuU,KAAW,IAANvU,EAAEoB,GAAY,MAAOpB,EAAIA,EAAE+jC,EAAI,IAY7D,GATIyD,KAAO,MAAOxnC,KAAIA,EAAEwnC,EAAI,GAGxB,MAAOxnC,IAAGA,EAAE6jC,EAAI7jC,EAAE6jC,EAAI,GAAW,GAAN7jC,EAAEM,QAGrB6wB,IAARnxB,EAAEoM,IAAiBpM,EAAEoM,EAAI,MAAOpM,EAAIA,EAAE2pB,EAAI,GAG1C,MAAO3pB,EAAG,CACZ,GAAIA,EAAEgnC,EAAI,GAAKhnC,EAAEgnC,EAAI,GAAI,OAAO,KAC1B,MAAOhnC,IAAIA,EAAEknC,EAAI,GACnB,MAAOlnC,GAC2BqhC,GAApCmJ,EAAOxG,GAAQE,GAAQlkC,EAAEiS,EAAG,EAAG,KAAgB+wB,YAC/CwH,EAAOnJ,EAAM,GAAa,IAARA,EAAY6B,GAAU3N,KAAKiV,GAAQtH,GAAUsH,GAC/DA,EAAO5H,GAAOpC,OAAOgK,EAAkB,GAAXxqC,EAAEgnC,EAAI,IAClChnC,EAAEiS,EAAIu4B,EAAKnQ,iBACXr6B,EAAEoM,EAAIo+B,EAAKlQ,cACXt6B,EAAEA,EAAIwqC,EAAKjQ,cAAgBv6B,EAAEknC,EAAI,GAAK,IAEA7F,GAAtCmJ,EAAO5G,GAAUM,GAAQlkC,EAAEiS,EAAG,EAAG,KAAgB0vB,SACjD6I,EAAOnJ,EAAM,GAAa,IAARA,EAAYoJ,GAAWlV,KAAKiV,GAAQC,GAAWD,GACjEA,EAAOE,GAAQlK,OAAOgK,EAAkB,GAAXxqC,EAAEgnC,EAAI,IACnChnC,EAAEiS,EAAIu4B,EAAKlI,cACXtiC,EAAEoM,EAAIo+B,EAAKnI,WACXriC,EAAEA,EAAIwqC,EAAKhJ,WAAaxhC,EAAEknC,EAAI,GAAK,EAE7C,MAAiB,MAAOlnC,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAEknC,EAAI,MAAOlnC,EAAIA,EAAE6tB,EAAI,EAAI,MAAO7tB,EAAI,EAAI,GAC3DqhC,EAAM,MAAOrhC,EAAIgkC,GAAQE,GAAQlkC,EAAEiS,EAAG,EAAG,IAAI+wB,YAAcY,GAAUM,GAAQlkC,EAAEiS,EAAG,EAAG,IAAI0vB,SACzF3hC,EAAEoM,EAAI,EACNpM,EAAEA,EAAI,MAAOA,GAAKA,EAAEknC,EAAI,GAAK,EAAU,EAANlnC,EAAEonC,GAAS/F,EAAM,GAAK,EAAIrhC,EAAEknC,EAAU,EAANlnC,EAAE8mC,GAASzF,EAAM,GAAK,GAKzF,MAAI,MAAOrhC,GACTA,EAAE6jC,GAAK7jC,EAAEwnC,EAAI,IAAM,EACnBxnC,EAAE8jC,GAAK9jC,EAAEwnC,EAAI,IACNxD,GAAQhkC,IAIV4jC,GAAU5jC,EACvB,CACA,CAEE,SAASgpC,EAAehpC,EAAGm9B,EAAW30B,EAAQ2D,GAO5C,IANA,IAGIpK,EACAmpB,EAJA7pB,EAAI,EACJC,EAAI67B,EAAU37B,OACd4K,EAAI5D,EAAOhH,OAIRH,EAAIC,GAAG,CACZ,GAAI6K,GAAKC,EAAG,OAAQ,EAEpB,GAAU,MADVrK,EAAIo7B,EAAUvC,WAAWv5B,OAIvB,GAFAU,EAAIo7B,EAAUmN,OAAOjpC,OACrB6pB,EAAQ6d,EAAOhnC,KAAKsoC,GAAOlN,EAAUmN,OAAOjpC,KAAOU,MACnCoK,EAAI+e,EAAMlrB,EAAGwI,EAAQ2D,IAAM,EAAI,OAAQ,OAClD,GAAIpK,GAAKyG,EAAOoyB,WAAWzuB,KAChC,OAAQ,CAEhB,CAEI,OAAOA,CACX,CAuFE,OAzMA05B,EAAQn3B,EAAIywB,EAAUkF,EAAawB,GACnCA,EAAQ7H,EAAImB,EAAUmF,EAAauB,GACnCA,EAAQ9jC,EAAIo9B,EAAUgF,EAAiB0B,GACvC8B,EAAWj5B,EAAIywB,EAAUkF,EAAasD,GACtCA,EAAW3J,EAAImB,EAAUmF,EAAaqD,GACtCA,EAAW5lC,EAAIo9B,EAAUgF,EAAiBwD,GAoMnC,CACLplB,OAAQ,SAAS4a,GACf,IAAIzoB,EAAIyqB,EAAUhC,GAAa,GAAI0I,GAEnC,OADAnxB,EAAEjD,SAAW,WAAa,OAAO0rB,CAAU,EACpCzoB,CACb,EACIwW,MAAO,SAASiS,GACd,IAAI78B,EAAIiqC,EAASpN,GAAa,IAAI,GAElC,OADA78B,EAAEmR,SAAW,WAAa,OAAO0rB,CAAU,EACpC78B,CACb,EACIqqC,UAAW,SAASxN,GAClB,IAAIzoB,EAAIyqB,EAAUhC,GAAa,GAAIwK,GAEnC,OADAjzB,EAAEjD,SAAW,WAAa,OAAO0rB,CAAU,EACpCzoB,CACb,EACIk2B,SAAU,SAASzN,GACjB,IAAI78B,EAAIiqC,EAASpN,GAAa,IAAI,GAElC,OADA78B,EAAEmR,SAAW,WAAa,OAAO0rB,CAAU,EACpC78B,CACb,EAEA,CDnXAojC,GAAQ5S,MAAQ,SAASxM,GACvB,OAAQ0R,SAAS1R,EAAIxU,KAAKqX,MAAM7C,KAASA,EAAI,EAAYvQ,IAAS,SAASiW,GACzEA,EAAK2Z,eAAe7zB,KAAKqX,MAAM6C,EAAKqQ,iBAAmB/V,GAAKA,GAC5D0F,EAAKyZ,YAAY,EAAG,GACpBzZ,EAAK6Y,YAAY,EAAG,EAAG,EAAG,EAC9B,IAAK,SAAS7Y,EAAMsL,GAChBtL,EAAK2Z,eAAe3Z,EAAKqQ,iBAAmB/E,EAAOhR,EACvD,IANoD,IAOpD,EAGsBof,GAAQlO,MC0W9B,ICjYI2I,GDiYAkM,GAAO,CAAC,IAAK,GAAI74B,EAAK,IAAK,EAAK,KAChCq5B,GAAW,UACXC,GAAY,KACZC,GAAY,sBAEhB,SAASvR,GAAItyB,EAAOm2B,EAAM5D,GACxB,IAAI8D,EAAOr2B,EAAQ,EAAI,IAAM,GACzBsB,GAAU+0B,GAAQr2B,EAAQA,GAAS,GACnC1F,EAASgH,EAAOhH,OACpB,OAAO+7B,GAAQ/7B,EAASi4B,EAAQ,IAAIp5B,MAAMo5B,EAAQj4B,EAAS,GAAGsJ,KAAKuyB,GAAQ70B,EAASA,EACtF,CAEA,SAASwiC,GAAQ5pC,GACf,OAAOA,EAAE+5B,QAAQ4P,GAAW,OAC9B,CAEA,SAAS7F,GAASj8B,GAChB,OAAO,IAAIqP,OAAO,OAASrP,EAAMkG,IAAI67B,IAASlgC,KAAK,KAAO,IAAK,IACjE,CAEA,SAASs6B,GAAan8B,GAEpB,IADA,IAAIkG,EAAM,GAAI9N,GAAK,EAAGC,EAAI2H,EAAMzH,SACvBH,EAAIC,GAAG6N,EAAIlG,EAAM5H,GAAGmhB,eAAiBnhB,EAC9C,OAAO8N,CACT,CAEA,SAAS86B,GAAyBjqC,EAAGwI,EAAQnH,GAC3C,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEknC,GAAK5lC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASsoC,GAAyB9pC,EAAGwI,EAAQnH,GAC3C,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE6tB,GAAKvsB,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASuoC,GAAsB/pC,EAAGwI,EAAQnH,GACxC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE8mC,GAAKxlC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASwoC,GAAmBhqC,EAAGwI,EAAQnH,GACrC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEgnC,GAAK1lC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS0oC,GAAsBlqC,EAAGwI,EAAQnH,GACxC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEonC,GAAK9lC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS4nC,GAAcppC,EAAGwI,EAAQnH,GAChC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEiS,GAAK3Q,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS2nC,GAAUnpC,EAAGwI,EAAQnH,GAC5B,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEiS,GAAK3Q,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAOD,EAAIC,EAAE,GAAGE,SAAW,CAC5E,CAEA,SAAS2oC,GAAUnqC,EAAGwI,EAAQnH,GAC5B,IAAIC,EAAI,+BAA+BmhB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAChE,OAAOC,GAAKtB,EAAEwnC,EAAIlmC,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQD,EAAIC,EAAE,GAAGE,SAAW,CAC7E,CAEA,SAASkoC,GAAa1pC,EAAGwI,EAAQnH,GAC/B,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE2pB,EAAW,EAAProB,EAAE,GAAS,EAAGD,EAAIC,EAAE,GAAGE,SAAW,CACtD,CAEA,SAASgoC,GAAiBxpC,EAAGwI,EAAQnH,GACnC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEoM,EAAI9K,EAAE,GAAK,EAAGD,EAAIC,EAAE,GAAGE,SAAW,CAClD,CAEA,SAASynC,GAAgBjpC,EAAGwI,EAAQnH,GAClC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEA,GAAKsB,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS8nC,GAAetpC,EAAGwI,EAAQnH,GACjC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAEoM,EAAI,EAAGpM,EAAEA,GAAKsB,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CACxD,CAEA,SAAS6nC,GAAYrpC,EAAGwI,EAAQnH,GAC9B,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE6jC,GAAKviC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASioC,GAAazpC,EAAGwI,EAAQnH,GAC/B,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE8jC,GAAKxiC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASqoC,GAAa7pC,EAAGwI,EAAQnH,GAC/B,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE4sB,GAAKtrB,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS+nC,GAAkBvpC,EAAGwI,EAAQnH,GACpC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE+jC,GAAKziC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAAS0nC,GAAkBlpC,EAAGwI,EAAQnH,GACpC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC1C,OAAOC,GAAKtB,EAAE+jC,EAAIj0B,KAAKqX,MAAM7lB,EAAE,GAAK,KAAOD,EAAIC,EAAE,GAAGE,SAAW,CACjE,CAEA,SAAS4oC,GAAoBpqC,EAAGwI,EAAQnH,GACtC,IAAIC,EAAIwpC,GAAUroB,KAAKja,EAAOzF,MAAM1B,EAAGA,EAAI,IAC3C,OAAOC,EAAID,EAAIC,EAAE,GAAGE,QAAU,CAChC,CAEA,SAASmoC,GAAmB3pC,EAAGwI,EAAQnH,GACrC,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,IACnC,OAAOC,GAAKtB,EAAEymC,GAAKnlC,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASooC,GAA0B5pC,EAAGwI,EAAQnH,GAC5C,IAAIC,EAAIupC,GAASpoB,KAAKja,EAAOzF,MAAM1B,IACnC,OAAOC,GAAKtB,EAAEoB,GAAKE,EAAE,GAAID,EAAIC,EAAE,GAAGE,SAAW,CAC/C,CAEA,SAASskC,GAAiB9lC,EAAGM,GAC3B,OAAOk5B,GAAIx5B,EAAEwhC,UAAWlhC,EAAG,EAC7B,CAEA,SAAS6lC,GAAanmC,EAAGM,GACvB,OAAOk5B,GAAIx5B,EAAE48B,WAAYt8B,EAAG,EAC9B,CAEA,SAAS8lC,GAAapmC,EAAGM,GACvB,OAAOk5B,GAAIx5B,EAAE48B,WAAa,IAAM,GAAIt8B,EAAG,EACzC,CAEA,SAAS+lC,GAAgBrmC,EAAGM,GAC1B,OAAOk5B,GAAI,EAAIkR,GAAQ7U,MAAMoV,GAASjrC,GAAIA,GAAIM,EAAG,EACnD,CAEA,SAASgmC,GAAmBtmC,EAAGM,GAC7B,OAAOk5B,GAAIx5B,EAAEghC,kBAAmB1gC,EAAG,EACrC,CAEA,SAASylC,GAAmB/lC,EAAGM,GAC7B,OAAOgmC,GAAmBtmC,EAAGM,GAAK,KACpC,CAEA,SAASimC,GAAkBvmC,EAAGM,GAC5B,OAAOk5B,GAAIx5B,EAAEqiC,WAAa,EAAG/hC,EAAG,EAClC,CAEA,SAASkmC,GAAcxmC,EAAGM,GACxB,OAAOk5B,GAAIx5B,EAAEmhC,aAAc7gC,EAAG,EAChC,CAEA,SAASsmC,GAAc5mC,EAAGM,GACxB,OAAOk5B,GAAIx5B,EAAEkhC,aAAc5gC,EAAG,EAChC,CAEA,SAASumC,GAA0B7mC,GACjC,IAAIqhC,EAAMrhC,EAAE2hC,SACZ,OAAe,IAARN,EAAY,EAAIA,CACzB,CAEA,SAAS0F,GAAuB/mC,EAAGM,GACjC,OAAOk5B,GAAI0R,GAAWrV,MAAMoV,GAASjrC,GAAK,EAAGA,GAAIM,EAAG,EACtD,CAEA,SAAS6qC,GAAKnrC,GACZ,IAAIqhC,EAAMrhC,EAAE2hC,SACZ,OAAQN,GAAO,GAAa,IAARA,EAAa+J,GAAaprC,GAAKorC,GAAa7V,KAAKv1B,EACvE,CAEA,SAASinC,GAAoBjnC,EAAGM,GAE9B,OADAN,EAAImrC,GAAKnrC,GACFw5B,GAAI4R,GAAavV,MAAMoV,GAASjrC,GAAIA,IAA+B,IAAzBirC,GAASjrC,GAAG2hC,UAAiBrhC,EAAG,EACnF,CAEA,SAAS6mC,GAA0BnnC,GACjC,OAAOA,EAAE2hC,QACX,CAEA,SAAS0F,GAAuBrnC,EAAGM,GACjC,OAAOk5B,GAAIiR,GAAW5U,MAAMoV,GAASjrC,GAAK,EAAGA,GAAIM,EAAG,EACtD,CAEA,SAAS85B,GAAWp6B,EAAGM,GACrB,OAAOk5B,GAAIx5B,EAAEsiC,cAAgB,IAAKhiC,EAAG,EACvC,CAEA,SAAS0lC,GAAchmC,EAAGM,GAExB,OAAOk5B,IADPx5B,EAAImrC,GAAKnrC,IACIsiC,cAAgB,IAAKhiC,EAAG,EACvC,CAEA,SAASinC,GAAevnC,EAAGM,GACzB,OAAOk5B,GAAIx5B,EAAEsiC,cAAgB,IAAOhiC,EAAG,EACzC,CAEA,SAAS4lC,GAAkBlmC,EAAGM,GAC5B,IAAI+gC,EAAMrhC,EAAE2hC,SAEZ,OAAOnI,IADPx5B,EAAKqhC,GAAO,GAAa,IAARA,EAAa+J,GAAaprC,GAAKorC,GAAa7V,KAAKv1B,IACrDsiC,cAAgB,IAAOhiC,EAAG,EACzC,CAEA,SAASmnC,GAAWznC,GAClB,IAAIolB,EAAIplB,EAAEyhC,oBACV,OAAQrc,EAAI,EAAI,KAAOA,IAAM,EAAG,MAC1BoU,GAAIpU,EAAI,GAAK,EAAG,IAAK,GACrBoU,GAAIpU,EAAI,GAAI,IAAK,EACzB,CAEA,SAASwiB,GAAoB5nC,EAAGM,GAC9B,OAAOk5B,GAAIx5B,EAAEu6B,aAAcj6B,EAAG,EAChC,CAEA,SAAS0nC,GAAgBhoC,EAAGM,GAC1B,OAAOk5B,GAAIx5B,EAAE45B,cAAet5B,EAAG,EACjC,CAEA,SAAS2nC,GAAgBjoC,EAAGM,GAC1B,OAAOk5B,GAAIx5B,EAAE45B,cAAgB,IAAM,GAAIt5B,EAAG,EAC5C,CAEA,SAAS4nC,GAAmBloC,EAAGM,GAC7B,OAAOk5B,GAAI,EAAIoJ,GAAO/M,MAAM6N,GAAQ1jC,GAAIA,GAAIM,EAAG,EACjD,CAEA,SAAS6nC,GAAsBnoC,EAAGM,GAChC,OAAOk5B,GAAIx5B,EAAEk6B,qBAAsB55B,EAAG,EACxC,CAEA,SAASunC,GAAsB7nC,EAAGM,GAChC,OAAO6nC,GAAsBnoC,EAAGM,GAAK,KACvC,CAEA,SAAS8nC,GAAqBpoC,EAAGM,GAC/B,OAAOk5B,GAAIx5B,EAAEs6B,cAAgB,EAAGh6B,EAAG,EACrC,CAEA,SAAS+nC,GAAiBroC,EAAGM,GAC3B,OAAOk5B,GAAIx5B,EAAE85B,gBAAiBx5B,EAAG,EACnC,CAEA,SAASgoC,GAAiBtoC,EAAGM,GAC3B,OAAOk5B,GAAIx5B,EAAEg6B,gBAAiB15B,EAAG,EACnC,CAEA,SAASioC,GAA6BvoC,GACpC,IAAIqrC,EAAMrrC,EAAEgjC,YACZ,OAAe,IAARqI,EAAY,EAAIA,CACzB,CAEA,SAAS7C,GAA0BxoC,EAAGM,GACpC,OAAOk5B,GAAIyJ,GAAUpN,MAAM6N,GAAQ1jC,GAAK,EAAGA,GAAIM,EAAG,EACpD,CAEA,SAASgrC,GAAQtrC,GACf,IAAIqhC,EAAMrhC,EAAEgjC,YACZ,OAAQ3B,GAAO,GAAa,IAARA,EAAagC,GAAYrjC,GAAKqjC,GAAY9N,KAAKv1B,EACrE,CAEA,SAASyoC,GAAuBzoC,EAAGM,GAEjC,OADAN,EAAIsrC,GAAQtrC,GACLw5B,GAAI6J,GAAYxN,MAAM6N,GAAQ1jC,GAAIA,IAAiC,IAA3B0jC,GAAQ1jC,GAAGgjC,aAAoB1iC,EAAG,EACnF,CAEA,SAASooC,GAA6B1oC,GACpC,OAAOA,EAAEgjC,WACX,CAEA,SAAS2F,GAA0B3oC,EAAGM,GACpC,OAAOk5B,GAAI0J,GAAUrN,MAAM6N,GAAQ1jC,GAAK,EAAGA,GAAIM,EAAG,EACpD,CAEA,SAASsoC,GAAc5oC,EAAGM,GACxB,OAAOk5B,GAAIx5B,EAAEq6B,iBAAmB,IAAK/5B,EAAG,EAC1C,CAEA,SAASwnC,GAAiB9nC,EAAGM,GAE3B,OAAOk5B,IADPx5B,EAAIsrC,GAAQtrC,IACCq6B,iBAAmB,IAAK/5B,EAAG,EAC1C,CAEA,SAASuoC,GAAkB7oC,EAAGM,GAC5B,OAAOk5B,GAAIx5B,EAAEq6B,iBAAmB,IAAO/5B,EAAG,EAC5C,CAEA,SAASynC,GAAqB/nC,EAAGM,GAC/B,IAAI+gC,EAAMrhC,EAAEgjC,YAEZ,OAAOxJ,IADPx5B,EAAKqhC,GAAO,GAAa,IAARA,EAAagC,GAAYrjC,GAAKqjC,GAAY9N,KAAKv1B,IACnDq6B,iBAAmB,IAAO/5B,EAAG,EAC5C,CAEA,SAASwoC,KACP,MAAO,OACT,CAEA,SAASpB,KACP,MAAO,GACT,CAEA,SAAShB,GAAoB1mC,GAC3B,OAAQA,CACV,CAEA,SAAS2mC,GAA2B3mC,GAClC,OAAO8P,KAAKqX,OAAOnnB,EAAI,IACzB,CCvqBe,SAAS8/B,GAAcjoB,GAMpC,OALAsmB,GAAS4B,GAAaloB,GACtB0zB,aAAapN,GAAO5b,OACpBipB,YAAYrN,GAAOjT,MACnByf,YAAYxM,GAAOwM,UACnBC,WAAWzM,GAAOyM,SACXzM,EACT,CAvBWoN,oBACAC,mBACAb,mBACAC,kBAEX9K,GAAc,CACZsE,SAAU,SACVpa,KAAM,aACN9U,KAAM,eACNsvB,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SCdtF,IAAIyG,GAAe,wBAM1B,IAAIC,GAAYn3B,KAAKhU,UAAUorC,YAJ/B,SAAyB3hB,GACvB,OAAOA,EAAK2hB,aACd,EAIMhB,YAAUc,IAEhBG,GAAeF,GCJf,IAAIG,IAAY,IAAIt3B,KAAK,4BALzB,SAAwB/L,GACtB,IAAIwhB,EAAO,IAAIzV,KAAK/L,GACpB,OAAO+a,MAAMyG,GAAQ,KAAOA,CAC9B,EAIM4gB,WAASa,IAEfK,GAAeD,GCCf,IAAAE,GAAA,oBAAAA,I,CAoDA,OA/CIA,EAAKxrC,UAAAyrC,MAAL,SAAMx6B,GACF,OAAKjQ,UAAUC,QACfV,KAAKmrC,OAASz6B,EACP1Q,MAFuBA,KAAKmrC,M,EAKvCF,EAAAxrC,UAAA2rC,QAAA,WACI,OAAOprC,KAAKmrC,OAAOvjC,MAAM,KAAK4iB,K,EAGlCygB,EAAAxrC,UAAA4rC,UAAA,WACI,OAAOC,eAAatrC,KAAKorC,U,EAG7BH,EAAUxrC,UAAA8rC,WAAV,SAAW36B,GA9Bf,IAAqB46B,IA+BDxrC,KAAM,CAAC4Q,GA9Bb4nB,SAAQ,SAAAiT,GACdrsC,OAAOssC,oBAAoBD,GAAUjT,SAAQ,SAAA71B,GACzC,GAAa,gBAATA,EAAwB,CACxB,IAAMgpC,EAAavsC,OAAO+B,yBAAyBsqC,EAAU9oC,GAC7DvD,OAAOkC,eAAekqC,EAAa7oC,EAAMgpC,E,CAEjD,GACJ,G,EA0BAV,EAAKxrC,UAAAmsC,MAAL,SAAMC,GACF7rC,KAAKurC,WAAWM,EAAWpsC,WAEvBosC,EAAWpsC,UAAUC,eAAe,YACpCM,KAAKmrC,QAAU,IAAMU,EAAWpsC,UAAU0rC,OAAOvjC,MAAM,KAAK4iB,M,EAIpEygB,EAAAxrC,UAAAqsC,eAAA,SAAqCC,EAAaC,GAC9C,QAAuB3b,IAAnBrwB,KAAK+rC,GACL,MAAM,IAAIv5B,MAAM,YAAYtQ,OAAA6pC,EAASp7B,WAA4B,qBAErE,IAAMs7B,EAAajsC,KAAK+rC,GAMxB,OALA/rC,KAAK+rC,GAAY,WAGb,OAFAtrC,UAAUA,UAAUC,QAAUurC,EAC9BxrC,UAAUC,SACFsrC,EAAkBrrC,MAAMX,KAAMS,UAC1C,EACOT,I,EAGXirC,EAAMxrC,UAAAysC,OAAN,SAAO95B,GACH,OAAQ,GAAKA,GAAIioB,QAAQ,cAAc,SAAC/5B,GACpC,IAAMW,EAAIX,EAAEw5B,WAAW,GACvB,OAAU,KAAN74B,EAAiB,IACjBA,GAAK,IAAMA,GAAK,GAAW,IAAMX,EAAEohB,cAChC,MAAQzgB,EAAE0P,SAAS,GAC9B,G,EAEPs6B,CAAD,CApDA,GCPA,SAASkB,GAAUtmC,EAAG1G,GAClB,GAAI0G,IAAM1G,EAAG,OAAO,EAEpB,IAEIoB,EAFE6rC,EAAO7sC,MAAM4pB,QAAQtjB,GACrBwmC,EAAO9sC,MAAM4pB,QAAQhqB,GAG3B,GAAIitC,GAAQC,EAAM,CACd,GAAIxmC,EAAEnF,SAAWvB,EAAEuB,OAAQ,OAAO,EAClC,IAAKH,EAAI,EAAGA,EAAIsF,EAAEnF,OAAQH,IACtB,IAAK4rC,GAAUtmC,EAAEtF,GAAIpB,EAAEoB,IAAK,OAAO,EACvC,OAAO,C,CAGX,GAAI6rC,GAAQC,EAAM,OAAO,EAEzB,GAAIxmC,GAAK1G,GAAkB,iBAAN0G,GAA+B,iBAAN1G,EAAgB,CAC1D,IAAMy3B,EAAOx3B,OAAOw3B,KAAK/wB,GACzB,GAAI+wB,EAAKl2B,SAAWtB,OAAOw3B,KAAKz3B,GAAGuB,OAAQ,OAAO,EAElD,IAAM4rC,EAAQzmC,aAAa4N,KACrB84B,EAAQptC,aAAasU,KAC3B,GAAI64B,GAASC,EAAO,OAAO1mC,EAAE2mC,YAAcrtC,EAAEqtC,UAC7C,GAAIF,GAASC,EAAO,OAAO,EAE3B,IAAME,EAAU5mC,aAAa2R,OACvBk1B,EAAUvtC,aAAaqY,OAC7B,GAAIi1B,GAAWC,EAAS,OAAO7mC,EAAE8K,aAAexR,EAAEwR,WAClD,GAAI87B,GAAWC,EAAS,OAAO,EAE/B,IAAKnsC,EAAI,EAAGA,EAAIq2B,EAAKl2B,OAAQH,IACzB,IAAKnB,OAAOK,UAAUC,eAAeC,KAAKR,EAAGy3B,EAAKr2B,IAAK,OAAO,EAElE,IAAKA,EAAI,EAAGA,EAAIq2B,EAAKl2B,OAAQH,IACzB,IAAK4rC,GAAUtmC,EAAE+wB,EAAKr2B,IAAKpB,EAAEy3B,EAAKr2B,KAAM,OAAO,EAEnD,OAAO,C,CAGX,OAAO,CACX,CDoBA0qC,GAAMxrC,UAAU0rC,OAAS,eClBzB,IAAMwB,GAAU,UACVC,GAAa,aACbC,GAAU,IACVC,GAAe,UACfC,GAAa,aAEnB,SAASC,GAAOjsC,GACZ,OAAgC,IAAzBA,EAAI8B,QAAQ8pC,GACvB,CAyCA,IAAAM,GAUI,SAAY76B,EAAI86B,EAAc3hC,EAAM4hC,EAAa96B,EAAK+6B,GAUlD,OATAA,EAAMA,GAAO,GACbptC,KAAKoS,GAAKA,EACVpS,KAAKuL,KAAOA,EACZvL,KAAKqtC,iBAAmBH,EACxBltC,KAAKktC,aAAeE,EAAIE,UAA6B,OAAjBJ,OAAwB7c,EAAY6c,EACxEltC,KAAKmtC,YAAcA,EACnBntC,KAAKqS,IAAMA,EACXrS,KAAKotC,IAAMA,EAEH7hC,GACJ,IAAK,MACDvL,KAAKutC,cAAgB,SAAA78B,GAAK,OAAAA,CAAA,EAC1B,MACJ,IAAK,MACD1Q,KAAKutC,cAAgB,SAAU78B,GAC3B,GAAKvE,OAAeqhC,aAAc,CAC9B,IAAMC,EAAyB,mBAARp7B,EAAqBA,EAAI1S,KAAKK,MAAQqS,EACzDo7B,GAAWA,EAAQ/sC,QAAU+sC,EAAQ5qC,QAAQ6N,GAAK,GAClDg9B,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAeynB,KAAKC,UAAUqV,G,CAGrH,OAAO/8B,CACX,EACA,MACJ,IAAK,aACD1Q,KAAKutC,cAAgB,SAAU78B,GAC3B,GAAKvE,OAAeqhC,cAAgB98B,GAAW,QAANA,EAAa,CAClD,IACMxR,EAAI+D,SAASK,cAAc,OACjCpE,EAAE2H,MAAM2a,MAFO,MAGftiB,EAAE2H,MAAM2a,MAAQ9Q,EAHD,QAKXxR,EAAE2H,MAAM2a,OAAsC,KAAlBtiB,EAAE2H,MAAM2a,OACpCksB,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,E,CAGtG,OAAOmF,CACX,EACA,MACJ,IAAK,UACD1Q,KAAKutC,cAAgB,SAAU78B,GAC3B,QAAsB,iBAAf,GAA2B,CAAC,QAAS,MAAO,KAAK7N,QAAQ6N,EAAEgR,gBAAkB,IAAYisB,QAAQj9B,EAC5G,EACA,MACJ,IAAK,SACD1Q,KAAKutC,cAAgB,SAAU78B,GAC3B,OAAOgtB,OAAOhtB,EAClB,EACA,MACJ,IAAK,SACD1Q,KAAKutC,cAAgB,SAAU78B,GAC3B,OAAO5Q,OAAO4Q,EAClB,EACA,MACJ,IAAK,QACD1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,OAHMA,aAAanR,OACfmuC,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAE3FmF,CACX,EACA,MACJ,IAAK,SACD1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,OAHMA,aAAatR,QACfsuC,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAE3FmF,CACX,EACA,MACJ,IAAK,SACD1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,QAHKA,EAAEy6B,QAAUz6B,EAAEy6B,OAAOtoC,QAAQ,sBAAwB,IACtD6qC,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAE3FmF,CACX,EACA,MACJ,IAAK,cACD1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,OAHIA,EAAEk9B,MAAK,SAAUtX,GAAO,OAASA,EAAI6U,QAAU7U,EAAI6U,OAAOtoC,QAAQ,iBAAmB,CAAG,KACxF6qC,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAE3FmF,CACX,EACA,MACJ,IAAK,gBACD1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,OAHIA,EAAEk9B,MAAK,SAAUtX,GAAO,OAAQA,EAAIuX,mBAAoB,KACxDH,QAAQrY,MAAM,sBAAwBr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAE3FmF,CACX,EACA,MACJ,QACI1Q,KAAKutC,cAAgB,SAAU78B,GAI3B,OAHKvE,OAAeqhC,cAChBE,QAAQrY,MAAM,gCAAkCr1B,KAAKorC,UAAY,IAAMh5B,EAAK,OAAS1B,EAAI,aAAenF,GAErGmF,CACX,E,EAMhBo9B,GAQI,SAAY17B,EAAY27B,EAAOC,EAAQd,EAAcE,GACjDptC,KAAKoS,GAAKA,EACVpS,KAAKuL,KAAO,QACZvL,KAAK+tC,MAAQA,EACb/tC,KAAKguC,OAASA,EACdhuC,KAAKktC,aAAeA,EACpBltC,KAAKotC,IAAMA,GAAO,E,EAY1B,IAAIa,GAAY,EAChBC,GAAA,SAAAC,GAMI,SAAAD,IACI,IAAAE,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHJouC,EAAoBC,qBAAW,GAInCD,EAAKE,0BAELF,EAAKngB,IAAM,SAAWggB,GACtBG,EAAKG,aAAe,EACpBH,EAAKI,UAAY,GAEjBJ,EAAKP,qBAAoB,GAAMrV,SAAQ,SAAUiW,GAC7C,OAAQA,EAAKljC,MACT,IAAK,QACL,IAAK,cACL,IAAK,gBACDvL,KAAKyuC,EAAKr8B,GAAK,Y,GAGxBg8B,G,EAyfX,OA/gBiCxuC,EAAKsuC,EAAAC,GA2BlCD,EAAEzuC,UAAA2S,GAAF,SAAG1B,GACC,OAAKjQ,UAAUC,QACfV,KAAKiuB,IAAMvd,EACJ1Q,MAFuBA,KAAKiuB,G,EAMvCigB,EAAAzuC,UAAA6uC,wBAAA,SAAwBI,EAAwBC,GAC5C3uC,KAAKquC,qBAAuB,GAG5B,IAFA,IAAMO,EAAa,GACftvC,EAAYF,OAAOyvC,eAAe7uC,MAC/BV,GACCA,IAAc4uC,EAAYzuC,WAG9BmvC,EAAWE,QAAQxvC,GACnBA,EAAYF,OAAOyvC,eAAevvC,GAEtC,IAAkB,IAAAyvC,EAAA,EAAAC,EAAUJ,EAAVG,EAAAC,EAAAtuC,OAAAquC,IACd,IAAK,IAAMhuC,KADVzB,EAAS0vC,EAAAD,GAEFzvC,EAAUI,eAAeqB,IACrBisC,GAAOjsC,IACPf,KAAKquC,qBAAqBtkC,KAAK/J,KAAKe,G,EAOxDmtC,EAAqBzuC,UAAAwvC,sBAArB,SAAsBR,GAElB,IADA,IAAIS,EAAOlvC,KACJyuC,aAAgBX,IAEnBW,GADAS,EAAOA,EAAKT,EAAKV,QACLoB,kBAAkBV,EAAKT,QAEvC,OAAOS,C,EAGXP,EAAAzuC,UAAAouC,oBAAA,SAAoBa,EAAwBC,GAA5C,IAgBCP,EAAApuC,KAfG,YADgB,IAAA0uC,OAAsB,QAAE,IAAAC,OAAqB,GACtD3uC,KAAKquC,qBAAqB7gC,QAAO,SAAAihC,GAAQ,OAAAC,IAzPrCU,EAyPkEhB,EAzP7DrtC,EAyPmE0tC,EAAKr8B,KAxPrFg9B,EAAIxC,GAAa7rC,IAAQquC,EAAIxC,GAAaD,GAAU5rC,KAD/D,IAAmBquC,EAAKruC,CAyP2E,IAAEsN,KAAI,SAAAogC,GAC7F,GAAIE,GA5EhB,SAAqBF,GACjB,MAAqB,UAAdA,EAAKljC,IAChB,CA0EiC8jC,CAAYZ,GAAO,CAGpC,IAFA,IAAMa,EAAWb,EACbS,EAAOd,EACU,UAAdK,EAAKljC,MAERkjC,GADAS,EAAOA,EAAMT,EAAaV,QACdoB,kBAAmBV,EAAaT,QAE5CS,EAAKr8B,KAAOk9B,EAASl9B,MACrBq8B,EAAOtW,KAAK/N,MAAM+N,KAAKC,UAAUqW,KAC5Br8B,GAAKk9B,EAASl9B,G,CAG3B,OAAOq8B,CACX,G,EAGJP,EAAYzuC,UAAA8vC,aAAZ,SAAaC,GAAb,IAqBCpB,EAAApuC,KApBGwvC,EAAQxvC,MACRA,KAAK6tC,qBAAoB,GAAO,GAAMrV,SAAQ,SAAAiX,GAC1C,OAAQA,EAAYlkC,MAChB,IAAK,SACD,IAAMmkC,EAAsBtB,EAAKqB,EAAYr9B,MACzCs9B,GACAA,EAAOH,aAAaC,GAExB,MACJ,IAAK,cACL,IAAK,gBACD,IAAMG,EAAyBvB,EAAKqB,EAAYr9B,MAC5Cu9B,GACAA,EAAQnX,SAAQ,SAACkX,GACbA,EAAOH,aAAaC,EACxB,IAIhB,G,EAGJtB,EAAAzuC,UAAAmwC,eAAA,SAAeJ,EAAqDhiC,GAChE,IAAMqiC,EAAU7vC,KAChBA,KAAK6tC,qBAAoB,GAAO,GAAMrV,SAAQ,SAAUiX,IAC5B,mBAApB,GAAkCjiC,EAAOqiC,EAASJ,KAClDD,EAAQK,EAASJ,EAEzB,G,EAGJvB,EAAAzuC,UAAAqwC,UAAA,WAII,IAHA,IAAMC,EAAS,CACXC,QAAShwC,KAAKorC,WAE2B2D,EAAA,EAA1BkB,EAAAjwC,KAAK6tC,sBAALkB,EAA0BkB,EAAAvvC,OAA1BquC,IAA4B,CAA1C,IAAMmB,EAAID,EAAAlB,GACX,GAAgB,WAAZmB,EAAK99B,GAAT,CACA,IAAM+9B,EAAOnwC,KAAakwC,EAAK99B,MAC/B,OAAQ89B,EAAK3kC,MACT,IAAK,gBACIvL,KAAa,GAAAkC,OAAGguC,EAAK99B,GAAa,gBAEvC,IAAMg+B,EAAgBD,EAAI3iC,QAAO,SAAA0hC,GAAQ,OAAAA,EAAKmB,OAAL,IAAchiC,KAAI,SAAA6gC,GAAQ,OAAAA,EAAKY,WAAW,IAAEtiC,QAAO,SAAA0hC,GAAQ,YAAS7e,IAAT6e,CAAA,IAChGkB,IACAL,EAAOG,EAAK99B,IAAMg+B,GAEtB,MACJ,IAAK,SACDL,EAAOG,EAAK99B,IAAM+9B,aAAA,EAAAA,EAAKL,YACvB,MACJ,QACS9vC,KAAa,GAAAkC,OAAGguC,EAAK99B,GAAa,kBAC7B+9B,aAAe/wC,SACjB2wC,EAAOG,EAAK99B,IAAM+9B,IAjBR,C,CAsB9B,OAAOJ,C,EAGX7B,EAAWzuC,UAAA6wC,YAAX,SAAYC,GACR,IAAKA,EAAO,OAAOvwC,KACnB,I,eAAWkwC,GACP,IAAMC,EAAMI,EAAML,EAAK99B,IACvB,QAAYie,IAAR8f,EACA,OAAQD,EAAK3kC,MACT,IAAK,gBACG2kC,EAAK9C,KAAO8C,EAAK9C,IAAIoD,YACrBC,EAAK,GAAGvuC,OAAAguC,EAAK99B,KAAM+9B,EAAI9hC,KAAI,SAAA6gC,GAAQ,WAAIgB,EAAK9C,IAAIoD,YAAaF,YAAYpB,EAAK,KAElF,MACJ,IAAK,SACD,IAAMwB,EAAUD,EAAK,GAAGvuC,OAAAguC,EAAK99B,OACzBs+B,EAAQtF,YAAc+E,EAAIH,QAC1BU,EAAQJ,YAAYH,GAEpBzC,QAAQiD,KAAK,+CAEjB,MACJ,QACIF,EAAK,GAAAvuC,OAAGguC,EAAK99B,KAAM+9B,G,SAlBhBpB,EAAA,EAAAkB,EAAAjwC,KAAK6tC,sBAALkB,EAA0BkB,EAAAvvC,OAA1BquC,IAA0B,C,EAA9BkB,EAAAlB,GAqBd,CACD,OAAO/uC,I,EAGXkuC,EAAiBzuC,UAAA0vC,kBAAjB,SAAkB/8B,GACd,OAAOpS,KAAK2sC,GAAUv6B,E,EAG1B87B,EAAAzuC,UAAAmxC,kBAAA,WACI,OAAO5wC,KAAK6tC,sBAAsBD,MAAK,SAAUsC,GAC7C,OAAOlwC,KAAKkwC,EAAK99B,GAAK,c,GACvBpS,K,EAGPkuC,EAAAzuC,UAAAoxC,aAAA,SAAaC,EAAaC,GAGtB,IAAK,IAAMhwC,KAFX+vC,GAAcA,GAAc,IAAIziC,KAAI,SAAU+D,GAAM,OAAOu6B,GAAUv6B,CAAG,IACxE2+B,GAAiBA,GAAiB,IAAI1iC,KAAI,SAAU+D,GAAM,OAAOu6B,GAAUv6B,CAAG,IAC5DpS,KACd,GAAIgtC,GAAOjsC,GAAM,CACb,IAAMiwC,GAAiBF,EAAWpwC,QAAWowC,EAAWpwC,QAAUowC,EAAWjuC,QAAQ9B,IAAQ,EACvFkwC,EAAcF,EAAcluC,QAAQ9B,IAAQ,EAC9CiwC,IAAkBC,IAClBjxC,KAAK4sC,GAAa7rC,IAAO,E,GAMzCmtC,EAAAzuC,UAAAyxC,QAAA,SAAQ9+B,EAAY86B,EAAc3hC,EAAqB4hC,EAAsB96B,EAA0F+6B,GAyBnK,QAzBmK,IAAAA,MAAqB,IAsBhK,IAApBh7B,EAAGvP,QAAQ,OACXuP,EAAKA,EAAGnQ,MAAM,SAESouB,IAAvBrwB,KAAK2sC,GAAUv6B,KAAsBg7B,EAAI+D,SACzC,MAAM,IAAI3+B,MAAMJ,EAAK,0BAEzB,IAAMq8B,EAAOzuC,KAAK2sC,GAAUv6B,GAAM,IAAI66B,GAAK76B,EAAI86B,EAAc3hC,EAAM4hC,EAAa96B,EAAK+6B,GACjFqB,EAAKrB,IAAIgE,WACTpxC,KAAK4sC,GAAax6B,IAAM,GAE5BhT,OAAOkC,eAAetB,KAAM6sC,GAAUz6B,EAAI,CACtCC,IAAG,SAAC3B,QACU2f,IAAN3f,GAEa,KAANA,GAAY+9B,EAAKrB,IAAIE,SAD5B58B,EAAI,KAGS,OAANA,IACPA,EAAI+9B,EAAKlB,cAAc5tC,KAAKK,KAAM0Q,IAEtC1Q,KAAKqxC,UAAUj/B,EAAI1B,EAAG1Q,KAAK8sC,GAAe16B,IAChC,OAAN1B,SACO1Q,KAAK8sC,GAAe16B,GAE3BpS,KAAK8sC,GAAe16B,GAAM1B,C,EAIlCyB,IAAG,WACC,OAAInS,KAAKoS,EAAK,eAAuBpS,KAAKoS,EAAK,mBACZie,IAA5BrwB,KAAK8sC,GAAe16B,GAAoBpS,KAAK8sC,GAAe16B,GAAMpS,KAAKoS,EAAK,a,EAEvFk/B,cAAc,IAEdtxC,KAAKoS,KAGDpS,KAAKoS,GADI,kBAAT7G,EACW,SAAUmF,GAAV,IAUV09B,EAAApuC,KATG,OAAKS,UAAUC,QACfV,KAAK6sC,GAAUz6B,GAAM1B,EAAErC,KAAI,SAAA6gC,GAKvB,OAJKT,EAAKrB,IAAImE,gBAAiB9C,EAAKrB,IAAIoD,YAAgBtB,aAAgBT,EAAKrB,IAAIoD,aAC7EtB,GAAO,IAAIT,EAAKrB,IAAIoD,YAAaF,YAAYpB,IAEjDA,EAAKsC,MAAMpD,GACJc,CACX,IACOlvC,MARuBA,KAAK6sC,GAAUz6B,EASjD,EAEW,SAAU1B,GACjB,OAAKjQ,UAAUC,QACfV,KAAK6sC,GAAUz6B,GAAM1B,EACd1Q,MAFuBA,KAAK6sC,GAAUz6B,EAGjD,GAGRpS,KAAKoS,EAAK,aAAe,WACrB,SAAOg7B,IAAOA,EAAIqE,YAAYrE,EAAIqE,QAAQzxC,KAC9C,EACAA,KAAKoS,EAAK,WAAa,WACnB,SAAOg7B,IAAOA,EAAIsE,WAAWtE,EAAIsE,OAAO1xC,KAC5C,EACAA,KAAKoS,EAAK,UAAY,WAClB,OAAOg7B,IAAOA,EAAIuE,WAAW3xC,KAAKoS,EAAK,gBAAmBg7B,EAAIE,WAAattC,KAAKoS,EAAK,cAAkBg7B,EAAIoD,aAAexwC,KAAKqwC,WAAcjD,EAAIuE,SAAS3xC,MAC9J,EACAA,KAAKoS,EAAK,aAAe,WACrB,MAAa,kBAAT7G,EACOvL,KAAK8sC,GAAe16B,IAAQpS,KAAK8sC,GAAe16B,GAAIw7B,MAAK,SAAAsB,GAAQ,OAAAA,EAAKmB,OAAO,SAErDhgB,IAA5BrwB,KAAK8sC,GAAe16B,EAC/B,EACApS,KAAKoS,EAAK,WAAa,WACnB,OAA+B,MAA3BpS,KAAK8sC,GAAe16B,KAA6C,KAA5BpS,KAAK8sC,GAAe16B,KAA+B,IAAjBg7B,EAAIE,WAChD,MAA3BttC,KAAKoS,EAAK,gBAAuD,KAA5BpS,KAAKoS,EAAK,gBAAyC,IAAjBg7B,EAAIE,SAEnF,EACAttC,KAAKoS,EAAK,YAAc,SAAU1B,GAC9B,OAAKjQ,UAAUC,QACL,KAANgQ,IACAA,EAAI,MAEE,OAANA,SACO1Q,KAAK+sC,GAAa36B,GAEzBpS,KAAK+sC,GAAa36B,GAAM1B,EAErB1Q,WATiDqwB,IAA1BrwB,KAAK+sC,GAAa36B,GAAoBpS,KAAK+sC,GAAa36B,GAAMq8B,EAAKvB,YAUrG,EACAltC,KAAKoS,EAAK,UAAY,WAClB,OAAQ7G,GACJ,IAAK,SACGvL,KAAK8sC,GAAe16B,IACpBpS,KAAK8sC,GAAe16B,GAAItR,OAAO,MAEnC,MACJ,IAAK,cACGd,KAAK8sC,GAAe16B,IACpBpS,KAAK8sC,GAAe16B,GAAIomB,SAAQ,SAAUkX,GACtCA,EAAO5uC,OAAO,KAClB,IAKZ,OAAQyK,GACJ,IAAK,QACL,IAAK,cACL,IAAK,gBACDvL,KAAK+sC,GAAa36B,GAAMpS,KAAKoS,EAAK,cAAc/D,KAAI,SAAUioB,GAAO,OAAOA,CAAI,IAIxF,cADOt2B,KAAK8sC,GAAe16B,GACpBpS,IACX,EACAA,KAAKoS,EAAK,YAAc,WACpB,MAAmB,mBAARC,GACQo8B,EAAKrB,IAAIE,SAAW,CAAC,MAAQ,IAC9BprC,OAAOmQ,EAAI1R,MAAMX,KAAMS,YAElC4R,CACX,C,EAGJ67B,EAAAzuC,UAAAmyC,cAAA,SAAchvC,EAAQivC,EAAYz/B,GAC9B,IAAK,IAAMrR,KAAO8wC,EAAWpyC,UACzB,GAA8B,IAA1BsB,EAAI8B,QAAQ,UAAiB,CAC7B,IAAM4sC,EAAcoC,EAAWpyC,UAAUsB,GACzCf,KAAK8xC,aAAalvC,EAASkqC,GAAe2C,EAAYr9B,GAAIA,EAAIq9B,EAAYzB,QAAUyB,EAAYr9B,G,GAK5G87B,EAAYzuC,UAAAqyC,aAAZ,SAAa1/B,EAAY27B,EAAOC,EAASd,GAErC,GADAc,EAASA,GAAU57B,OACQie,IAAvBrwB,KAAK2sC,GAAUv6B,GACf,MAAM,IAAII,MAAMJ,EAAK,0BAEzBpS,KAAK2sC,GAAUv6B,GAAM,IAAI07B,GAAU17B,EAAI27B,EAAOC,EAAQd,GACtDltC,KAAKoS,GAAM,SAAU1B,GACjB,OAAKjQ,UAAUC,aACM2vB,IAAjB6c,GAA8Bx8B,IAAMw8B,EACpCltC,KAAK+tC,GAAOC,EAAS,YAErBhuC,KAAK+tC,GAAOC,GAAQt9B,GAEjB1Q,WANwCqwB,IAAjB6c,GAA8BltC,KAAKoS,EAAK,eAAiBpS,KAAK+tC,GAAOC,KAAYd,CAOnH,EACAltC,KAAKoS,EAAK,aAAe,WACrB,OAAOpS,KAAK+tC,GAAOC,EAAS,cAChC,EACAhuC,KAAKoS,EAAK,aAAe,WACrB,OAAOpS,KAAK+tC,GAAOC,EAAS,sBAAoC3d,IAAjB6c,GAA8BltC,KAAK+tC,GAAOC,OAAcd,EAC3G,EACAltC,KAAKoS,EAAK,WAAa,WACnB,OAAOpS,KAAK+tC,GAAOC,EAAS,YAChC,EACAhuC,KAAKoS,EAAK,YAAc,SAAU1B,GAC9B,OAAKjQ,UAAUC,QACfV,KAAK+tC,GAAOC,EAAS,YAAYt9B,GAC1B1Q,MAFuBA,KAAK+tC,GAAOC,EAAS,aAGvD,EACAhuC,KAAKoS,EAAK,UAAY,WAElB,OADApS,KAAK+tC,GAAOC,EAAS,YACdhuC,IACX,EACAA,KAAKoS,EAAK,YAAc,WACpB,OAAOpS,KAAK+tC,GAAOC,EAAS,aAChC,C,EAGJE,EAAAzuC,UAAAsyC,gBAAA,SAAgBC,EAAgBC,GAC5B,IAAMxD,EAAOzuC,KAAKmvC,kBAAkB6C,GACpC,GACS,UADDvD,EAAKljC,KAEL,OAAIvL,KAAKyuC,EAAKV,OACH/tC,KAAKyuC,EAAKV,OAAOgE,gBAAgBtD,EAAKT,QAAQ,SAAUkE,EAAMC,EAAQC,GACzEH,EAAKxD,EAAKr8B,GAAI+/B,EAAQC,EAC1B,IAEO,CACH7pC,OAAQ,cAIhB,IAAM8pC,EAAMryC,KAAKuuC,eACjBvuC,KAAKwuC,UAAU6D,GAAO,CAAEC,WAAYN,EAAQtiC,SAAUuiC,GACtD,IAAMM,EAAUvyC,KAChB,MAAO,CACHuI,OAAQ,kBACGgqC,EAAQ/D,UAAU6D,E,IAM7CnE,EAAOzuC,UAAA+yC,QAAP,SAAQP,GAAR,IAQC7D,EAAApuC,KAPSyyC,EAAMzyC,KAAKuuC,eAEjB,OADAvuC,KAAKwuC,UAAUiE,GAAO,CAAEH,gBAAYjiB,EAAW3gB,SAAUuiC,GAClD,CACH1pC,OAAQ,kBACG6lC,EAAKI,UAAUiE,E,IAKlCvE,EAASzuC,UAAA4xC,UAAT,SAAUtwC,EAAKoxC,EAAQC,EAAQxhC,GAE3B,GADAA,EAASA,GAAU5Q,MACdmsC,GAAUgG,EAAQC,GACnB,IAAK,IAAMK,KAAOzyC,KAAKwuC,UAAW,CAC9B,IAAMgE,EAAUxyC,KAAKwuC,UAAUiE,QACHpiB,IAAvBmiB,EAAQF,YAA4BE,EAAQF,aAAevxC,IAAQyxC,EAAQ9iC,UAE5EmE,YAAW,SAAU6+B,GACjBA,EAAShjC,SAAS3O,EAAKoxC,EAAQC,EAAQxhC,EAC3C,GAAG,EAAG4hC,E,GAMtBtE,EAAUzuC,UAAAkzC,WAAV,SAAWC,GACP,GAAKA,EAAL,CAGA,IAAMC,EAAS7yC,KAAKmrC,OAAOvjC,MAAM,KACjC,IAAK,IAAMrH,KAAKsyC,EACZ,GAAID,EAAMC,EAAOtyC,IACb,IAAK,IAAMuyC,KAAaF,EAAMC,EAAOtyC,IACjC,GAAkB,iBAAduyC,GAAgCF,EAAMC,EAAOtyC,IAAIuyC,aAAsB1zC,OACvE,IAAK,IAAM2zC,KAASH,EAAMC,EAAOtyC,IAAIuyC,GAC7B9yC,KAAKmvC,kBAAkB2D,GAAW1F,MAClCptC,KAAKmvC,kBAAkB2D,GAAW1F,IAAI4F,KAAOJ,EAAMC,EAAOtyC,IAAIuyC,GAAWC,SAKjF/yC,KAAKmvC,kBAAkB2D,KACvB9yC,KAAKmvC,kBAAkB2D,GAAW5F,aAAe0F,EAAMC,EAAOtyC,IAAIuyC,G,GAOtF5E,EAAAzuC,UAAAwzC,YAAA,SAAYC,EAAoBC,GAAhC,IASC/E,EAAApuC,KADG,YAR4B,IAAAmzC,MAAqB,IACjDnzC,KAAK6tC,qBAAoB,GAAOrgC,QAAO,SAAAihC,GAAQ,OAAA0E,EAAOtwC,QAAQ4rC,EAAKr8B,IAAM,CAA1B,IAA6BomB,SAAQ,SAAAiW,GAC5EL,EAAKK,EAAKr8B,GAAK,aACf8gC,EAAMzE,EAAKr8B,IAAIg8B,EAAKK,EAAKr8B,OAEzB8gC,EAAMzE,EAAKr8B,GAAK,WAExB,IACOpS,I,EAGHkuC,EAAQzuC,UAAA2zC,SAAhB,SAAiB3E,GACb,GAAIzuC,KAAKyuC,EAAKr8B,GAAK,aAAc,CAC7B,IAAIhM,EAAQpG,KAAKyuC,EAAKr8B,MAEtB,OADkBpS,KAAKivC,sBAAsBR,GAC3BljC,MACd,IAAK,SACDnF,EAAQA,EAAMitC,UACd,MACJ,IAAK,cACL,IAAK,gBACDjtC,EAAQitC,UAAQjtC,EAAMiI,KAAI,SAAA5H,GAAK,OAAAA,EAAE4sC,SAAS,KAIlD,OAAOjtC,C,CAEX,MAAO,E,EAGX8nC,EAAAzuC,UAAA6zC,aAAA,SAAaC,EAA2BC,GAAxC,IAMCpF,EAAApuC,UANY,IAAAuzC,MAAyB,SAAE,IAAAC,MAAS,IAC7C,IAAMjD,EAAgCiD,EAItC,OAHAxzC,KAAK6tC,qBAAoB,GAAOrgC,QAAO,SAAAihC,GAAQ,OAAsB,IAAtB8E,EAAW7yC,QAAgB6yC,EAAW1wC,QAAQ4rC,EAAKr8B,KAAO,CAAC,IAAEomB,SAAQ,SAAAiW,GAChH8B,EAAM9B,EAAKr8B,IAAMg8B,EAAKgF,SAAS3E,EACnC,IACO4E,UAAQ9C,E,EAGnBrC,EAAAzuC,UAAA4zC,QAAA,SAAQF,EAAuBK,GAA/B,IAOCpF,EAAApuC,UAPO,IAAAmzC,MAAqB,SAAE,IAAAK,MAAS,IACpCL,EAAaxxC,IAAA,GAAAwxC,GAAQ,gBAAS,GAC9B,IAAM5C,EAAgCiD,EAItC,OAHAxzC,KAAK6tC,qBAAoB,GAAOrgC,QAAO,SAAAihC,GAAQ,OAAA0E,EAAOtwC,QAAQ4rC,EAAKr8B,IAAM,CAA1B,IAA6BomB,SAAQ,SAAAiW,GAChF8B,EAAM9B,EAAKr8B,IAAMg8B,EAAKgF,SAAS3E,EACnC,IACO4E,UAAQ9C,E,EAInBrC,EAAAzuC,UAAAyL,GAAA,SAAGuoC,EAASxB,EAAMyB,QAAA,IAAAA,OAAuB,GACrC,IAAM7D,EAAU7vC,KAehB,OAdAA,KAAK8rC,eAAe2H,GAAS,W,IAAU,IAAc1nC,EAAA,GAAAgjC,EAAA,EAAdA,EAActuC,UAAAC,OAAdquC,IAAAhjC,EAAcgjC,GAAAtuC,UAAAsuC,GACjD,IACIgB,EADE4D,EAAW5nC,EAAKA,EAAKrL,OAAS,GAEhCgzC,GACIE,SAAWA,QAAQF,iBACnBE,QAAQF,kBAEZ,GAAG3pC,KAAKpK,KAAKoM,EAAM4nC,IAEnB5D,EAAS4D,EAAShzC,MAAMkvC,EAAS9jC,GAErC,IAAM8nC,EAAU5B,EAAKtxC,MAAMkvC,EAAS9jC,GACpC,YAAmBskB,IAAZwjB,EAAwBA,EAAU9D,CAC7C,IACO/vC,I,EA1UJkuC,EAAW4F,YAAW,GA4UhC5F,C,CA/gBD,CAAiCjD,IAkhB3B,SAAUiG,GAAQhE,EAAc3hC,EAAqB4hC,EAAsB96B,EAA0F+6B,GACvK,YADuK,IAAAA,MAAqB,IACrL,SAAUtsC,EAAaC,GAC1B,IAAKA,EAAK,MAAM,IAAIyR,MAAM,OACtB46B,EAAI2G,OACJjzC,EAAO+vC,eAEX/vC,EAAOowC,QAAQnwC,EAAKmsC,EAAc3hC,EAAM4hC,EAAa96B,EAAK+6B,EAC9D,CACJ,CAVAc,GAAYzuC,UAAU0rC,QAAU,sBC/sBhC,IAAA6I,GAAA,WAII,SAAAA,EAAYtE,GAER1vC,KAAKi0C,SAAWvE,C,CASxB,OANIsE,EAAAv0C,UAAAy0C,UAAA,WAII,YAHyB7jB,IAArBrwB,KAAKm0C,cACLn0C,KAAKm0C,YAAcn0C,KAAKi0C,SAASC,WAAal0C,KAAKi0C,SAASC,aAAe,IAExEl0C,KAAKm0C,W,EAEnBH,CAAD,CAfA,GAsBAI,GAAA,SAAAjG,GAEI,SAAAiG,EAAY1E,GACR,IAAAtB,EAAAD,EAAKxuC,KAAAK,KAAC0vC,IAAQ1vC,K,OAwDlBouC,EAAAiG,MAAQ,SAAUnF,EAAsBoF,GAChCA,EAAIC,QACAv0C,KAAKw0C,MAAMtF,EAAKjhB,KAChBjuB,KAAKuI,OAAO2mC,GAEZlvC,KAAKyO,OAAOygC,IAGhBlvC,KAAK23B,QACL33B,KAAKyO,OAAOygC,GAEpB,EAlEId,EAAKoG,MAAQ,G,EAmErB,OAvEkC50C,EAAaw0C,EAAAjG,GAO3CiG,EAAA30C,UAAAk4B,MAAA,WACI,IAAK,IAAM52B,KAAOf,KAAKw0C,MACnBx0C,KAAKw0C,MAAMzzC,GAAK0zC,UACX1kC,QAAQ,YAAY,GACpBH,KAAK,SAAU,MAGxB5P,KAAKw0C,MAAQ,E,EAGjBJ,EAAA30C,UAAAi1C,QAAA,WACI,IAAK,IAAMxC,KAAQlyC,KAAKw0C,MACpB,OAAO,EAEX,OAAO,C,EAGXJ,EAAM30C,UAAAgP,OAAN,SAAOygC,GACHlvC,KAAKw0C,MAAMtF,EAAKjhB,KAAOihB,EACvBA,EAAKuF,UACA1kC,QAAQ,YAAY,GACpBH,KAAK,SAAU5P,KAAKk0C,YAAc,QAAAhyC,OAAQlC,KAAKk0C,YAAW,KAAM,K,EAIzEE,EAAM30C,UAAA8I,OAAN,SAAO2mC,GACHlvC,KAAKw0C,MAAMtF,EAAKjhB,KAAKwmB,UAChB1kC,QAAQ,YAAY,GACpBH,KAAK,SAAU,aAEb5P,KAAKw0C,MAAMtF,EAAKjhB,I,EAG3BmmB,EAAU30C,UAAAk1C,WAAV,SAAWzF,GACP,YAAgC7e,IAAzBrwB,KAAKw0C,MAAMtF,EAAKjhB,I,EAG3BmmB,EAAA30C,UAAA0S,IAAA,WACI,IAAM49B,EAAS,GACf,IAAK,IAAMhvC,KAAOf,KAAKw0C,MACnBzE,EAAOhmC,KAAK/J,KAAKw0C,MAAMzzC,IAE3B,OAAOgvC,C,EAGXqE,EAAG30C,UAAA4S,IAAH,SAAIuiC,GACA50C,KAAK23B,QACLid,EAAUpc,SAAQ,SAAU0W,GACxBlvC,KAAKyO,OAAOygC,E,GACblvC,K,EAeVo0C,CAAD,CAvEA,CAAkCJ,IAyElCa,GAAA,SAAA1G,GACI,SAAA0G,EAAYnF,EAAQoF,EAAeC,GAC/B,IAAA3G,EAAAD,EAAKxuC,KAAAK,KAAC0vC,IAAQ1vC,K,OACdouC,EAAK0G,cAAcA,GACnB1G,EAAK2G,eAAeA,G,EAgH5B,OApHqCn1C,EAAai1C,EAAA1G,GAQ9C0G,EAAap1C,UAAAq1C,cAAb,SAAcpkC,GACV,OAAKjQ,UAAUC,QACfV,KAAKg1C,eAAiBtkC,EACf1Q,MAFuBA,KAAKg1C,c,EAMvCH,EAAcp1C,UAAAs1C,eAAd,SAAerkC,GACX,OAAKjQ,UAAUC,QACfV,KAAKi1C,gBAAkBvkC,EAChB1Q,MAFuBA,KAAKi1C,e,EAMvCJ,EAAKp1C,UAAAyF,MAAL,SAAMgwC,GACF,IAAMrF,EAAU7vC,KAChBk1C,EACKvnC,MAAK,SAAUzO,GACZ,IAAMi2C,IAAoBtF,EAAQuF,mBAAoBvF,EAAQuF,kBAAkBl2C,EAAEkG,MAClFiwC,GAASr1C,MACJ+P,QAAQ,WAAYolC,GACpBplC,QAAQ,cAAeolC,GACvBvlC,KAAK,SAAUigC,EAAQqE,aAAeiB,EAAW,QAAQjzC,OAAA2tC,EAAQqE,YAAW,KAAM,KAE3F,IACChpC,GAAG,yBAAyB,WACzB2kC,EAAQwE,MAAMr0C,KAClB,IACCkL,GAAG,6BAA6B,WAC7B2kC,EAAQyF,UAAUt1C,KACtB,IACCkL,GAAG,4BAA4B,WAC5B2kC,EAAQ0F,SAASv1C,KACrB,G,EAGR60C,EAAKp1C,UAAA40C,MAAL,SAAMmB,GACGx1C,KAAKi1C,iBACNO,EAAQnsC,WAAW1E,YAAY6wC,GAEnC,IAAMf,EAAUY,GAASG,GACnBC,EAAchB,EAAQ1kC,QAAQ,YAapC,OAZA/P,KAAKg1C,eAAeznC,UAAU,aACzBwC,QAAQ,YAAY,GACpBA,QAAQ,cAAc,GACtBH,KAAK,SAAU,MAEf6lC,GACDhB,EACK1kC,QAAQ,YAAY,GACpBA,QAAQ,cAAc,GACtBH,KAAK,SAAU5P,KAAKk0C,YAAc,QAAAhyC,OAAQlC,KAAKk0C,YAAW,KAAM,OAGjEuB,C,EAEZZ,EAASp1C,UAAA61C,UAAT,SAAUE,GACNH,GAASG,GACJzlC,QAAQ,QAAQ,E,EAGzB8kC,EAAQp1C,UAAA81C,SAAR,SAASC,GACLH,GAASG,GACJzlC,QAAQ,OAAQ,K,EAGzB8kC,EAAQp1C,UAAA01C,SAAR,SAASK,GACL,OAAOH,GAASG,GAASzlC,QAAQ,W,EAErC8kC,EAASp1C,UAAAyN,UAAT,SAAUwD,GACN,OAAKjQ,UAAUC,QAGfV,KAAK01C,YAAW,SAAAx2C,GAAK,OAAAwR,EAAE7N,QAAQs1B,KAAKC,UAAUl5B,KAAO,CAAC,IAC/Cc,MAHIA,KAAK01C,aAAarnC,KAAI,SAAAioB,GAAO,OAAA6B,KAAKC,UAAU9B,EAAf,G,EAO5Cue,EAAUp1C,UAAAi2C,WAAV,SAAWf,GACP,IAAKl0C,UAAUC,OAAQ,CACnB,IAAMi1C,EAAgB,GAMtB,OALI31C,KAAKg1C,gBACLh1C,KAAKg1C,eAAeznC,UAAU,aACzBI,MAAK,SAAAzO,GAAK,OAAAy2C,EAAO5rC,KAAK7K,EAAZ,IAGZy2C,C,CAEX,GAAI31C,KAAKg1C,eAAgB,CACrB,IAAMzC,EAAUvyC,KAChBA,KAAKg1C,eAAeznC,UAAU,yBACzBI,MAAK,SAAUzO,GACZ,IAAMi2C,EAAWR,EAAWz1C,GAC5Bm2C,GAASr1C,MACJ+P,QAAQ,WAAYolC,GACpBplC,QAAQ,cAAeolC,GACvBvlC,KAAK,SAAWulC,GAAY5C,EAAQ2B,YAAe,QAAAhyC,OAAQqwC,EAAQ2B,YAAc,KAAG,MAErFiB,IAAa5C,EAAQ0C,iBACrBW,GAAU51C,KAElB,G,MAGJA,KAAKo1C,kBAAoBT,EAE7B,OAAO30C,I,EAEd60C,CAAD,CApHA,CAAqCb,IAsH/B,SAAU6B,GAAqBd,GACjC/0C,KAAK81C,WAAa,IAAIjB,GAAgB70C,KAAM,KAAM+0C,EACtD,CAEAc,GAAqBp2C,UAAUs2C,eAAiB,WAC5C,MAAO,CACH7oC,UAAWlN,KAAK81C,WAAW5oC,YAC3B9H,KAAMpF,KAAKoF,OAEnB,EAEAywC,GAAqBp2C,UAAUu2C,iBAAmB,SAAU5/B,GAOxD,OANIA,IACApW,KAAK81C,WAAW5oC,UAAUkJ,EAAMlJ,WAC5BkJ,EAAMhR,MACNpF,KAAKoF,KAAKgR,EAAMhR,OAGjBpF,IACX,EAEA,IAAMi2C,GAAY9pC,OAAOoH,YACnBC,GAAMyiC,KAASA,GAAKziC,KAAOyiC,GAAKC,QAAUD,GAAKE,OAASF,GAAKG,MAAQH,GAAKI,WAE1EC,GAAY,CAAE,WAAY,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,YAAa,IAAK,SAAU,IAAK,kBAAmB,IAAK,mBAAoB,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,YAAa,IAAK,eAAgB,IAAK,yCAA0C,IAAK,YAAa,IAAK,aAAc,IAAK,eAAgB,IAAK,uBAAwB,IAAK,uBAAwB,IAAK,wBAAyB,IAAK,qBAAsB,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,cAAe,IAAK,WAAY,IAAK,aAAc,IAAK,gBAAiB,IAAK,uBAAwB,IAAK,uBAAwB,IAAK,yBAA0B,IAAK,yBAA0B,IAAK,0BAA2B,IAAK,uBAAwB,IAAK,wBAAyB,IAAK,qBAAsB,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,cAAe,IAAK,YAAa,IAAK,gBAAiB,IAAK,cAAe,IAAK,cAAe,IAAK,sBAAuB,IAAK,iCAAkC,IAAK,cAAe,IAAK,QAAS,IAAK,uBAAwB,IAAK,gBAAiB,IAAK,cAAe,IAAK,mBAAoB,IAAK,SAAU,IAAK,cAAe,IAAK,UAAW,IAAK,eAAgB,IAAK,iBAAkB,IAAK,aAAc,IAAK,UAAW,IAAK,UAAW,IAAK,aAAc,IAAK,aAAc,IAAK,eAAgB,IAAK,eAAgB,IAAK,eAAgB,IAAK,eAAgB,IAAK,eAAgB,IAAK,mBAAoB,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,qBAAsB,IAAK,4BAA6B,IAAK,SAAU,IAAK,UAAW,IAAK,aAAc,IAAK,oBAAqB,IAAK,UAAW,IAAK,YAAa,IAAK,gBAAiB,IAAK,kBAAmB,IAAK,aAAc,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,eAAgB,IAAK,sBAAuB,IAAK,aAAc,IAAK,eAAgB,IAAK,WAAY,IAAK,eAAgB,IAAK,iBAAkB,IAAK,UAAW,IAAK,UAAW,IAAK,UAAW,IAAK,UAAW,IAAK,cAAe,IAAK,gBAAiB,IAAK,aAAc,IAAK,eAAgB,IAAK,SAAU,IAAK,SAAU,IAAK,cAAe,IAAK,gBAAiB,IAAK,cAAe,IAAK,cAAe,IAAK,SAAU,IAAK,gBAAiB,IAAK,SAAU,IAAK,gBAAiB,IAAK,cAAe,IAAK,sBAAuB,IAAK,sBAAuB,IAAK,gBAAiB,IAAK,qBAAsB,IAAK,sBAAuB,IAAK,YAAa,IAAK,kBAAmB,IAAK,SAAU,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,yBAA0B,IAAK,yBAA0B,IAAK,0BAA2B,IAAK,uBAAwB,IAAK,cAAe,IAAK,qBAAsB,IAAK,eAAgB,IAAK,QAAS,IAAK,aAAc,IAAK,oBAAqB,IAAK,iBAAkB,IAAK,YAAa,IAAK,mBAAoB,IAAK,eAAgB,IAAK,eAAgB,IAAK,aAAc,IAAK,iBAAkB,IAAK,WAAY,IAAK,kBAAmB,IAAK,WAAY,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,yBAA0B,IAAK,yBAA0B,IAAK,0BAA2B,IAAK,uBAAwB,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,mBAAoB,IAAK,gBAAiB,IAAK,WAAY,IAAK,YAAa,IAAK,YAAa,IAAK,cAAe,IAAK,oBAAqB,IAAK,iBAAkB,IAAK,eAAgB,IAAK,aAAc,IAAK,WAAY,IAAK,WAAY,IAAK,WAAY,IAAK,oBAAqB,IAAK,kBAAmB,IAAK,SAAU,IAAK,UAAW,IAAK,eAAgB,IAAK,aAAc,IAAK,cAAe,IAAK,YAAa,IAAK,SAAU,IAAK,UAAW,IAAK,aAAc,IAAK,aAAc,IAAK,eAAgB,IAAK,gBAAiB,IAAK,kBAAmB,IAAK,cAAe,IAAK,gBAAiB,IAAK,aAAc,IAAK,cAAe,IAAK,oBAAqB,IAAK,YAAa,IAAK,UAAW,IAAK,eAAgB,IAAK,sBAAuB,IAAK,iBAAkB,IAAK,qBAAsB,IAAK,UAAW,IAAK,gBAAiB,IAAK,UAAW,IAAK,UAAW,IAAK,WAAY,IAAK,SAAU,IAAK,aAAc,IAAK,eAAgB,IAAK,cAAe,IAAK,cAAe,IAAK,UAAW,IAAK,cAAe,IAAK,YAAa,IAAK,eAAgB,IAAK,aAAc,IAAK,gBAAiB,IAAK,aAAc,IAAK,UAAW,IAAK,YAAa,IAAK,kBAAmB,IAAK,cAAe,IAAK,cAAe,IAAK,qBAAsB,IAAK,uBAAwB,IAAK,aAAc,IAAK,YAAa,IAAK,UAAW,IAAK,UAAW,IAAK,aAAc,IAAK,WAAY,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,YAAa,IAAK,cAAe,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,qBAAsB,IAAK,qBAAsB,IAAK,YAAa,IAAK,YAAa,IAAK,UAAW,IAAK,SAAU,IAAK,UAAW,IAAK,cAAe,IAAK,iBAAkB,IAAK,wBAAyB,IAAK,0BAA2B,IAAK,YAAa,IAAK,kBAAmB,IAAK,mBAAoB,IAAK,0BAA2B,IAAK,SAAU,IAAK,eAAgB,IAAK,gBAAiB,IAAK,QAAS,IAAK,cAAe,IAAK,gBAAiB,IAAK,uBAAwB,IAAK,qBAAsB,IAAK,mBAAoB,IAAK,kBAAmB,IAAK,SAAU,IAAK,UAAW,IAAK,YAAa,IAAK,iBAAkB,IAAK,UAAW,IAAK,oBAAqB,IAAK,kBAAmB,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,YAAa,IAAK,gBAAiB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,uBAAwB,IAAK,kBAAmB,IAAK,eAAgB,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,aAAc,IAAK,UAAW,IAAK,YAAa,IAAK,UAAW,IAAK,uBAAwB,IAAK,aAAc,IAAK,iBAAkB,IAAK,UAAW,IAAK,oBAAqB,IAAK,YAAa,IAAK,WAAY,IAAK,WAAY,IAAK,YAAa,IAAK,cAAe,IAAK,YAAa,IAAK,cAAe,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,UAAW,IAAK,kBAAmB,IAAK,eAAgB,IAAK,kBAAmB,IAAK,cAAe,IAAK,aAAc,IAAK,gBAAiB,IAAK,oBAAqB,IAAK,aAAc,IAAK,cAAe,IAAK,aAAc,IAAK,WAAY,IAAK,SAAU,IAAK,QAAS,IAAK,UAAW,IAAK,WAAY,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,QAAS,IAAK,eAAgB,IAAK,UAAW,IAAK,SAAU,IAAK,gBAAiB,IAAK,YAAa,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,YAAa,IAAK,YAAa,IAAK,WAAY,IAAK,WAAY,IAAK,aAAc,IAAK,WAAY,IAAK,YAAa,IAAK,iBAAkB,IAAK,wBAAyB,IAAK,0BAA2B,IAAK,wBAAyB,IAAK,mBAAoB,IAAK,oBAAqB,IAAK,cAAe,IAAK,UAAW,IAAK,WAAY,IAAK,cAAe,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,eAAgB,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,iBAAkB,IAAK,qBAAsB,IAAK,kBAAmB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,qBAAsB,IAAK,aAAc,IAAK,WAAY,IAAK,YAAa,IAAK,gBAAiB,IAAK,WAAY,IAAK,aAAc,IAAK,eAAgB,IAAK,aAAc,IAAK,UAAW,IAAK,gBAAiB,IAAK,WAAY,IAAK,eAAgB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,oBAAqB,IAAK,iBAAkB,IAAK,qBAAsB,IAAK,WAAY,IAAK,WAAY,IAAK,cAAe,IAAK,cAAe,IAAK,aAAc,IAAK,eAAgB,IAAK,SAAU,IAAK,WAAY,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,IAAK,cAAe,IAAK,UAAW,IAAK,iBAAkB,IAAK,SAAU,IAAK,eAAgB,IAAK,iBAAkB,IAAK,uBAAwB,IAAK,cAAe,IAAK,aAAc,IAAK,YAAa,IAAK,YAAa,IAAK,SAAU,IAAK,cAAe,IAAK,SAAU,IAAK,gBAAiB,IAAK,SAAU,IAAK,cAAe,IAAK,YAAa,IAAK,YAAa,IAAK,mBAAoB,IAAK,UAAW,IAAK,aAAc,IAAK,WAAY,IAAK,aAAc,IAAK,gBAAiB,IAAK,cAAe,IAAK,eAAgB,IAAK,eAAgB,IAAK,eAAgB,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,UAAW,IAAK,cAAe,IAAK,qBAAsB,IAAK,YAAa,IAAK,WAAY,IAAK,UAAW,IAAK,cAAe,IAAK,aAAc,IAAK,aAAc,IAAK,oBAAqB,IAAK,UAAW,IAAK,qBAAsB,IAAK,qBAAsB,IAAK,sBAAuB,IAAK,mBAAoB,IAAK,gBAAiB,IAAK,WAAY,IAAK,YAAa,IAAK,kBAAmB,IAAK,gBAAiB,IAAK,oBAAqB,IAAK,UAAW,IAAK,SAAU,IAAK,gBAAiB,IAAK,WAAY,IAAK,aAAc,IAAK,eAAgB,IAAK,UAAW,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,mBAAoB,IAAK,YAAa,IAAK,cAAe,IAAK,YAAa,IAAK,YAAa,IAAK,YAAa,IAAK,WAAY,IAAK,aAAc,IAAK,eAAgB,IAAK,gBAAiB,IAAK,sBAAuB,IAAK,WAAY,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,cAAe,IAAK,YAAa,IAAK,kBAAmB,IAAK,UAAW,IAAK,WAAY,IAAK,YAAa,IAAK,kBAAmB,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,WAAY,IAAK,aAAc,IAAK,YAAa,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,mBAAoB,IAAK,0BAA2B,IAAK,cAAe,IAAK,YAAa,IAAK,WAAY,IAAK,mBAAoB,IAAK,aAAc,IAAK,eAAgB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,eAAgB,IAAK,eAAgB,IAAK,WAAY,IAAK,WAAY,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,SAAU,IAAK,YAAa,IAAK,YAAa,IAAK,mBAAoB,IAAK,qBAAsB,IAAK,aAAc,IAAK,WAAY,IAAK,kBAAmB,IAAK,WAAY,IAAK,eAAgB,IAAK,eAAgB,IAAK,gBAAiB,IAAK,oBAAqB,IAAK,mBAAoB,IAAK,eAAgB,IAAK,iBAAkB,IAAK,sBAAuB,IAAK,WAAY,IAAK,UAAW,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,UAAW,IAAK,UAAW,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,aAAc,IAAK,eAAgB,IAAK,WAAY,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,QAAS,IAAK,YAAa,IAAK,cAAe,IAAK,qBAAsB,IAAK,uBAAwB,IAAK,WAAY,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,QAAS,IAAK,YAAa,IAAK,aAAc,IAAK,WAAY,IAAK,aAAc,IAAK,YAAa,IAAK,kBAAmB,IAAK,mBAAoB,IAAK,aAAc,IAAK,gBAAiB,IAAK,YAAa,IAAK,YAAa,IAAK,aAAc,IAAK,YAAa,IAAK,WAAY,IAAK,eAAgB,IAAK,gBAAiB,IAAK,aAAc,IAAK,SAAU,IAAK,UAAW,IAAK,YAAa,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,YAAa,IAAK,SAAU,IAAK,gBAAiB,IAAK,SAAU,IAAK,WAAY,IAAK,WAAY,IAAK,SAAU,IAAK,YAAa,IAAK,UAAW,IAAK,cAAe,IAAK,YAAa,IAAK,YAAa,IAAK,kBAAmB,IAAK,iBAAkB,IAAK,YAAa,IAAK,UAAW,IAAK,YAAa,IAAK,YAAa,IAAK,WAAY,IAAK,eAAgB,IAAK,sBAAuB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,YAAa,IAAK,YAAa,IAAK,YAAa,IAAK,UAAW,IAAK,kBAAmB,IAAK,kBAAmB,IAAK,qBAAsB,IAAK,mBAAoB,IAAK,YAAa,IAAK,aAAc,IAAK,mBAAoB,IAAK,cAAe,IAAK,YAAa,IAAK,aAAc,IAAK,iBAAkB,IAAK,aAAc,IAAK,cAAe,IAAK,WAAY,IAAK,WAAY,IAAK,aAAc,IAAK,gBAAiB,IAAK,aAAc,IAAK,cAAe,IAAK,oBAAqB,IAAK,qBAAsB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,UAAW,IAAK,oBAAqB,IAAK,qBAAsB,IAAK,qBAAsB,IAAK,sBAAuB,IAAK,cAAe,IAAK,eAAgB,IAAK,eAAgB,IAAK,sBAAuB,IAAK,uBAAwB,IAAK,aAAc,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,aAAc,IAAK,WAAY,IAAK,aAAc,IAAK,YAAa,IAAK,cAAe,IAAK,oBAAqB,IAAK,oBAAqB,IAAK,UAAW,IAAK,eAAgB,IAAK,qBAAsB,IAAK,oBAAqB,IAAK,iBAAkB,IAAK,YAAa,IAAK,WAAY,IAAK,kBAAmB,IAAK,mBAAoB,IAAK,kBAAmB,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,UAAW,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,iBAAkB,IAAK,wBAAyB,IAAK,eAAgB,IAAK,YAAa,IAAK,cAAe,IAAK,WAAY,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,aAAc,IAAK,WAAY,IAAK,YAAa,IAAK,gBAAiB,IAAK,SAAU,IAAK,UAAW,IAAK,WAAY,IAAK,UAAW,IAAK,cAAe,IAAK,gBAAiB,IAAK,mBAAoB,IAAK,cAAe,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,QAAS,IAAK,cAAe,IAAK,aAAc,IAAK,eAAgB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,mBAAoB,IAAK,mBAAoB,IAAK,mBAAoB,IAAK,mBAAoB,IAAK,uBAAwB,IAAK,sBAAuB,IAAK,sBAAuB,IAAK,yBAA0B,IAAK,gCAAiC,IAAK,gBAAiB,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,iBAAkB,IAAK,eAAgB,IAAK,YAAa,IAAK,WAAY,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,qBAAsB,IAAK,uBAAwB,IAAK,UAAW,IAAK,iBAAkB,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,eAAgB,IAAK,kBAAmB,IAAK,eAAgB,IAAK,eAAgB,IAAK,WAAY,IAAK,iBAAkB,IAAK,qBAAsB,IAAK,WAAY,IAAK,aAAc,IAAK,UAAW,IAAK,YAAa,IAAK,iBAAkB,IAAK,YAAa,IAAK,WAAY,IAAK,SAAU,IAAK,SAAU,IAAK,YAAa,IAAK,mBAAoB,IAAK,kBAAmB,IAAK,QAAS,IAAK,YAAa,IAAK,aAAc,IAAK,oBAAqB,IAAK,cAAe,IAAK,eAAgB,IAAK,UAAW,IAAK,sBAAuB,IAAK,gBAAiB,IAAK,YAAa,IAAK,YAAa,IAAK,gBAAiB,IAAK,cAAe,IAAK,YAAa,IAAK,SAAU,IAAK,SAAU,IAAK,UAAW,IAAK,iBAAkB,IAAK,mBAAoB,IAAK,aAAc,IAAK,YAAa,IAAK,eAAgB,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,WAAY,IAAK,WAAY,IAAK,aAAc,IAAK,WAAY,IAAK,kBAAmB,IAAK,gBAAiB,IAAK,aAAc,IAAK,YAAa,IAAK,mBAAoB,IAAK,kBAAmB,IAAK,WAAY,IAAK,kBAAmB,IAAK,UAAW,IAAK,QAAS,IAAK,0BAA2B,IAAK,iBAAkB,IAAK,gBAAiB,IAAK,eAAgB,IAAK,aAAc,IAAK,YAAa,IAAK,WAAY,IAAK,YAAa,IAAK,cAAe,IAAK,gBAAiB,IAAK,oBAAqB,IAAK,UAAW,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,oBAAqB,IAAK,qBAAsB,IAAK,qBAAsB,IAAK,oBAAqB,IAAK,aAAc,IAAK,SAAU,IAAK,eAAgB,IAAK,gBAAiB,IAAK,gBAAiB,IAAK,aAAc,IAAK,YAAa,IAAK,UAAW,IAAK,iBAAkB,IAAK,kBAAmB,IAAK,yBAA0B,IAAK,WAAY,IAAK,QAAS,IAAK,eAAgB,IAAK,UAAW,IAAK,SAAU,IAAK,WAAY,IAAK,aAAc,IAAK,kBAAmB,IAAK,oBAAqB,KAClxgBC,GAAa,CACf,YAAa,oBACb,oBAAqB,qBACrB,oBAAqB,qBACrB,yBAA0B,8BAC1B,yBAA0B,8BAC1B,0BAA2B,+BAC3B,uBAAwB,4BACxB,cAAe,sBACf,cAAe,sBACf,YAAa,aACb,kBAAmB,mBACnB,sBAAuB,mBACvB,gBAAiB,iBACjB,gBAAiB,iBACjB,oBAAqB,qBACrB,oBAAqB,qBACrB,cAAe,eACf,iBAAkB,eAClB,oBAAqB,4BACrB,kBAAmB,0BACnB,eAAgB,gBAChB,kBAAmB,qBACnB,gBAAiB,iBACjB,qBAAsB,qBACtB,aAAc,kBACd,eAAgB,wBAChB,aAAc,YACd,uBAAwB,qBACxB,gBAAiB,iBACjB,qBAAsB,sBACtB,cAAe,sBACf,mBAAoB,2BACpB,0BAA2B,kCAC3B,uBAAwB,yBACxB,YAAa,aACb,iBAAkB,iBAClB,YAAa,aACb,cAAe,eACf,mBAAoB,oBACpB,aAAc,cACd,iBAAkB,kBAClB,eAAgB,gBAChB,gBAAiB,wBACjB,cAAe,sBACf,qBAAsB,6BACtB,qBAAsB,6BACtB,sBAAuB,8BACvB,mBAAoB,2BACpB,gBAAiB,eACjB,WAAY,YACZ,cAAe,gBACf,oBAAqB,qBACrB,mBAAoB,oBACpB,oBAAqB,qBACrB,YAAa,oBACb,mBAAoB,oBACpB,mBAAoB,oBACpB,uBAAwB,wBACxB,WAAY,eACZ,YAAa,oBACb,oBAAqB,qBACrB,YAAa,oBACb,aAAc,qBACd,cAAe,sBACf,WAAY,uBACZ,cAAe,eACf,qBAAsB,kBACtB,oBAAqB,uBACrB,iBAAkB,kBAClB,YAAa,aACb,mBAAoB,oBACpB,mBAAoB,oBACpB,gBAAiB,wBACjB,mBAAoB,oBACpB,iBAAkB,kBAClB,YAAa,oBACb,oBAAqB,qBACrB,qBAAsB,sBACtB,uBAAwB,qBACxB,aAAc,kBACd,mBAAoB,oBACpB,YAAa,aACb,aAAc,qBACd,oBAAqB,oBACrB,kBAAmB,sBACnB,oBAAqB,qBACrB,kBAAmB,iBACnB,oBAAqB,yB,SAETC,KACZ,OAAOp3C,OAAOw3B,KAAK0f,GACvB,CAEM,SAAUG,GAAS11C,GACrB,OAAOw1C,GAAWx1C,GAAOw1C,GAAWx1C,GAAOA,CAC/C,CAEgB,SAAA21C,GAAO31C,EAAa41C,GAChC,YADgC,IAAAA,MAA+B,eACpC,IAAvB51C,EAAI8B,QAAQ,OACLyzC,GAAUv1C,IAAQu1C,GAAUK,GAEhC51C,CACX,CAMgB,SAAA61C,GAAqBC,EAAaC,GAG9C,OAFAA,EAAMA,GAAY7zC,SAASK,cAAc,QACrC0F,UAAY6tC,EACTC,EAAIluC,aAAekuC,EAAIC,WAAa,EAC/C,CAIA,IAAMC,GAAQ,6BACRC,GAAS,iCAgFR,IAmPHC,GAnPSrqC,GAAYunC,GAuFT,SAAA+C,GAAaC,EAAYC,GACrC,IAAIxxC,EAAI5C,SAASK,cAAc,KAC/B,OAAIg0C,UAAsB,YACtBzxC,EAAI,KACGyxC,UAAsB,WAAEF,EAAMC,IAC9B,aAAcxxC,GACrBA,EAAE0xC,KAAOC,IAAIC,gBAAgBL,GAC7BvxC,EAAEQ,aAAa,WAAYgxC,GAC3Bp0C,SAASy0C,KAAK/yC,YAAYkB,GAC1BgO,YAAW,WACPhO,EAAEwuC,QACFpxC,SAASy0C,KAAKhuC,YAAY7D,E,GAC3B,KACI,QARJ,CAUX,C,SAEgB8xC,KACZ,IAAMC,EAAc,IAAInkC,KAExB,OADmBokC,aAAa,oBACzBpN,CAAWmN,EACtB,C,SAEgBE,GAAer2B,EAAiD21B,EAAchlC,GAC1F,IAAMilC,EAAWjlC,GAAO,QAAUulC,KAAe,IAAMl2B,EAAOC,cAE1Dq2B,EAAW,GACf,OAAQt2B,GACJ,IAAK,MACDs2B,EAAW,4BACX,MACJ,IAAK,OACDA,EAAW,mBACX,MACJ,IAAK,MACDA,EAAW,gBACX,MAGJ,QACIA,EAAW,WAEnBZ,GAAa,IAAIa,KAAK,CAACZ,GAAO,CAAE7rC,KAAMwsC,IAAaV,EACvD,CAiBM,SAAUY,GAAS33C,GAIrB,GAHIA,aAAaf,QACbe,EAAIA,EAAE0J,KAAK,IAAM1J,EAAEI,QAGd,iBADMJ,QAIPA,EAAI,GAAKA,EAGjB,IADA,IAAI43C,EAAM,UACD33C,EAAI,EAAGyB,EAAI1B,EAAEI,OAAQH,EAAIyB,IAAKzB,EACnC23C,GAAQ53C,EAAEw5B,WAAWv5B,IAAMA,EAAI,GAEnC,OAAc,WAAN23C,GAAkBvnC,SAAS,GACvC,CAYA,SAASwnC,GAAOC,EAAMxnC,GAClB,IAAItQ,EACEwD,EAAQ,GACd,IAAK,IAAM/C,KAAO6P,EACdtQ,EAAIsQ,EAAO7P,GACLA,KAAOq3C,IAAUA,EAAKr3C,KAAST,GAAQS,KAAO+C,GAAUA,EAAM/C,KAAST,KACzE83C,EAAKr3C,GAAOT,GAGpB,OAAO83C,CACX,C,SAgCgBC,GAASpG,EAAMqG,EAAiBC,GAC5C,YAD2B,IAAAD,MAAe,UAAE,IAAAC,OAAgB,GACrD,WACH,IAAMnJ,EAAMpvC,MAAQ,GACd+L,EAAOtL,UAMT2uC,EAAIoJ,wBACJxjC,aAAao6B,EAAIoJ,yBACZD,GACLtG,EAAKtxC,MAAMyuC,EAAKrjC,GACpBqjC,EAAIoJ,wBAA0B3kC,YAT9B,WACS0kC,GACDtG,EAAKtxC,MAAMyuC,EAAKrjC,GACpBqjC,EAAIoJ,wBAA0B,I,GAMgBF,EACtD,CACJ,CAaA,IAwBIG,GAxBEC,GAAsD,GAEtD,SAAUC,GAASC,EAA0BC,EAA8BC,EAAuBC,QAArD,IAAAF,MAA4B,gBAAE,IAAAC,MAAqB,SAAE,IAAAC,OAAqB,GACzH7B,GAAoB8B,KACpB,IAAMhpC,EAAO4oC,aAAiBr5C,MAAQq5C,EAAQ,CAACA,GACzCK,EAAO,GAAA/2C,OAAG62C,EAAI,MAAA72C,OAAK42C,EAAa,MAAA52C,OAAA22C,EAAa,MAAA32C,OAAA8N,EAAKhG,KAAK,OACzD+lC,EAAS2I,GAAuBO,GAcpC,OAbKlJ,IACDA,EAAS,CAAEpX,MAAO,EAAGugB,OAAQ,GAC7BhC,GAAkBiC,KAAO,GAAAj3C,OAAG62C,EAAO,QAAU,IAAE72C,OAAG42C,EAAc,OAAA52C,OAAA22C,GAChE7oC,EAAKwoB,SAAQ,SAAA4gB,GACT,IAAMC,EAAkBnC,GAAkBoC,YAAY,GAAKF,GACrDzgB,EAAQ0gB,EAAgB1gB,MACxBugB,GAAUG,EAAgBE,uBAAyBF,EAAgBG,uBAAyBxpC,EAAKtP,OACvGg4C,GAAuBO,GAAQlJ,EAAS,CACpCpX,MAAOA,EAAQoX,EAAOpX,MAAQA,EAAQoX,EAAOpX,MAC7CugB,OAAQA,EAASnJ,EAAOmJ,OAASA,EAASnJ,EAAOmJ,OAEzD,KAEGnJ,CACX,CAIA,IAAM0J,GAAsD,GACtD,SAAUC,GAAS1pC,EAAc6oC,EAA8BC,EAAuBC,QAArD,IAAAF,MAA4B,gBAAE,IAAAC,MAAqB,SAAE,IAAAC,OAAqB,GAE7GN,GAAekB,KACfzC,GAAoB8B,KACpB,IAAMC,EAAO,GAAA/2C,OAAG62C,EAAI,MAAA72C,OAAK42C,EAAQ,MAAA52C,OAAK22C,EAAQ,MAAA32C,OAAK8N,GAC/C+/B,EAAS0J,GAAuBR,GACpC,IAAKlJ,EAAQ,CACT,IAAMoJ,EAAO,GAAAj3C,OAAG62C,EAAO,QAAU,IAAE72C,OAAG42C,EAAe,QAAA52C,OAAA22C,EAAQ,KAC7D3B,GAAkBiC,KAAOA,EACzB,IAAM7tC,EAAI4rC,GAAkBoC,YAAYtpC,GAClCo2B,EAAIqS,GAAa9f,MAAQ3pB,KAAKylB,KAAKnpB,EAAEqtB,OACrC/V,EAAI61B,GAAaS,OAAoB,IAAXJ,EAC1Bc,EAAS32C,SAASK,cAAc,UACtCs2C,EAAOjhB,MAAQyN,EACfwT,EAAOV,OAASt2B,EAChBs0B,GAAkBiC,KAAOA,EACzBjC,GAAkB2C,UAAY,QAC9B3C,GAAkB4C,UAAY,QAC9B5C,GAAkB6C,aAAe,MACjC7C,GAAkB8C,SAAShqC,EAAM,EAAG,GAEpC,IAAIiqC,EAAK5mB,OAAK,EAAE6mB,OAAM,EAAExoC,EAAO,EAC/B,GAAI00B,EAAI,EAEJ,IADA,IAAMhhC,EAAO8xC,GAAkBiD,aAAa,EAAG,EAAG/T,EAAGxjB,GAAGxd,KAC/C+L,EAAI,EAAGA,EAAIyR,EAAGzR,IACnB,IAAK,IAAIvD,EAAI,EAAGA,EAAIw4B,EAAGx4B,IAAK,CAEJ,IAAhBxI,EADoB,GAAbwI,EAAIuD,EAAIi1B,GACN,UACG/V,IAAR4pB,IACAA,EAAM9oC,SAEGkf,IAAT3e,GAAsBA,EAAO9D,KAC7B8D,EAAO9D,SAEGyiB,IAAVgD,GAAuBA,EAAQzlB,KAC/BylB,EAAQzlB,GAEZssC,EAAS/oC,E,CAKzB4+B,EAAS,CACLpX,MAAOtF,EAAQ3hB,EAAO,EACtBwnC,OAAQgB,EAASD,EAAM,EACvBroC,IAAGqoC,EACH5mB,MAAKA,EACL6mB,OAAMA,EACNxoC,KAAIA,GAER+nC,GAAuBR,GAAQlJ,C,CAEnC,OAAOA,CACX,CAEA,SAAS4J,KASL,OARKlB,KACDA,GAAex1C,SAASm3C,eAAe,yBAEnC3B,GAAex1C,SAASK,cAAc,WACzB8O,GAAK,oBAClBnP,SAASy0C,KAAK/yC,YAAY8zC,KAG3BA,EACX,CAEA,SAASO,KAKL,OAJK9B,KACDuB,GAAekB,KACfzC,GAAqBuB,GAAmC4B,WAAW,OAEhEnD,EACX,CAEM,SAAUtB,GAAUJ,GAGtB,IAFA,IAAM10C,EAAS00C,EACXpsC,EAActI,EAAOsI,YAClBA,GACHtI,EAAOuI,WAAWxE,aAAauE,EAAatI,GAC5CsI,EAActI,EAAOsI,WAE7B,C,yJA9TM,SAAyB8qB,GAC3B,MAAO,CACHhxB,cAAe,CACXI,cAAa,SAACg3C,GACV,MAAO,CACH,YAAI51C,GAAa,OAAO1E,KAAKs2B,GAAI,EACjC,YAAI5xB,CAASgM,GAAK1Q,KAAKs2B,IAAMpC,EAAMl0B,KAAKyK,OAASiG,CAAE,E,EAI3DnN,gBAAe,SAACg3C,EAAKC,GACjB,OAAOx6C,KAAKsD,cAAck3C,E,GAIlCx2C,iBAAgB,SAACy2C,GACb,GAAIA,EAAW,MAAM,IAAIjoC,MAAM,eAC/B,IAAMq9B,EAAU7vC,KAChB,OAAOk0B,EAAM7lB,KAAI,SAAUioB,EAAKmc,GAC5B,MAAO,CACHvvC,cAAe2sC,EAAQ3sC,cACvBmG,WAAYwmC,EACZ,YAAInrC,GAAa,OAAO4xB,CAAI,EAC5B,YAAI5xB,CAASgM,GAAKwjB,EAAMue,GAAO/hC,CAAE,EAEzC,G,EAGJ/L,YAAW,SAACU,GAIR,OAHAA,EAAKgE,WAAarJ,KAClBqF,EAAKoF,MAAQypB,EAAMxzB,OACnBwzB,EAAMnqB,KAAK,MACJ1E,C,EAGXR,aAAY,SAACQ,EAAMq1C,GACf,IAAMjI,EAAMve,EAAMrxB,QAAQwC,EAAKX,UACzBi2C,EAASzmB,EAAMrxB,QAAQ63C,EAAch2C,UAM3C,OALI+tC,EAAMkI,EACNzmB,EAAMjqB,OAAO0wC,EAAQ,EAAGzmB,EAAMjqB,OAAOwoC,EAAK,GAAG,IACtCA,EAAMkI,EAAS,GACtBzmB,EAAMjqB,OAAO0wC,EAAS,EAAG,EAAGzmB,EAAMjqB,OAAOwoC,EAAK,GAAG,IAE9CptC,C,EAGXqE,YAAW,SAACrE,GAER,OADA6uB,EAAMjqB,OAAOiqB,EAAMrxB,QAAQwC,EAAKX,UAAW,GACpCW,C,EAGnB,E,gEA7DyBwxC,EAAa+D,EAAmBC,GACrD,IAAMC,EAAgBjE,EAAIlmC,YACP,iBAARkqC,IAAqB3lB,SAAS2lB,IAAQ7rC,KAAKqX,MAAMw0B,KAASA,GAAOA,EAAMC,EAAcp6C,UAC5Fm6C,EAAMC,EAAcp6C,QAExBm6C,GAAOD,EAAUl6C,OACjB,IAAMkoB,EAAYkyB,EAAcj4C,QAAQ+3C,EAAWC,GACnD,OAAsB,IAAfjyB,GAAoBA,IAAciyB,CAC7C,E,OA0JgB,SAAO3K,EAAM6K,GACzB,IAAK7K,IAAS6K,EACV,OAAO,EAIX,IAFA,IAAMC,EAAY9K,EAAKtoC,MAAM,KACzBqzC,EAAYF,EACPx6C,EAAI,EAAGA,EAAIy6C,EAAUt6C,SAAUH,EAAG,CACvC,IAAM2uC,EAAO8L,EAAUz6C,GACvB,QAAwB8vB,IAApB4qB,EAAU/L,GACV,OAAO,EAEX+L,EAAYA,EAAU/L,E,CAE1B,OAAO,CACX,E,6BArSM,SAAiBnuC,GACnB,OAAO21C,GAAO31C,GAAK+4B,WAAW,EAClC,E,6BA+PI,OAAQtmB,IAAOA,GAAI7T,KAAKs2C,MAAW,IAAIxiC,MAAO+4B,SAClD,E,aAqCM,SAAuB4C,GACzB,IAAM8L,EAAQ,GACd,OAAO/iB,KAAKC,UAAUgX,GAAK,SAAU8C,EAAM9rC,GACvC,GAAqB,iBAAVA,GAAgC,OAAVA,EAAgB,CAC7C,IAA8B,IAA1B80C,EAAMr4C,QAAQuD,GACd,OAGJ80C,EAAMnxC,KAAK3D,E,CAEf,OAAOA,CACX,GACJ,E,MAhDgB,SAAMgyC,EAAM+C,GACxB/C,EAAOA,GAAQ,GACf,IAAK,IAAI73C,EAAI,EAAGyB,EAAIvB,UAAUC,OAAQH,EAAIyB,EAAGzB,IACzC43C,GAAOC,EAAM33C,UAAUF,IAE3B,OAAO63C,CACX,E,UA5LgB,SAAUhzC,EAAMg2C,GAa5B,OAZIA,GAAUA,EAAO16C,QACjB0E,EAAKiK,MAAK,SAAUrN,EAAGd,GACnB,IAAK,IAAIX,EAAI,EAAGA,EAAI66C,EAAO16C,SAAUH,EAAG,CACpC,IAAM86C,EAAOr5C,EAAEo5C,EAAO76C,GAAGkyC,KACnB6I,EAAOp6C,EAAEk6C,EAAO76C,GAAGkyC,KACzB,GAAI4I,IAASC,EACT,OAAOF,EAAO76C,GAAGy0B,QAAUtB,GAAa2nB,EAAMC,GAAQC,GAAYF,EAAMC,E,CAGhF,OAAO,CACX,IAEGl2C,CACX,E,YApBM,SAAsBA,EAAMuJ,EAAO8jC,EAAK+I,GAC1C,OAAOp2C,EAAKnD,MAAM,GAAGoN,MAAK,SAAUxJ,EAAG1G,GACnC,OA7cR,SAAsB0G,EAAG1G,EAAGwP,EAAO8jC,EAAK+I,GACpC,IAcIC,EACAC,EAfEvf,EAAK,8EACLwf,EAAM,iBACNC,EAAM,iHACNC,EAAM,KACNt7C,EAAI,SAAUD,GAAK,OAAQk7C,IAAsB,GAAKl7C,GAAGohB,eAAiB,GAAKphB,CAAE,EAEjFsN,EAAIrN,EAAEkyC,EAAM5sC,EAAE4sC,GAAO5sC,GAAGw0B,QAAQshB,EAAK,KAAO,GAC5CxqC,EAAI5Q,EAAEkyC,EAAMtzC,EAAEszC,GAAOtzC,GAAGk7B,QAAQshB,EAAK,KAAO,GAE5CG,EAAKluC,EAAEysB,QAAQ8B,EAAI,UAAU9B,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAAIzyB,MAAM,MACzEm0C,EAAK5qC,EAAEkpB,QAAQ8B,EAAI,UAAU9B,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAAIzyB,MAAM,MAEzEo0C,EAAoB,IAAdF,EAAGp7C,QAAgBkN,EAAEH,MAAMmuC,IAAQnoC,KAAK2W,MAAMxc,GACpDquC,EAAKD,GAAM7qC,EAAE1D,MAAMmuC,IAAQnoC,KAAK2W,MAAMjZ,IAAM,KAIlD,GAAI8qC,EAAI,CACJ,GAAID,EAAKC,EACL,MAAiB,cAAVttC,GAAyB,EAAI,EACjC,GAAIqtC,EAAKC,EACZ,MAAiB,cAAVttC,EAAwB,GAAK,C,CAI5C,IAAK,IAAIutC,EAAO,EAAGC,EAAOntC,KAAK0T,IAAIo5B,EAAGp7C,OAAQq7C,EAAGr7C,QAASw7C,EAAOC,EAAMD,IAAQ,CAK3E,GAHAT,IAAWK,EAAGI,IAAS,IAAIzuC,MAAMouC,IAAQO,WAAWN,EAAGI,KAAUJ,EAAGI,IAAS,EAC7ER,IAAWK,EAAGG,IAAS,IAAIzuC,MAAMouC,IAAQO,WAAWL,EAAGG,KAAUH,EAAGG,IAAS,EAEzEz5B,MAAMg5B,KAAYh5B,MAAMi5B,GACxB,OAAQj5B,MAAMg5B,GAAW,GAAK,EAMlC,UALkBA,UAAkBC,IAEhCD,GAAU,GACVC,GAAU,IAEVD,EAASC,EAAU,MAAiB,cAAV/sC,GAAyB,EAAI,EAC3D,GAAI8sC,EAASC,EAAU,MAAiB,cAAV/sC,EAAwB,GAAK,C,CAE/D,OAAO,CACX,CAmae0tC,CAAax2C,EAAG1G,EAAGwP,EAAO8jC,EAAK+I,EAC1C,GACJ,E,aA0JgB,SAAapQ,EAASxoC,QAAA,IAAAA,MAAa,MAC/C,IAAM05C,EAAQlR,EAAQxjC,MAAM,KACtB20C,EAAaD,EAAM,GAAG10C,MAAM,KAClC,MAAO,CACH40C,QAAS,YAAYt6C,OAAAq6C,EAAW,IAChCE,KAAM75C,EAAS,IAAM05C,EAAM,GAAG10C,MAAM,KAAKoC,KAAK,KAC9C0yC,SAAUH,EAAW77C,OAAS,EAAI67C,EAAW,GAAK,KAClDI,eAAgBL,EAAM57C,OAAS,EAAI47C,EAAM,GAAK,KAEtD,E,mBAwFM,SAA6BM,GAC/B,IAAMC,EAAMD,EAAch1C,MAAM,KAChC,MAAO,CACHk1C,MAAOl7B,SAASi7B,EAAI,GAAGxiB,QAAQ,IAAK,KACpC0iB,MAAOn7B,SAASi7B,EAAI,IACpBG,MAAOp7B,SAASi7B,EAAI,GAAGj1C,MAAM,KAAK,IAE1C,E,8CAlTgB,SAASq1C,EAAaC,GAClC,IAAKD,EAAK,MAAO,GACjB,IAAIlxC,EAEJ,GAAyB,IAArBtL,UAAUC,QAAwC,iBAAjBD,UAAU,GAC3CsL,EAAOtL,UAAU,OACd,CACHsL,EAAO,IAAIxM,MAAMkB,UAAUC,OAAS,GACpC,IAAK,IAAIH,EAAI,EAAGA,EAAIE,UAAUC,SAAUH,EACpCwL,EAAKxL,EAAI,GAAKE,UAAUF,E,CAI3BwL,GAASA,EAAKrM,iBACfqM,EAAO,I,eAIAhL,GACHooB,UAAQpd,EAAKhL,KACbgL,EAAKhL,GAAKy3B,SAAQ,SAAUlC,EAAKmc,GAC7B1mC,EAAKhL,EAAM,IAAM0xC,EAAM,KAAOnc,CAClC,G,EAJR,IAAK,IAAMv1B,KAAOgL,E,EAAPhL,GAQX,OAAOk8C,EACF5iB,QAAQ4c,IAAQ,SAAoBxpC,EAAOlN,GACxC,IAAM22B,EAASnrB,EAAKrM,eAAea,GAAKwL,EAAKxL,GAAK,KAClD,OAAI22B,QACOzpB,EAEJmpC,GAAqB1f,EAChC,IACCmD,QAAQ2c,IAAO,SAAoBvpC,EAAOlN,EAAGkK,GAC1C,IAAMysB,EAASnrB,EAAKrM,eAAea,GAAKwL,EAAKxL,GAAK,KAClD,OAAI22B,QACO,GAEJA,CACX,GAER,E,eAtDM,SAAyB+lB,GAC3B,IAAKA,EAAK,MAAO,GACjB,IAAMlN,EAAmB,GACnB7rC,EAAU+4C,EAAIxvC,MAAMupC,IAC1B,GAAI9yC,GAAWA,EAAQxD,OACnB,IAAuB,IAAAquC,EAAA,EAAAoO,EAAOj5C,EAAP6qC,EAAAoO,EAAAz8C,OAAAquC,IAAS,CAA3B,IAAMqO,EAAQD,EAAApO,GACfgB,EAAOhmC,KAAKqzC,EAASzf,UAAU,EAAGyf,EAAS18C,OAAS,G,CAG5D,OAAOqvC,CACX,E,0DAuEI,IAAMA,EAAS,GACTsN,EAAMlxC,OAAOmxC,SAAS/F,KACtB9E,EAAM4K,EAAIx6C,QAAQ,KAgBxB,OAfI4vC,GAAO,GACP4K,EAAI1f,UAAU8U,EAAM,GAAG7qC,MAAM,KAAK4wB,SAAQ,SAAUua,GAChD,IAAMwK,EAAaxK,EAAMnrC,MAAM,KAC/B,OAAQ21C,EAAW78C,QACf,KAAK,EACDqvC,EAAOyN,mBAAmBD,EAAW,UAAOltB,EAC5C,MACJ,KAAK,EACD0f,EAAOyN,mBAAmBD,EAAW,KAAOC,mBAAmBD,EAAW,IAC1E,MACJ,QACI,MAAM,IAAI/qC,MAAM,uBAAyBugC,GAErD,IAEGhD,CACX,E,WA8GM,SAAqB3E,GACvB,MAAO,MAAQA,EAAQxjC,MAAM,KAAKoC,KAAK,IAC3C,ICpmBMyzC,GAAS,CACXxuC,IAAKknB,GACLzT,IAAKoT,GACL/B,KAAMgC,GACN2nB,OAAQ1nB,GACR7B,SAAUP,GACV+pB,UAAW1pB,GACXD,IAAKoC,IAGLwnB,GAAkB,KAUtBC,GAAA,SAAA1P,GAKI,SAAA0P,EAAYzrC,GACR,IAAAg8B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHFouC,EAAS0P,UAAY,GAK3B1P,EAAKngB,IAAM7b,GAAMg8B,EAAKngB,I,EA+I9B,OAvJ2BruB,EAAWi+C,EAAA1P,GAalC0P,EAAKp+C,UAAA+xC,MAAL,SAAM9gC,GACF,OAAKjQ,UAAUC,QACfV,KAAK+9C,OAASrtC,EACP1Q,MAFuBA,KAAK+9C,M,EAKvCF,EAAAp+C,UAAA4wC,MAAA,WACI,QAASrwC,KAAKg+C,O,EAGlBH,EAAAp+C,UAAAw4C,SAAA,WACI,OAAOgG,GAAiBj+C,KAAKg+C,QAAUh+C,KAAKuL,OAASvL,KAAKk+C,OAASl+C,KAAKyhB,S,EAG5Eo8B,EAAep+C,UAAA0+C,gBAAf,SAAgBztC,GACZ,OAAQ1Q,KAAKuL,QACT,IAAK,SACD,OAAOmyB,OAAOhtB,GAClB,IAAK,SACD,OAAO5Q,OAAO4Q,GAClB,IAAK,UACD,QAAsB,iBAAf,GAA2B,CAAC,QAAS,MAAO,KAAK7N,QAAQ6N,EAAEgR,gBAAkB,IAAYisB,QAAQj9B,GAC5G,IAAK,OACL,IAAK,OACD,OAAO1Q,KAAKo+C,gBAAgB1tC,GAEpC,OAAOA,C,EAGXmtC,EAAep+C,UAAA2+C,gBAAf,SAAgB1tC,GACZ,OAAO1Q,KAAKq+C,UAAUr+C,KAAKk+C,QAAQ9zB,MAAMtqB,OAAO4Q,G,EAGpDmtC,EAAiBp+C,UAAA6+C,kBAAjB,SAAkB5tC,GACd,OAAO1Q,KAAKq+C,UAAUr+C,KAAKyhB,SAApBzhB,CAA8B0Q,E,EAGzCmtC,EAAKp+C,UAAA2qB,MAAL,SAAM1Z,GACF,IAAKA,EACD,OAAOA,EAEX,IACI,OAAO1Q,KAAKm+C,gBAAgBztC,E,CAC9B,MAAO6D,GAEL,OADAm5B,QAAQiD,KAAK,qBAAuBjgC,GAC7B,I,GAIfmtC,EAASp+C,UAAAurB,UAAT,SAAUta,GACN,IAAKA,EACD,OAAOA,EAEX,IACI,OAAO1Q,KAAKs+C,kBAAkBt+C,KAAKm+C,gBAAgBztC,G,CACrD,MAAO6D,GAEL,OADAm5B,QAAQiD,KAAK,yBAA2BjgC,GACjC,I,GAIfmtC,EAAAp+C,UAAAmK,MAAA,WACI,IAAMimC,EAAU7vC,KACV+vC,EAAS,IAAI8N,EAAM79C,KAAKiuB,KAM9B,SAASswB,EAAUnG,EAAMr3C,GACrBq3C,EAAKr3C,EAAM,YAAY8uC,EAAQ9uC,EAAM,eACjC8uC,EAAQ9uC,EAAM,cACdq3C,EAAKr3C,GAAK8uC,EAAQ9uC,K,CAG1B,OAXAw9C,EAAUxO,EAAQ,SAClBwO,EAAUxO,EAAQ,QAClBwO,EAAUxO,EAAQ,QAClBwO,EAAUxO,EAAQ,UAQXA,C,EAGX8N,EAASp+C,UAAA4+C,UAAT,SAAU58B,GACN,IAAIsuB,EACJ,IAAKtuB,EAOD,OANAsuB,EAAS,SAAUr/B,GACf,OAAOA,CACX,GACO0Z,MAAQ,SAAU1Z,GACrB,OAAOA,CACX,EACOq/B,EAEX,OAAQ/vC,KAAKuL,QACT,IAAK,OACL,IAAK,OACD,OAAOssC,aAAap2B,GAM5B,OAJAsuB,EAASyO,SAAS/8B,IACX2I,MAAQ,SAAU1Z,GACrB,OAAOA,CACX,EACOq/B,C,EAKX8N,EAAAp+C,UAAAgwB,SAAA,SAAS/e,EAA2C+tC,GAChD,QAAU,IAAN/tC,EAAc,OAAO1Q,KAAK89C,UAC9B99C,KAAKuL,KAAK,UACV,IAAMmzC,EAAY1+C,KAAK89C,UAyBvB,OAxBA99C,KAAK89C,UAAYptC,EAAErC,KAAI,SAACmxB,EAAuCiT,GAC3D,OAAIjT,aAAiBqe,GACjBa,EAAUjM,GAAOjT,EACVA,GACiB,iBAAVA,EACVif,GACQC,EAAUjM,IAAQ,IAAIoL,GAASc,cAAcnf,IAE7Ckf,EAAUjM,IAAQ,IAAIoL,GAASG,MAAMxe,GAG7Cif,GACQC,EAAUjM,IAAQ,IAAIoL,GACzBc,cAAcnf,EAAMwe,OACpBvuB,SAAS+P,EAAMvH,UAGZymB,EAAUjM,IAAQ,IAAIoL,GACzBG,MAAMxe,EAAMwe,OACZvuB,SAAS+P,EAAMvH,Q,GAI7Bj4B,MACIA,I,EAOd69C,CAAD,CAvJA,CAA2B3P,IAwJ3B2P,GAAMp+C,UAAU0rC,QAAU,yBAO1B0S,GAAMp+C,UAAUyxC,QAAQ,QAAS,GAAI,SAAU,QAAS,KAAM,CAAE5D,UAAU,IAC1EuQ,GAAMp+C,UAAUyxC,QAAQ,OAAQ,GAAI,MAAO,OAAQ,CAAC,GAAI,SAAU,SAAU,UAAW,OAAQ,OAAQ,SAAU,UAAW,CAAE5D,UAAU,IACxIuQ,GAAMp+C,UAAUyxC,QAAQ,OAAQ,GAAI,SAAU,YAAa,KAAM,CAAEO,QAAS,SAACrL,GAAW,MAAa,SAAbA,EAAE76B,MAAF,EAAqB+hC,UAAU,IACvHuQ,GAAMp+C,UAAUyxC,QAAQ,SAAU,GAAI,SAAU,SAAU,KAAM,CAAE5D,UAAU,IAG5E,IAAAsR,GAAA,SAAAzQ,GAOI,SAAAyQ,EAAYC,GACR,IAAAzQ,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAJJouC,EAAK0Q,MAAG,GACR1Q,EAAc2Q,eAAG,GAIrBF,EAAeA,IAAgB,EAC/BzQ,EAAK4Q,cAAgBH,EACrBzQ,EAAK6Q,aAAe,EACpB7Q,EAAKzW,Q,EAqcb,OAjd0B/3B,EAAWg/C,EAAAzQ,GAejCyQ,EAAAn/C,UAAAk4B,MAAA,WAKI,OAJA33B,KAAKk/C,OAAO,IACZl/C,KAAK8+C,MAAQ,GACb9+C,KAAK++C,eAAiB,KACpB/+C,KAAKi/C,aACAj/C,I,EAIX4+C,EAAAn/C,UAAA0/C,aAAA,WACI,IAAMD,EAASl/C,KAAKk/C,SACpBl/C,KAAKo/C,cAAc,IACnBp/C,KAAKo/C,cAAcF,EAAO7wC,KAAI,SAAUmxB,GACpC,OAAOA,EAAMwe,O,MAIrBY,EAAAn/C,UAAA2/C,cAAA,SAAc1uC,EAAI+tC,GACd,OAAKh+C,UAAUC,QACfV,KAAKs2B,IAAI,EAAG5lB,EAAG+tC,GACRz+C,MAFuBA,KAAKs2B,IAAI,E,EAK3CsoB,EAAAn/C,UAAA4/C,WAAA,SAAW3uC,EAAI4uC,GACX,OAAOV,EAAKn/C,UAAU2F,KAAKzE,MAAMX,KAAMS,U,EAI3Cm+C,EAAAn/C,UAAA8/C,OAAA,W,EAGAX,EAAKn/C,UAAA+/B,MAAL,SAAMiT,GACF,OAAOzyC,KAAKk/C,SAASzM,E,EAGzBmM,EAAAn/C,UAAA+/C,aAAA,SAAa9uC,EAAG+uC,GACZ,OAAOz/C,KAAKk/C,SAAS1xC,QAAO,SAAUgyB,EAAciT,GAEhD,OADAjT,EAAMiT,IAAMA,EACLgN,EAAajgB,EAAMwe,QAAQt8B,gBAAkBhR,EAAEgR,cAAgB8d,EAAMwe,UAAYttC,CAC5F,IAAG,E,EAGPkuC,EAAAn/C,UAAA2F,KAAA,SAAKsL,EAAI9G,GACL,OAAKnJ,UAAUC,QACfV,KAAK8+C,MAAQl1C,EAAQ8G,EAAErC,KAAI,SAAUnP,GAAK,OAAOA,EAAEmP,KAAI,SAAUke,GAAM,OAAOA,CAAG,GAAI,IAAM7b,EAC3F1Q,KAAK0/C,oBACE1/C,MAHuBA,KAAK8+C,K,EAMvCF,EAAAn/C,UAAAkgD,WAAA,WACI,IAAM9P,EAAU7vC,KAChB,OAAOA,KAAK8+C,MAAMzwC,KAAI,SAAUioB,GAC5B,OAAOA,EAAIjoB,KAAI,SAAUuxC,EAAMnN,GAC3B,OAAO5C,EAAQqP,SAASzM,GAAKroB,MAAMw1B,EACvC,GACJ,G,EAGJhB,EAAAn/C,UAAAogD,cAAA,eAMCzR,EAAApuC,KALG,OAAOA,KAAK8+C,MAAMzwC,KAAI,SAAAioB,GAClB,OAAO8X,EAAK8Q,SAAS7wC,KAAI,SAACmxB,EAAOiT,GAC7B,OAAOjT,EAAMxU,UAAUsL,EAAImc,GAC/B,GACJ,G,EAGJmM,EAAAn/C,UAAAqgD,eAAA,WACI,OAAO7B,GAAiBj+C,KAAKk/C,SAAS7wC,KAAI,SAAUmxB,GAAS,OAAOA,EAAMyY,UAAW,I,EAGzF2G,EAAAn/C,UAAAo/C,aAAA,WACI,OAAOZ,GAAiBj+C,KAAKg/C,cAAgBh/C,KAAK++C,eAAiB/+C,KAAKi/C,a,EAG5EL,EAAAn/C,UAAAw4C,SAAA,WACI,OAAOgG,GAAiB,CAACj+C,KAAK6+C,eAAgB7+C,KAAK8/C,kB,EAI/ClB,EAAiBn/C,UAAAigD,kBAAzB,SAA0BjN,GAStB,QAREzyC,KAAKi/C,aACHj/C,KAAKg/C,gBACDv+C,UAAUC,OACVV,KAAK++C,eAAetM,GAAOwL,GAAiBj+C,KAAK8+C,MAAMrM,IAEvDzyC,KAAK++C,eAAiB/+C,KAAK8+C,MAAMzwC,KAAI,SAAUioB,GAAO,OAAO2nB,GAAiB3nB,EAAK,KAGpFt2B,I,EAGX4+C,EAAAn/C,UAAA62B,IAAA,SAAIA,EAAM5lB,EAAI+tC,GACV,GAAIh+C,UAAUC,OAAS,EAAG,OAAe,IAAR41B,EAAYt2B,KAAKk/C,SAAS7wC,KAAI,SAAUnP,GAAK,OAAOA,EAAE8+C,OAAQ,IAAMh+C,KAAK8+C,MAAMxoB,EAAM,GACtH,GAAY,IAARA,EAAW,CACX,IAAMypB,EAAY//C,KAAKk/C,SACvBl/C,KAAKk/C,OAAOxuC,EAAErC,KAAI,SAAUmxB,EAA+BiT,GACvD,MAAqB,iBAAVjT,EACHif,GACQsB,EAAUtN,IAAQ,IAAIoL,IAASc,cAAcnf,IAE7CugB,EAAUtN,IAAQ,IAAIoL,IAASG,MAAMxe,GAG7Cif,GACQsB,EAAUtN,IAAQ,IAAIoL,IACzBc,cAAcnf,EAAMwe,OACpBvuB,SAAS+P,EAAMvH,UAGZ8nB,EAAUtN,IAAQ,IAAIoL,IACzBG,MAAMxe,EAAMwe,OACZvuB,SAAS+P,EAAMvH,QAIhC,GAAGj4B,M,MAEHA,KAAK8+C,MAAMxoB,EAAM,GAAK5lB,EACtB1Q,KAAK0/C,kBAAkBppB,EAAM,GAEjC,OAAOt2B,I,EAGX4+C,EAAIn/C,UAAA64B,KAAJ,SAAK5nB,GACD,OAAKjQ,UAAUC,QACfV,KAAKs2B,IAAI,EAAG5lB,EAAE,IACd1Q,KAAK8+C,MAAQpuC,EAAElD,QAAO,SAAUwyC,EAAMvN,GAAO,OAAOA,EAAM,CAAE,IAC5DzyC,KAAK0/C,oBACE1/C,MAJuB,CAACA,KAAKs2B,IAAI,IAAIp0B,OAAOlC,KAAK8+C,M,EAQ5DF,EAAAn/C,UAAAg5B,OAAA,SAAOwnB,EAAKvvC,GACR,OAAIjQ,UAAUC,OAAS,EAAU,CAACV,KAAKk/C,SAASe,GAAKjC,SAAS97C,OAAOlC,KAAK8+C,MAAMzwC,KAAI,SAAUioB,EAAK4pB,GAAQ,OAAO5pB,EAAI2pB,EAAK,MAC3HvvC,EAAE8nB,SAAQ,SAAUt5B,EAAGuzC,GACP,IAARA,EACAzyC,KAAKk/C,SAASe,IAAO,IAAIpC,IAAQG,MAAMttC,EAAE,KAEzC1Q,KAAK8+C,MAAMrM,EAAM,GAAGwN,GAAO/gD,EAC3Bc,KAAK0/C,kBAAkBjN,EAAM,G,GAElCzyC,MACIA,K,EAGX4+C,EAAAn/C,UAAA0gD,WAAA,SAAWF,EAAKvvC,GACZ,OAAIjQ,UAAUC,OAAS,EAAUV,KAAK8+C,MAAMzwC,KAAI,SAAUioB,EAAK4pB,GAAQ,OAAO5pB,EAAI2pB,EAAK,KACvFvvC,EAAE8nB,SAAQ,SAAUt5B,EAAGuzC,GACnBzyC,KAAK8+C,MAAMrM,GAAKwN,GAAO/gD,EACvBc,KAAK0/C,kBAAkBjN,E,GACxBzyC,MACIA,K,EAGX4+C,EAAOn/C,UAAAw4B,QAAP,SAAQvnB,GACJ,OAAKjQ,UAAUC,QAGfgQ,EAAE8nB,SAAQ,SAAU4nB,EAAM3N,GACtBzyC,KAAKy4B,OAAOga,EAAK/hC,EAAE+hC,G,GACpBzyC,MACIA,MANuBA,KAAKk/C,SAAS7wC,KAAI,SAAU+xC,EAAM3N,GAC5D,OAAOzyC,KAAKy4B,OAAOga,E,GACpBzyC,K,EAQP4+C,EAAAn/C,UAAAmgD,KAAA,SAAKtpB,EAAK2pB,EAAKvvC,GACX,OAAIjQ,UAAUC,OAAS,EAAUV,KAAKs2B,IAAIA,GAAK2pB,IACnC,IAAR3pB,EACAt2B,KAAKk/C,SAASe,IAAO,IAAIpC,IAAQG,MAAMttC,IAEvC1Q,KAAK8+C,MAAMxoB,GAAK2pB,GAAOvvC,EACvB1Q,KAAK0/C,kBAAkBppB,IAEpBt2B,K,EAIX4+C,EAAIn/C,UAAA4gD,KAAJ,SAAK3vC,GACD,OAAOkuC,EAAKn/C,UAAU64B,KAAK33B,MAAMX,KAAMS,U,EAK3Cm+C,EAAAn/C,UAAA6gD,cAAA,SAAcroB,EAASsoB,GAEnB,IAAKvgD,KAAKk/C,SAASx+C,SAAWV,KAAK8+C,MAAMp+C,OACrC,MAAO,GAEX,IAAM8/C,EAAgB,GAClBC,GAAY,EA2BhB,GA1BAxoB,EAAQO,SAAQ,SAAUkoB,EAASjO,GAC/B,IAAMkO,EAAe,CACjBC,SAAS,EACT3O,KAAM,GACN/lC,OAAQ,IAEZ,GAAIw0C,EAAQG,cACRF,EAAa1O,KAAOyO,EAAQI,WACF,UAAtBH,EAAa1O,KACb0O,EAAaC,SAAU,EAEvBH,GAAY,EAGhBC,EAAQx0C,SAASssB,SAAQ,SAAUua,GAC/B,IAAMvT,EAAQx/B,KAAKw/C,aAAazM,GAAO,GACvC4N,EAAaz0C,OAAOnC,KAAKy1B,EAAQA,EAAMiT,KAAO,E,GAC/CzyC,UACA,CACH2gD,EAAaC,SAAU,EACvB,IAAMphB,EAAQx/B,KAAKw/C,aAAakB,EAAQtuC,MAAM,GAC9CuuC,EAAaz0C,OAAOnC,KAAKy1B,EAAQA,EAAMiT,KAAO,E,CAElD+N,EAAcz2C,KAAK42C,E,GACpB3gD,MAECygD,EAAW,CACX,IAAM9K,EAAS,GA6Bf,OA5BA31C,KAAK02B,OAAO8pB,EAAchzC,QAAO,SAAUmzC,GACvC,OAAgC,IAAzBA,EAAaC,OACxB,IAAGvyC,KAAI,SAAUnP,GACb,OAAOA,EAAEgN,OAAO,E,KAChB,SAAU60C,GACV,IAAMzqB,EAAMkqB,EAAcnyC,KAAI,SAAUsyC,GACpC,IAAMK,EAASL,EAAaz0C,OAAO,GAC7B+0C,EAASN,EAAaz0C,OAAO,GACnC,OAAQy0C,EAAa1O,MACjB,IAAK,MACD,OAAO7b,GAAM2qB,GAAQ,SAAU7hD,GAAK,OAAOA,EAAE8hD,EAAQ,IACzD,IAAK,MACD,OAAOjrB,GAAOgrB,GAAQ,SAAU7hD,GAAK,OAAOA,EAAE8hD,GAAU9hD,EAAE+hD,EAAQ,IACtE,IAAK,MACD,OAAO9qB,GAAM4qB,GAAQ,SAAU7hD,GAAK,OAAOA,EAAE8hD,EAAQ,IACzD,IAAK,MACD,OAAOlrB,GAAMirB,GAAQ,SAAU7hD,GAAK,OAAOA,EAAE8hD,EAAQ,IACzD,IAAK,QAGD,OAFAtT,QAAQiD,KAAK,yBAA2BgQ,EAAa1O,MAE9Clc,GAAOgrB,GAAQ,SAAU7hD,GAAK,OAAOA,EAAE8hD,IAAWC,CAAO,IAGxE,OAAOF,EAAO,GAAGC,EACrB,IAEA,OADArL,EAAO5rC,KAAKusB,GACLA,CACX,IACOqf,C,CAEP,OAAO31C,KAAK8+C,MAAMzwC,KAAI,SAAUioB,GAC5B,OAAOkqB,EAAcnyC,KAAI,SAAUsyC,GAC/B,IAAMK,EAASL,EAAaz0C,OAAO,GAC7B+0C,EAASN,EAAaz0C,OAAO,GACnC,OAAQy0C,EAAa1O,MACjB,IAAK,QACD,OAAO3b,EAAI0qB,IAAWC,EAC1B,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACDvT,QAAQiD,KAAK,yBAA2BgQ,EAAa1O,MAE7D,OAAO3b,EAAI0qB,EACf,GACJ,G,EAIRpC,EAAAn/C,UAAAyhD,WAAA,WACI,OAAO,IAAIC,GAAWnhD,K,EAG1B4+C,EAAQn/C,UAAA2hD,SAAR,SAASC,GACL,OAAO,IAAIC,GAAWthD,KAAMqhD,E,EAGhCzC,EAAAn/C,UAAA8hD,WAAA,SAAWF,EAAgBG,GACvB,OAAO,IAAIF,GAAWthD,KAAMqhD,EAAgBG,E,EAGhD5C,EAAan/C,UAAAgiD,cAAb,SAAcJ,EAAgBK,EAAUC,EAAYC,QAAA,IAAAA,MAAoB,IACpE,IAAM/R,EAAU7vC,KAChB,OAAO,IAAIshD,GAAWthD,KAAMqhD,GAAgB,SAAUj7B,GAClD,OAAQs7B,GACJ,KAAK,KACL,UAAKrxB,EACL,IAAK,GAED,OADAjK,EAAOy7B,UAAYz7B,EAAO1lB,OACnB0lB,EACX,QACI,IAAM6R,EAAU4X,EAAQuP,gBAClB0C,EAAS7pB,EAAQp1B,QAAQ8+C,GACzBI,EAAW9pB,EAAQp1B,QAAQ++C,GAIjC,OAHAx7B,EAAOy7B,UAAYpE,GAAOiE,GAAUt7B,GAAQ,SAAUhgB,GAClD,QAASA,EAAM07C,IAAWC,GAAY,GAAK37C,EAAM27C,GAAY,KAAOA,GAAY,GAAK37C,EAAM27C,GAAY,EAC3G,IACO37B,EAEnB,G,EAIIw4B,EAAAn/C,UAAAuiD,MAAR,SAAcX,EAAgBY,GACpBZ,aAA0B9hD,QAC5B8hD,EAAiB,CAACA,IAEtB,IAAM1qB,EAAOH,KAMb,OALA6qB,EAAe7oB,SAAQ,SAAUia,GAC7B9b,EAAK51B,KAAI,SAAU7B,GACf,OAAOA,EAAEuzC,EACb,GACJ,IACO9b,C,EAGXioB,EAAIn/C,UAAAk3B,KAAJ,SAAK0qB,GACD,OAAOrhD,KAAKgiD,MAAMX,GACblqB,QAAQn3B,KAAK8+C,M,EAItBF,EAAAn/C,UAAAi3B,OAAA,SAAO2qB,EAAgB3qB,GACnB,OAAO12B,KAAKgiD,MAAMX,GACb3qB,OAAOA,GACPS,QAAQn3B,KAAK8+C,M,EAKtBF,EAAAn/C,UAAAiB,OAAA,WACI,OAAOV,KAAK8+C,MAAMp+C,OAAS,C,EAG/Bk+C,EAAAn/C,UAAAk5B,MAAA,WACI,OAAO34B,KAAKk/C,SAASx+C,M,EAGzBk+C,EAAAn/C,UAAAyiD,MAAA,WAGI,OAFAliD,KAAKm/C,eACLn/C,KAAKs4B,KAAKt4B,KAAKi4B,WACRj4B,I,EAGX4+C,EAAKn/C,UAAAmK,MAAL,SAAMwG,GACF,OAAO,IAAIwuC,GACNM,OAAOl/C,KAAKk/C,SAAU9uC,GACtBhL,KAAKpF,KAAKoF,OAAQgL,E,EAI3BwuC,EAAMn/C,UAAA+N,OAAN,SAAOA,GACH,IAAM20C,EAAY,GAIlB,OAHAniD,KAAKs2B,IAAI,GAAGkC,SAAQ,SAAUynB,EAAKxN,GAC/B0P,EAAUlC,GAAOxN,CACrB,KACO,IAAImM,GACNM,OAAOl/C,KAAKk/C,UAAU,GACtB95C,KAAKpF,KAAKoF,OAAOoI,QAAO,SAAU8oB,GAC/B,IAAK,IAAMv1B,KAAOyM,EACd,GAAIA,EAAOzM,KAASu1B,EAAI6rB,EAAUphD,IAC9B,OAAO,EAGf,OAAO,C,MAKnB69C,EAAOn/C,UAAA2iD,QAAP,SAAQnqB,GACEA,aAAmB14B,QACrB04B,EAAU,CAACA,IAEf,IAAM8X,EAAS,GAkBf,OAjBA9X,EAAQO,SAAQ,SAAUynB,GACtB,IAAMvpB,EAAS12B,KAAK02B,OAAOupB,GAAK,SAAUc,GACtC,OAAOA,EAAOrgD,MAClB,IACAqvC,EAAOhmC,KAAK2sB,GACZ,IAAME,EAAOF,EAAOroB,KAAI,SAAUnP,GAAK,OAAOA,EAAE6B,GAAI,IACpDf,KAAKk/C,SAASe,GAAKoC,UAAYC,GAAS1rB,EAAMyrB,IAC9CriD,KAAKk/C,SAASe,GAAKsC,SAAWD,GAAS1rB,EAAM2rB,IAC7CviD,KAAKk/C,SAASe,GAAKuC,UAAYxiD,KAAKk/C,SAASe,GAAKsC,UAAYD,GAAS1rB,EAAM4rB,IAC7ExiD,KAAKk/C,SAASe,GAAKwC,UAAYziD,KAAKk/C,SAASe,GAAKuC,UAAYF,GAAS1rB,EAAM6rB,IAC7EziD,KAAKk/C,SAASe,GAAKyC,WAAa1iD,KAAKk/C,SAASe,GAAKuC,UAAYF,GAAS1rB,EAAM8rB,IAC9E1iD,KAAKk/C,SAASe,GAAK0C,iBAAmB/E,GACtC59C,KAAKk/C,SAASe,GAAK2C,QAAU5iD,KAAKk/C,SAASe,GAAKyC,YAAcJ,GAAS1rB,EAAMgsB,IAC7E5iD,KAAKk/C,SAASe,GAAK4C,aAAejF,GAClC59C,KAAKk/C,SAASe,GAAK6C,OAAS9iD,KAAKk/C,SAASe,GAAKuC,WAAaxiD,KAAKk/C,SAASe,GAAKyC,aAAe1iD,KAAKk/C,SAASe,GAAK2C,QAAUN,GAAS1rB,EAAMksB,IAC1I9iD,KAAKk/C,SAASe,GAAK8C,aAAenF,E,GACnC59C,MACI+vC,C,EAIX6O,EAAOn/C,UAAAujD,QAAP,SAAQtyC,GACJ,OAAKjQ,UAAUC,QAOfV,KAAK23B,QACL33B,KAAKoF,KAAKsL,EAAErC,KAAI,SAAUioB,GACtB,IAAMyZ,EAAS,GACf,IAAK,IAAMhvC,KAAOu1B,EAAK,CACnB,IAAI2sB,EAASjjD,KAAKs2B,IAAI,GAAGzzB,QAAQ9B,GAC7BkiD,EAAS,IACTA,EAASjjD,KAAKk/C,SAASx+C,OACvBV,KAAKk/C,SAASn1C,MAAK,IAAI8zC,IAAQG,MAAMj9C,KAEzCgvC,EAAOkT,GAAU3sB,EAAIv1B,E,CAEzB,OAAOgvC,CACX,GAAG/vC,OACIA,MApBuBA,KAAK8+C,MAAMzwC,KAAI,SAAUioB,GACnD,IAAMyZ,EAAS,GAIf,OAHA/vC,KAAKs2B,IAAI,GAAGkC,SAAQ,SAAUynB,EAAKxN,GAC/B1C,EAAOkQ,GAAO3pB,EAAImc,EACtB,IACO1C,C,GACR/vC,K,EAmBP4+C,EAAIn/C,UAAAyjD,KAAJ,SAAKxyC,GACD,OAAKjQ,UAAUC,QACI,iBAAf,IACAgQ,EAAIynB,KAAK/N,MAAM1Z,IAEnB1Q,KAAKgjD,QAAQtyC,GACN1Q,MALuBm4B,KAAKC,UAAUp4B,KAAKgjD,UAAW,KAAM,K,EAUvEpE,EAAGn/C,UAAAo7B,IAAH,SAAInqB,GACA,IAAKjQ,UAAUC,OAAQ,CACnB,IAAMyiD,EAAOlgD,SAASK,cAAc,OACpC,OAAO8/C,GAAgBpjD,KAAKqgD,OAAOhyC,KAAI,SAAAioB,GACnC,OAAOA,EAAIjoB,KAAI,SAAAuxC,GACX,OAAOyD,GAA6BzD,EAAMuD,EAC9C,G,KAIR,OADAnjD,KAAKgjD,QAAQM,GAAW5yC,IACjB1Q,I,EAKX4+C,EAAGn/C,UAAA47B,IAAH,SAAI3qB,GACA,OAAKjQ,UAAUC,QACfV,KAAKgjD,QAAQO,GAAW7yC,IACjB1Q,MAFuBwjD,GAAgBxjD,KAAKqgD,O,EAI1DzB,CAAD,CAjdA,CAA0B1Q,IAkd1B0Q,GAAKn/C,UAAU0rC,QAAU,wBAMzByT,GAAKn/C,UAAUyxC,QAAQ,SAAU,GAAI,gBAAiB,UACtD,IAAMuS,GAAa7E,GAAKn/C,UAAUy/C,OAClCN,GAAKn/C,UAAUy/C,OAAS,SAAUxuC,EAAI9G,GAClC,OAAKnJ,UAAUC,OACR+iD,GAAW9jD,KAAKK,KAAM4J,EAAQ8G,EAAErC,KAAI,SAAUnP,GAAK,OAAOA,EAAE0K,OAAQ,IAAM8G,GADnD+yC,GAAW9iD,MAAMX,KAAMS,UAEzD,EAGA,IAAA0gD,GAAA,WAOI,SAAAA,EAAYd,GACRrgD,KAAK0jD,MAAQrD,C,CAqDrB,OAlDIc,EAAA1hD,UAAAw4C,SAAA,WACI,IAAM7xC,EAAQpG,KAAK0jD,MAAMx4C,GAAGvK,MAAMX,KAAK0jD,MAAOjjD,WAC9C,OAAO2F,IAAUpG,KAAK0jD,MAAQ1jD,KAAOoG,C,EAGzC+6C,EAAA1hD,UAAAy/C,OAAA,WACI,IAAM94C,EAAQpG,KAAK0jD,MAAMx4C,GAAGvK,MAAMX,KAAK0jD,MAAOjjD,WAC9C,OAAO2F,IAAUpG,KAAK0jD,MAAQ1jD,KAAOoG,C,EAGzC+6C,EAAA1hD,UAAA4gD,KAAA,WACI,OAAOrgD,KAAK0jD,K,EAEhBvC,EAAO1hD,UAAAw4B,QAAP,SAAQvnB,GACJ,OAAKjQ,UAAUC,QACfV,KAAK0jD,MAAMtE,cAAc1uC,GAClB1Q,MAFuBA,KAAK0jD,MAAMtE,e,EAI7C+B,EAAO1hD,UAAAkkD,QAAP,SAAQjzC,GACJ,OAAKjQ,UAAUC,QACfV,KAAK0jD,MAAMrE,WAAW3uC,GACf1Q,MAFuBA,KAAK0jD,MAAMrE,Y,EAI7C8B,EAAA1hD,UAAAogD,cAAA,WAKI,OAJI7/C,KAAK4jD,yBAA2B5jD,KAAK0jD,MAAMzL,aAC3Cj4C,KAAK4jD,uBAAyB5jD,KAAK0jD,MAAMzL,WACzCj4C,KAAK6jD,eAAiB7jD,KAAK0jD,MAAM7D,iBAE9B7/C,KAAK6jD,c,EAEhB1C,EAAA1hD,UAAAkgD,WAAA,WAKI,OAJI3/C,KAAK8jD,sBAAwB9jD,KAAK0jD,MAAMzL,aACxCj4C,KAAK8jD,oBAAsB9jD,KAAK0jD,MAAMzL,WACtCj4C,KAAK+jD,YAAc/jD,KAAK0jD,MAAM/D,cAE3B3/C,KAAK+jD,W,EAEN5C,EAAU1hD,UAAAukD,WAApB,SAAqBC,GACjB,GAAIA,EAAM,CACN,GAAIA,EAAKC,OACL,OAAOlkD,KAAK6/C,gBACT,GAAIoE,EAAKE,UACZ,OAAOnkD,KAAK6/C,e,CAGpB,OAAO7/C,KAAK2jD,S,EAEhBxC,EAAI1hD,UAAA2F,KAAJ,SAAKsL,GACD,OAAOywC,EAAW1hD,UAAUkkD,QAAQhjD,MAAMX,KAAMS,U,EAEvD0gD,CAAD,CA7DA,GA+DAG,GAAA,SAAAnT,GAMI,SAAAmT,EAAYjB,EAAMpoB,EAASvB,GACvB,IAAA0X,EAAAD,EAAKxuC,KAAAK,KAACqgD,IAAMrgD,K,OACNi4B,aAAmB14B,QACrB04B,EAAU,CAACA,IAEfmW,EAAKgW,gBAAkBnsB,EAAQzqB,QAAO,SAAUirB,GAAU,OAAOA,CAAO,IAAIpqB,KAAI,SAAUoqB,GACtF,MACS,iBADMA,EAEAz4B,KAAK0jD,MAAMlE,aAAa/mB,GAAQga,IAExCha,C,GACR2V,GAEH1X,EAASA,GAAU,SAAUx3B,GAAK,OAAOA,CAAE,EAC3CkvC,EAAK6T,QAAUvrB,E,EA4CvB,OAhEgC92B,EAAU0hD,EAAAnT,GAuBtCmT,EAAA7hD,UAAAk3B,KAAA,WACI,GAAI32B,KAAKqkD,gBAAkBrkD,KAAK0jD,MAAMzL,WAAY,CAC9Cj4C,KAAKqkD,cAAgBrkD,KAAK0jD,MAAMzL,WAEhC,IAAMqM,EAAO9tB,KACbx2B,KAAKokD,gBAAgB5rB,SAAQ,SAAUia,GACnC6R,EAAKvjD,KAAI,SAAU7B,GACf,OAAOA,EAAEuzC,EACb,GACJ,IACAzyC,KAAKgiD,MAAQsC,EACR5tB,OAAO12B,KAAKiiD,Q,CAGrB,OAAOjiD,KAAKgiD,K,EAEhBV,EAAO7hD,UAAA03B,QAAP,SAAQ8sB,GACJ,OAAOjkD,KAAK22B,OAAOQ,QAAQn3B,KAAKgkD,WAAWC,G,EAE/C3C,EAAG7hD,UAAA4O,IAAH,SAAI41C,GACA,OAAOjkD,KAAK22B,OAAOtoB,IAAIrO,KAAKgkD,WAAWC,G,EAE3C3C,EAAK7hD,UAAA8kD,MAAL,SAAMN,GACF,OAAOjkD,KAAK22B,OAAOtoB,IAAIrO,KAAKgkD,WAAWC,GAAOM,G,EAElDjD,EAAA7hD,UAAA+kD,UAAA,SAAUrtB,EAASstB,QAAA,IAAAA,MAAY,IAC3B,IAAI1U,EAAS,GAUb,OATA5Y,EAAQqB,SAAQ,SAAUksB,GAClBA,aAAiBnlD,MACjBwwC,EAAOhmC,KAAK06C,EAAQviD,OAAO,CAACwiD,KACrBA,EAAMt+B,kBAAkB7mB,MAC/BwwC,EAASA,EAAO7tC,OAAOlC,KAAKwkD,UAAUE,EAAMt+B,OAAQq+B,EAAQviD,OAAO,CAACwiD,EAAM3jD,QACnE2jD,EAAMt+C,iBAAiB7G,QAC9BwwC,EAASA,EAAO7tC,OAAOlC,KAAKwkD,UAAUE,EAAMt+C,MAAOq+C,EAAQviD,OAAO,CAACwiD,EAAM3jD,Q,GAE9Ef,MACI+vC,C,EAEXuR,EAAI7hD,UAAA2F,KAAJ,SAAK6+C,GACD,OAAOjkD,KAAKwkD,UAAUxkD,KAAKm3B,QAAQ8sB,G,EAE1C3C,CAAD,CAhEA,CAAgCH,IAmEhC,SAASmB,GAASqC,EAAOpyC,GAIrB,OAHMoyC,aAAiBplD,QACnBolD,EAAQ,CAACA,IAENA,EAAMn3C,QAAO,SAAUtO,GAAK,MAAa,KAANA,CAAS,IAAI8wB,MAAMzd,EACjE,CACA,SAAS8vC,GAAUzC,GACf,MAAuB,kBAATA,CAClB,CACA,SAAS2C,GAAS3C,GACd,MAAuB,iBAATA,IAAsBn9B,MAAMm9B,EAC9C,CACA,SAAS4C,GAAS5C,GACd,MAAuB,iBAATA,CAClB,CACA,IAAMgF,GAAkB,GAElBC,GAAc,CAChB,WACA,UAEEC,GAAc,CAChB,eACA,YACA,YAOJ,SAASC,GAAahgB,EAAS6a,GAC3B,IAAK,IAAIr/C,EAAI,EAAGA,EAAIwkC,EAAQrkC,SAAUH,EAAG,CAErC,GADaykD,YAAYjgB,EAAQxkC,GAApBykD,CAAwBpF,GAGjC,OADAhC,GAAkB7Y,EAAQxkC,GACnBwkC,EAAQxkC,E,CAGvB,OAAO,IACX,CACA,SAASmiD,GAAW9C,GAChB,OAAOmF,GAAaH,GAAiBhF,EACzC,CACA,SAASgD,GAAOhD,GACZ,OAAOmF,GAAaF,GAAajF,EACrC,CACA,SAASkD,GAAOlD,GACZ,OAAOmF,GAAaD,GAAalF,EACrC,CACA,SAAS6C,GAAU7C,GACf,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAM/8C,QAAQ/C,OAAO8/C,GAAMziB,gBAAkB,CACrZ,CA1BA0nB,GAAYrsB,SAAQ,SAAUt5B,GAC1B4lD,GAAYtsB,SAAQ,SAAUn4B,GAC1BukD,GAAgB76C,KAAK7K,EAAI,IAAMmB,EACnC,GACJ,I,oFCj0BA,SAAS4kD,GAAYC,EAAKC,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAbjiD,SAAnB,CAEA,IAAIoiD,EAAOpiD,SAASoiD,MAAQpiD,SAASqiD,qBAAqB,QAAQ,GAC9Dz+C,EAAQ5D,SAASK,cAAc,SACnCuD,EAAM0E,KAAO,WAEI,QAAb65C,GACEC,EAAK77C,WACP67C,EAAKxgD,aAAagC,EAAOw+C,EAAK77C,YAKhC67C,EAAK1gD,YAAYkC,GAGfA,EAAM0+C,WACR1+C,EAAM0+C,WAAWC,QAAUN,EAE3Br+C,EAAMlC,YAAY1B,SAASwiD,eAAeP,GAnBU,CAqBxD,C,2GCmBA,IAAIxI,GAAW,EACfgJ,GAAA,SAAAvX,GAyBI,SAAAuX,IACI,IAAAtX,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAtBFouC,EAAWuX,aAAY,EAEvBvX,EAAAwX,IAAM,IAAIhH,GAOVxQ,EAASyX,UAAc,GA8SzBzX,EAAA0X,SAAW,IAAI1mD,OAAO,IAkOtBgvC,EAAQ2X,SAAG,EA0FX3X,EAAA4X,YAAc3N,IAAS,SAAU4N,GACrCjmD,KAAKkmD,OAAOD,E,GACb,KA9lBC7X,EAAKjD,OAAS/rC,OAAOyvC,eAAeT,GAAMjD,OAC1CiD,EAAKngB,IAAMmgB,EAAK+X,QAAUzJ,KAE1BtO,EAAKwX,IAAM,IAAIhH,GACfxQ,EAAKgY,KAAO,CAAEx4C,EAAG,EAAGuD,EAAG,GACvBi9B,EAAKiY,MAAQ,CAAE1tB,MAAO,EAAGugB,OAAQ,GACjC9K,EAAKkY,aAAe,EACpBlY,EAAKmY,UAAW,EAEhBnY,EAAKoY,QAAU,KACfpY,EAAKqY,oBAAsB,KAC3BrY,EAAKsY,cAAgB,KAErBtY,EAAKuY,SAAWtR,GAAS,MAEzBjH,EAAKwY,aAAe,EAEfz6C,OAAeqhC,oBACcnd,IAAzBlkB,OAAe06C,QACf16C,OAAe06C,MAAQ,IAE3B16C,OAAe06C,MAAMzY,EAAKngB,KAAOmgB,GAEjCjiC,OAAe26C,cAChB1Y,EAAKuE,WAAYxmC,OAAe26C,c,EAgmB5C,OAnpBqClnD,EAAW8lD,EAAAvX,GAuD5CuX,EAAAjmD,UAAAsnD,eAAA,WACI,OAAO/mD,KAAK4lD,IAAI9F,gB,EAGpB4F,EAAAjmD,UAAAo/C,aAAA,WACI,OAAO7+C,KAAK4lD,IAAI/G,c,EAGpB6G,EAAUjmD,UAAAunD,WAAV,SAAWt2C,GAEP,OADA1Q,KAAK4lD,IAAI1C,KAAKxyC,GACP1Q,I,EAGX0lD,EAASjmD,UAAAwnD,UAAT,SAAUv2C,GAEN,OADA1Q,KAAK4lD,IAAI/qB,IAAInqB,GACN1Q,I,EAGX0lD,EAASjmD,UAAAynD,UAAT,SAAUx2C,GAEN,OADA1Q,KAAK4lD,IAAIvqB,IAAI3qB,GACN1Q,I,EAGX0lD,EAAMjmD,UAAA0nD,OAAN,SAAOz2C,GACH,YADG,IAAAA,MAAkC,QAC7BA,GACJ,IAAK,MACD,OAAO1Q,KAAK4lD,IAAI/qB,MACpB,IAAK,MACD,OAAO76B,KAAK4lD,IAAIvqB,MAEpB,QACI,OAAOr7B,KAAK4lD,IAAI1C,O,EAI5BwC,EAASjmD,UAAA2nD,UAAT,SAAUC,GAmBN,IAlBA,IAAMxX,EAAU7vC,KACVsnD,EAAa,CAACD,GACdE,EAAmB,IAAIC,kBAAiB,SAAUC,GACpD,IAAIC,GAAQ,EACZD,EAAUjvB,SAAQ,SAAUmvB,GACxB,IAAK,IAAIpnD,EAAI,EAAGA,EAAIonD,EAASC,aAAalnD,SAAUH,EAAG,CACnD,IAAM8E,EAAOsiD,EAASC,aAAa1Y,KAAK3uC,GACpC+mD,EAAWzkD,QAAQwC,IAAS,GAAKwqC,EAAQ2W,UACzCkB,GAAQ,EACRH,EAAiBM,a,CAG7B,IACIH,GACAha,QAAQrY,MAAM,UAAYwa,EAAQz9B,KAAO,MAAQy9B,EAAQzE,UAAY,+FAE7E,IACI0c,EAAQT,EAAQh+C,WACby+C,GACHP,EAAiBQ,QAAQD,EAAO,CAAEE,WAAW,IAC7CV,EAAWv9C,KAAK+9C,GAChBA,EAAQA,EAAMz+C,U,EAItBq8C,EAAAjmD,UAAAwoD,YAAA,WACI,OAAOjoD,KAAK4mD,Y,EAMhBlB,EAAAjmD,UAAAw4B,QAAA,SAAQvnB,EAAc+tC,GAClB,OAAKh+C,UAAUC,QACfV,KAAK4lD,IAAIxG,cAAc1uC,EAAG+tC,GACnBz+C,MAFuBA,KAAK4lD,IAAIxG,e,EAKjCsG,EAASjmD,UAAAyoD,UAAnB,SAAoBzvB,GAChB,OAAOz4B,KAAKi4B,UAAUp1B,QAAQ41B,E,EAGxBitB,EAAAjmD,UAAA0oD,YAAV,SAAyBlF,EAAgBmF,GACrC,OAAOnF,EAAS,EAAI,WAAM,OAAAmF,CAAQ,EAAG,SAAA9xB,GAAO,OAAAA,EAAI2sB,EAAJ,C,EAGtCyC,EAAAjmD,UAAA4oD,SAAV,SAAsB5vB,EAAgB2vB,GAClC,OAAOpoD,KAAKmoD,YAAenoD,KAAKkoD,UAAUzvB,GAAS2vB,E,EAGvD1C,EAAAjmD,UAAAkgD,WAAA,WACI,OAAO3/C,KAAK4lD,IAAIjG,Y,EAGpB+F,EAAAjmD,UAAAogD,cAAA,WACI,OAAO7/C,KAAK4lD,IAAI/F,e,EAKpB6F,EAAIjmD,UAAA2F,KAAJ,SAAKsL,GACD,OAAKjQ,UAAUC,QACfV,KAAK4lD,IAAIvG,WAAW3uC,GACb1Q,MAFuBA,KAAK4lD,IAAIvG,Y,EAK3CqG,EAAAjmD,UAAA6oD,UAAA,WACI,OAAOtoD,KAAKoF,OAAOiJ,KAAI,SAAUioB,GAAO,OAAOA,EAAIr0B,MAAM,EAAG,G,EAGhEyjD,EAAAjmD,UAAA8oD,YAAA,SAAYtwB,EAAoC7yB,QAApC,IAAA6yB,MAAoBj4B,KAAKi4B,gBAAW,IAAA7yB,MAAYpF,KAAKoF,QAC7D,IAAM2qC,EAAS,GAef,OAdA3qC,EAAKozB,SAAQ,SAAUlC,EAAKkyB,GACxBvwB,EAAQzqB,QAAO,SAAU4yC,EAAM3N,GAAO,OAAOA,EAAM,CAAE,IAAIja,SAAQ,SAAU4nB,EAAM3N,GAC7E,IAAMtC,EAAM7Z,EAAImc,EAAM,GACtB,QAAmB,IAARtC,EAAqB,CAC5B,IAAMsY,EAAU,CACZD,OAAMA,EACNvF,OAAQxQ,EAAM,EACduL,MAAO1nB,EAAI,GACXlwB,MAAO+pC,GAEXJ,EAAOhmC,KAAK0+C,E,IAEjBzoD,K,GACJA,MACI+vC,C,EAGX2V,EAAQjmD,UAAAipD,SAAR,SAASpyB,GACL,IAAKA,EAAK,MAAO,GACjB,IAAMyZ,EAAc,GAOpB,OANA/vC,KAAKk/C,SAAS1mB,SAAQ,SAAUgH,EAAOiT,GACnC1C,EAAOvQ,EAAMmf,iBAAmBnf,EAAMwe,SAAW1nB,EAAImc,EACzD,IACInc,EAAI51B,SAAWV,KAAKi4B,UAAUv3B,OAAS,IACvCqvC,EAAO4Y,SAAWryB,EAAIt2B,KAAKi4B,UAAUv3B,SAElCqvC,C,EAKX2V,EAAGjmD,UAAAo7C,IAAH,SAAInqC,GACA,OAAKjQ,UAAUC,QACfV,KAAKomD,KAAO11C,EACR1Q,KAAK4oD,iBACL5oD,KAAK4oD,gBACAh5C,KAAK,YAAa,aAAec,EAAE9C,EAAI,IAAM8C,EAAES,EAAI,UAAYnR,KAAKsmD,aAAe,KAGrFtmD,MAPuBA,KAAKomD,I,EAYvCV,EAACjmD,UAAAmO,EAAD,SAAE8C,GACE,OAAKjQ,UAAUC,QACfV,KAAK66C,IAAI,CAAEjtC,EAAG8C,EAAGS,EAAGnR,KAAKomD,KAAKj1C,IACvBnR,MAFuBA,KAAKomD,KAAKx4C,C,EAO5C83C,EAACjmD,UAAA0R,EAAD,SAAET,GACE,OAAKjQ,UAAUC,QACfV,KAAK66C,IAAI,CAAEjtC,EAAG5N,KAAKomD,KAAKx4C,EAAGuD,EAAGT,IACvB1Q,MAFuBA,KAAKomD,KAAKj1C,C,EAO5Cu0C,EAAIjmD,UAAAiO,KAAJ,SAAKgD,GACD,OAAKjQ,UAAUC,QACfV,KAAKqmD,MAAQ31C,EACT1Q,KAAK4oD,iBACL5oD,KAAK4oD,gBACAh5C,KAAK,QAASc,EAAEioB,OAChB/oB,KAAK,SAAUc,EAAEwoC,QAGnBl5C,MARuBA,KAAKqmD,K,EAavCX,EAAKjmD,UAAAk5B,MAAL,SAAMjoB,GACF,OAAKjQ,UAAUC,QACfV,KAAK0N,KAAK,CAAEirB,MAAOjoB,EAAGwoC,OAAQl5C,KAAKqmD,MAAMnN,SAClCl5C,MAFuBA,KAAKqmD,MAAM1tB,K,EAO7C+sB,EAAMjmD,UAAAy5C,OAAN,SAAOxoC,GACH,OAAKjQ,UAAUC,QACfV,KAAK0N,KAAK,CAAEirB,MAAO34B,KAAKqmD,MAAM1tB,MAAOugB,OAAQxoC,IACtC1Q,MAFuBA,KAAKqmD,MAAMnN,M,EAK7CwM,EAAAjmD,UAAAopD,OAAA,SAAOn7C,EAAcomB,GACjB,IAAI6E,EACAugB,EACJ,QAHiB,IAAAplB,MAAA,CAAiB6E,MAAO,EAAGugB,OAAQ,IAGhDxrC,GAAQA,EAAKirB,OAASjrB,EAAKwrC,OAC3BvgB,EAAQjrB,EAAKirB,MACbugB,EAASxrC,EAAKwrC,WACX,CACH,IAAMryC,EAAQsF,OAAO9E,iBAAiBrH,KAAKwmD,QAAS,MACpD7tB,EAAQyjB,WAAWv1C,EAAMO,iBAAiB,UAAY0sB,EAAM6E,MAC5DugB,EAASkD,WAAWv1C,EAAMO,iBAAiB,WAAa0sB,EAAMolB,M,CAMlE,OAJAl5C,KAAK0N,KAAK,CACNirB,MAAKA,EACLugB,OAAMA,IAEHl5C,I,EAKX0lD,EAAKjmD,UAAAqrB,MAAL,SAAMpa,GACF,OAAKjQ,UAAUC,QACfV,KAAKsmD,aAAe51C,EAChB1Q,KAAK4oD,iBACL5oD,KAAK4oD,gBACAh5C,KAAK,YAAa,aAAec,EAAE9C,EAAI,IAAM8C,EAAES,EAAI,UAAYnR,KAAKsmD,aAAe,KAGrFtmD,MAPuBA,KAAKsmD,Y,EAYvCZ,EAAOjmD,UAAAqpD,QAAP,SAAQp4C,GACJ,OAAKjQ,UAAUC,QACfV,KAAKumD,SAAW71C,EACZ1Q,KAAK2mD,UACL3mD,KAAK2mD,SACA9/C,MAAM,aAAc7G,KAAKumD,SAAW,KAAO,UAC3C1/C,MAAM,UAAW7G,KAAKumD,SAAW,KAAO,GAG1CvmD,MARuBA,KAAKumD,Q,EAavCb,EAAOjmD,UAAAspD,QAAP,SAAQr4C,GACJ,OAAKjQ,UAAUC,QACfV,KAAKgpD,SAAWt4C,EACZ1Q,KAAK2mD,UACL3mD,KAAK2mD,SAAS9/C,MAAM,UAAW7G,KAAKgpD,SAAW,KAAO,QAEnDhpD,MALuBA,KAAKgpD,Q,EAUvCtD,EAAQjmD,UAAAwpD,SAAR,SAASv4C,GACL,OAAKjQ,UAAUC,QACfV,KAAK6lD,UAAYn1C,EACV1Q,MAFuBA,KAAK6lD,S,EAQvCH,EAAAjmD,UAAAypD,QAAA,SAAQnoD,EAAaqF,GACjB,OAAI3F,UAAUC,OAAS,EAAUV,KAAK8lD,SAAS/kD,IAC/Cf,KAAK8lD,SAAS/kD,GAAOqF,EACdpG,K,EAGX0lD,EAAQjmD,UAAA0pD,SAAR,SAASC,GACL,SAASC,EAAKz7C,EAAG07C,GAQb,OAAO17C,GANCye,EAMaze,GAPE27C,EAOCD,GALhBt6C,KAAKwmB,IAAInJ,GAAMk9B,EAAYv6C,KAAKwmB,IAAInJ,KACpCA,GAAMk9B,EAAYv6C,KAAKwmB,IAAInJ,KAAQA,EAAK,EAAI,GAAK,IAE9CA,GALX,IAAuBk9B,EACfl9B,C,CAQZ,IAAMrqB,EAAIqnD,EAAKrpD,KAAKomD,KAAKx4C,EAAI5N,KAAKqmD,MAAM1tB,MAAQ,EAAGywB,GAC7C/oD,EAAIgpD,EAAKrpD,KAAKomD,KAAKj1C,EAAInR,KAAKqmD,MAAMnN,OAAS,EAAGkQ,GAG9ChjB,EAFIijB,EAAKrpD,KAAKomD,KAAKx4C,EAAI5N,KAAKqmD,MAAM1tB,MAAQ,EAAGywB,GAErCpnD,EACR4gB,EAFIymC,EAAKrpD,KAAKomD,KAAKj1C,EAAInR,KAAKqmD,MAAMnN,OAAS,EAAGkQ,GAEtC/oD,EACd,MAAO,CAAC,CAAEuN,EAAG5L,EAAIokC,EAAI,EAAGj1B,EAAG9Q,EAAIuiB,EAAI,GAAK,CAAE+V,MAAOyN,EAAG8S,OAAQt2B,G,EAIhE8iC,EAAQjmD,UAAA+pD,SAAR,SAAShU,GACL,IAAKA,EACD,OAAO,KAEX,IAAMf,EAAUY,GAASG,GACzB,GAAIf,EAAS,CACT,IAAM/E,EAAS+E,EAAQlwC,QACvB,GAAImrC,GAAUA,aAAkBgW,EAC5B,OAAOhW,C,CAGf,OAAO,I,EAGXgW,EAAAjmD,UAAAgqD,cAAA,WACI,OAAO,I,EAGX/D,EAAkBjmD,UAAAiqD,mBAAlB,SAAmBlU,GAEf,GADAA,EAAUA,IAAYx1C,KAAKwmD,QAAUxmD,KAAKwmD,QAAQn9C,WAAa,MAClD,CACT,IAAMqmC,EAAS1vC,KAAKwpD,SAAShU,GAC7B,GAAI9F,EACA,OAAOA,EACJ,GAAI8F,EAAQnsC,WACf,OAAOrJ,KAAK0pD,mBAAmBlU,EAAQnsC,W,CAG/C,OAAO,I,EAGXq8C,EAAajmD,UAAAkqD,cAAb,SAAcnU,GACV,OAAKA,EAGmB,QAApBA,EAAQgF,QACDhF,EAEJx1C,KAAK2pD,cAAcnU,EAAQnsC,YALvB,I,EAQfq8C,EAAAjmD,UAAAmqD,kBAAA,WAEI,IADA,IAAIla,EAAS1vC,KAAK0pD,mBAAmB1pD,KAAKwmD,SACnC9W,GAAQ,CACX,IAAMK,EAASL,EAAO+Z,gBACtB,GAAI1Z,EACA,OAAOA,EAEXL,EAAS1vC,KAAK0pD,mBAAmBha,EAAO8W,QAAQn9C,W,CAEpD,OAAO,I,EAGXq8C,EAAcjmD,UAAAoqD,eAAd,SAAeze,GACX,OAAOprC,KAAK8pD,sBAAsB,CAAC1e,G,EAGvCsa,EAAqBjmD,UAAAqqD,sBAArB,SAAsBC,GAElB,IADA,IAAIra,EAAS1vC,KAAK0pD,mBAAmB1pD,KAAKwmD,SACnC9W,GAAQ,CACX,IAA8C,IAA1Cqa,EAAWlnD,QAAQ6sC,EAAOtE,WAC1B,OAAOsE,EAEXA,EAAS1vC,KAAK0pD,mBAAmBha,EAAO8W,QAAQn9C,W,CAEpD,OAAO,I,EAGXq8C,EAAAjmD,UAAAuqD,eAAA,SAAexU,EAASpP,EAAGxjB,GACvB,IAAMhW,EAAO5M,KAAK2pD,cAAcnU,GAChC,IAAK5oC,EACD,OAAO,KAEX,IAAIiuC,EAAMjuC,EAAKoE,iBACTi5C,EAAMzU,EAAQ0U,SAEdna,EAAc,CAChBniC,GAFJitC,EAAMA,EAAIxpC,gBAAgB44C,IAEfr8C,EACPuD,EAAG0pC,EAAI1pC,GAEX,QAAUkf,IAAN+V,QAAyB/V,IAANzN,EAAiB,CACpC,IAAIlV,EAAOd,EAAKoE,iBAChBtD,EAAKE,EAAIw4B,EACT14B,EAAKyD,EAAIyR,EACTlV,EAAOA,EAAK2D,gBAAgB44C,GAC5Bla,EAAOpX,MAAQjrB,EAAKE,EAAIitC,EAAIjtC,EAC5BmiC,EAAOmJ,OAASxrC,EAAKyD,EAAI0pC,EAAI1pC,C,CAEjC,OAAO4+B,C,EAGX2V,EAAAjmD,UAAA0qD,WAAA,WACI,OAAOnqD,KAAK4oD,e,EAGhBlD,EAAAjmD,UAAA2qD,YAAA,WACI,GAAIpqD,KAAKqmD,MAAM1tB,OAAS34B,KAAKqmD,MAAMnN,OAAQ,CACvC,IAAMmR,EAASrqD,KAAKgqD,eAAehqD,KAAK4oD,gBAAgBvjD,OAAQrF,KAAKqmD,MAAM1tB,MAAO34B,KAAKqmD,MAAMnN,QAC7F,GAAImR,KAAYrqD,KAAKsqD,UAAYD,EAAOz8C,IAAM5N,KAAKsqD,SAAS18C,GAAKy8C,EAAOl5C,IAAMnR,KAAKsqD,SAASn5C,GAAKk5C,EAAO1xB,QAAU34B,KAAKsqD,SAAS3xB,OAAS0xB,EAAOnR,SAAWl5C,KAAKsqD,SAASpR,QAAS,CAC9K,IAAMqR,EAASF,EAAO1xB,MAAQ34B,KAAKqmD,MAAM1tB,MACnC6xB,EAASH,EAAOnR,OAASl5C,KAAKqmD,MAAMnN,OAC1Cl5C,KAAKymD,oBACA5/C,MAAM,OAAQwjD,EAAOz8C,EAAKy8C,EAAO1xB,MAAQ4xB,EAAU,EAAI,MACvD1jD,MAAM,MAAOwjD,EAAOl5C,EAAKk5C,EAAOnR,OAASsR,EAAU,EAAI,MACvD3jD,MAAM,QAASwjD,EAAO1xB,MAAQ4xB,EAAS,MACvC1jD,MAAM,SAAUwjD,EAAOnR,OAASsR,EAAS,MAE9C,IAAMx/B,EAAY,SAAWu/B,EAAS,IAAMC,EAAS,IACrDxqD,KAAKymD,oBACA5/C,MAAM,YAAamkB,GACnBnkB,MAAM,iBAAkBmkB,GACxBnkB,MAAM,gBAAiBmkB,GACvBnkB,MAAM,oBAAqBmkB,GAC3BnkB,MAAM,eAAgBmkB,E,CAG/BhrB,KAAKsqD,SAAWD,C,GAIxB3E,EAAAjmD,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GACrB,MAAO,CACH/U,EAAG,EACHuD,EAAG,EACHwnB,MAAO,EACPugB,OAAQ,E,EAIhBwM,EAAQjmD,UAAAk5C,SAAR,SAASC,EAA0BC,EAA8BC,EAAuBC,GACpF,YAD+B,IAAAF,MAA4B,gBAAE,IAAAC,MAAqB,SAAE,IAAAC,OAAqB,GAClGJ,GAASC,EAAOC,EAAUC,EAAUC,E,EAG/C2M,EAAQjmD,UAAAi6C,SAAR,SAASd,EAAeC,EAA8BC,EAAuBC,GACzE,YADoB,IAAAF,MAA4B,gBAAE,IAAAC,MAAqB,SAAE,IAAAC,OAAqB,GACvFW,GAASd,EAAOC,EAAUC,EAAUC,E,EAG/C2M,EAAAjmD,UAAAg1C,QAAA,WACI,OAAOz0C,KAAK2mD,Q,EAGhBjB,EAAAjmD,UAAA4F,KAAA,WACI,OAAOrF,KAAK2mD,SAASthD,M,EAKzBqgD,EAAMjmD,UAAAqB,OAAN,SAAO4P,GACH,IAAKjQ,UAAUC,OAAQ,OAAOV,KAAKwmD,QACnC,GAAIxmD,KAAKwmD,SAAW91C,EAChB,MAAM,IAAI8B,MAAM,qCAYpB,OAVU,OAAN9B,GACA1Q,KAAKwmD,QAAU,KACXxmD,KAAKioD,eACLjoD,KAAKmF,QAEW,iBAANuL,EACd1Q,KAAKwmD,QAAUvjD,SAASm3C,eAAe1pC,IAChCA,aAAai6C,aAAej6C,aAAak6C,cAChD5qD,KAAKwmD,QAAU91C,GAEZ1Q,I,EAGX0lD,EAAAjmD,UAAAorD,YAAA,WAGI,OAAO7qD,KAAK2lD,aAAgE,OAAjD3lD,KAAKymD,oBAAoBphD,OAAOylD,Y,EAG/DpF,EAAAjmD,UAAAsrD,QAAA,WACI,OAAQtoC,MAAMziB,KAAK24B,WAAalW,MAAMziB,KAAKk5C,S,EAGrCwM,EAAAjmD,UAAAurD,iBAAV,WACI,IAAIrb,EAAU,GAgBd,OAfA3vC,KAAK6tC,qBAAoB,GAAMrV,SAAQ,SAAUiW,GAC7C,IAAKA,EAAKrB,MAA2B,IAApBqB,EAAKrB,IAAI8Y,OACtB,OAAQzX,EAAKljC,MACT,IAAK,SACD,IAAMmkC,EAAS1vC,KAAKyuC,EAAKr8B,MACrBs9B,GACAC,EAAQ5lC,KAAK2lC,GAEjB,MACJ,IAAK,cACDC,EAAUA,EAAQztC,OAAOlC,KAAKyuC,EAAKr8B,O,GAIhDpS,MACI2vC,C,EAKX+V,EAAMjmD,UAAAymD,OAAN,SAAOx2C,GACH,GAAKvD,OAAeqhC,aAAc,CAC9B,IAAMh6B,EAAMC,KAAKD,MACbA,EAAMxT,KAAK+lD,SAAW,KACtBrY,QAAQrY,MAAM,oBAAsB7hB,EAAMxT,KAAK+lD,UAAY,MAAQ/lD,KAAKoS,KAAO,MAAQpS,KAAKorC,WAEhGprC,KAAK+lD,SAAWvyC,C,CAIpB,GADA9D,EAAWA,GAAY,cAClB1P,KAAKymD,sBAAwBzmD,KAAK8oD,WAAa9oD,KAAK6qD,gBAAkB7qD,KAAK+qD,UAE5E,OADAr7C,EAAS1P,MACFA,KAEX,GAAIA,KAAKymD,oBAAqB,CAC1B,IAAKzmD,KAAKirD,KACN,MAAM,IAAIz4C,MAAM,wBAEpB,IAAM0iC,EAAWl1C,KAAKymD,oBAAoBl5C,UAAU,IAAMvN,KAAKiuB,KAAK7oB,KAAK,CAACpF,OAAO,SAAUd,GAAK,OAAOA,EAAE+uB,GAAI,IAC7GinB,EAAShwC,QAAQuJ,OAAOzO,KAAKirD,MACxBl7C,QAAQ/P,KAAKmrC,QAAQ,GACrBv7B,KAAK,KAAM5P,KAAKiuB,KAEhBtgB,MAAK,SAAUu9C,GACZA,EAASvE,SAAWtR,GAASr1C,MAC7BkrD,EAAShmD,MAAMlF,KAAMkrD,EAASvE,UACzBx6C,OAAeqhC,cAChB0d,EAAS9D,UAAUpnD,KAE3B,IACC0O,MAAMwmC,GACNvnC,MAAK,SAAUu9C,GACZ,IAAMzW,EAAUY,GAASr1C,MACnB+P,EAAUm7C,EAASn7C,UACzB,IAAK,IAAMhP,KAAOgP,EACd0kC,EAAQ1kC,QAAQhP,EAAKgP,EAAQhP,IAEjCmqD,EAASC,UAAUnrD,KAAMkrD,EAASvE,UAClCuE,EAAS9mD,OAAOpE,KAAMkrD,EAASvE,UAC/BuE,EAASE,WAAWprD,KAAMkrD,EAASvE,SACvC,IAEJzR,EAAS/vC,OACJwI,MAAK,SAAUu9C,GACZ7V,GAASr1C,MAAMuE,MAAM,MACrB2mD,EAAS/lD,KAAKnF,KAAMkrD,EAASvE,SACjC,IACCp+C,SAELvI,KAAK4mD,c,CAIT,IAAMjX,EAAU3vC,KAAKgrD,mBAEfnb,EAAU7vC,KAChB,OAAQ2vC,EAAQjvC,QACZ,KAAK,EACDgP,EAAS1P,MACT,MACJ,KAAK,EACD2vC,EAAQ,GAAGuW,QAAO,WACdx2C,EAASmgC,EACb,IACA,MACJ,QACI,IAAIwb,EAAc1b,EAAQjvC,OAC1BivC,EAAQnX,SAAQ,SAAUkX,EAAQwQ,GAC9BrsC,YAAW,WACP67B,EAAOwW,QAAO,WACY,KAAhBmF,GACF37C,EAASmgC,EAEjB,G,GACD,EACP,IAGR,OAAO7vC,I,EAGX0lD,EAAAjmD,UAAA6rD,cAAA,eAMCld,EAAApuC,KALG,OAAO,IAAI4wB,SAAQ,SAACC,EAASC,GACzBsd,EAAK8X,QAAO,SAAC9f,GACTvV,EAAQuV,EACZ,GACJ,G,EAOJsf,EAAUjmD,UAAA8rD,WAAV,SAAW77C,GAEP,OADA1P,KAAKgmD,YAAYt2C,GACV1P,I,EAGX0lD,EAAAjmD,UAAA+rD,qBAAA,eAUCpd,EAAApuC,KADG,OARI2T,sBACAA,uBAAsB,WAClBy6B,EAAK8X,QACT,IAGAlmD,KAAKsrD,gBAEFtrD,I,EAGX0lD,EAAAjmD,UAAAyF,MAAA,SAAMumD,EAAuB9E,GAAQ,EACrCjB,EAAAjmD,UAAA0rD,UAAA,SAAUM,EAAuB9E,GAAQ,EACzCjB,EAAAjmD,UAAA2E,OAAA,SAAOqnD,EAAuB9E,GAAQ,EACtCjB,EAAAjmD,UAAA2rD,WAAA,SAAWK,EAAuB9E,GAAQ,EAC1CjB,EAAAjmD,UAAA0F,KAAA,SAAKsmD,EAAwB9E,GACzB3mD,KAAKgrD,mBAAmBxyB,SAAQ,SAAA4N,GAAK,OAAAA,EAAEtlC,OAAO,KAAT,G,EAE5C4kD,CAAD,CAnpBA,CAAqCxX,IAopBrCwX,GAAOjmD,UAAU0rC,QAAU,iBAW3Bua,GAAOjmD,UAAU0mD,QAAU,KAE3BT,GAAOjmD,UAAUqyC,aAAa,SAAU,MAAO,UAC/C4T,GAAOjmD,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,eAAgB,KAAM,CAAE8B,KAAM,CAAC,aACjF,IAAM0Y,GAAchG,GAAOjmD,UAAUsQ,QACrC21C,GAAOjmD,UAAUsQ,QAAU,SAAwB47C,EAAmDj7C,G,MAClG,GAAuB,iBAAZi7C,EAAsB,CAC7B,GAAyB,IAArBlrD,UAAUC,OAAc,OAAOgrD,GAAY/rD,KAAKK,MAAM2rD,GAC1D,IAAM57C,EAAU27C,GAAY/rD,KAAKK,MAEjC,OADA0rD,GAAY/rD,KAAKK,KAAIG,IAAA,GAAO4P,KAAOkgC,EAAA,IAAG0b,GAAUj7C,EAACu/B,KAC1CjwC,I,CAEX,OAAO0rD,GAAY/qD,MAAMX,KAAMS,UACnC,ECttBA,IAAAmrD,GAAA,SAAAzd,GAMI,SAAAyd,IACI,IAAAxd,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAERouC,EAAKyd,cAAgB,SACrBzd,EAAK6c,KAAO,MACZ7c,EAAK0d,aAAe,K,EA+K5B,OA1LgClsD,EAAMgsD,EAAAzd,GAclCyd,EAAcnsD,UAAAssD,eAAd,SAAetX,GAQX,OAPe2H,WAAW3H,EAAQ5tC,MAAM,iBACpCu1C,WAAW3H,EAAQ5tC,MAAM,kBACzBu1C,WAAW3H,EAAQ5tC,MAAM,gBACzBu1C,WAAW3H,EAAQ5tC,MAAM,iBACzBu1C,WAAW3H,EAAQ5tC,MAAM,sBACzBu1C,WAAW3H,EAAQ5tC,MAAM,sB,EAKjC+kD,EAASnsD,UAAAusD,UAAT,SAAUvX,GACN,OAAO2H,WAAW3H,EAAQ5tC,MAAM,UAAY7G,KAAK+rD,eAAetX,E,EAGpEmX,EAAensD,UAAAwsD,gBAAf,SAAgBxX,GAQZ,OAPe2H,WAAW3H,EAAQ5tC,MAAM,gBACpCu1C,WAAW3H,EAAQ5tC,MAAM,mBACzBu1C,WAAW3H,EAAQ5tC,MAAM,eACzBu1C,WAAW3H,EAAQ5tC,MAAM,kBACzBu1C,WAAW3H,EAAQ5tC,MAAM,qBACzBu1C,WAAW3H,EAAQ5tC,MAAM,uB,EAKjC+kD,EAAUnsD,UAAAysD,WAAV,SAAWzX,GACP,OAAO2H,WAAW3H,EAAQ5tC,MAAM,WAAa7G,KAAKisD,gBAAgBxX,E,EAGtEmX,EAAUnsD,UAAA0sD,WAAV,SAAW1X,GAEP,OADAA,EAAUA,GAAWz0C,KAAK2mD,UACX72C,SAAS,eAAiB2kC,EAAQ3kC,SAAS,c,EAG9D87C,EAAUnsD,UAAA2sD,WAAV,SAAW3X,GAEP,OADAA,EAAUA,GAAWz0C,KAAK2mD,UACX72C,SAAS,gBAAkB2kC,EAAQ3kC,SAAS,e,EAG/D87C,EAAAnsD,UAAA4sD,YAAA,WACI,OAAOrsD,KAAKqmD,MAAM1tB,MAAQ34B,KAAK+rD,eAAe/rD,KAAK2mD,S,EAGvDiF,EAAAnsD,UAAA6sD,aAAA,WACI,OAAOtsD,KAAKqmD,MAAMnN,OAASl5C,KAAKisD,gBAAgBjsD,KAAK2mD,S,EAGzDiF,EAAAnsD,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GACrB,QADI,IAAA+nC,OAAe,QAAE,IAAA/nC,OAAa,GAC9B+nC,GAAiC,OAAtB1qD,KAAK8rD,aAAuB,CACvC,IAAMtW,EAAUx1C,KAAK2mD,SAASthD,OAASrF,KAAK2mD,SAASthD,OAAOknD,kBAAoB,KAChF,GAAI/W,aAAmBgX,QAAS,CAC5B,IAAMh7C,EAAOgkC,EAAQ/jC,wBACrBzR,KAAK8rD,aAAe,CAChBl+C,EAAG4D,EAAKE,KACRP,EAAGK,EAAKI,IACR+mB,MAAOnnB,EAAKmnB,MACZugB,OAAQ1nC,EAAK0nC,O,EAIzB,OAA0B,OAAtBl5C,KAAK8rD,aACE,CACHl+C,EAAG,EACHuD,EAAG,EACHwnB,MAAO,EACPugB,OAAQ,GAGT,CACHtrC,GAAI+U,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAal+C,GAAK5N,KAAK8rD,aAAal+C,GAAK5N,KAAKsmD,aAC1En1C,GAAIwR,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAa36C,GAAKnR,KAAK8rD,aAAa36C,GAAKnR,KAAKsmD,aAC1E3tB,OAAQhW,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAanzB,OAAS34B,KAAK8rD,aAAanzB,OAAS34B,KAAKsmD,aACtFpN,QAASv2B,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAa5S,QAAUl5C,KAAK8rD,aAAa5S,QAAUl5C,KAAKsmD,a,EAIjGsF,EAAUnsD,UAAAgtD,WAAV,SAAW5R,GAQP,OANI76C,KAAKymD,qBACLzmD,KAAKymD,oBACA5/C,MAAM,OAAQg0C,EAAIjtC,EAAI,MACtB/G,MAAM,MAAOg0C,EAAI1pC,EAAI,MAGvBnR,I,EAGX4rD,EAAMnsD,UAAAopD,OAAN,SAAOn7C,GACH,IAAMqiC,EAAS5B,EAAK1uC,UAACopD,OAAOlpD,KAAAK,KAAA0N,GAO5B,OANI1N,KAAKymD,qBACLzmD,KAAKymD,oBACA5/C,MAAM,QAAS7G,KAAKqmD,MAAM1tB,MAAQ,MAClC9xB,MAAM,SAAU7G,KAAKqmD,MAAMnN,OAAS,MAGtCnJ,C,EAMX6b,EAAMnsD,UAAAqB,OAAN,SAAO4P,GAAP,IAuCC09B,EAAApuC,KAtCS+vC,EAAS5B,EAAK1uC,UAACqB,OAAOH,MAAMX,KAAMS,WACxC,GAAIA,UAAUC,OACV,GAAIV,KAAKwmD,mBAAmBoE,WAAY,CAEpC5qD,KAAK2lD,aAAc,EACnB,IAAM+G,EAAU1sD,KAAK4pD,oBACrB5pD,KAAKymD,oBAAsBiG,EAAQj+C,OAAO,OACrC5H,MAAM,WAAY,YAClBA,MAAM,MAAO,OACbA,MAAM,OAAQ,OACdA,MAAM,WAAY,UAEvB7G,KAAK4oD,gBAAkBvT,GAASr1C,KAAKwmD,SAErCxmD,KAAKsqD,SAAW,KAChBtqD,KAAK2sD,SAAW,IAAInF,kBAAiB,SAAAoF,GACjCxe,EAAKgc,aACT,IAGA,IADA,IAAI5U,EAAUx1C,KAAK4oD,gBAAgBvjD,OAC5BmwC,GACHx1C,KAAK2sD,SAAS5E,QAAQvS,EAAS,CAAEqX,YAAY,IAC7CrX,EAAUA,EAAQnsC,U,MAEnB,GAAIrJ,KAAKwmD,QAAS,CAErB,GADAxmD,KAAKymD,oBAAsBpR,GAASr1C,KAAKwmD,UACpCxmD,KAAKqmD,MAAM1tB,QAAU34B,KAAKqmD,MAAMnN,OAAQ,CACzC,IAAMvgB,EAAQyjB,WAAWp8C,KAAKymD,oBAAoB5/C,MAAM,UAClDqyC,EAASkD,WAAWp8C,KAAKymD,oBAAoB5/C,MAAM,WACzD7G,KAAK0N,KAAK,CACNirB,MAAKA,EACLugB,OAAMA,G,CAGdl5C,KAAKymD,oBAAsBpR,GAASr1C,KAAKwmD,SAAS/3C,OAAO,M,CAGjE,OAAOshC,C,EAGX6b,EAAAnsD,UAAA2rD,WAAA,SAAW5V,EAASf,GAEhB,GADAtG,EAAA1uC,UAAM2rD,WAAUzrD,KAAAK,KAACw1C,EAASf,GACC,WAAvBz0C,KAAK6rD,cACL7rD,KAAK2mD,SACA9/C,MAAM,WAAY,YAClBA,MAAM,OAAQ7G,KAAKomD,KAAKx4C,EAAI,MAC5B/G,MAAM,MAAO7G,KAAKomD,KAAKj1C,EAAI,UAE7B,CACH,IAAM27C,EAAO9sD,KAAKyqD,SAAQ,GAC1BzqD,KAAK2mD,SACA9/C,MAAM,WAAY,YAClBA,MAAM,QAAS,QACfA,MAAM,OAAQ7G,KAAKomD,KAAKx4C,GAAK5N,KAAKqmD,MAAM1tB,MAAQm0B,EAAKn0B,OAAS,EAAI,MAClE9xB,MAAM,MAAO7G,KAAKomD,KAAKj1C,GAAKnR,KAAKqmD,MAAMnN,OAAS4T,EAAK5T,QAAU,EAAI,K,GAKhF0S,EAAAnsD,UAAA0F,KAAA,SAAKqwC,EAAUf,GACPz0C,KAAK2sD,UACL3sD,KAAK2sD,SAAS9E,aAElB7nD,KAAKsqD,SAAW,KACZtqD,KAAKymD,qBACLzmD,KAAKymD,oBAAoBl+C,SAE7B4lC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAE3BmX,CAAD,CA1LA,CAAgClG,IA2LhCkG,GAAWnsD,UAAU0rC,QAAU,qBC5L/B,IAAA4hB,GAAA,SAAA5e,GAGI,SAAA4e,IACI,IAAA3e,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OACRouC,EAAK6c,KAAO,S,EAsBpB,OA3BkCrrD,EAAUmtD,EAAA5e,GAQxC4e,EAAMttD,UAAAopD,OAAN,SAAOn7C,GACH,IAAMqiC,EAAS5B,EAAK1uC,UAACopD,OAAOlpD,KAAAK,KAAA0N,GAC5B,IACI1N,KAAK2mD,SAAS/2C,KAAK,QAAS5P,KAAKqmD,MAAM1tB,OACvC34B,KAAK2mD,SAAS/2C,KAAK,SAAU5P,KAAKqmD,MAAMnN,QACxCl5C,KAAKgtD,c,CACP,MAAOz4C,GACLm5B,QAAQrY,MAAM9gB,E,CAElB,OAAOw7B,C,EAGXgd,EAAAttD,UAAAutD,aAAA,WACIhtD,KAAKitD,KAAOjtD,KAAK2mD,SAASthD,OAAOg1C,WAAW,K,EAGhD0S,EAAAttD,UAAA40C,MAAA,SAAMn1C,EAAG+B,G,EAGZ8rD,CAAD,CA3BA,CAAkCnB,IA4BlCmB,GAAattD,UAAU0rC,QAAU,uBCzB1B,IAEC+hB,GADEC,GAEAnqB,GAHGoqB,IACHD,GAAK7V,UAAU+V,UAEfrqB,GAAImqB,GAAG1/C,MAAM,iEAAmE,GAClF,WAAW8E,KAAKywB,GAAE,KAClBkqB,GAAM,kBAAkBvrC,KAAKwrC,KAAO,GAC7B/Q,WAAW8Q,GAAI,KAEtB,QAAQ36C,KAAKywB,GAAE,IACRoZ,WAAWpZ,GAAE,IAEjB,MAGEsqB,GAAqB,OAAdF,GACPG,GAAkBD,IAAQF,IAAa,GAEhDI,GAAkB,KA4BrBrhD,OAAeq7C,iBAAoBr7C,OAAeq7C,kBAAqBr7C,OAAeshD,wBAA2BthD,OAAeuhD,qBAAuB,SAAUh+C,GAE9J1P,KAAK0P,SAAWA,EAChB1P,KAAK2tD,UAAY,GAEjB,IAAMC,EAAmB,SAAUC,EAAWrY,EAASjqC,GACnDvL,KAAK0P,SAAWm+C,EAChB7tD,KAAKw1C,QAAUA,EACfx1C,KAAKuL,KAAOA,CAChB,EACAqiD,EAAiBnuD,UAAY,CACzBquD,YAAW,SAACxZ,GACR,IAAMqT,EAAW,CACbp8C,KAAMvL,KAAKuL,KACXzK,OAAQd,KAAKw1C,QACbuY,WAAY,GACZnG,aAAc,GACdr+C,gBAAiB+qC,EAAIxzC,OAAOyI,gBAC5BH,YAAakrC,EAAIxzC,OAAOsI,YACxB4kD,cAAe,KACfC,mBAAoB,KACpBC,SAAU,MAEdluD,KAAK0P,SAAS,CAACi4C,G,GAIvB3nD,KAAK+nD,QAAU,SAAUvS,EAAS2Y,GAC9B,IAAI3jD,EAAW,KACX2jD,EAAOtB,aACPriD,EAAW,IAAIojD,EAAiB5tD,KAAK0P,SAAU8lC,EAAS,cACxDx1C,KAAK2tD,UAAU5jD,KAAKS,GACpBgrC,EAAQ5pC,iBAAiB,kBAAmBpB,GAAU,IAGtD2jD,EAAOC,gBACP5jD,EAAW,IAAIojD,EAAiB5tD,KAAK0P,SAAU8lC,EAAS,iBACxDx1C,KAAK2tD,UAAU5jD,KAAKS,GACpBgrC,EAAQ5pC,iBAAiB,2BAA4BpB,GAAU,IAG/D2jD,EAAOnG,YACPx9C,EAAW,IAAIojD,EAAiB5tD,KAAK0P,SAAU8lC,EAAS,aACxDx1C,KAAK2tD,UAAU5jD,KAAKS,GACpBgrC,EAAQ5pC,iBAAiB,kBAAmBpB,GAAU,GACtDgrC,EAAQ5pC,iBAAiB,iBAAkBpB,GAAU,GAE7D,EAEAxK,KAAK6nD,WAAa,WACd7nD,KAAK2tD,UAAUn1B,SAAQ,SAAU0W,GAC7B,OAAQA,EAAK3jC,MACT,IAAK,aACD2jC,EAAKsG,QAAQhqC,oBAAoB,kBAAmB0jC,GAAM,GAC1D,MACJ,IAAK,gBACDA,EAAKsG,QAAQhqC,oBAAoB,2BAA4B0jC,GAAM,GACnE,MACJ,IAAK,YACDA,EAAKsG,QAAQhqC,oBAAoB,iBAAkB0jC,GAAM,GACzDA,EAAKsG,QAAQhqC,oBAAoB,kBAAmB0jC,GAAM,GAGtE,IACAlvC,KAAK2tD,UAAY,EACrB,CACJ,EAEC3+C,KAAaytB,KAAQztB,KAAaytB,MAAQ,SAAU7uB,GAEjD,OAAU,KADVA,GAAKA,IACU6U,MAAM7U,GACVA,EAEJA,EAAI,EAAI,GAAK,CACxB,E,kEApGI,GAAwB,OAApB4/C,GAA0B,CAC1B,IAAMa,EAAQprD,SAASK,cAAc,OACrC+qD,EAAMxnD,MAAMynD,WAAa,SACzBD,EAAMxnD,MAAM8xB,MAAQ,QAEpB01B,EAAMxnD,MAAM0nD,gBAAkB,YAE9BtrD,SAASy0C,KAAK/yC,YAAY0pD,GAE1B,IAAMG,EAAgBH,EAAMI,YAC5BJ,EAAMxnD,MAAM6nD,SAAW,SAEvB,IAAMC,EAAQ1rD,SAASK,cAAc,OACrCqrD,EAAM9nD,MAAM8xB,MAAQ,OACpB01B,EAAM1pD,YAAYgqD,GAElB,IAAMC,EAAkBD,EAAMF,YAE9BJ,EAAMhlD,WAAWK,YAAY2kD,GAE7Bb,GAAkBgB,EAAgBI,C,CAEtC,OAAOpB,EACX,E,2DA7CI,MAFa,YAGjB,ICDAr+B,GAAA,WAOI,SAAAA,EAAYugB,GACR1vC,KAAK6uD,QAAUnf,EACf1vC,KAAK8uD,UAAY,IACjB9uD,KAAK+uD,OAAS,EACd/uD,KAAKgvD,MAAQC,E,CA+BrB,OA5BI9/B,EAAQ1vB,UAAA8W,SAAR,SAAS7F,GACL,OAAKjQ,UAAUC,QACfV,KAAK8uD,UAAYp+C,EACV1Q,KAAK6uD,SAFkB7uD,KAAK8uD,S,EAKvC3/B,EAAK1vB,UAAA0U,MAAL,SAAMzD,GACF,OAAKjQ,UAAUC,QACfV,KAAK+uD,OAASr+C,EACP1Q,KAAK6uD,SAFkB7uD,KAAK+uD,M,EAKvC5/B,EAAI1vB,UAAA+W,KAAJ,SAAK9F,GACD,OAAKjQ,UAAUC,QACfV,KAAKgvD,MAAQt+C,EACN1Q,KAAK6uD,SAFkB7uD,KAAKgvD,K,EAKvC7/B,EAAK1vB,UAAAkB,MAAL,SAAMuM,GACF,OAAIlN,KAAK8uD,WAAa9uD,KAAK+uD,OAChB7hD,EAAU8gB,aACZzX,SAASvW,KAAK8uD,WACd36C,MAAMnU,KAAK+uD,QACXv4C,KAAKxW,KAAKgvD,OAGZ9hD,C,EAEdiiB,CAAD,CA1CA,GCSM+/B,GAAO,SAAUj+C,EAAcnF,EAAazL,GAE9C,MAAO,CACHuN,EAAGqD,EAAMrD,GAAK9B,EAAK8B,EAAIqD,EAAMrD,GAAKvN,EAClC8Q,EAAGF,EAAME,GAAKrF,EAAKqF,EAAIF,EAAME,GAAK9Q,EAE1C,EAGM8uD,GAAoB,SAAUC,EAAWC,EAAW1iC,EAAWgF,GAEjE,IAAMuF,EAA2B,CAAE3rB,KAAM,WAAY+jD,OAAQ,IACvDC,GAAO59B,EAAG/jB,EAAI+e,EAAG/e,IAAMwhD,EAAGj+C,EAAIwb,EAAGxb,IAAMwgB,EAAGxgB,EAAIwb,EAAGxb,IAAMi+C,EAAGxhD,EAAI+e,EAAG/e,GACjE4hD,GAAOH,EAAGzhD,EAAIwhD,EAAGxhD,IAAMwhD,EAAGj+C,EAAIwb,EAAGxb,IAAMk+C,EAAGl+C,EAAIi+C,EAAGj+C,IAAMi+C,EAAGxhD,EAAI+e,EAAG/e,GACjE6hD,GAAM99B,EAAGxgB,EAAIwb,EAAGxb,IAAMk+C,EAAGzhD,EAAIwhD,EAAGxhD,IAAM+jB,EAAG/jB,EAAI+e,EAAG/e,IAAMyhD,EAAGl+C,EAAIi+C,EAAGj+C,GAEtE,GAAW,IAAPs+C,EAAU,CACV,IAAMtC,EAAKoC,EAAME,EACXC,EAAKF,EAAMC,EAEb,GAAKtC,GAAMA,GAAM,GAAK,GAAKuC,GAAMA,GAAM,GACvCx4B,EAAO3rB,KAAO,eACd2rB,EAAOo4B,OAAOvlD,KAAK,CACf6D,EAAGwhD,EAAGxhD,EAAIu/C,GAAMkC,EAAGzhD,EAAIwhD,EAAGxhD,GAC1BuD,EAAGi+C,EAAGj+C,EAAIg8C,GAAMkC,EAAGl+C,EAAIi+C,EAAGj+C,MAG9B+lB,EAAO3rB,KAAO,iB,MAId2rB,EAAO3rB,KADC,IAARgkD,GAAqB,IAARC,EACC,aAEA,WAItB,OAAOt4B,CACX,EA4CAy4B,GAAA,WAOI,SAAYA,EAAA7uD,EAAQsR,GAChBpS,KAAKwN,OAAS1M,EAAO2N,OAAO,UACvBmB,KAAK,KAAMwC,GACXxC,KAAK,QAAS,QACdA,KAAK,SAAU,QACpB5P,KAAK4vD,SAAW5vD,KAAKwN,OAAOiB,OAAO,YAC9BmB,KAAK,SAAU,UACfA,KAAK,KAAM,iBACXA,KAAK,KAAM,KACXA,KAAK,KAAM,KAChB5P,KAAK6vD,cAAgB7vD,KAAKwN,OAAOiB,OAAO,iBACnCmB,KAAK,SAAU,aACfA,KAAK,KAAM,UACXA,KAAK,OAAQ,UACbA,KAAK,SAAU5P,KAAK8vD,gBAAgB,QAEzC9vD,KAAK+vD,eAAiB/vD,KAAKwN,OAAOiB,OAAO,kBACpCmB,KAAK,SAAU,WACfA,KAAK,KAAM,aACXA,KAAK,eAAgB,KAE1B5P,KAAKgwD,QAAUhwD,KAAKwN,OAAOiB,OAAO,WAC7BmB,KAAK,KAAM,iBACXA,KAAK,MAAO,WACZA,KAAK,OAAQ,S,CAiB1B,OAbI+/C,EAAelwD,UAAAqwD,gBAAf,SAAgBtuC,GACZ,IAAMJ,EAAM6uC,GAAMzuC,GAClB,MAAO,CACHJ,EAAIlgB,EAAI,IAAK,EAAG,EAAG,EAAGkgB,EAAIlgB,EAAI,EAAI,EAClC,EAAGkgB,EAAIa,EAAI,IAAK,EAAG,EAAGb,EAAIa,EAAI,EAAI,EAClC,EAAG,EAAGb,EAAIjiB,EAAI,IAAK,EAAGiiB,EAAIjiB,EAAI,EAAI,EAClC,EAAG,EAAG,EAAG,EAAG,GACd6K,KAAK,I,EAGX2lD,EAAMlwD,UAAA2E,OAAN,SAAOod,GACHxhB,KAAK6vD,cAAcjgD,KAAK,SAAU5P,KAAK8vD,gBAAgBtuC,G,EAE9DmuC,CAAD,CAhDA,GAkDAO,GAAA,SAAA/hB,GAYI,SAAA+hB,IACI,IAAA9hB,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAsBZouC,EAAe+hB,iBAAG,EASlB/hB,EAAqBgiB,uBAAG,EAuWxBhiB,EAAAiiB,qBAAuBhY,IAAS,SAAU5D,GAClC8Y,IACAvtD,KAAKswD,YAAY7b,E,GAEtB,KAxYCrG,EAAK6c,KAAO,IAEZ7c,EAAK0d,aAAe,KAEpB1d,EAAKpgB,WAAa,IAAImB,GAAWif,GAEjCA,EAAKyd,cAAgB,S,EA0Y7B,OA/Z+BjsD,EAAMswD,EAAA/hB,GAyBjC+hB,EAAAzwD,UAAA8wD,KAAA,SAAK7/C,EAAG8/C,GACJ,IAAMzgB,EAAS/vC,KAAK66C,IAAInqC,GAMxB,OALIjQ,UAAUC,SACT8vD,EAAqBxwD,KAAK2mD,SAAS34B,aAAazX,SAASi6C,GAAsBxwD,KAAK2mD,UAChF/2C,KAAK,YAAa,aAAa1N,OAAAwO,EAAE9C,EAAC,KAAA1L,OAAIwO,EAAES,EAAW,WAAAjP,OAAAlC,KAAKsmD,aAAY,MAGtEvW,C,EAMXmgB,EAAczwD,UAAAgxD,eAAd,SAAe//C,GACX,OAAKjQ,UAAUC,QACfV,KAAKmwD,gBAAkBz/C,EAChB1Q,MAFuBA,KAAKmwD,e,EAQvCD,EAAoBzwD,UAAAixD,qBAApB,SAAqBhgD,GACjB,OAAKjQ,UAAUC,QACfV,KAAKowD,sBAAwB1/C,EACtB1Q,MAFuBA,KAAKowD,qB,EAOvCF,EAAIzwD,UAAAiO,KAAJ,SAAKgD,GACD,IAAMq/B,EAAS5B,EAAK1uC,UAACiO,KAAK/M,MAAMX,KAAMS,WAItC,OAHIA,UAAUC,SACVV,KAAK8rD,aAAe,MAEjB/b,C,EAGXmgB,EAAMzwD,UAAAopD,OAAN,SAAOxC,GACH,IAAMtW,EAAS5B,EAAK1uC,UAACopD,OAAOloD,MAAMX,KAAMS,WACxC,GAAIT,KAAK2wD,mBAKL,GAJA3wD,KAAK2wD,mBACA9pD,MAAM,QAAS7G,KAAKqmD,MAAM1tB,MAAQ,MAClC9xB,MAAM,SAAU7G,KAAKqmD,MAAMnN,OAAS,MAGhC,WADDl5C,KAAK6rD,cAEL7rD,KAAK66C,IAAI,CACLjtC,EAAG,EACHuD,EAAG,SAMPnR,KAAK66C,IAAI,CACLjtC,EAAG5N,KAAKqmD,MAAM1tB,MAAQ,EACtBxnB,EAAGnR,KAAKqmD,MAAMnN,OAAS,IAOvC,OAFKz2B,MAAMziB,KAAKqmD,MAAM1tB,QAAQ34B,KAAKymD,oBAAoB72C,KAAK,QAAS5P,KAAKqmD,MAAM1tB,OAC3ElW,MAAMziB,KAAKqmD,MAAMnN,SAASl5C,KAAKymD,oBAAoB72C,KAAK,SAAU5P,KAAKqmD,MAAMnN,QAC3EnJ,C,EAGXmgB,EAAAzwD,UAAAy0C,UAAA,WACI,MAAO,MAAAhyC,OAAMlC,KAAKoS,KAAI,Q,EAK1B89C,EAAMzwD,UAAAqB,OAAN,SAAO4P,GACH,IAAMq/B,EAAS5B,EAAK1uC,UAACqB,OAAOH,MAAMX,KAAMS,WACxC,GAAIA,UAAUC,OACV,GAAIV,KAAKwmD,mBAAmBoE,WAAY,CACpC5qD,KAAK2lD,aAAc,EACnB3lD,KAAKymD,oBAAsBpR,GAASr1C,KAAKwmD,SACzCxmD,KAAK0mD,cAAgB1mD,KAAKymD,oBAAoBliD,QACzCvE,KAAK0mD,eAAiB1mD,KAAK0mD,cAAcz4B,MAAQjuB,KAAKiuB,MACvDjuB,KAAK0mD,cAAgB1mD,KAAK0pD,mBAAmB1pD,KAAKwmD,QAAQn9C,aAE9DrJ,KAAK4wD,eAAiB5wD,KAAK4pD,oBAC3B,IACMiH,EAAUxb,GADJr1C,KAAK2pD,cAAc3pD,KAAKwmD,UACNr5C,OAAuB,QACrDnN,KAAK8wD,oBAAsB,IAAInB,GAAckB,EAAS7wD,KAAKk0C,Y,MACxD,GAAIl0C,KAAKwmD,QAAS,CAErBxmD,KAAK2wD,mBAAqBtb,GAASr1C,KAAKwmD,SAAS/3C,OAAO,OACnD5H,MAAM,WAAY,YAEvB7G,KAAKymD,oBAAsBzmD,KAAK2wD,mBAAmBliD,OAAO,OACrD5H,MAAM,WAAY,YAClBA,MAAM,MAAO,OACbA,MAAM,OAAQ,OAEbgqD,EAAU7wD,KAAKymD,oBAAoBh4C,OAAO,QAChDzO,KAAK8wD,oBAAsB,IAAInB,GAAckB,EAAS7wD,KAAKk0C,aAC3Dl0C,KAAK4wD,eAAiB5wD,KAAK2wD,mBAAmBliD,OAAO,OAChD5H,MAAM,WAAY,YAClBA,MAAM,MAAO,OACbA,MAAM,OAAQ,OAEf7G,KAAKqmD,MAAM1tB,OAAS34B,KAAKqmD,MAAMnN,OAC/Bl5C,KAAK6oD,OAAO7oD,KAAKqmD,OAEjBrmD,KAAK6oD,OAAO,CAAElwB,MAAO,EAAGugB,OAAQ,G,CAI5C,OAAOnJ,C,EAGXmgB,EAAAzwD,UAAAgqD,cAAA,WACI,OAAOzpD,KAAK4wD,c,EAGhBV,EAAAzwD,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAGzByb,EAAAzwD,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GAClBz0C,KAAK8wD,qBACL9wD,KAAK8wD,oBAAoB1sD,OAAOpE,KAAK+wD,qB,EAI7Cb,EAAAzwD,UAAA2rD,WAAA,SAAW5V,EAASf,GAEhB,IAAIuc,EACAC,EAFJ9iB,EAAA1uC,UAAM2rD,WAAUzrD,KAAAK,KAACw1C,EAASf,GAGC,WAAvBz0C,KAAK6rD,eAA8B7rD,KAAKwmD,mBAAmBoE,YAC3DoG,EAAUhxD,KAAKomD,KAAKx4C,EAAI5N,KAAKqmD,MAAM1tB,MAAQ,EAC3Cs4B,EAAUjxD,KAAKomD,KAAKj1C,EAAInR,KAAKqmD,MAAMnN,OAAS,EAC5Cl5C,KAAK2mD,SAAS/2C,KAAK,YAAa,aAAeohD,EAAS,IAAMC,EAAS,UAAYjxD,KAAKsmD,aAAe,OAEvG0K,EAAShxD,KAAKomD,KAAKx4C,EACnBqjD,EAASjxD,KAAKomD,KAAKj1C,EACfnR,KAAKmwD,mBAEAa,EAAS,GAAKC,EAAS,IAAMjxD,KAAK8rD,cACnCkF,EAASA,EAAS,EAAI,EAAIA,EAC1BC,EAASA,EAAS,EAAI,EAAIA,EACtBjxD,KAAKowD,uBACLpwD,KAAK2wD,mBAAmB9pD,MAAM,WAAY,UAE9C7G,KAAKymD,oBAAoB72C,KAAK,QAAS5P,KAAK8rD,aAAanzB,OACzD34B,KAAKymD,oBAAoB72C,KAAK,SAAU5P,KAAK8rD,aAAa5S,SAE1Dl5C,KAAK2wD,mBAAmB9pD,MAAM,WAAY,OAGlD7G,KAAK2mD,SAAS/2C,KAAK,YAAa,aAAeohD,EAAS,IAAMC,EAAS,UAAYjxD,KAAKsmD,aAAe,K,EAI/G4J,EAAAzwD,UAAA0F,KAAA,SAAKqwC,EAAUf,GACPz0C,KAAK2wD,qBACL3wD,KAAK4wD,eAAeroD,SACpBvI,KAAKymD,oBAAoBl+C,SACzBvI,KAAK2wD,mBAAmBpoD,UAE5B4lC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAGxByb,EAAAzwD,UAAAyxD,aAAA,WACI,IAAInhB,EAAS,CAAEniC,EAAG,EAAGuD,EAAG,GACxB,OAAInR,KAAK0mD,gBACL3W,EAAS/vC,KAAK0mD,cAAcwK,gBACrBtjD,GAAK5N,KAAKomD,KAAKx4C,EACtBmiC,EAAO5+B,GAAKnR,KAAKomD,KAAKj1C,EACf4+B,GAEJA,C,EAGXmgB,EAAAzwD,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GACrB,QADI,IAAA+nC,OAAe,QAAE,IAAA/nC,OAAa,GAC9B+nC,GAAiC,OAAtB1qD,KAAK8rD,aAAuB,CACvC,IAAMriC,EAAsBzpB,KAAK2mD,SAASthD,OACtCokB,aAAmBmhC,aACnB5qD,KAAK8rD,aAAgBriC,EAAgBghC,U,CAG7C,OAA0B,OAAtBzqD,KAAK8rD,aACE,CACHl+C,EAAG,EACHuD,EAAG,EACHwnB,MAAO,EACPugB,OAAQ,GAGT,CACHtrC,GAAI+U,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAal+C,GAAK5N,KAAK8rD,aAAal+C,GAAK5N,KAAKsmD,aAC1En1C,GAAIwR,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAa36C,GAAKnR,KAAK8rD,aAAa36C,GAAKnR,KAAKsmD,aAC1E3tB,OAAQhW,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAanzB,OAAS34B,KAAK8rD,aAAanzB,OAAS34B,KAAKsmD,aACtFpN,QAASv2B,EAAQ3T,KAAK2T,MAAM3iB,KAAK8rD,aAAa5S,QAAUl5C,KAAK8rD,aAAa5S,QAAUl5C,KAAKsmD,a,EAKjG4J,EAAQzwD,UAAAyK,SAAR,SAAS+G,GACL,OAAOjR,KAAKmxD,aAAalgD,E,EAG7Bi/C,EAAYzwD,UAAA0xD,aAAZ,SAAalgD,GACT,IAAMvD,EAAO1N,KAAKyqD,UAClB,OAAOx5C,EAAMrD,GAAKF,EAAKE,GAAKqD,EAAMrD,GAAKF,EAAKE,EAAIF,EAAKirB,OAAS1nB,EAAME,GAAKzD,EAAKyD,GAAKF,EAAME,GAAKzD,EAAKyD,EAAIzD,EAAKwrC,M,EAGhHgX,EAAAzwD,UAAA2xD,eAAA,SAAeC,EAAgBpgD,GAC3B,IAAMqgD,EAAStxD,KAAKkxD,eACpB,OAAOlxD,KAAKuxD,SAASD,EAAQrgD,IAAUogD,C,EAG3CnB,EAAAzwD,UAAA+xD,aAAA,SAAaC,EAAeC,GACxB,OAAO1xD,KAAK2xD,cAAcF,EAAQC,E,EAGtCxB,EAAAzwD,UAAAkyD,cAAA,SAAcF,EAAeC,GACzB,IAAMJ,EAAStxD,KAAKkxD,eACdxjD,EAAO1N,KAAKyqD,UAClB,GAAIgH,EAAO7jD,IAAM8jD,EAAO9jD,GAAK6jD,EAAOtgD,IAAMugD,EAAOvgD,EAC7C,OAAOsgD,EAEX,IAAMG,EAAK,CAAEhkD,EAAG0jD,EAAO1jD,EAAIF,EAAKirB,MAAQ,EAAGxnB,EAAGmgD,EAAOngD,EAAIzD,EAAKwrC,OAAS,GACjE2Y,EAAK,CAAEjkD,EAAG0jD,EAAO1jD,EAAIF,EAAKirB,MAAQ,EAAGxnB,EAAGmgD,EAAOngD,EAAIzD,EAAKwrC,OAAS,GACjE4Y,EAAK,CAAElkD,EAAG0jD,EAAO1jD,EAAIF,EAAKirB,MAAQ,EAAGxnB,EAAGmgD,EAAOngD,EAAIzD,EAAKwrC,OAAS,GACjE6Y,EAAK,CAAEnkD,EAAG0jD,EAAO1jD,EAAIF,EAAKirB,MAAQ,EAAGxnB,EAAGmgD,EAAOngD,EAAIzD,EAAKwrC,OAAS,GACnEsY,EAAerC,GAAkByC,EAAIC,EAAIJ,EAAQC,GACrD,OAAIF,EAAalC,OAAO5uD,SAGxB8wD,EAAerC,GAAkB0C,EAAIC,EAAIL,EAAQC,IAChCpC,OAAO5uD,SAGxB8wD,EAAerC,GAAkB2C,EAAIC,EAAIN,EAAQC,IAChCpC,OAAO5uD,SAGxB8wD,EAAerC,GAAkB4C,EAAIH,EAAIH,EAAQC,IAChCpC,OAAO5uD,OAXb,CAAEkN,EAAG4jD,EAAalC,OAAO,GAAG1hD,EAAGuD,EAAGqgD,EAAalC,OAAO,GAAGn+C,GAc7D,I,EAGX++C,EAAAzwD,UAAAuyD,kBAAA,SAAkBC,EAAaC,GAC3B,IAAMtkD,EAAIoB,KAAK0T,IAAIuvC,EAAMrkD,EAAGskD,EAAMtkD,GAC5BuD,EAAInC,KAAK0T,IAAIuvC,EAAM9gD,EAAG+gD,EAAM/gD,GAGlC,MAAO,CACHvD,EAACA,EACDuD,EAACA,EACDwnB,OALYs5B,EAAMrkD,EAAIskD,EAAMtkD,EAAKoB,KAAKC,IAAIgjD,EAAMrkD,EAAIqkD,EAAMt5B,MAAOu5B,EAAMtkD,EAAIskD,EAAMv5B,OAAS3pB,KAAKC,IAAIijD,EAAMtkD,EAAIskD,EAAMv5B,MAAOs5B,EAAMrkD,EAAIqkD,EAAMt5B,QAK1H/qB,EAChBsrC,QALY+Y,EAAM9gD,EAAI+gD,EAAM/gD,EAAKnC,KAAKC,IAAIgjD,EAAM9gD,EAAI8gD,EAAM/Y,OAAQgZ,EAAM/gD,EAAI+gD,EAAMhZ,QAAUlqC,KAAKC,IAAIijD,EAAM/gD,EAAI+gD,EAAMhZ,OAAQ+Y,EAAM9gD,EAAI8gD,EAAM/Y,SAK5H/nC,E,EAIzB++C,EAAAzwD,UAAA0yD,gBAAA,SAAgBd,EAAgBI,EAAeC,GAC3C,IACMF,EA5Xc,SAAUvwD,EAAUC,EAAWkuD,EAAWC,GAElE,IAAMn4B,EAA6B,CAAE3rB,KAAM,eAAgB+jD,OAAQ,IAC7DzpD,GAAKwpD,EAAGzhD,EAAIwhD,EAAGxhD,IAAMyhD,EAAGzhD,EAAIwhD,EAAGxhD,IAChCyhD,EAAGl+C,EAAIi+C,EAAGj+C,IAAMk+C,EAAGl+C,EAAIi+C,EAAGj+C,GACzBhS,EAAI,IAAMkwD,EAAGzhD,EAAIwhD,EAAGxhD,IAAMwhD,EAAGxhD,EAAI3M,EAAE2M,IACpCyhD,EAAGl+C,EAAIi+C,EAAGj+C,IAAMi+C,EAAGj+C,EAAIlQ,EAAEkQ,IAGxBihD,EAAQjzD,EAAIA,EAAI,EAAI0G,GAFf5E,EAAE2M,EAAI3M,EAAE2M,EAAI3M,EAAEkQ,EAAIlQ,EAAEkQ,EAAIi+C,EAAGxhD,EAAIwhD,EAAGxhD,EAAIwhD,EAAGj+C,EAAIi+C,EAAGj+C,EACvD,GAAKlQ,EAAE2M,EAAIwhD,EAAGxhD,EAAI3M,EAAEkQ,EAAIi+C,EAAGj+C,GAAKjQ,EAAIA,GAGxC,GAAIkxD,EAAQ,EACRl7B,EAAO3rB,KAAO,eACX,GAAc,IAAV6mD,EACPl7B,EAAO3rB,KAAO,cAEX,CACH,IAAMgJ,EAAIvF,KAAK8V,KAAKstC,GACdC,IAAOlzD,EAAIoV,IAAM,EAAI1O,GACrBysD,IAAOnzD,EAAIoV,IAAM,EAAI1O,IAEtBwsD,EAAK,GAAKA,EAAK,KAAOC,EAAK,GAAKA,EAAK,GAElCp7B,EAAO3rB,KADN8mD,EAAK,GAAKC,EAAK,GAAOD,EAAK,GAAKC,EAAK,EACxB,UAEA,UAGlBp7B,EAAO3rB,KAAO,eAEV,GAAK8mD,GAAMA,GAAM,GACjBn7B,EAAOo4B,OAAOvlD,KAAKmlD,GAAKE,EAAIC,EAAIgD,IAEhC,GAAKC,GAAMA,GAAM,GACjBp7B,EAAOo4B,OAAOvlD,KAAKmlD,GAAKE,EAAIC,EAAIiD,I,CAI5C,OAAOp7B,CACX,CAqV6Bq7B,CADNvyD,KAAKkxD,eAC6BG,EAAQI,EAAQC,GACjE,OAAIF,EAAalC,OAAO5uD,OACb,CAAEkN,EAAG4jD,EAAalC,OAAO,GAAG1hD,EAAGuD,EAAGqgD,EAAalC,OAAO,GAAGn+C,GAE7D,I,EAGX++C,EAAAzwD,UAAA8xD,SAAA,SAASE,EAAeC,GACpB,OAAO1iD,KAAK8V,MAAM2sC,EAAO7jD,EAAI8jD,EAAO9jD,IAAM6jD,EAAO7jD,EAAI8jD,EAAO9jD,IAAM6jD,EAAOtgD,EAAIugD,EAAOvgD,IAAMsgD,EAAOtgD,EAAIugD,EAAOvgD,G,EAIhH++C,EAAYzwD,UAAA+yD,aAAZ,SAAaC,QAAA,IAAAA,MAAuCC,IAChD,IAAMC,EAAU3yD,KAAK2pD,cAAc3pD,KAAK2mD,SAASthD,QAC3CutD,EAAWD,EAAQ9oD,WAAU,GAC7BgpD,EAAYxd,GAASsd,GAASplD,UAAU,KAAKoC,QAWnD,GAVA0lC,GAASud,GAAUrlD,UAAU,KAAKI,MAAK,SAA4BzO,EAAGqB,GAElE,IADA,IAAMuyD,EAAa3mD,OAAO9E,iBAAiBwrD,EAAUtyD,IAC5CwyD,EAAI,EAAGA,EAAID,EAAWpyD,SAAUqyD,EAAG,CACxC,IAAMC,EAAYF,EAAW5jB,KAAK6jB,GAC5B5rD,EAAa2rD,EAAW1rD,iBAAiB4rD,GACzCC,EAAgBH,EAAWI,oBAAoBF,GACrDhzD,KAAK6G,MAAMI,YAAY+rD,EAAW7rD,EAAY8rD,E,CAEtD,IAEIR,EAAa,CACb,IAAMU,EAAOP,EAAStN,qBAAqB,QAC3C,GAAI6N,EAAKzyD,OAAQ,CACb,IAAM0yD,EAAanwD,SAASK,cAAc,SAC1C8vD,EAAW/sD,aAAa,OAAQ,YAChC+sD,EAAWrc,UAAY0b,EACvBU,EAAK,GAAGxuD,YAAYyuD,E,EAK5B,OADmB,IAAIC,eACLC,kBAAkBV,E,EAGxC1C,EAAMzwD,UAAA8zD,OAAN,SAAOd,GACH,YADG,IAAAA,MAAuCC,IACnC,IAAI1a,KAAK,CAACh4C,KAAKwyD,aAAaC,IAAe,CAAElnD,KAAM,iB,EAG9D2kD,EAASzwD,UAAA+zD,UAAT,SAAUf,QAAA,IAAAA,MAAuCC,I,IAAE,IAA4Be,EAAA,GAAA1kB,EAAA,EAA5BA,EAA4BtuC,UAAAC,OAA5BquC,IAAA0kB,EAA4B1kB,EAAA,GAAAtuC,UAAAsuC,GAC3E,IAAMY,EAAWhuC,EAAA,CAAA3B,MAASyzD,GAAY,GAChCC,EAAQ/jB,EAAQthC,KAAI,SAAAqhC,GAAU,OAAAA,EAAOia,cAAcja,EAAO+E,UAAUpvC,QAAQoM,uBAAuB,IACnGknB,EAAQ+6B,EAAMC,QAAO,SAACC,EAAMC,GAAS,OAAAD,EAAOC,EAAKl7B,KAAK,GAAE,GACxDugB,EAASlqC,KAAK0T,IAAL/hB,MAAAqO,KAAY0kD,EAAMrlD,KAAI,SAAA/N,GAAK,OAAAA,EAAE44C,MAAF,KAEpCU,EAAS32C,SAASK,cAAc,UACtCs2C,EAAOjhB,MAAQA,EACfihB,EAAOV,OAASA,EAChBU,EAAO/yC,MAAM8xB,MAAQA,EAAQ,KAC7B,IAAMm7B,EAAMla,EAAOS,WAAW,MAI9B,OAHAyZ,EAAIja,UAAY,QAChBia,EAAIC,SAAS,EAAG,EAAGp7B,EAAOugB,GAC1B4a,EAAIja,UAAY,cACT,IAAIjpB,SAAQ,SAACC,EAASC,GACzB,IAAIkjC,EAAO,EACXpjC,QAAQqjC,IAAItkB,EAAQthC,KAAI,SAACqhC,EAAQnvC,GAC7B,IAAMqN,EAAIomD,EACJ7iD,GAAK+nC,EAASwa,EAAMnzD,GAAG24C,QAAU,EAEvC,OADA8a,GAAQN,EAAMnzD,GAAGo4B,MACV,IAAI/H,SAAc,SAACC,EAASC,GAC/B,IAAMojC,EAAQ,IAAIC,MAClBD,EAAME,QAAUtjC,EAChBojC,EAAMG,OAAS,WACXP,EAAIQ,UAAUJ,EAAO,EAAG,EAAGR,EAAMnzD,GAAGo4B,MAAO+6B,EAAMnzD,GAAG24C,OAAQtrC,EAAGuD,EAAGuiD,EAAMnzD,GAAGo4B,MAAO+6B,EAAMnzD,GAAG24C,QAC3FroB,GACJ,EACAqjC,EAAMK,IAAM/c,IAAIC,gBAAgB/H,EAAO6jB,OAAOd,GAClD,GACJ,KAAI+B,MAAK,WACLV,EAAIla,OAAO2Z,OAAO1iC,EACtB,GACJ,G,EAGJq/B,EAAWzwD,UAAAg1D,YAAX,SAAYhC,QAAA,IAAAA,MAAuCC,IAC/C5a,GAAe,MAAO93C,KAAKwyD,aAAaC,G,EAG5CvC,EAAAzwD,UAAAi1D,YAAA,SAAYrd,EAA2Cob,QAA3C,IAAApb,MAAA,SAAAn1C,OAA4By1C,YAAe,IAAA8a,MAAuCC,I,IAAE,IAA4Be,EAAA,GAAA1kB,EAAA,EAA5BA,EAA4BtuC,UAAAC,OAA5BquC,IAAA0kB,EAA4B1kB,EAAA,GAAAtuC,UAAAsuC,GACxH/uC,KAAKwzD,UAAS7yD,MAAdX,KAAI2B,EAAA,CAAW8wD,GAAgBgB,GAAY,IAAEe,MAAK,SAAApd,GAAQ,OAAAD,GAAaC,EAAM,GAAAl1C,OAAGm1C,EAAQ,QAAO,G,EAInG6Y,EAAYzwD,UAAAk1D,aAAZ,SAAalgB,GACL8Y,KACA9Y,EAAUA,GAAWz0C,KAAK2mD,UAClBp5C,UAAU,uCACbqC,KAAK,eAAe,WAAc,OAAO5P,KAAKiI,aAAa,eAAgB,IAC3E2H,KAAK,aAAa,WAAc,OAAO5P,KAAKiI,aAAa,aAAc,IACvE2H,KAAK,eAAgB,MACrBA,KAAK,aAAc,K,EAKhCsgD,EAAWzwD,UAAA6wD,YAAX,SAAY7b,GACJ8Y,KACA9Y,EAAUA,GAAWz0C,KAAK2mD,UAClBp5C,UAAU,qCACbqC,KAAK,gBAAgB,WAClB,OAAO5P,KAAKiI,aAAa,cAC7B,IACC2H,KAAK,cAAc,WAAc,OAAO5P,KAAKiI,aAAa,YAAa,IACvE2H,KAAK,cAAe,MACpBA,KAAK,YAAa,K,EAW/BsgD,EAAazwD,UAAAm1D,cAAb,SAAcngB,GACN8Y,KACAvtD,KAAK20D,aAAalgB,GAClBz0C,KAAKqwD,qBAAqB5b,G,EA3Z3Byb,EAAM/kB,OAAG,mBA8ZnB+kB,C,CA/ZD,CAA+BxK,IAga/BwK,GAAUzwD,UAAU0rC,QAAU,oBAO9B+kB,GAAUzwD,UAAUyxC,QAAQ,qBAAsB,MAAO,aAAc,wB,6CCljBvE,IAAA2jB,GAAA,SAAA1mB,GAII,SAAA0mB,IACI,OAAA1mB,EAAKxuC,KAAAK,OAAGA,I,CA2FhB,OAhG0BJ,EAASi1D,EAAA1mB,GAQ/B0mB,EAAAp1D,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GAAzB,IAuBCyrB,EAAApuC,KAtBS80D,EAAY90D,KAAKgQ,OAAOpI,MAAM,MAC9BmtD,EAAa/0D,KAAK84C,YAAc,GAChCI,EAAS6b,EAAaD,EAAUp0D,OAChCs0D,EAAmBF,EAAUzmD,KAAI,SAAA+qC,GACnC,OAAOhL,EAAKuK,SAASS,EAAMhL,EAAK6mB,cAAgB,UAAWF,GAAYp8B,KAC3E,IACMA,EAAQ3pB,KAAK0T,IAAG/hB,MAARqO,KAAYgmD,GACpBjlB,EAAS,CACXniC,GAAK+qB,EAAQ,EACbxnB,GAAK+nC,EAAS,EAAI6b,GAAoC,gBAAtB/0D,KAAKi1D,aAAiC,EAAI,GAC1Et8B,MAAKA,EACLugB,OAAMA,GAEV,OAAQl5C,KAAKk1D,UACT,IAAK,QACDnlB,EAAOniC,EAAI,EACX,MACJ,IAAK,MACDmiC,EAAOniC,GAAK+qB,EAGpB,OAAOoX,C,EAGX8kB,EAAAp1D,UAAAyF,MAAA,SAAMswC,EAASf,GAAf,IAWCrG,EAAApuC,KAVGmuC,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,UACdz0C,KAAKm1D,UACZn1D,KAAKo1D,aAAe3gB,EAAQhmC,OAAO,QAC9BvD,GAAG,SAAS,WACTkjC,EAAKiG,OACT,IACCnpC,GAAG,YAAY,WACZkjC,EAAKinB,UACT,G,EAKRR,EAAAp1D,UAAA2E,OAAA,SAAOoxC,EAASf,GAAhB,IA0CCrG,EAAApuC,KAzCGmuC,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAMwE,EAAOj5C,KAAKqzC,QAAQ,GAAI,CAAE1a,MAAO34B,KAAK24B,UAC5C,GAAI34B,KAAKm1D,YAAclc,EAAM,CACzBj5C,KAAKm1D,UAAYlc,EAEjB,IAAMqc,EAAOt1D,KAAKyqD,UAElBzqD,KAAKo1D,aACAvuD,MAAM,YAAa7G,KAAK84C,YACxBjyC,MAAM,cAAe7G,KAAKk1D,UAC1BtlD,KAAK,aAAa,SAAA1Q,GAAK,gBAAAgD,OAAUksC,EAAKmnB,WAAU,kBAAArzD,OAAiBozD,EAAKnkD,EAAC,IAAhD,IAG5B,IAAMqkD,EAAQx1D,KAAK24B,QACb4Z,EAAUvyC,KACV80D,EAAY90D,KAAKgQ,OAAOpI,MAAM,MAC9B6tD,EAAWz1D,KAAKo1D,aAAa7nD,UAAU,SAASnI,KAAK0vD,GAC3DW,EAASvwD,QAAQuJ,OAAO,SACnBmB,KAAK,SAAS,SAAU8lD,EAAIn1D,GAAK,MAAO,SAAWA,CAAE,IACrDqP,KAAK,KAAM,OACXA,KAAK,IAAK,KACVlB,MAAM+mD,GACN5uD,MAAM,cAAe7G,KAAKi1D,cAC1BpuD,MAAM,OAAQ7G,KAAK21D,aACnB9uD,MAAM,SAAU7G,KAAK41D,eACrB5lD,MAAK,SAAC9Q,GACH,IAAKs2D,EAAO,OAAOt2D,EAInB,IAHA,IAAI6wC,EAAS7wC,EACP61D,EAAaxiB,EAAQuG,YAAc,GACrC+c,EAAU9lB,EAAOrvC,OAAS,EACvBm1D,GAAW,GAAKznB,EAAKuK,SAAS5I,EAAQ3B,EAAK6mB,cAAgB,UAAWF,GAAYp8B,MAAQ68B,GAC7FzlB,EAASA,EAAO+lB,OAAO,IAAKD,GAAW,MAAMC,OAAO,EAAGD,EAAU,GAErE,OAAO9lB,CACX,IAEJ0lB,EAAStwD,OACJoD,Q,GAMbssD,EAAAp1D,UAAA40C,MAAA,W,EAGAwgB,EAAAp1D,UAAA41D,SAAA,W,EAEHR,CAAD,CAhGA,CAA0B3E,IAiG1B2E,GAAKp1D,UAAU0rC,QAAU,eAuBzB0pB,GAAKp1D,UAAUyxC,QAAQ,OAAQ,GAAI,SAAU,eAAgB,KAAM,CAAE8B,KAAM,CAAC,WAC5E6hB,GAAKp1D,UAAUyxC,QAAQ,aAAc,KAAM,SAAU,cAAe,KAAM,CAAE8B,KAAM,CAAC,gBAAiB1F,UAAU,IAC9GunB,GAAKp1D,UAAUyxC,QAAQ,WAAY,KAAM,SAAU,qBAAsB,KAAM,CAAE8B,KAAM,CAAC,kBACxF6hB,GAAKp1D,UAAUyxC,QAAQ,SAAU,SAAU,MAAO,kBAAmB,CAAC,QAAS,SAAU,OAAQ,CAAE8B,KAAM,CAAC,kBAC1G6hB,GAAKp1D,UAAUyxC,QAAQ,YAAa,KAAM,aAAc,aAAc,KAAM,CAAE8B,KAAM,CAAC,WACrF6hB,GAAKp1D,UAAUyxC,QAAQ,cAAe,KAAM,aAAc,aAAc,KAAM,CAAE8B,KAAM,CAAC,WACvF6hB,GAAKp1D,UAAUyxC,QAAQ,WAAY,EAAG,SAAU,sBAAuB,KAAM,CAAE8B,KAAM,CAAC,W,kDC5HtF,IAAA+iB,GAAA,SAAA5nB,GAII,SAAA4nB,IACI,IAAA3nB,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAERouC,EAAKwK,OAAQ,IAAIic,IACZI,WAAW,e,EAqDxB,OA7D4Br1D,EAASm2D,EAAA5nB,GAYjC4nB,EAAAt2D,UAAAyF,MAAA,SAAMswC,EAASf,GAAf,IAaCrG,EAAApuC,KAZGmuC,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBz0C,KAAK44C,MACA93C,OAAO00C,GAEZf,EACKvpC,GAAG,SAAS,WACTkjC,EAAKiG,OACT,IACCnpC,GAAG,YAAY,WACZkjC,EAAKinB,UACT,G,EAIRU,EAAAt2D,UAAAu2D,SAAA,WACI,OAAOC,GAAej2D,KAAKk2D,O,EAG/BH,EAAAt2D,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBz0C,KAAK44C,MACA5oC,KAAKhQ,KAAKg2D,YACVf,WAAWj1D,KAAKm2D,mBAChBrrC,OAAO9qB,KAAK84C,YAAc,IAAM,IAChCoN,Q,EAIT6P,EAAAt2D,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAK44C,MACA93C,OAAO,MAGZqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAGxBshB,EAAAt2D,UAAA40C,MAAA,W,EAIA0hB,EAAAt2D,UAAA41D,SAAA,W,EAQHU,CAAD,CA7DA,CAA4B7F,IA8D5B6F,GAAOt2D,UAAU0rC,QAAU,iBAE3B4qB,GAAOt2D,UAAUyxC,QAAQ,OAAQ,GAAI,MAAO,oBAAqBklB,KAAkB,CAAEpjB,KAAM,CAAC,aAC5F+iB,GAAOt2D,UAAUyxC,QAAQ,WAAY,KAAM,SAAU,YAAa,KAAM,CAAE8B,KAAM,CAAC,aACjF+iB,GAAOt2D,UAAUqyC,aAAa,iBAAkB,QAAS,aACzDikB,GAAOt2D,UAAUqyC,aAAa,kBAAmB,QAAS,aAAc,eAGxE,IACa4gB,GAAoB,sFAGSxwD,OAJd,+jvNAIiC,2BChFzDuI,GAAQ,CACR4rD,aAAc,CACVC,WAAY,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,SAAU,SAAU,UAC3GC,UAAW,CAAC,QAAS,SAAU,QAAS,UAAW,UAAW,QAC9DC,UAAW,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,SAAU,SAAU,YAChFC,YAAa,CAAC,SAAU,QAAS,SAAU,UAAW,UAAW,OAAQ,OAAQ,SAClFC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,QAAS,CACR,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,MAAO,CACN,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,QAAS,CACR,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,MAAO,CACN,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,SAAU,CACT,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACpHC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClFC,MAAO,CACN,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClFC,OAAQ,CACP,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACnH,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC/HC,QAAS,CACR,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,QAAS,CACR,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClFC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAC7FC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClFC,KAAM,CACL,EAAG,CAAC,UAAW,UAAW,WAC1B,EAAG,CAAC,UAAW,UAAW,UAAW,WACrC,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,WAChD,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3D,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF,EAAG,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC5F,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACxG,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACnH,GAAI,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,a,8CCjTlI1kC,GAAQ30B,MAAME,UAEP4O,GAAM6lB,GAAM7lB,IACZpM,GAAQiyB,GAAMjyB,MCAd42D,GAAW,CAACl2D,KAAM,YAEd,SAASm2D,GAAQpkC,GAC9B,IAAIjqB,EAAQ4D,KACR0qD,EAAS,GACTC,EAAUH,GAId,SAAS/tC,EAAM5rB,GACb,IAAI6B,EAAM7B,EAAI,GAAIqB,EAAIkK,EAAM0H,IAAIpR,GAChC,IAAKR,EAAG,CACN,GAAIy4D,IAAYH,GAAU,OAAOG,EACjCvuD,EAAM4H,IAAItR,EAAKR,EAAIw4D,EAAOhvD,KAAK7K,GACrC,CACI,OAAOw1B,GAAOn0B,EAAI,GAAKm0B,EAAMh0B,OACjC,CAyBE,OAlCAg0B,EAAiB,MAATA,EAAgB,GAAKzyB,GAAMtC,KAAK+0B,GAWxC5J,EAAMiuC,OAAS,SAASroD,GACtB,IAAKjQ,UAAUC,OAAQ,OAAOq4D,EAAO92D,QACrC82D,EAAS,GAAItuD,EAAQ4D,KAErB,IADA,IAA0BnP,EAAG6B,EAAzBR,GAAK,EAAGC,EAAIkQ,EAAEhQ,SACTH,EAAIC,GAAQiK,EAAMitB,IAAI32B,GAAO7B,EAAIwR,EAAEnQ,IAAM,KAAKkK,EAAM4H,IAAItR,EAAKg4D,EAAOhvD,KAAK7K,IAClF,OAAO4rB,CACX,EAEEA,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUg0B,EAAQzyB,GAAMtC,KAAK+Q,GAAIoa,GAAS4J,EAAMzyB,OACrE,EAEE6oB,EAAMkuC,QAAU,SAAStoD,GACvB,OAAOjQ,UAAUC,QAAUs4D,EAAUtoD,EAAGoa,GAASkuC,CACrD,EAEEluC,EAAMlY,KAAO,WACX,OAAOkmD,KACFC,OAAOA,GACPrkC,MAAMA,GACNskC,QAAQA,EACjB,EAESluC,CACT,CC1Ce,SAASmuC,KACtB,IAIIzkC,EACA0kC,EALApuC,EAAQguC,KAAUE,aAAQ3oC,GAC1B0oC,EAASjuC,EAAMiuC,OACfI,EAAeruC,EAAM4J,MACrBA,EAAQ,CAAC,EAAG,GAGZ/R,GAAQ,EACRy2C,EAAe,EACfC,EAAe,EACf78B,EAAQ,GAIZ,SAAS88B,IACP,IAAI94D,EAAIu4D,IAASr4D,OACbs0B,EAAUN,EAAM,GAAKA,EAAM,GAC3Bre,EAAQqe,EAAMM,EAAU,GACxB5f,EAAOsf,EAAM,EAAIM,GACrBR,GAAQpf,EAAOiB,GAASrH,KAAK0T,IAAI,EAAGliB,EAAI44D,EAA8B,EAAfC,GACnD12C,IAAO6R,EAAOxlB,KAAKqX,MAAMmO,IAC7Bne,IAAUjB,EAAOiB,EAAQme,GAAQh0B,EAAI44D,IAAiB58B,EACtD08B,EAAY1kC,GAAQ,EAAI4kC,GACpBz2C,IAAOtM,EAAQrH,KAAK2T,MAAMtM,GAAQ6iD,EAAYlqD,KAAK2T,MAAMu2C,IAC7D,IAAI9yC,EAASmO,GAAS/zB,GAAG6N,KAAI,SAAS9N,GAAK,OAAO8V,EAAQme,EAAOj0B,CAAE,IACnE,OAAO44D,EAAankC,EAAU5O,EAAO4O,UAAY5O,EACrD,CAoDE,cAlEO0E,EAAMkuC,QAgBbluC,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUq4D,EAAOroD,GAAI4oD,KAAaP,GACvD,EAEEjuC,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUg0B,EAAQ,EAAEhkB,EAAE,IAAKA,EAAE,IAAK4oD,KAAa5kC,EAAMzyB,OAC1E,EAEE6oB,EAAMyuC,WAAa,SAAS7oD,GAC1B,OAAOgkB,EAAQ,EAAEhkB,EAAE,IAAKA,EAAE,IAAKiS,GAAQ,EAAM22C,GACjD,EAEExuC,EAAMouC,UAAY,WAChB,OAAOA,CACX,EAEEpuC,EAAM0J,KAAO,WACX,OAAOA,CACX,EAEE1J,EAAMnI,MAAQ,SAASjS,GACrB,OAAOjQ,UAAUC,QAAUiiB,IAAUjS,EAAG4oD,KAAa32C,CACzD,EAEEmI,EAAMgU,QAAU,SAASpuB,GACvB,OAAOjQ,UAAUC,QAAU04D,EAAeC,EAAerqD,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAGyB,IAAK4oD,KAAaF,CACvG,EAEEtuC,EAAMsuC,aAAe,SAAS1oD,GAC5B,OAAOjQ,UAAUC,QAAU04D,EAAepqD,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAGyB,IAAK4oD,KAAaF,CACxF,EAEEtuC,EAAMuuC,aAAe,SAAS3oD,GAC5B,OAAOjQ,UAAUC,QAAU24D,EAAerqD,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAGyB,IAAK4oD,KAAaD,CACxF,EAEEvuC,EAAM0R,MAAQ,SAAS9rB,GACrB,OAAOjQ,UAAUC,QAAU87B,EAAQxtB,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAGyB,IAAK4oD,KAAa98B,CACjF,EAEE1R,EAAMlY,KAAO,WACX,OAAOqmD,KACFF,OAAOA,KACPrkC,MAAMA,GACN/R,MAAMA,GACNy2C,aAAaA,GACbC,aAAaA,GACb78B,MAAMA,EACf,EAES88B,GACT,CAEA,SAASE,GAAS1uC,GAChB,IAAIlY,EAAOkY,EAAMlY,KAUjB,OARAkY,EAAMgU,QAAUhU,EAAMuuC,oBACfvuC,EAAMsuC,oBACNtuC,EAAMuuC,aAEbvuC,EAAMlY,KAAO,WACX,OAAO4mD,GAAS5mD,IACpB,EAESkY,CACT,CChGe,SAAA2uC,GAAS7rD,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCJe,SAAA8rD,GAAS9rD,GACtB,OAAQA,CACV,CCIA,IAAI+rD,GAAO,CAAC,EAAG,GAER,SAASC,GAAoB/zD,EAAG1G,GACrC,OAAQA,GAAM0G,GAAKA,GACb,SAAS+H,GAAK,OAAQA,EAAI/H,GAAK1G,CAAE,EACjCunB,GAASvnB,EACjB,CAgBA,SAAS06D,GAAMd,EAAQrkC,EAAOolC,EAAeC,GAC3C,IAAIt6B,EAAKs5B,EAAO,GAAItsC,EAAKssC,EAAO,GAAInsC,EAAK8H,EAAM,GAAI7H,EAAK6H,EAAM,GAG9D,OAFIjI,EAAKgT,GAAIA,EAAKq6B,EAAcrtC,EAAIgT,GAAK7S,EAAKmtC,EAAcltC,EAAID,KAC3D6S,EAAKq6B,EAAcr6B,EAAIhT,GAAKG,EAAKmtC,EAAcntC,EAAIC,IACjD,SAASjf,GAAK,OAAOgf,EAAG6S,EAAG7xB,GAAI,CACxC,CAEA,SAASosD,GAAQjB,EAAQrkC,EAAOolC,EAAeC,GAC7C,IAAI1uD,EAAI2D,KAAKC,IAAI8pD,EAAOr4D,OAAQg0B,EAAMh0B,QAAU,EAC5CxB,EAAI,IAAIK,MAAM8L,GACdnK,EAAI,IAAI3B,MAAM8L,GACd9K,GAAK,EAQT,IALIw4D,EAAO1tD,GAAK0tD,EAAO,KACrBA,EAASA,EAAO92D,QAAQ+yB,UACxBN,EAAQA,EAAMzyB,QAAQ+yB,aAGfz0B,EAAI8K,GACXnM,EAAEqB,GAAKu5D,EAAcf,EAAOx4D,GAAIw4D,EAAOx4D,EAAI,IAC3CW,EAAEX,GAAKw5D,EAAcrlC,EAAMn0B,GAAIm0B,EAAMn0B,EAAI,IAG3C,OAAO,SAASqN,GACd,IAAIrN,EAAI05D,GAAOlB,EAAQnrD,EAAG,EAAGvC,GAAK,EAClC,OAAOnK,EAAEX,GAAGrB,EAAEqB,GAAGqN,GACrB,CACA,CAEO,SAASgF,GAAKhC,EAAQ9P,GAC3B,OAAOA,EACFi4D,OAAOnoD,EAAOmoD,UACdrkC,MAAM9jB,EAAO8jB,SACbxG,YAAYtd,EAAOsd,eACnBxK,MAAM9S,EAAO8S,QACpB,CAIe,SAASw2C,GAAWJ,EAAeC,GAChD,IAIII,EACAC,EACAC,EANAtB,EAASY,GACTjlC,EAAQilC,GACRzrC,EAAcosC,GACd52C,GAAQ,EAKZ,SAAS41C,IAGP,OAFAa,EAAYnrD,KAAKC,IAAI8pD,EAAOr4D,OAAQg0B,EAAMh0B,QAAU,EAAIs5D,GAAUH,GAClEO,EAASC,EAAQ,KACVvvC,CACX,CAEE,SAASA,EAAMld,GACb,OAAQwsD,IAAWA,EAASD,EAAUpB,EAAQrkC,EAAOhR,EAtEzD,SAA4Bo2C,GAC1B,OAAO,SAASj0D,EAAG1G,GACjB,IAAID,EAAI46D,EAAcj0D,GAAKA,EAAG1G,GAAKA,GACnC,OAAO,SAASyO,GAAK,OAAOA,GAAK/H,EAAI,EAAI+H,GAAKzO,EAAI,EAAID,EAAE0O,EAAG,CAC/D,CACA,CAiEiE2sD,CAAmBT,GAAiBA,EAAe5rC,MAAgBtgB,EACpI,CA0BE,OAxBAkd,EAAM0vC,OAAS,SAASrpD,GACtB,OAAQkpD,IAAUA,EAAQF,EAAUzlC,EAAOqkC,EAAQa,GAAqBl2C,EAnE5E,SAA4Bq2C,GAC1B,OAAO,SAASl0D,EAAG1G,GACjB,IAAI+B,EAAI64D,EAAcl0D,GAAKA,EAAG1G,GAAKA,GACnC,OAAO,SAASkB,GAAK,OAAOA,GAAK,EAAIwF,EAAIxF,GAAK,EAAIlB,EAAI+B,EAAEb,EAAG,CAC/D,CACA,CA8DoFo6D,CAAmBV,GAAiBA,MAAkB5oD,EAC1I,EAEE2Z,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUq4D,EAAS1qD,GAAI1O,KAAK+Q,EAAGoY,IAASwwC,KAAaP,EAAO92D,OACjF,EAEE6oB,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUg0B,EAAQzyB,GAAMtC,KAAK+Q,GAAI4oD,KAAa5kC,EAAMzyB,OACzE,EAEE6oB,EAAMyuC,WAAa,SAAS7oD,GAC1B,OAAOgkB,EAAQzyB,GAAMtC,KAAK+Q,GAAIwd,EAAc7E,GAAkBiwC,GAClE,EAEExuC,EAAMpH,MAAQ,SAAShT,GACrB,OAAOjQ,UAAUC,QAAUgjB,IAAUhT,EAAG4oD,KAAa51C,CACzD,EAEEoH,EAAMoD,YAAc,SAASxd,GAC3B,OAAOjQ,UAAUC,QAAUwtB,EAAcxd,EAAG4oD,KAAaprC,CAC7D,EAESorC,GACT,CC3GO,SAASoB,GAAU5vC,GACxB,IAAIiuC,EAASjuC,EAAMiuC,OAmDnB,OAjDAjuC,EAAMgK,MAAQ,SAASC,GACrB,IAAI71B,EAAI65D,IACR,OAAOjkC,GAAM51B,EAAE,GAAIA,EAAEA,EAAEwB,OAAS,GAAa,MAATq0B,EAAgB,GAAKA,EAC7D,EAEEjK,EAAM6vC,WAAa,SAAS5lC,EAAOsH,GACjC,OCXW,SAAS08B,EAAQhkC,EAAOsH,GACrC,IAGIO,EAHAvmB,EAAQ0iD,EAAO,GACf3jD,EAAO2jD,EAAOA,EAAOr4D,OAAS,GAC9B8zB,EAAOc,GAASjf,EAAOjB,EAAe,MAAT2f,EAAgB,GAAKA,GAGtD,QADAsH,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,IACrC9wB,MAChB,IAAK,IACH,IAAInF,EAAQ4I,KAAK0T,IAAI1T,KAAKwmB,IAAInf,GAAQrH,KAAKwmB,IAAIpgB,IAE/C,OAD2B,MAAvBinB,EAAUO,WAAsBna,MAAMma,EAAYuC,GAAgB3K,EAAMpuB,MAASi2B,EAAUO,UAAYA,GACpGmC,eAAa1C,EAAWj2B,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBi2B,EAAUO,WAAsBna,MAAMma,EAAYwC,GAAe5K,EAAMxlB,KAAK0T,IAAI1T,KAAKwmB,IAAInf,GAAQrH,KAAKwmB,IAAIpgB,QAAUinB,EAAUO,UAAYA,GAAgC,MAAnBP,EAAU9wB,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvB8wB,EAAUO,WAAsBna,MAAMma,EAAYsC,GAAe1K,MAAQ6H,EAAUO,UAAYA,EAAuC,GAAP,MAAnBP,EAAU9wB,OAI9H,OAAOkW,SAAO4a,EAChB,CDhBWs+B,CAAW5B,IAAUhkC,EAAOsH,EACvC,EAEEvR,EAAM8vC,KAAO,SAAS7lC,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKIP,EALAt1B,EAAI65D,IACJ9qD,EAAK,EACLC,EAAKhP,EAAEwB,OAAS,EAChB2V,EAAQnX,EAAE+O,GACVmH,EAAOlW,EAAEgP,GA8Bb,OA3BIkH,EAAOiB,IACTme,EAAOne,EAAOA,EAAQjB,EAAMA,EAAOof,EACnCA,EAAOvmB,EAAIA,EAAKC,EAAIA,EAAKsmB,IAG3BA,EAAOS,GAAc5e,EAAOjB,EAAM2f,IAEvB,EAGTP,EAAOS,GAFP5e,EAAQrH,KAAKqX,MAAMhQ,EAAQme,GAAQA,EACnCpf,EAAOpG,KAAKylB,KAAKrf,EAAOof,GAAQA,EACEO,GACzBP,EAAO,IAGhBA,EAAOS,GAFP5e,EAAQrH,KAAKylB,KAAKpe,EAAQme,GAAQA,EAClCpf,EAAOpG,KAAKqX,MAAMjR,EAAOof,GAAQA,EACCO,IAGhCP,EAAO,GACTt1B,EAAE+O,GAAMe,KAAKqX,MAAMhQ,EAAQme,GAAQA,EACnCt1B,EAAEgP,GAAMc,KAAKylB,KAAKrf,EAAOof,GAAQA,EACjCukC,EAAO75D,IACEs1B,EAAO,IAChBt1B,EAAE+O,GAAMe,KAAKylB,KAAKpe,EAAQme,GAAQA,EAClCt1B,EAAEgP,GAAMc,KAAKqX,MAAMjR,EAAOof,GAAQA,EAClCukC,EAAO75D,IAGF4rB,CACX,EAESA,CACT,CAEe,SAAStE,KACtB,IAAIsE,EAAQovC,GAAWJ,GAAeC,IAMtC,OAJAjvC,EAAMlY,KAAO,WACX,OAAOA,GAAKkY,EAAOtE,KACvB,EAESk0C,GAAU5vC,EACnB,CEpEe,SAAA8vC,GAAS7B,EAAQ9lD,GAG9B,IAII5S,EAJA4N,EAAK,EACLC,GAHJ6qD,EAASA,EAAO92D,SAGAvB,OAAS,EACrBm6D,EAAK9B,EAAO9qD,GACZ6sD,EAAK/B,EAAO7qD,GAUhB,OAPI4sD,EAAKD,IACPx6D,EAAI4N,EAAIA,EAAKC,EAAIA,EAAK7N,EACtBA,EAAIw6D,EAAIA,EAAKC,EAAIA,EAAKz6D,GAGxB04D,EAAO9qD,GAAMgF,EAASoT,MAAMw0C,GAC5B9B,EAAO7qD,GAAM+E,EAASwhB,KAAKqmC,GACpB/B,CACT,CCXA,SAASe,GAAcj0D,EAAG1G,GACxB,OAAQA,EAAI6P,KAAKwd,IAAIrtB,EAAI0G,IACnB,SAAS+H,GAAK,OAAOoB,KAAKwd,IAAI5e,EAAI/H,GAAK1G,CAAE,EACzCunB,GAASvnB,EACjB,CAEA,SAAS46D,GAAcl0D,EAAG1G,GACxB,OAAO0G,EAAI,EACL,SAASxF,GAAK,OAAQ2O,KAAKyU,KAAKtkB,EAAGkB,GAAK2O,KAAKyU,KAAK5d,EAAG,EAAIxF,EAAG,EAC5D,SAASA,GAAK,OAAO2O,KAAKyU,IAAItkB,EAAGkB,GAAK2O,KAAKyU,IAAI5d,EAAG,EAAIxF,EAAG,CACjE,CAEA,SAAS06D,GAAMntD,GACb,OAAOsnB,SAAStnB,KAAO,KAAOA,GAAKA,EAAI,EAAI,EAAIA,CACjD,CAEA,SAASotD,GAAKC,GACZ,OAAgB,KAATA,EAAcF,GACfE,IAASjsD,KAAKsW,EAAItW,KAAK0c,IACvB,SAAS9d,GAAK,OAAOoB,KAAKyU,IAAIw3C,EAAMrtD,EAAG,CAC/C,CAEA,SAASstD,GAAKD,GACZ,OAAOA,IAASjsD,KAAKsW,EAAItW,KAAKwd,IACf,KAATyuC,GAAejsD,KAAKmsD,OACV,IAATF,GAAcjsD,KAAKosD,OAClBH,EAAOjsD,KAAKwd,IAAIyuC,GAAO,SAASrtD,GAAK,OAAOoB,KAAKwd,IAAI5e,GAAKqtD,CAAK,EACzE,CAEA,SAASI,GAAQznD,GACf,OAAO,SAAShG,GACd,OAAQgG,GAAGhG,EACf,CACA,CCnCA,SAASzE,GAAMyE,EAAGsjB,GAChB,OAAOtjB,EAAI,GAAKoB,KAAKyU,KAAK7V,EAAGsjB,GAAYliB,KAAKyU,IAAI7V,EAAGsjB,EACvD,CAEe,SAASzN,KACtB,IAAIyN,EAAW,EACXpG,EAAQovC,IAGZ,SAAuBr0D,EAAG1G,GACxB,OAAQA,EAAIgK,GAAMhK,EAAG+xB,IAAarrB,EAAIsD,GAAMtD,EAAGqrB,KACzC,SAAStjB,GAAK,OAAQzE,GAAMyE,EAAGsjB,GAAYrrB,GAAK1G,CAAE,EAClDunB,GAASvnB,EACnB,IAEE,SAAuB0G,EAAG1G,GAExB,OADAA,EAAIgK,GAAMhK,EAAG+xB,IAAarrB,EAAIsD,GAAMtD,EAAGqrB,IAChC,SAAS7wB,GAAK,OAAO8I,GAAMtD,EAAI1G,EAAIkB,EAAG,EAAI6wB,EAAU,CAC/D,IAXM6nC,EAASjuC,EAAMiuC,OAqBnB,OARAjuC,EAAMoG,SAAW,SAASxgB,GACxB,OAAOjQ,UAAUC,QAAUwwB,GAAYxgB,EAAGqoD,EAAOA,MAAa7nC,CAClE,EAEEpG,EAAMlY,KAAO,WACX,OAAOA,GAAKkY,EAAOrH,KAAMyN,SAASA,GACtC,EAESwpC,GAAU5vC,EACnB,CC7Be,SAASwwC,KACtB,IAAIT,EAAK,EACLC,EAAK,EACLt6D,EAAI,EACJu4D,EAAS,CAAC,IACVrkC,EAAQ,CAAC,EAAG,GAEhB,SAAS5J,EAAMld,GACb,GAAIA,GAAKA,EAAG,OAAO8mB,EAAMulC,GAAOlB,EAAQnrD,EAAG,EAAGpN,GAClD,CAEE,SAAS84D,IACP,IAAI/4D,GAAK,EAET,IADAw4D,EAAS,IAAIx5D,MAAMiB,KACVD,EAAIC,GAAGu4D,EAAOx4D,KAAOA,EAAI,GAAKu6D,GAAMv6D,EAAIC,GAAKq6D,IAAOr6D,EAAI,GACjE,OAAOsqB,CACX,CAwBE,OAtBAA,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUm6D,GAAMnqD,EAAE,GAAIoqD,GAAMpqD,EAAE,GAAI4oD,KAAa,CAACuB,EAAIC,EACzE,EAEEhwC,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUF,GAAKk0B,EAAQzyB,GAAMtC,KAAK+Q,IAAIhQ,OAAS,EAAG44D,KAAa5kC,EAAMzyB,OAC1F,EAEE6oB,EAAMywC,aAAe,SAASpqD,GAC5B,IAAI5Q,EAAIm0B,EAAM7xB,QAAQsO,GACtB,OAAO5Q,EAAI,EAAI,CAACuF,IAAKA,KACfvF,EAAI,EAAI,CAACs6D,EAAI9B,EAAO,IACpBx4D,GAAKC,EAAI,CAACu4D,EAAOv4D,EAAI,GAAIs6D,GACzB,CAAC/B,EAAOx4D,EAAI,GAAIw4D,EAAOx4D,GACjC,EAEEuqB,EAAMlY,KAAO,WACX,OAAO0oD,KACFvC,OAAO,CAAC8B,EAAIC,IACZpmC,MAAMA,EACf,EAESgmC,GAAU5vC,EACnB,CCrCA,IAAI8U,GAAiB,IACjBC,GAAkC,GAAjBD,GACjBE,GAAgC,GAAjBD,GACfE,GAA6B,GAAfD,GACdE,GAA6B,EAAdD,GACfy7B,GAA8B,GAAdz7B,GAChB07B,GAA6B,IAAd17B,GAEnB,SAAS7W,GAAK7oB,GACZ,OAAO,IAAIoT,KAAKpT,EAClB,CAEA,SAASyoB,GAAOzoB,GACd,OAAOA,aAAaoT,MAAQpT,GAAK,IAAIoT,MAAMpT,EAC7C,CAEO,SAASq7D,GAASriC,EAAMgI,EAAOqI,EAAMnJ,EAAKD,EAAMH,EAAQF,EAAQN,EAAale,GAClF,IAAIqJ,EAAQovC,GAAWJ,GAAeC,IAClCS,EAAS1vC,EAAM0vC,OACfzB,EAASjuC,EAAMiuC,OAEf4C,EAAoBl6C,EAAO,OAC3Bm6C,EAAen6C,EAAO,OACtBo6C,EAAep6C,EAAO,SACtBq6C,EAAar6C,EAAO,SACpBs6C,EAAYt6C,EAAO,SACnBu6C,EAAav6C,EAAO,SACpBw6C,EAAcx6C,EAAO,MACrB6X,EAAa7X,EAAO,MAEpBy6C,EAAgB,CAClB,CAACj8B,EAAS,EAAQL,IAClB,CAACK,EAAS,EAAI,EAAIL,IAClB,CAACK,EAAQ,GAAI,GAAKL,IAClB,CAACK,EAAQ,GAAI,GAAKL,IAClB,CAACO,EAAS,EAAQN,IAClB,CAACM,EAAS,EAAI,EAAIN,IAClB,CAACM,EAAQ,GAAI,GAAKN,IAClB,CAACM,EAAQ,GAAI,GAAKN,IAClB,CAAGS,EAAO,EAAQR,IAClB,CAAGQ,EAAO,EAAI,EAAIR,IAClB,CAAGQ,EAAO,EAAI,EAAIR,IAClB,CAAGQ,EAAM,GAAI,GAAKR,IAClB,CAAIS,EAAM,EAAQR,IAClB,CAAIQ,EAAM,EAAI,EAAIR,IAClB,CAAG2J,EAAO,EAAQ1J,IAClB,CAAEqB,EAAQ,EAAQm6B,IAClB,CAAEn6B,EAAQ,EAAI,EAAIm6B,IAClB,CAAGniC,EAAO,EAAQoiC,KAGpB,SAASd,EAAWzxC,GAClB,OAAQ+W,EAAO/W,GAAQA,EAAOyyC,EACxBx7B,EAAOjX,GAAQA,EAAO0yC,EACtBt7B,EAAKpX,GAAQA,EAAO2yC,EACpBt7B,EAAIrX,GAAQA,EAAO4yC,EACnBz6B,EAAMnY,GAAQA,EAAQwgB,EAAKxgB,GAAQA,EAAO6yC,EAAYC,EACtD3iC,EAAKnQ,GAAQA,EAAO+yC,EACpB3iC,GAAYpQ,EACtB,CAEE,SAASizC,EAAalpD,EAAUoD,EAAOjB,EAAMof,GAM3C,GALgB,MAAZvhB,IAAkBA,EAAW,IAKT,iBAAbA,EAAuB,CAChC,IAAInS,EAASkO,KAAKwmB,IAAIpgB,EAAOiB,GAASpD,EAClC1S,EAAI0yB,IAAS,SAAS1yB,GAAK,OAAOA,EAAE,EAAG,IAAI8yB,MAAM6oC,EAAep7D,GAChEP,IAAM27D,EAAcx7D,QACtB8zB,EAAOc,GAASjf,EAAQolD,GAAcrmD,EAAOqmD,GAAcxoD,GAC3DA,EAAWomB,GACF94B,GAETi0B,GADAj0B,EAAI27D,EAAcp7D,EAASo7D,EAAc37D,EAAI,GAAG,GAAK27D,EAAc37D,GAAG,GAAKO,EAASP,EAAI,EAAIA,IACnF,GACT0S,EAAW1S,EAAE,KAEbi0B,EAAOxlB,KAAK0T,IAAI4S,GAASjf,EAAOjB,EAAMnC,GAAW,GACjDA,EAAW0sB,EAEnB,CAEI,OAAe,MAARnL,EAAevhB,EAAWA,EAAS+c,MAAMwE,EACpD,CAqCE,OAnCA1J,EAAM0vC,OAAS,SAASrpD,GACtB,OAAO,IAAIsC,KAAK+mD,EAAOrpD,GAC3B,EAEE2Z,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,OAASq4D,EAAO1qD,GAAI1O,KAAK+Q,EAAGoY,KAAWiwC,IAAS1qD,IAAI6a,GACzE,EAEE4B,EAAMgK,MAAQ,SAAS7hB,EAAUuhB,GAC/B,IAIIn0B,EAJAnB,EAAI65D,IACJtkD,EAAKvV,EAAE,GACPyV,EAAKzV,EAAEA,EAAEwB,OAAS,GAClBQ,EAAIyT,EAAKF,EAKb,OAHIvT,IAAGb,EAAIoU,EAAIA,EAAKE,EAAIA,EAAKtU,GAE7BA,GADAA,EAAI87D,EAAalpD,EAAUwB,EAAIE,EAAI6f,IAC3Bn0B,EAAEq0B,MAAMjgB,EAAIE,EAAK,GAAK,GACvBzT,EAAIb,EAAE20B,UAAY30B,CAC7B,EAEEyqB,EAAM6vC,WAAa,SAAS5lC,EAAOsH,GACjC,OAAoB,MAAbA,EAAoBs+B,EAAal5C,EAAO4a,EACnD,EAEEvR,EAAM8vC,KAAO,SAAS3nD,EAAUuhB,GAC9B,IAAIt1B,EAAI65D,IACR,OAAQ9lD,EAAWkpD,EAAalpD,EAAU/T,EAAE,GAAIA,EAAEA,EAAEwB,OAAS,GAAI8zB,IAC3DukC,EAAO6B,GAAK17D,EAAG+T,IACf6X,CACV,EAEEA,EAAMlY,KAAO,WACX,OAAOA,GAAKkY,EAAO4wC,GAASriC,EAAMgI,EAAOqI,EAAMnJ,EAAKD,EAAMH,EAAQF,EAAQN,EAAale,GAC3F,EAESqJ,CACT,CClIe,SAAAxD,GAAShnB,GACtB,OAAOA,EAAEmN,MAAM,SAASY,KAAI,SAAST,GACnC,MAAO,IAAMA,CACjB,GACA,CCFA,IAAAwuD,GAAe90C,GAAO,gECAtB+0C,GAAe/0C,GAAO,4HCAtBg1C,GAAeh1C,GAAO,4HCAtBi1C,GAAej1C,GAAO,4HCCtB5B,GAAe82C,GAAyB92C,GAAU,IAAK,GAAK,GAAMA,IAAW,IAAK,GAAK,ICA5E+2C,GAAOD,GAAyB92C,IAAW,IAAK,IAAM,KAAOA,GAAU,GAAI,IAAM,KAEjFg3C,GAAOF,GAAyB92C,GAAU,IAAK,IAAM,KAAOA,GAAU,GAAI,IAAM,KAEvFi3C,GAAUj3C,KCLd,SAASk3C,GAAKloC,GACZ,IAAIl0B,EAAIk0B,EAAMh0B,OACd,OAAO,SAASL,GACd,OAAOq0B,EAAM1lB,KAAK0T,IAAI,EAAG1T,KAAKC,IAAIzO,EAAI,EAAGwO,KAAKqX,MAAMhmB,EAAIG,KAC5D,CACA,CAEA,IAAAq8D,GAAeD,GAAKt1C,GAAO,qgDAEhBw1C,GAAQF,GAAKt1C,GAAO,qgDAEpBy1C,GAAUH,GAAKt1C,GAAO,qgDAEtB01C,GAASJ,GAAKt1C,GAAO,qgDCbjB,SAASgvC,GAAW2G,GACjC,IAAIpC,EAAK,EACLC,EAAK,EACLp3C,GAAQ,EAEZ,SAASoH,EAAMld,GACb,IAAIvN,GAAKuN,EAAIitD,IAAOC,EAAKD,GACzB,OAAOoC,EAAav5C,EAAQ1U,KAAK0T,IAAI,EAAG1T,KAAKC,IAAI,EAAG5O,IAAMA,EAC9D,CAkBE,OAhBAyqB,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUm6D,GAAMnqD,EAAE,GAAIoqD,GAAMpqD,EAAE,GAAIoa,GAAS,CAAC+vC,EAAIC,EACrE,EAEEhwC,EAAMpH,MAAQ,SAAShT,GACrB,OAAOjQ,UAAUC,QAAUgjB,IAAUhT,EAAGoa,GAASpH,CACrD,EAEEoH,EAAMmyC,aAAe,SAASvsD,GAC5B,OAAOjQ,UAAUC,QAAUu8D,EAAevsD,EAAGoa,GAASmyC,CAC1D,EAEEnyC,EAAMlY,KAAO,WACX,OAAO0jD,GAAW2G,GAAclE,OAAO,CAAC8B,EAAIC,IAAKp3C,MAAMA,EAC3D,EAESg3C,GAAU5vC,EACnB,CCtBA,IAAMoyC,GAAY,CACdC,WAAYf,GACZgB,WAAYb,GACZc,YAAahB,GACbiB,YAAahB,IAGXiB,GAAgBC,IAAwBC,GAExCC,GAAO,CACTC,QAASd,GACTe,MAAOC,GACPC,QAASC,GACTC,OAAQC,IAGNC,GAAY,CACd,aAAc,aAAc,cAAe,eAGzCC,GAAgB,CAClB,SAAU,QAAS,SAAU,UAAW,UAAW,OAAQ,OAAQ,QAGjEC,GAAc,CAChB,SAAU,UAIRC,GAAgB,CAClBC,eAAgB,CAAC,oBAAqB,oBAAqB,oBAAqB,oBAAqB,kBAAmB,oBAAqB,mBAAoB,oBAAqB,oBAAqB,kBAAmB,oBAAqB,oBAAqB,mBAAoB,qBAAsB,qBAAsB,oBAAqB,kBAAmB,mBAAoB,qBAAsB,sBAC1ZC,gBAAiB,CAAC,oBAAqB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,mBAAoB,mBAAoB,mBAAoB,oBAAqB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,oBAAqB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,mBACvaC,cAAe,CAAC,qBAAsB,qBAAsB,qBAAsB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,mBAAoB,oBAAqB,qBAAsB,qBAAsB,oBAAqB,qBAAsB,mBAAoB,qBAAsB,oBAAqB,oBAAqB,mBAAoB,kBAAmB,oBAClaC,eAAgB,CAAC,mBAAoB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,mBAAoB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,mBAAoB,qBAAsB,qBAAsB,mBAAoB,kBAAmB,mBAAoB,qBAAsB,qBAAsB,kBAAmB,mBAC3ZC,gBAAiB,CAAC,qBAAsB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,oBAAqB,mBAAoB,oBAAqB,mBAAoB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,mBAAoB,qBAAsB,mBACjaC,eAAgB,CAAC,qBAAsB,oBAAqB,qBAAsB,qBAAsB,mBAAoB,mBAAoB,mBAAoB,mBAAoB,qBAAsB,kBAAmB,qBAAsB,qBAAsB,mBAAoB,qBAAsB,qBAAsB,oBAAqB,oBAAqB,mBAAoB,qBAAsB,sBACjaC,aAAc,CAAC,oBAAqB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,mBAAoB,kBAAmB,kBAAmB,qBAAsB,oBAAqB,mBAAoB,kBAAmB,mBAAoB,mBAAoB,oBACvZC,cAAe,CAAC,qBAAsB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,kBAAmB,mBAAoB,mBAAoB,oBAAqB,oBAAqB,mBAAoB,kBAAmB,kBAAmB,oBAC3ZC,cAAe,CAAC,oBAAqB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,mBAAoB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,qBAAsB,qBAAsB,oBAAqB,oBAAqB,oBAAqB,qBAAsB,qBACjaC,cAAe,CAAC,qBAAsB,oBAAqB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,qBAAsB,oBAAqB,kBAAmB,oBAAqB,mBAAoB,qBAAsB,qBAAsB,qBAAsB,mBAAoB,kBAAmB,oBAAqB,qBAAsB,qBAChaC,eAAgB,CAAC,qBAAsB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,oBAAqB,mBAAoB,oBAAqB,qBAAsB,qBAAsB,oBAAqB,qBAAsB,mBAAoB,mBAAoB,qBAAsB,oBAAqB,qBAAsB,mBACzaC,eAAgB,CAAC,mBAAoB,qBAAsB,qBAAsB,oBAAqB,oBAAqB,kBAAmB,mBAAoB,qBAAsB,oBAAqB,oBAAqB,mBAAoB,oBAAqB,qBAAsB,oBAAqB,qBAAsB,mBAAoB,mBAAoB,qBAAsB,oBAAqB,qBAC/ZC,eAAgB,CAAC,oBAAqB,mBAAoB,oBAAqB,oBAAqB,oBAAqB,mBAAoB,mBAAoB,oBAAqB,mBAAoB,mBAAoB,oBAAqB,oBAAqB,mBAAoB,qBAAsB,kBAAmB,mBAAoB,oBAAqB,mBAAoB,qBAAsB,mBACxZC,eAAgB,CAAC,qBAAsB,qBAAsB,mBAAoB,oBAAqB,qBAAsB,qBAAsB,qBAAsB,mBAAoB,oBAAqB,mBAAoB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,kBAAmB,oBAAqB,qBAAsB,oBAAqB,oBAAqB,oBAEhaC,GAAgBhgE,OAAOw3B,KAAKynC,IAE5BgB,GAAe,GAYL,SAAAC,GAAiBltD,EAAakV,GAC1C,IAAKlV,EAAI,OAAOmtD,KAChB,IAAIxvB,EAASsvB,GAAajtD,GAK1B,OAJK29B,IACDA,EAASwvB,GAAgBntD,EAAIkV,GAC7B+3C,GAAajtD,GAAM29B,GAEhBA,CACX,CAEA,SAASwvB,GAAgBntD,EAAKkV,GAC1B,IAAKlV,EAAI,MAAO,CAAC,WAAWlQ,OAAOg8D,GAAUh8D,OAAOi8D,IAAej8D,OAAOk8D,IAAal8D,OAAOk9D,KAC9F,IAAIt0C,EAAQ,KAEZ,GAAIxD,EACAwD,EAAQ00C,KAAiB9qC,MAAMpN,OAC5B,CACH,GAAI42C,GAAUr7D,QAAQuP,IAAO,EACzB0Y,EAAQ00C,GAAetC,GAAU9qD,SAC9B,GAAIgtD,GAAcv8D,QAAQuP,IAAO,EACpC0Y,EAAQ00C,KAAiB9qC,MAAM2pC,GAAcjsD,SAC1C,GAAIgsD,GAAYv7D,QAAQuP,IAAO,EAAG,CACrC,IAAIqtD,EAAY,GAChB,OAAQrtD,GACJ,IAAK,SAEDqtD,EADkBF,GAAgB,WAAWj4C,SACvB9Z,QAAO,SAAUkyD,EAAOjtB,GAC1C,SAAIA,EAAM,EAId,IACA,MACJ,IAAK,SACDgtB,EAAYF,GAAgB,cAAcj4C,SAASplB,OAAOq9D,GAAgB,UAAUj4C,UAG5FwD,EAAQ00C,KAAiB9qC,MAAM+qC,E,MAC5B,GAAItB,GAAct7D,QAAQuP,IAAO,EAEpC,IADA,IAAIutD,EAAiB,GACdA,EAAiB,GAAG,CACvB,GAAIpC,GAAcnrD,GAAIutD,GAAiB,CACnC70C,EAAQ00C,KAAiB9qC,MAAM6oC,GAAcnrD,GAAIutD,IACjD,K,GAEFA,C,CAGL70C,IAEDA,EAAQ00C,GAAejD,KAE3Bj1C,EAASwD,EAAM4J,O,CAEnB,IAAMokC,EAAe,SAAUpoD,GAC3B,OAAOoa,EAAMpa,EACjB,EAgCA,OA/BAooD,EAAQvtD,KAAO,WACX,MAAO,SACX,EACAutD,EAAQ1mD,GAAK,SAAU1B,GACnB,OAAKjQ,UAAUC,QACf0R,EAAK1B,EACEooD,GAFuB1mD,CAGlC,EACA0mD,EAAQxxC,OAAS,SAAU5W,GACvB,OAAKjQ,UAAUC,QACf4mB,EAAS5W,EACFooD,GAFuBxxC,CAGlC,EACAwxC,EAAQlvD,MAAQ,SAAUg2D,GAEtB,OADAP,GAAaO,GAASL,GAAgBK,EAAO5/D,KAAKsnB,UAC3C+3C,GAAaO,EAExB,EACA9G,EAAQ+G,eAAiB,SAAUD,GAC/B,OAAIP,GAAaO,GACNP,GAAaO,GAEjB5/D,KAAK4J,MAAMg2D,EACtB,EACA9G,EAAQgH,OAAS,SAAU7xC,EAAK8xC,GAC5B,OAAI3tD,IAAO6b,EACAjuB,KAEJS,UAAUC,OAAS4+D,GAAiBrxC,EAAK8xC,GAAWT,IAC/D,EAEOxG,CACX,CAEA,IAAMkH,GAAe,G,SAOLC,GAAiB7tD,EAAakV,EAAmB44C,GAC7D,IAAK9tD,EAAI,OAAO+tD,KAChB,IAAIpwB,EAASiwB,GAAa5tD,GAK1B,OAJK29B,IACDA,EAASowB,GAAgB/tD,EAAIkV,EAAQ44C,GACrCF,GAAa5tD,GAAM29B,GAEhBA,CACX,CAEA,SAASowB,GAAgB/tD,EAAK2tD,EAAUK,GACpC,IAAK3/D,UAAUC,OAAQ,CACnB,IAAMqvC,EAAS,CAAC,WAChB,IAAK,IAAMhvC,KAAOw8D,IACsB,IAAhCY,GAAct7D,QAAQ9B,IACtBgvC,EAAOhmC,KAAKhJ,GAGpB,OAAOgvC,C,CAGX,IAAIjlB,EAAQ,KACRxD,EAASy4C,EAEPM,EAAU,SAAU/4C,EAAQ44C,GAC9BA,EAAQA,GAAS,GACjB,IAAMI,EAAiBtxD,KAAKylB,KAAKyrC,GAAS54C,EAAO5mB,OAAS,IACpDg0B,EAAQ,GACV6rC,EAAY,KAehB,OAdAj5C,EAAOkR,SAAQ,SAAUhX,GACrB,GAAI++C,EAMA,IALA,IAAMC,EAAQC,KACT1H,OAAO,CAAC,EAAGuH,IACX5rC,MAAM,CAAC6rC,EAAW/+C,IAClB0M,YAAYwyC,IAERngE,EAAI,EAAGA,EAAI+/D,IAAkB//D,EAClCm0B,EAAM3qB,KAAKy2D,EAAMjgE,IAGzBggE,EAAY/+C,CAChB,IACAsJ,EAAQ61C,KAAkB5H,OAAO,CAAC,EAAG,MAAMrkC,MAAMA,EAErD,EAEA,GAAIqrC,EACAj1C,EAAQu1C,EAAQN,EAASK,OACtB,CACH,GAAI7C,GAAcnrD,GAEd,IADA,IAAIutD,EAAiB,GACdA,EAAiB,GAAG,CACvB,GAAIpC,GAAcnrD,GAAIutD,GAAiB,CACnC70C,EAAQu1C,EAAQ9C,GAAcnrD,GAAIutD,IAClC,K,GAEFA,C,CAGNjC,GAAKtrD,KACL0Y,EAAQ81C,GAAkBlD,GAAKtrD,IAAK2mD,OAAO,CAAC,EAAG,OAE9CjuC,IACDA,EAAQu1C,EAAQ9C,GAAcnF,OAAO,MAEzC9wC,EAASwD,EAAM4J,MAAQ5J,EAAM4J,QAAU5J,C,CAG3C,IAAM6xC,EAAe,SAAU/uD,EAAGizD,EAAKC,GACnC,OAAID,IAAQC,EACDh2C,EAAMiuC,OAAO,CAAC8H,EAAM,EAAGC,EAAO,GAA9Bh2C,CAAkCld,GAEtCkd,EAAMiuC,OAAO,CAAC8H,EAAKC,GAAnBh2C,CAA0Bld,EACrC,EA+BA,OA9BA+uD,EAAQpxD,KAAO,WACX,MAAO,SACX,EACAoxD,EAAQvqD,GAAK,SAAU1B,GACnB,OAAKjQ,UAAUC,QACf0R,EAAK1B,EACEisD,GAFuBvqD,CAGlC,EACAuqD,EAAQr1C,OAAS,SAAU5W,GACvB,OAAKjQ,UAAUC,QACf4mB,EAAS5W,EACFisD,GAFuBr1C,CAGlC,EACAq1C,EAAQ/yD,MAAQ,SAAUg2D,GAEtB,OADAI,GAAaJ,GAASO,GAAgBP,EAAO5/D,KAAKsnB,UAC3C04C,GAAaJ,EACxB,EACAjD,EAAQkD,eAAiB,SAAUD,GAC/B,OAAII,GAAaJ,GACNI,GAAaJ,GAEjB5/D,KAAK4J,MAAMg2D,EACtB,EACAjD,EAAQmD,OAAS,SAAU7xC,EAAK8xC,GAC5B,OAAI3tD,IAAO6b,EACAjuB,KAEJS,UAAUC,OAASu/D,GAAiBhyC,EAAK8xC,GAAWE,IAC/D,EAEOtD,CACX,CAsDAY,GAAcwD,OAAS,CACnB,EAAG,CAAC,MAAO,QAAS,UAGjB,IAAMjI,GAAUwG,GACV3C,GAAUsD,GACjB,SAAUe,GAAUC,GACtB,IAAI7/C,EACJ,OAAQ6/C,GACJ,IAAK,GACL,IAAK,cACD7/C,EAAM8/C,GAAM,SACZ,MACJ,QACI9/C,EAAM8/C,GAAMD,GAEpB,MAAiB,KAAR7/C,EAAIlgB,EAAoB,KAARkgB,EAAIa,EAAoB,KAARb,EAAIjiB,EAAa,IAAO,QAAU,OAC/E,C,wGArEM,SAAegiE,EAAcC,EAAaC,EAAaC,EAAWpB,GACpE7qB,GAAS8rB,GACJ5zD,UAAU,YACVnI,KAAKm6D,MAAmB,SAAUrgE,GAAU,OAAOA,CAAE,IACrDgG,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,WACdA,KAAK,SAAS,SAAU1Q,GAAU,OAAOA,CAAE,IAC3CgM,GAAG,SAAS,SAAUhM,GACnBwuC,QAAQ6zB,KAAK1pC,GAAS34B,EAAEkH,OAAOiI,IAAI8pB,KAAKC,WAAkBpuB,KAAK,MACnE,IACCuD,UAAU,WAAWnI,MAAK,SAAUlG,GAAK,OAAOqgE,GAAgBrgE,GAAGooB,QAAS,IAC5EpiB,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,UACd/I,MAAM,oBAAoB,SAAU3H,GAAU,OAAOA,CAAE,IAE5Dm2C,GAAS+rB,GACJ7zD,UAAU,YACVnI,KAAK+6D,MAAmB,SAAUjhE,GAAU,OAAOA,CAAE,IACrDgG,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,WACdA,KAAK,SAAS,SAAU1Q,GAAU,OAAOA,CAAE,IAC3CgM,GAAG,SAAS,SAAUhM,GACnBwuC,QAAQ6zB,KAAK1pC,GAAS34B,EAAEkH,OAAOiI,IAAI8pB,KAAKC,WAAkBpuB,KAAK,MACnE,IACCuD,UAAU,YAAYnI,MAAK,SAAUlG,GAAK,OAAOihE,GAAgBjhE,GAAGooB,QAAS,IAC7EpiB,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,WACd/I,MAAM,SAAU,OAChBA,MAAM,oBAAoB,SAAU3H,GAAU,OAAOA,CAAE,IAE5D,IAAMsiE,EAAU,CAAEpvD,GAAIkvD,EAAUt3D,KAAK,KAAOk2D,EAAOp1C,MAAOq1C,GAAgB,SAAUmB,EAAWpB,IAC/F7qB,GAASgsB,GACJ9zD,UAAU,YACVnI,KAAK,CAACo8D,IAAU,SAAUtiE,GAAU,OAAOA,EAAEkT,EAAG,IAChDlN,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,WACdA,KAAK,SAAS,WAAc,MAAO,KAAM,IACzC1E,GAAG,SAAS,SAAUhM,GACnBwuC,QAAQ6zB,KAAK1pC,GAAS34B,EAAEkT,IAAI/D,IAAI8pB,KAAKC,WAAkBpuB,KAAK,MAChE,IACCuD,UAAU,YAAYnI,MAAK,WAExB,IADA,IAAM2qC,EAAS,GACNxvC,EAAI,EAAGA,GAAK,MAAOA,EACxBwvC,EAAOhmC,KAAKy3D,EAAQ12C,MAAMvqB,EAAG,EAAG,MAEpC,OAAOwvC,CACX,IACC7qC,QAAQuJ,OAAO,QACfmB,KAAK,QAAS,WACd/I,MAAM,oBAAoB,SAAU3H,GAAK,OAAOA,CAAE,GAC3D,E,gEC5TA,IAAAuiE,GAAA,SAAAtzB,GAGI,SAAAszB,IACI,OAAAtzB,EAAKxuC,KAAAK,OAAGA,I,CAqIhB,OAzI2BJ,EAAS6hE,EAAAtzB,GAOhCszB,EAAQhiE,UAAAyK,SAAR,SAAS+G,GACL,MACS,WADDjR,KAAK0hE,QAEE1hE,KAAKoxD,eAAepxD,KAAKqxD,SAAUpgD,GAE3Ci/C,GAAUzwD,UAAU+xD,aAAa7wD,MAAMX,KAAMS,U,EAGxDghE,EAAAhiE,UAAA+xD,aAAA,SAAaC,EAAQC,GACjB,MACS,WADD1xD,KAAK0hE,QAEE1hE,KAAKmyD,gBAAgBnyD,KAAKqxD,SAAUI,EAAQC,GAEpDxB,GAAUzwD,UAAU+xD,aAAa7wD,MAAMX,KAAMS,U,EAGxDghE,EAAAhiE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,UACdz0C,KAAKm1D,S,EAIhBsM,EAAAhiE,UAAA2E,OAAA,SAAOqnD,EAAUhX,GAAjB,IAqECrG,EAAApuC,KApES0hE,EAAQjtB,EAAQlnC,UAAU,4BAA4BnI,KAAK,CAACpF,KAAK0hE,UAAU,SAAUxiE,GAAK,OAAOA,CAAE,IACnG+5C,EAAOj5C,KAAKqzC,UAClB,GAAIrzC,KAAKm1D,YAAclc,EAAM,CACzBj5C,KAAKm1D,UAAYlc,EAEjB,IAAM1G,EAAUvyC,KAChB0hE,EAAMx8D,QAAQuJ,OAAOzO,KAAK2hE,mBAAmB3hE,KAAK0hE,UAC7C9xD,KAAK,QAAS,gBACdjC,MAAK,WACF,IAAMi0D,EAAWvsB,GAASr1C,MAC1BuyC,EAAQsvB,gBAAkBD,EAASnzD,OAAO,QAC9C,IACCvD,GAAG,SAAS,WACTkjC,EAAKiG,OACT,IACCnpC,GAAG,YAAY,WACZkjC,EAAKinB,UACT,IACC3mD,MAAMgzD,GACN76D,MAAM,OAAQ7G,KAAK21D,aACnB9uD,MAAM,SAAU7G,KAAK41D,eACrBjoD,MAAK,WACF,IAAMi0D,EAAWvsB,GAASr1C,MAE1B,OADAuyC,EAAQsvB,gBAAgB7xD,KAAKuiC,EAAQuvB,WAC7BvvB,EAAQmvB,SACZ,IAAK,SACD,IAAMrQ,EAAS9e,EAAQ8e,SACvBuQ,EACKhyD,KAAK,IAAKyhD,GAEf,MACJ,IAAK,SACD,IAAM14B,EAAQ3pB,KAAK0T,IAAI6vB,EAAQ5Z,QAAS4Z,EAAQ2G,UAChD0oB,EACKhyD,KAAK,KAAM+oB,EAAQ,GACnB/oB,KAAK,KAAM+oB,EAAQ,GACnB/oB,KAAK,KAAM2iC,EAAQwvB,gBACnBnyD,KAAK,KAAM2iC,EAAQwvB,gBACnBnyD,KAAK,QAAS+oB,GACd/oB,KAAK,SAAU+oB,GAEpB,MACJ,IAAK,OACDipC,EACKhyD,KAAK,KAAM2iC,EAAQ5Z,QAAU,GAC7B/oB,KAAK,KAAM2iC,EAAQ2G,SAAW,GAC9BtpC,KAAK,KAAM2iC,EAAQwvB,gBACnBnyD,KAAK,KAAM2iC,EAAQwvB,gBACnBnyD,KAAK,QAAS2iC,EAAQ5Z,SACtB/oB,KAAK,SAAU2iC,EAAQ2G,UAE5B,MACJ,IAAK,UACD0oB,EACKhyD,KAAK,KAAM2iC,EAAQ5Z,QAAU,GAC7B/oB,KAAK,KAAM2iC,EAAQ2G,SAAW,GAEnC,MACJ,IAAK,MACD0oB,EACKhyD,KAAK,IAAK2iC,EAAQyvB,WAInC,IAEJN,EAAMv8D,OAAOoD,Q,GAGrBk5D,EAAkBhiE,UAAAkiE,mBAAlB,SAAmBM,GACf,OAAQA,GACJ,IAAK,SACD,MAAO,OACX,IAAK,MACD,MAAO,OAEf,OAAOA,C,EAEXR,EAAAhiE,UAAAuiE,QAAA,WACI,IAAM3Q,EAASrxD,KAAK+hE,eACdG,EAAUliE,KAAKmiE,cACfC,EAAUpiE,KAAKqiE,aACf1pC,EAAQ34B,KAAK24B,QACbugB,EAASl5C,KAAKk5C,SAAWgpB,EAGzBI,GAAW3pC,EAAiB,EAAT04B,EAAa+Q,GAAW,EACjD,MAAO,KAHG,EAAIzpC,EAAQ,GAGL,KAFP,EAAIugB,GAGV,KAAOmY,EAAS,KAAOA,EAAS,UAAYA,EAAS,KAAOA,EAC5D,KAAO14B,EAAkB,GAAT04B,GAChB,IAAMA,EAAS,IAAMA,EAAS,UAAYA,EAAS,IAAMA,EACzD,KAAOnY,EAAmB,GAATmY,GACjB,IAAMA,EAAS,IAAMA,EAAS,WAAaA,EAAS,IAAMA,EAC1D,KAAOiR,EACP,KAAOF,EAAU,EAAI,IAAMF,EAC3B,KAAOE,EAAU,EAAI,KAAOF,EAC5B,KAAOI,EACP,KAAOjR,EAAS,KAAOA,EAAS,WAAaA,EAAS,KAAOA,EAC7D,G,EAGRoQ,EAAAhiE,UAAA40C,MAAA,W,EAGAotB,EAAAhiE,UAAA41D,SAAA,W,EAGHoM,CAAD,CAzIA,CAA2BvR,IA0I3BuR,GAAMhiE,UAAU0rC,QAAU,gBAsB1Bs2B,GAAMhiE,UAAUyxC,QAAQ,QAAS,SAAU,MAAO,aAAc,CAAC,SAAU,SAAU,OAAQ,UAAW,OAAQ,CAAE8B,KAAM,CAAC,aACzHyuB,GAAMhiE,UAAUyxC,QAAQ,QAAS,GAAI,SAAU,QAAS,KAAM,CAAE8B,KAAM,CAAC,aACvEyuB,GAAMhiE,UAAUyxC,QAAQ,SAAU,GAAI,SAAU,SAAU,KAAM,CAAE8B,KAAM,CAAC,aACzEyuB,GAAMhiE,UAAUyxC,QAAQ,cAAe,KAAM,aAAc,eAAgB,KAAM,CAAE5D,UAAU,IAC7Fm0B,GAAMhiE,UAAUyxC,QAAQ,YAAa,KAAM,aAAc,aAAc,KAAM,CAAE5D,UAAU,IACzFm0B,GAAMhiE,UAAUyxC,QAAQ,SAAU,KAAM,SAAU,SAAU,KAAM,CAAE8B,KAAM,CAAC,aAC3EyuB,GAAMhiE,UAAUyxC,QAAQ,eAAgB,EAAG,SAAU,gBACrDuwB,GAAMhiE,UAAUyxC,QAAQ,cAAe,EAAG,SAAU,eACpDuwB,GAAMhiE,UAAUyxC,QAAQ,aAAc,GAAI,SAAU,cACpDuwB,GAAMhiE,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,UAAW,KAAM,CAAE8B,KAAM,CAAC,aAE3E,IAAMuvB,GAAcd,GAAMhiE,UAAU4xD,OACpCoQ,GAAMhiE,UAAU4xD,OAAS,SAAU3gD,GAC/B,IAAMq/B,EAASwyB,GAAY5hE,MAAMX,KAAMS,WACvC,OAAIA,UAAUC,QACVV,KAAK24B,MAAMjoB,GACX1Q,KAAKk5C,OAAOxoC,GACLq/B,GAEJ/gC,KAAK0T,IAAI1iB,KAAK24B,QAAS34B,KAAKk5C,UAAY,CACnD,E,+PClLA,IAAAspB,GAAA,SAAAr0B,GAQI,SAAAq0B,IACI,IAAAp0B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAERouC,EAAKq0B,aAAe,IAAIhB,GACxBrzB,EAAKs0B,QAAU,IAAI3M,G,EAoI3B,OAhJ0Bn2D,EAAS4iE,EAAAr0B,GAe/Bq0B,EAAA/iE,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GACrB,IAAMggD,EAAW3iE,KAAK2iE,WACtB,MAAO,CACH/0D,GAAK+0D,EAAW,EAChBxxD,GAAKwxD,EAAW,EAChBhqC,MAAOgqC,EACPzpB,OAAQypB,E,EAIhBH,EAAQ/iE,UAAAyK,SAAR,SAAS+G,GACL,OAAOjR,KAAKyiE,aAAav4D,SAAS+G,E,EAGtCuxD,EAAA/iE,UAAA+xD,aAAA,SAAaC,EAAQC,GACjB,OAAO1xD,KAAKyiE,aAAajR,aAAaC,EAAQC,E,EAGlD8Q,EAAA/iE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,UACdz0C,KAAKm1D,UACZn1D,KAAK4iE,MAAQnuB,EAAQhmC,OAAO,QAC5BzO,KAAK4iE,MAAMn0D,OAAO,YACbmB,KAAK,KAAM,QAAU5P,KAAKoS,KAAO,WACjC3D,OAAO,UACPmB,KAAK,IAAK,GACVA,KAAK,IAAK,GAEf5P,KAAK4iE,MAAMn0D,OAAO,YACbmB,KAAK,KAAM,QAAU5P,KAAKoS,KAAO,WACjC3D,OAAO,QAEZzO,KAAK6iE,MAAQpuB,EAAQhmC,OAAO,KAC5BzO,KAAKyiE,aACA3hE,OAAOd,KAAK6iE,MAAMx9D,QAEvBrF,KAAK0iE,QACA5hE,OAAO2zC,EAAQpvC,QAEpBrF,KAAK6hE,gBAAkBptB,EAAQhmC,OAAO,SACtC,IAAMohC,EAAU7vC,KAChBy0C,EACKvpC,GAAG,SAAS,SAAU43D,GACnBjzB,EAAQwE,MAAMyuB,EAClB,IACC53D,GAAG,YAAY,SAAU43D,GACtBjzB,EAAQwlB,SAASyN,EACrB,G,EAIRN,EAAK/iE,UAAA40C,MAAL,SAAMoX,G,EAIN+W,EAAQ/iE,UAAA41D,SAAR,SAAS5J,G,EAKT+W,EAAA/iE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAMwE,EAAOj5C,KAAKqzC,UAClB,GAAIrzC,KAAKm1D,YAAclc,EAAM,CACzBj5C,KAAKm1D,UAAYlc,EAEjB,IAAM0pB,EAAW3iE,KAAK2iE,WAChBtR,EAASsR,EAAW,EAC1B3iE,KAAK4iE,MAAMz1D,OAAO,UACbyC,KAAK,IAAKyhD,GAEfrxD,KAAK4iE,MAAMz1D,OAAO,QACbyC,KAAK,KAAMyhD,GACXzhD,KAAK,KAAMyhD,GACXzhD,KAAK,QAAS+yD,GACd/yD,KAAK,SAAU+yD,GAEpB3iE,KAAK0iE,QACA5pB,SAAS6pB,GAAY,IAAM3iE,KAAK+iE,kBAAoB,KACpD7c,SAELlmD,KAAKyiE,aACAf,MAAM1hE,KAAK0hE,SACX/oC,MAAMgqC,GACNzpB,OAAOypB,GACPzc,SAEL,IAAMgO,EAAQl0D,KAAK6iE,MAAMt1D,UAAU,SAASnI,KAAKpF,KAAKgjE,WAAa,CAAChjE,KAAKgjE,YAAc,IAAI,SAAU9jE,GAAK,OAAOA,CAAE,IACnHg1D,EAAMhvD,QACDuJ,OAAO,SACPmB,KAAK,aAAc5P,KAAKgjE,YACxBt0D,MAAMwlD,GACNtkD,KAAK,YAAa,aAAe5P,KAAKoS,KAAO,IAAMpS,KAAK0hE,QAAU,KAClE9xD,KAAK,KAAMyhD,GACXzhD,KAAK,KAAMyhD,GACXzhD,KAAK,QAAS+yD,GACd/yD,KAAK,SAAU+yD,GAEhB3iE,KAAKijE,2BAA6BjjE,KAAKkjE,0BACvCljE,KAAKmjE,gBAAgBnC,GAAUhhE,KAAKojE,oBAExClP,EAAM/uD,OACDoD,SAELvI,KAAK6hE,gBAAgB7xD,KAAKhQ,KAAK8hE,U,GAIvCU,EAAA/iE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVtG,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,GACpBz0C,KAAKyiE,aACA3hE,OAAO,MAEZd,KAAK0iE,QACA5hE,OAAO,K,EAenB0hE,CAAD,CAhJA,CAA0BtS,IAiJ1BsS,GAAK/iE,UAAU0rC,QAAU,eAEzBq3B,GAAK/iE,UAAUyxC,QAAQ,QAAS,SAAU,MAAO,aAAc,CAAC,SAAU,UAAW,CAAE8B,KAAM,CAAC,aAC9FwvB,GAAK/iE,UAAUqyC,aAAa,SAAU,UAAW,QACjD0wB,GAAK/iE,UAAUqyC,aAAa,aAAc,UAAW,mBACrD0wB,GAAK/iE,UAAUyxC,QAAQ,WAAY,KAAM,SAAU,YAAa,KAAM,CAAE5D,UAAU,IAClFk1B,GAAK/iE,UAAUqyC,aAAa,kBAAmB,UAAW,kBAC1D0wB,GAAK/iE,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,UAAW,KAAM,CAAE8B,KAAM,CAAC,aAC1EwvB,GAAK/iE,UAAUyxC,QAAQ,WAAY,GAAI,SAAU,WAAY,KAAM,CAAE8B,KAAM,CAAC,aAC5EwvB,GAAK/iE,UAAUyxC,QAAQ,iBAAkB,GAAI,SAAU,kBAAmB,KAAM,CAAE8B,KAAM,CAAC,aACzFwvB,GAAK/iE,UAAUqyC,aAAa,kBAAmB,eAAgB,aAC/D0wB,GAAK/iE,UAAUqyC,aAAa,oBAAqB,eAAgB,eCnJjE,IAAAuxB,GAAA,SAAAl1B,GAcI,SAAAk1B,IACI,IAAAj1B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHJouC,EAAgBk1B,iBAAGC,KAKvBn1B,EAAKo1B,mBAAqB,IAAI/B,GAC9BrzB,EAAKq1B,aAAe,IAAIjB,GACxBp0B,EAAKs1B,cAAgB,IAAI7O,GACzBzmB,EAAKu1B,aAAe,IAAI9O,GACxBzmB,EAAKw1B,oBAAsB,G,EAkHnC,OAvI4BhkE,EAASyjE,EAAAl1B,GAuBjCk1B,EAAA5jE,UAAAokE,mBAAA,WACI,IAAI9zB,EACJ,IAAK,IAAMhvC,KAAOf,KAAK4jE,oBAAqB,CACxC,IAAM9W,EAAO9sD,KAAK4jE,oBAAoB7iE,GAAK+rD,KACtC/c,GAGDA,EAAOniC,EAAIoB,KAAKC,IAAI8gC,EAAOniC,EAAGk/C,EAAKl/C,GACnCmiC,EAAO5+B,EAAInC,KAAKC,IAAI8gC,EAAO5+B,EAAG27C,EAAK37C,GACnC4+B,EAAOpX,MAAQ3pB,KAAK0T,IAAIqtB,EAAOpX,MAAOm0B,EAAKn0B,OAC3CoX,EAAOmJ,OAASlqC,KAAK0T,IAAIqtB,EAAOmJ,OAAQ4T,EAAK5T,SAL7CnJ,EAAS+c,C,CAQjB,OAAO/c,GAAU,CAAEniC,EAAG,EAAGuD,EAAG,EAAGwnB,MAAO,EAAGugB,OAAQ,E,EAErDmqB,EAAA5jE,UAAAyF,MAAA,SAAMswC,EAASf,GAAf,IA6BCrG,EAAApuC,KA5BGmuC,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBA,EACKvpC,GAAG,aAAa,WACbupC,EAAQ1kC,QAAQ,YAAY,GAC5Bq+B,EAAK8X,QACT,IACCh7C,GAAG,YAAY,WACZupC,EAAQ1kC,QAAQ,YAAY,GAC5Bq+B,EAAK8X,QACT,IAGJlmD,KAAK8jE,oBAAsBrvB,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,gBAC7D5P,KAAK+jE,cAAgBtvB,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,eACvD5P,KAAKgkE,eAAiBvvB,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,gBACxD5P,KAAKikE,cAAgBxvB,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,eACvD5P,KAAKkkE,cAAgBzvB,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,eAEvD5P,KAAKwjE,mBACA1iE,OAAOd,KAAK8jE,oBAAoBz+D,QACrCrF,KAAKyjE,aACAL,gBAAgB,QAChBe,kBAAkB,QAClBrjE,OAAOd,KAAK+jE,cAAc1+D,QAC/BrF,KAAK0jE,cACA5iE,OAAOd,KAAKgkE,eAAe3+D,QAChCrF,KAAK2jE,aACA7iE,OAAOd,KAAKikE,cAAc5+D,O,EAEnCg+D,EAAA5jE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBz0C,KAAK2jE,aACA7qB,SAAS94C,KAAKokE,uBACnB,IAAMv0B,EAAU7vC,KAChBA,KAAK4jE,oBAAsB,GAC3B,IAAIS,EAAW,EACTC,EAActkE,KAAKkkE,cAAc32D,UAAU,eAAenI,KAAKzD,EAAA,GAAI3B,KAAKukE,mBAAmB,GAAAvvC,WACjGsvC,EAAYp/D,QAAQuJ,OAAO,KACtBmB,KAAK,QAAS,cACdjC,MAAK,SAA6BzO,EAAGuzC,GAClC,IAAM+xB,GAAO,IAAIhC,IACZG,SAAS9yB,EAAQ40B,sBACjB1B,eAAelzB,EAAQ60B,4BACvB5jE,OAAOd,MACP0hE,MAAM,UAEX7xB,EAAQyzB,iBAAiBjxD,IAAIrS,KAAMwkE,EACvC,IACC91D,MAAM41D,GACN32D,MAAK,SAA6BzO,EAAGuzC,GAClC,IAAM+xB,EAAO30B,EAAQyzB,iBAAiBnxD,IAAInS,WAClB,IAAbd,EAAEw3C,QAAwB8tB,EAAK9tB,OAAOx3C,EAAEw3C,aAC5B,IAAZx3C,EAAEwiE,OAAuB8C,EAAK9C,MAAMxiE,EAAEwiE,YAChB,IAAtBxiE,EAAEikE,iBAAiCqB,EAAKrB,gBAAgBjkE,EAAEikE,sBACpC,IAAtBjkE,EAAEkkE,iBAAiCoB,EAAKpB,gBAAgBlkE,EAAEkkE,sBAClC,IAAxBlkE,EAAEilE,mBAAmCK,EAAKL,kBAAkBjlE,EAAEilE,mBACzE,IAAMQ,EAAWH,EAAK7B,WACtB6B,EACK52D,EAAEy2D,EAAWM,GACbxzD,EAAEwzD,EAAW,GACbze,SAELme,GAAYM,EAAW90B,EAAQ+0B,oBAC/B/0B,EAAQ+zB,oBAAoBnxB,GAAO,CAC/B/C,OAAQ80B,EACR1X,KAAM0X,EAAK/Z,SAAQ,GAE3B,IACJ6Z,EAAYn/D,OACPwI,MAAK,SAA6BzO,EAAGuzC,GACrB5C,EAAQyzB,iBAAiBnxD,IAAInS,MACrCc,OAAO,KAChB,IACCyH,Q,EAET86D,EAAA5jE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAK2jE,aAAa7iE,OAAO,MACzBd,KAAK0jE,cAAc5iE,OAAO,MAC1Bd,KAAKyjE,aAAa3iE,OAAO,MACzBd,KAAKwjE,mBAAmB1iE,OAAO,MAC/BqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAExB4uB,EAAA5jE,UAAAolE,gBAAA,SAAgBC,EAAkBC,GAC9B/kE,KAAKkkE,cAAct0D,KAAK,YAAa,aAAA1N,OAAa4iE,EAAQ,MAAA5iE,OAAK6iE,EAAQ,K,EAE3E1B,EAAM5jE,UAAAymD,OAAN,SAAOx2C,GAAP,IAUC0+B,EAAApuC,KATG,OAAOmuC,EAAK1uC,UAACymD,OAAMvmD,KAAAK,MAAC,SAAAomC,GAChBgI,EAAKo1B,mBAAmBtd,SACxB9X,EAAKq1B,aAAavd,SAClB9X,EAAKs1B,cAAcxd,SACnB9X,EAAKu1B,aAAazd,SACdx2C,GACAA,EAAS02B,EAEjB,G,EAEPi9B,CAAD,CAvIA,CAA4BnT,IAwI5BmT,GAAO5jE,UAAU0rC,QAAU,iBAsD3Bk4B,GAAO5jE,UAAUyxC,QAAQ,UAAW,EAAG,SAAU,WAEjDmyB,GAAO5jE,UAAUyxC,QAAQ,2BAA4B,GAAI,SAAU,4BACnEmyB,GAAO5jE,UAAUyxC,QAAQ,qBAAsB,GAAI,SAAU,uBAC7DmyB,GAAO5jE,UAAUyxC,QAAQ,kBAAmB,GAAI,QAAS,mBACzDmyB,GAAO5jE,UAAUyxC,QAAQ,oBAAqB,EAAG,SAAU,qBAE3DmyB,GAAO5jE,UAAUqyC,aAAa,OAAQ,eAAgB,UACtDuxB,GAAO5jE,UAAUqyC,aAAa,YAAa,eAAgB,mBAC3DuxB,GAAO5jE,UAAUqyC,aAAa,eAAgB,eAAgB,YAC9DuxB,GAAO5jE,UAAUqyC,aAAa,qBAAsB,eAAgB,kBAEpEuxB,GAAO5jE,UAAUqyC,aAAa,QAAS,gBAAiB,QACxDuxB,GAAO5jE,UAAUqyC,aAAa,aAAc,gBAAiB,aAC7DuxB,GAAO5jE,UAAUqyC,aAAa,kBAAmB,gBAAiB,cAClEuxB,GAAO5jE,UAAUqyC,aAAa,gBAAiB,gBAAiB,YAEhEuxB,GAAO5jE,UAAUqyC,aAAa,cAAe,eAAgB,QAC7DuxB,GAAO5jE,UAAUqyC,aAAa,mBAAoB,eAAgB,aAClEuxB,GAAO5jE,UAAUqyC,aAAa,wBAAyB,eAAgB,cACvEuxB,GAAO5jE,UAAUqyC,aAAa,sBAAuB,eAAgB,YAErEuxB,GAAO5jE,UAAUqyC,aAAa,kBAAmB,qBAAsB,SACvEuxB,GAAO5jE,UAAUqyC,aAAa,sBAAuB,qBAAsB,aAC3EuxB,GAAO5jE,UAAUqyC,aAAa,wBAAyB,qBAAsB,eAE7EuxB,GAAO5jE,UAAUqyC,aAAa,eAAgB,sBAC9CuxB,GAAO5jE,UAAUqyC,aAAa,cAAe,sBAC7CuxB,GAAO5jE,UAAUqyC,aAAa,aAAc,sBCxO5C,IAAAkzB,GAAA,SAAA72B,GAEI,SAAA62B,IACI,OAAA72B,EAAKxuC,KAAAK,OAAGA,I,CAiDhB,OApDgCJ,EAAMolE,EAAA72B,GAKlC62B,EAAAvlE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAEzBuwB,EAAAvlE,UAAA2E,OAAA,WACI+pC,EAAK1uC,UAAC2E,OAAOzD,MAAMX,KAAMS,WAEzBT,KAAKyjE,aAAavd,SAClBlmD,KAAK0jE,cAAcxd,SACnBlmD,KAAK2jE,aAAazd,SAQlB,IAPA,IAAM+e,EAAYjlE,KAAKyjE,aAAahZ,SAAQ,GACtCya,EAAallE,KAAK0jE,cAAcjZ,SAAQ,GACxC0a,EAAYnlE,KAAK2jE,aAAalZ,SAAQ,GAExC2a,EAAS,EACTC,EAAS,EACPC,EAAWtlE,KAAK4kE,oBACN71B,EAAA,EAAAkB,EAAA7wC,OAAOw3B,KAAK52B,KAAK4jE,qBAAjB70B,EAAAkB,EAAAvvC,OAAAquC,IAAuC,CAAlD,IAAMxuC,EAAC0vC,EAAAlB,GACRq2B,GAAUplE,KAAK4jE,oBAAoBrjE,GAAGusD,KAAKn0B,MAAQ2sC,EACnDD,EAASA,EAASrlE,KAAK4jE,oBAAoBrjE,GAAGusD,KAAK5T,OAASmsB,EAASrlE,KAAK4jE,oBAAoBrjE,GAAGusD,KAAK5T,M,CAG1G,IAAMqsB,EAAuC,OAAvBvlE,KAAKwlE,cAAyBxlE,KAAKwlE,cAAgBx2D,KAAK0T,IAC1EwiD,EAAWhsB,OAASisB,EAAUjsB,OAA2B,EAAjBl5C,KAAK8+B,UAC7CumC,EAASJ,EAAU/rB,OAA2B,EAAjBl5C,KAAK8+B,WAEhC2mC,EAAsC,OAAtBzlE,KAAK0lE,aAAwB1lE,KAAK0lE,aAAe12D,KAAK0T,IACxEwiD,EAAWvsC,MAAQssC,EAAUtsC,MAA0B,EAAjB34B,KAAK8+B,UAC3CsmC,EAASD,EAAUxsC,MAA0B,EAAjB34B,KAAK8+B,WAErC9+B,KAAKwjE,mBACAtqB,OAAOqsB,GACP5sC,MAAM8sC,GAEXzlE,KAAK0jE,cAAcnT,KAAK,CACpB3iD,GAAK63D,EAAgB,EAAMP,EAAWvsC,MAAQ,EAAK34B,KAAK8+B,UACxD3tB,GAAKo0D,EAAgB,EAAML,EAAWhsB,OAAS,EAAKl5C,KAAK8+B,YAE7D9+B,KAAKyjE,aAAalT,KAAK,CACnB3iD,EAAI63D,EAAgB,EAAMR,EAAUtsC,MAAQ,EAAK34B,KAAK8+B,UACtD3tB,GAAKo0D,EAAgB,EAAMN,EAAU/rB,OAAS,EAAKl5C,KAAK8+B,YAE5D9+B,KAAK2jE,aAAapT,KAAK,CACnB3iD,GAAK63D,EAAgB,EAAMN,EAAUxsC,MAAQ,EAAK34B,KAAK8+B,UACvD3tB,EAAIo0D,EAAgB,EAAMJ,EAAUjsB,OAAS,EAAKl5C,KAAK8+B,YAE3D9+B,KAAK6kE,gBAAiBY,EAAgB,EAAKF,EAAgB,EAAKF,EAASrlE,KAAK8+B,U,EAErFkmC,CAAD,CApDA,CAAgC3B,IAqDhC2B,GAAWvlE,UAAU0rC,QAAU,qBAS/B65B,GAAWvlE,UAAUyxC,QAAQ,aAAc,KAAM,SAAU,cAC3D8zB,GAAWvlE,UAAUyxC,QAAQ,cAAe,KAAM,SAAU,eC/D5D,IAAAy0B,GAAA,SAAAx3B,GAEI,SAAAw3B,IACI,OAAAx3B,EAAKxuC,KAAAK,OAAGA,I,CAgFhB,OAnF+BJ,EAAM+lE,EAAAx3B,GAKjCw3B,EAAAlmE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAEzBkxB,EAAAlmE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAK1uC,UAAC2E,OAAOzD,MAAMX,KAAMS,WAEzB,IAAMmlE,EAAcnxB,EAAQ1kC,QAAQ,YAEpC/P,KAAKyjE,aAAavd,SAClBlmD,KAAK2jE,aAAazd,SAClBlmD,KAAK0jE,cAAcxd,SACnB,IAAMgf,GAAcllE,KAAK6lE,wBAA0BD,EAAc5lE,KAAK0jE,cAAcjZ,SAAQ,GAAQ,CAAEvR,OAAQ,EAAGvgB,MAAO,GAClHssC,GAAajlE,KAAK8lE,uBAAyBF,EAAc5lE,KAAKyjE,aAAahZ,SAAQ,GAAQ,CAAEvR,OAAQ,EAAGvgB,MAAO,GAC/GwsC,GAAanlE,KAAK+lE,8BAAgCH,EAAc5lE,KAAK2jE,aAAalZ,SAAQ,GAAQ,CAAEvR,OAAQ,EAAGvgB,MAAO,GACtHqtC,IAAWhmE,KAAKimE,6BAA+BL,IAAc5lE,KAAKukE,kBAAkB7jE,OAAS,EAAIV,KAAKykE,qBAAuBzkE,KAAK8+B,UAAgB,EAClJonC,EAAkBlmE,KAAKmmE,mBAAmBP,EAAaV,EAAYD,EAAWE,EAAWa,GAE/FhmE,KAAK0jE,cAAc3a,SAAS/oD,KAAK6lE,wBAA0BD,GAC3D5lE,KAAKyjE,aAAa1a,SAAS/oD,KAAK8lE,uBAAyBF,GACzD5lE,KAAK2jE,aAAa5a,SAAS/oD,KAAK+lE,8BAAgCH,GAEhE5lE,KAAKwjE,mBACAtqB,OAAOgtB,EAAgBhtB,QACvBvgB,MAAMutC,EAAgBvtC,OAC3B,IAAMytC,GAAUF,EAAgBhtB,OAAS+rB,EAAU/rB,OAAUl5C,KAAK8+B,UAAY,EACxEunC,EAAUD,EAAUnB,EAAU/rB,OAAS,EAAMgsB,EAAWhsB,OAAS,EAAKl5C,KAAK8+B,UAC3EwnC,EAASD,EAAWnB,EAAWhsB,OAAS,EAAMisB,EAAUjsB,OAAS,EAAKl5C,KAAK8+B,UAC3EynC,EAASD,EAAUnB,EAAUjsB,OAAS,EAAKl5C,KAAK8+B,UACtD9+B,KAAK0jE,cAAcnT,KAAK,CACpB3iD,EAAG,EACHuD,EAAGk1D,IAEPrmE,KAAK2jE,aAAapT,KAAK,CACnB3iD,EAAG,EACHuD,EAAGm1D,IAEPtmE,KAAKyjE,aAAalT,KAAK,CACnB3iD,EAAG,EACHuD,EAAGi1D,IAEPpmE,KAAK6kE,gBAAgBqB,EAAgBvtC,MAAQ,EAAG4tC,E,EAGpDZ,EAAAlmE,UAAAysD,WAAA,WACI,IAAM0Z,GAAc,EACpB5lE,KAAKyjE,aAAavd,SAClBlmD,KAAK2jE,aAAazd,SAClBlmD,KAAK0jE,cAAcxd,SACnB,IAAMgf,GAAcllE,KAAK6lE,uBAAwC7lE,KAAK0jE,cAAcjZ,SAAQ,IACtFwa,GAAajlE,KAAK8lE,sBAAuC9lE,KAAKyjE,aAAahZ,SAAQ,IACnF0a,GAAanlE,KAAK+lE,6BAA8C/lE,KAAK2jE,aAAalZ,SAAQ,IAC1Fub,GAAWhmE,KAAKimE,4BAA6CjmE,KAAKukE,kBAAkB7jE,OAAS,EAAIV,KAAKykE,qBAAuBzkE,KAAK8+B,UAAY,GAGpJ,OAFwB9+B,KAAKmmE,mBAAmBP,EAAaV,EAAYD,EAAWE,EAAWa,GAExE9sB,M,EAE3BysB,EAAkBlmE,UAAA0mE,mBAAlB,SAAmBP,EAAaV,EAAYD,EAAWE,EAAWa,GAC9D,IACME,EAAkB,CACpBvtC,MAFkB3pB,KAAK0T,IAAIwiD,EAAWvsC,MAAOssC,EAAUtsC,MAAOwsC,EAAUxsC,OAE/B,EAAjB34B,KAAK8+B,UAC7Boa,OAAQ+rB,EAAU/rB,OAASgsB,EAAWhsB,OAAS8sB,EAAUhmE,KAAKmiE,cAAgBgD,EAAUjsB,OAA2B,EAAjBl5C,KAAK8+B,WAEvG0nC,EAAiB,EAcrB,OAbIxmE,KAAK6lE,yBAA2BD,IAChCY,GAAkBxmE,KAAK8+B,WAEvB9+B,KAAK8lE,wBAA0BF,IAC/BY,GAAkBxmE,KAAK8+B,WAEvB9+B,KAAK+lE,+BAAiCH,IACtCY,GAAkBxmE,KAAK8+B,YAEW,IAAlC9+B,KAAKukE,kBAAkB7jE,QAAgBV,KAAKimE,8BAAgCL,KAC5EY,GAAkBxmE,KAAK8+B,WAE3BonC,EAAgBhtB,QAAUstB,EACnBN,C,EAEdP,CAAD,CAnFA,CAA+BtC,IAoF/BsC,GAAUlmE,UAAU0rC,QAAU,oBAa9Bw6B,GAAUlmE,UAAUyxC,QAAQ,wBAAwB,EAAO,UAAW,wBACtEy0B,GAAUlmE,UAAUyxC,QAAQ,uBAAuB,EAAO,UAAW,uBACrEy0B,GAAUlmE,UAAUyxC,QAAQ,8BAA8B,EAAO,UAAW,8BAC5Ey0B,GAAUlmE,UAAUyxC,QAAQ,6BAA6B,EAAO,UAAW,6B,+QC7F3E,IAAAu1B,GAAA,SAAAt4B,GAEI,SAAAs4B,IACI,OAAAt4B,EAAKxuC,KAAAK,OAAGA,I,CAyDhB,OA5DgCJ,EAAM6mE,EAAAt4B,GAKlCs4B,EAAAhnE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAEzBgyB,EAAAhnE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZz0C,KAAK2jE,aAAa3zD,KAAK,IACvBm+B,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,E,EAE1BgyB,EAAMhnE,UAAAymD,OAAN,SAAOx2C,GAAP,IA+CC0+B,EAAApuC,KA9CG,OAAOmuC,EAAK1uC,UAACymD,OAAMvmD,KAAAK,MAAC,SAAComC,GACjB,IAAM6+B,EAAyB,KAAb7+B,EAAEsgC,OAAgB,CAAE/tC,MAAO,EAAGugB,OAAQ,GAAM9K,EAAKq1B,aAAahZ,SAAQ,GAClFya,EAAa92B,EAAKs1B,cAAcjZ,SAAQ,GACxCkc,EAAmBv4B,EAAKy1B,qBAE1BlrC,EAAQyV,EAAKs3B,aACZ/sC,IACDA,EAAQssC,EAAUtsC,MAAQusC,EAAWvsC,MAAQguC,EAAiBhuC,MAAyB,EAAjByV,EAAKtP,WAG/E,IAAIoa,EAAS9K,EAAKo3B,cACbtsB,IACDA,EAASlqC,KAAK0T,IAAIuiD,EAAU/rB,OAAQgsB,EAAWhsB,OAAQytB,EAAiBztB,QAA2B,EAAjB9K,EAAKtP,WAG3FsP,EAAKo1B,mBACA7qC,MAAMA,GACNugB,OAAOA,GACPgN,SAGL9X,EAAKq1B,aAAalT,KAAK,CACnB3iD,GAAK+qB,EAAQ,EAAMssC,EAAe,MAClC9zD,EAAG,IAGPi9B,EAAKy2B,gBAAgBlsC,EAAQ,GAAIguC,EAAiBztB,OAAS,GAC3D,IAAM0tB,EAAY3B,EAAUtsC,MAAQ,EAAIssC,EAAUtsC,MAAQyV,EAAKtP,UAAY,EACrE+nC,GAAWluC,EAAQ,EAAKiuC,EAAYx4B,EAAKtP,UAEzCgoC,EAASnuC,EAAQiuC,GADLx4B,EAAKtP,UAAY,EAAI6nC,EAAiBhuC,MAAQyV,EAAKtP,WAGrEsP,EAAKs1B,cACAnT,KAAK,CACF3iD,EAAGi5D,EACH11D,EAAG,IAEN+jD,OAAO,SACPv8B,MAAMmuC,GACN5gB,SAGDx2C,GACAA,EAAS02B,EAEjB,G,EAEPqgC,CAAD,CA5DA,CAAgCpD,IA6DhCoD,GAAWhnE,UAAU0rC,QAAU,qBAS/Bs7B,GAAWhnE,UAAUyxC,QAAQ,aAAc,KAAM,SAAU,cAC3Du1B,GAAWhnE,UAAUyxC,QAAQ,cAAe,KAAM,SAAU,eAE5D,IAAA61B,GAAA,SAAA54B,GAgDI,SAAA44B,IACI,IAAA34B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHJouC,EAAe44B,gBAAGzD,KAItB0D,GAA6BtnE,KAAKyuC,GAAM,G,EAsGhD,OAxJoCxuC,EAAUmnE,EAAA54B,GAqD1C44B,EAAAtnE,UAAAynE,eAAA,eAsBC94B,EAAApuC,KArBSi4B,EAAUj4B,KAAKi4B,UACfkvC,EAAa,CACf,kBACA,cACA,OACA,YACA,QACA,aACA,cACA,oBAEEC,EAAOD,EAAW94D,KAAI,SAAAg5D,GAAa,OAAApvC,EAAQp1B,QAAQurC,EAAK,GAAAlsC,OAAGmlE,EAAS,aAAY,IACtF,OAAOrnE,KAAKoF,OAAOiJ,KAAI,SAAAioB,GAInB,IAHA,IAAMyZ,EAAS,CACXu3B,QAAShxC,GAEJ/1B,EAAI,EAAGA,EAAI4mE,EAAWzmE,SAAUH,EACrCwvC,EAAOo3B,EAAW5mE,IAAM6mE,EAAK7mE,IAAM,EAAI+1B,EAAI8wC,EAAK7mE,IAA0C,mBAA7B6tC,EAAK,GAAAlsC,OAAGilE,EAAW5mE,KAAuB6tC,EAAK,GAAGlsC,OAAAilE,EAAW5mE,OAAU,GAExI,OAAOwvC,C,GACR/vC,K,EAGP+mE,EAAAtnE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBY,GAASG,EAAQnsC,YACZxC,MAAM,aAAc,UACpBA,MAAM,aAAc,UAEzB7G,KAAK81C,WAAWhB,cAAcL,E,EAGlCsyB,EAAAtnE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAM5E,EAAU7vC,KAEVunE,EAAiB,EAAjBA,EAAyB,EAAzBA,EAAmC,EAAnCA,EAA8C,EAC9C5uC,EAAQ34B,KAAK24B,QAAU4uC,EAAcA,EAAe,GACpDruB,EAASl5C,KAAKwlE,cAAgB+B,EAAaA,EAE3CjlE,EAAMmyC,EAAQlnC,UAAU,OAAOnI,KAAKpF,KAAKknE,kBAC/C5kE,EAAI4C,QAAQuJ,OAAO,OACdmB,KAAK,QAAS,kBACdjQ,KAAKK,KAAK81C,WAAW5wC,MAAM2I,KAAK7N,KAAK81C,aACrC5qC,GAAG,SAAS,SAAUhM,GACnB2wC,EAAQwE,MAAMxE,EAAQ6Y,SAASxpD,EAAEooE,SAAUz3B,EAAQ23B,cAAe33B,EAAQiG,WAAWX,SAASn1C,MAClG,IACCkL,GAAG,YAAY,SAAUhM,GACtB2wC,EAAQwlB,SAASxlB,EAAQ6Y,SAASxpD,EAAEooE,SAAUz3B,EAAQ23B,cAAe33B,EAAQiG,WAAWX,SAASn1C,MACrG,IACC2N,MAAK,WACF,IAAM85D,GAAa,IAAIhB,IAClB3lE,OAAOd,MAEZ6vC,EAAQm3B,gBAAgB30D,IAAIrS,KAAMynE,EACtC,IACC/4D,MAAMpM,GACNuE,MAAM,gBAAgB,SAAA3H,GAAK,OAAAA,EAAEwoE,WAAF,IAC3B/5D,MAAK,SAAUzO,GACZ2wC,EAAQm3B,gBAAgB70D,IAAInS,MACvB66C,IAAI,CAAEjtC,EAAG+qB,EAAQ,EAAGxnB,EAAG+nC,EAAS,IAChC2P,OAAO,CAAElwB,MAAKA,EAAEugB,OAAMA,IACtBwsB,WAAW/sC,GACX6sC,YAAYtsB,GACZyuB,gBAAgB,QAChBC,oBAAoB1oE,EAAE+hE,iBACtB4G,sBAAsB,QACtBnB,KAAKxnE,EAAEwnE,MACPoB,UAAU5oE,EAAE4oE,WACZC,aAAa7uB,EAAS,QACtB8uB,mBAAmB,GACnBC,MAAM/oE,EAAE+oE,OACRC,cAAchvB,EAAS,QACvBivB,WAAWjpE,EAAEipE,YACbh7B,YAAYjuC,EAAEiuC,aACdi7B,iBAAiBlpE,EAAEkpE,kBACnBliB,QAET,IAEJ5jD,EAAI6C,OAAOoD,Q,EAGfw+D,EAAAtnE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVtG,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAIxBsyB,EAAAtnE,UAAA40C,MAAA,SAAM/d,EAAKmC,EAAQ0c,G,EAInB4xB,EAAAtnE,UAAA41D,SAAA,SAAS/+B,EAAKmC,EAAQ0c,G,EAjJf4xB,EAAAsB,SAAyB,CAAC,CAC7Bj2D,GAAI,cACJ7G,KAAM,UACP,CACC6G,GAAI,OACJ7G,KAAM,UACP,CACC6G,GAAI,YACJ7G,KAAM,UACP,CACC6G,GAAI,QACJ7G,KAAM,WAIV3K,EAAA,CADCswC,GAAQ,GAAI,SAAU,e,2BACY61B,EAAAtnE,UAAA,sBAEnCmB,EAAA,CADCswC,GAAQ,UAAW,SAAU,2BAA4B,KAAM,CAAEo3B,UAAW,e,2BACtCvB,EAAAtnE,UAAA,0BAEvCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,2BAA2B,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACxDy5B,EAAAtnE,UAAA,gCAE7CmB,EAAA,CADCswC,GAAQ,QAAS,SAAU,uBAAwB,KAAM,CAAEo3B,UAAW,e,2BACpCvB,EAAAtnE,UAAA,sBAEnCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,uBAAuB,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACxDy5B,EAAAtnE,UAAA,4BAEzCmB,EAAA,CADCswC,GAAQ,IAAK,SAAU,Q,2BACI61B,EAAAtnE,UAAA,eAE5BmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,eAAe,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACvDy5B,EAAAtnE,UAAA,qBAElCmB,EAAA,CADCswC,GAAQ,MAAO,SAAU,qBAAsB,KAAM,CAAEo3B,UAAW,e,2BAClCvB,EAAAtnE,UAAA,oBAEjCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,sBAAsB,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACzDy5B,EAAAtnE,UAAA,0BAEvCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,gBAAgB,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACvDy5B,EAAAtnE,UAAA,sBAEnCmB,EAAA,CADCswC,GAAQ,QAAS,SAAU,sBAAuB,KAAM,CAAEo3B,UAAW,e,2BACpCvB,EAAAtnE,UAAA,qBAElCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,uBAAuB,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACzDy5B,EAAAtnE,UAAA,2BAExCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,sBAAsB,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACvDy5B,EAAAtnE,UAAA,4BAEzCmB,EAAA,CADCswC,GAAQ,QAAS,SAAU,4BAA6B,KAAM,CAAEo3B,UAAW,e,2BACpCvB,EAAAtnE,UAAA,2BAExCmB,EAAA,CADCswC,GAAQ,KAAM,MAAO,6BAA6B,WAAc,OAAOlxC,KAAKi4B,SAAU,GAAI,CAAEqV,UAAU,I,2BACzDy5B,EAAAtnE,UAAA,iCA4GjDsnE,C,CAxJD,CAAoCnb,IAyJpCmb,GAAetnE,UAAU0rC,QAAU,yB,iECnOnC,IAAAo9B,GAAA,SAAAp6B,GAKI,SAAAo6B,IACI,IAAAn6B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAERouC,EAAK6zB,QAAS,IAAIR,IACbC,MAAM,QACNx2D,GAAG,SAAS,WACTkjC,EAAKiG,OACT,IACCnpC,GAAG,YAAY,WACZkjC,EAAKinB,UACT,IAEJjnB,EAAKwK,OAAQ,IAAIic,IACZ3pD,GAAG,SAAS,WACTkjC,EAAKiG,OACT,IACCnpC,GAAG,YAAY,WACZkjC,EAAKinB,UACT,I,EAwHZ,OA/I6Bz1D,EAAS2oE,EAAAp6B,GA2BlCo6B,EAAO9oE,UAAAq/B,QAAP,SAAQpuB,GAKJ,OAJA1Q,KAAKwoE,YAAY93D,GACjB1Q,KAAKyoE,aAAa/3D,GAClB1Q,KAAK0oE,WAAWh4D,GAChB1Q,KAAK2oE,cAAcj4D,GACZ1Q,I,EAGXuoE,EAAQ9oE,UAAAmpE,SAAR,SAASjwC,GACL,OAAQ34B,KAAKk1D,UACT,IAAK,QACD,OAAQv8B,EAAQ,EACpB,IAAK,MACD,OAAOA,EAAQ,EAEvB,OAAO,C,EAGX4vC,EAAA9oE,UAAAgrD,QAAA,SAAQC,EAAiB/nC,GACrB,IAAMkmD,EAAW7oE,KAAK44C,MAAM6R,SAAQ,GAC9B9xB,EAAQ34B,KAAK8oE,YAAc9oE,KAAK8oE,YAAYnwC,MAAQkwC,EAASlwC,MAAQ34B,KAAKwoE,cAAgBxoE,KAAKyoE,eAC/FvvB,EAASl5C,KAAK8oE,YAAc9oE,KAAK8oE,YAAY5vB,OAAS2vB,EAAS3vB,OAASl5C,KAAK0oE,aAAe1oE,KAAK2oE,gBACvG,MAAO,CACH/6D,GAAI+qB,EAAQ,EACZxnB,GAAI+nC,EAAS,EACbvgB,MAAKA,EACLugB,OAAMA,E,EAIdqvB,EAAA9oE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,UACdz0C,KAAKm1D,UACZn1D,KAAKiiE,OACAnhE,OAAO00C,GACPssB,QAAQ9hE,KAAK8hE,WAElB9hE,KAAK44C,MACA93C,OAAO00C,E,EAKhB+yB,EAAA9oE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAMwE,EAAOj5C,KAAKqzC,UAClB,GAAIrzC,KAAKm1D,YAAclc,EAAM,CACzBj5C,KAAKm1D,UAAYlc,EAEjB,IAAM4vB,EAAW7oE,KAAK44C,MAAM6R,SAAQ,GAC9B/8C,EAAO,CACTirB,MAAO34B,KAAK8oE,YAAc9oE,KAAK8oE,YAAYnwC,MAAQkwC,EAASlwC,MAAQ34B,KAAKwoE,cAAgBxoE,KAAKyoE,eAC9FvvB,OAAQl5C,KAAK8oE,YAAc9oE,KAAK8oE,YAAY5vB,OAAS2vB,EAAS3vB,OAASl5C,KAAK0oE,aAAe1oE,KAAK2oE,iBAepG,GAZA3oE,KAAKiiE,OACAtpC,MAAMjrB,EAAKirB,OACXugB,OAAOxrC,EAAKwrC,QACZgN,SAGLlmD,KAAK44C,MACAhrC,EAAE5N,KAAK4oE,SAASC,EAASlwC,QACzBowC,kBAAkB/oE,KAAKiiE,OAAO+G,mBAAqBhI,GAAUhhE,KAAKiiE,OAAOtM,kBAAetlC,GACxF61B,SAGDlmD,KAAK8oE,YACL,OAAQ9oE,KAAKk1D,UACT,IAAK,QACDl1D,KAAK44C,MACAhrC,GAAG5N,KAAK8oE,YAAYnwC,MAAQ,EAAIkwC,EAASlwC,MAAQ,GAAK34B,KAAKwoE,cAAgBxoE,KAAKyoE,gBAAkB,GAClGviB,SAEL,MACJ,IAAK,MACDlmD,KAAK44C,MACAhrC,EAAE5N,KAAK8oE,YAAYnwC,MAAQ,EAAIkwC,EAASlwC,MAAQ,GAAK34B,KAAKwoE,cAAgBxoE,KAAKyoE,gBAAkB,GACjGviB,SAKjBlmD,KAAK44C,MAAMkQ,QAAQ+f,EAASlwC,OAASjrB,EAAKirB,OAASkwC,EAAS3vB,QAAUxrC,EAAKwrC,O,GAInFqvB,EAAA9oE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAKiiE,OACAnhE,OAAO,MAEZd,KAAK44C,MACA93C,OAAO,MAEZqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAGxB8zB,EAAA9oE,UAAA40C,MAAA,W,EAGAk0B,EAAA9oE,UAAA41D,SAAA,W,EAgBHkT,CAAD,CA/IA,CAA6BrY,IAgJ7BqY,GAAQ9oE,UAAU0rC,QAAU,kBAE5Bo9B,GAAQ9oE,UAAUqyC,aAAa,OAAQ,SACvCy2B,GAAQ9oE,UAAUqyC,aAAa,WAAY,QAAS,YACpDy2B,GAAQ9oE,UAAUqyC,aAAa,oBAAqB,SAAU,eAC9Dy2B,GAAQ9oE,UAAUqyC,aAAa,kBAAmB,SAAU,aAC5Dy2B,GAAQ9oE,UAAUqyC,aAAa,iBAAkB,QAAS,aAC1Dy2B,GAAQ9oE,UAAUqyC,aAAa,kBAAmB,QAAS,cAC3Dy2B,GAAQ9oE,UAAUyxC,QAAQ,cAAe,EAAG,SAAU,2BAA4B,KAAM,CAAE8B,KAAM,CAAC,aACjGu1B,GAAQ9oE,UAAUyxC,QAAQ,eAAgB,EAAG,SAAU,4BAA6B,KAAM,CAAE8B,KAAM,CAAC,aACnGu1B,GAAQ9oE,UAAUyxC,QAAQ,aAAc,EAAG,SAAU,0BAA2B,KAAM,CAAE8B,KAAM,CAAC,aAC/Fu1B,GAAQ9oE,UAAUyxC,QAAQ,gBAAiB,EAAG,SAAU,6BAA8B,KAAM,CAAE8B,KAAM,CAAC,aACrGu1B,GAAQ9oE,UAAUqyC,aAAa,SAAU,SACzCy2B,GAAQ9oE,UAAUyxC,QAAQ,YAAa,MAEvCq3B,GAAQ9oE,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,UAAW,KAAM,CAAE8B,KAAM,CAAC,aCpK7E,IAAAi2B,GAAA,SAAA96B,GAGI,SAAA86B,IACI,IAAA76B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OACRouC,EAAK86B,gBAAkB,IAAIX,G,EA8CnC,OAnDkC3oE,EAAMqpE,EAAA96B,GAOpC86B,EAAAxpE,UAAAyF,MAAA,SAAMswC,EAASf,GACXz0C,KAAKmpE,iBAAmB10B,EAAQhmC,OAAO,KAAKmB,KAAK,QAAS,kBAC1Du+B,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBz0C,KAAKkpE,gBAAgBpoE,OAAOd,KAAKmpE,iBAAiB9jE,O,EAEtD4jE,EAAAxpE,UAAA2E,OAAA,WACI+pC,EAAK1uC,UAAC2E,OAAOzD,MAAMX,KAAMS,WACzBT,KAAKkpE,gBACAl5D,KAAKhQ,KAAK0jE,cAAc1zD,QAC7BhQ,KAAKyjE,aACAL,gBAAgBpjE,KAAKopE,iBACrBjF,kBAAkBnkE,KAAKqpE,mBAC5BrpE,KAAKwjE,mBACA7N,UAAU,QACVC,YAAY,QAEjB51D,KAAKyjE,aAAavd,SAClBlmD,KAAKkpE,gBAAgBhjB,SACrB,IAAM+e,EAAYjlE,KAAKyjE,aAAahZ,SAAQ,GACtC6e,EAAYtpE,KAAKkpE,gBAAgBze,SAAQ,GAC3C8e,EAAU,EACVC,GAAYF,EAAUpwB,OAAS,EAAM+rB,EAAU/rB,OAAS,EAC5D,OAAQl5C,KAAKypE,cACT,IAAK,QACDF,GAAYD,EAAU3wC,MAAQ,EAAMssC,EAAUtsC,MAAQ,EACtD,MACJ,IAAK,MACD4wC,EAAWD,EAAU3wC,MAAQ,EAAMssC,EAAUtsC,MAAQ,EACrD,MACJ,IAAK,OACD4wC,GAAYD,EAAU3wC,MAAQ,EAAMssC,EAAUtsC,MAAQ,EACtD6wC,EAAU,EAGlBxpE,KAAKyjE,aAAalT,KAAK,CACnB3iD,EAAG27D,EACHp4D,EAAGq4D,IAEPxpE,KAAK6kE,gBAAgByE,EAAU3wC,MAAQ,EAAG2wC,EAAUpwB,OAAS,E,EAEjE+vB,EAAAxpE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAKkpE,gBAAgBpoE,OAAO,MAC5BqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAE3Bw0B,CAAD,CAnDA,CAAkC5F,IAoDlC4F,GAAaxpE,UAAU0rC,QAAU,uBAwBjC89B,GAAaxpE,UAAUyxC,QAAQ,aAAc,QAAS,MAAO,qCAAsC,CAAC,GAAI,QAAS,SAAU,MAAO,SAClI+3B,GAAaxpE,UAAUyxC,QAAQ,gBAAiB,KAAM,aAAc,iBACpE+3B,GAAaxpE,UAAUyxC,QAAQ,kBAAmB,KAAM,aAAc,mBAEtE+3B,GAAaxpE,UAAUqyC,aAAa,qBAAsB,kBAAmB,qBAC7Em3B,GAAaxpE,UAAUqyC,aAAa,mBAAoB,kBAAmB,mBAC3Em3B,GAAaxpE,UAAUqyC,aAAa,mBAAoB,kBAAmB,kBClF3E,IAAAqiB,GAAA,SAAAhmB,GAGI,SAAAgmB,IACI,OAAAhmB,EAAKxuC,KAAAK,OAAGA,I,CA+EhB,OAnF2BJ,EAAUu0D,EAAAhmB,GAOjCgmB,EAAA10D,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAGzB0f,EAAA10D,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAM5E,EAAU7vC,KACV0pE,EAAMj1B,EAAQlnC,UAAU,OAAOnI,KAAKpF,KAAK4Q,SAAW,CAAC5Q,KAAK4Q,UAAY,IAAI,SAAU1R,GAAK,OAAOA,CAAE,IACxGwqE,EAAIxkE,QACCuJ,OAAO,OACPmB,KAAK,MAAO5P,KAAK4Q,UACjB/J,MAAM,UAAW,GACjBqE,GAAG,QAAQ,WACR2kC,EAAQ85B,YAAct0B,GAASr1C,MAC/B6vC,EAAQ+5B,oBACR/5B,EAAQ85B,YAAY9iE,MAAM,UAAW,EACzC,IAEJ7G,KAAK4pE,oBACLF,EAAIvkE,OACCoD,Q,EAIT4rD,EAAA10D,UAAAmqE,kBAAA,WACI,GAAK5pE,KAAK2pE,YAAV,CACA,OAAQ3pE,KAAK6pE,UACT,IAAK,SACD7pE,KAAK2pE,YAAY9iE,MAAM,QAAS,QAChC7G,KAAK2pE,YAAY9iE,MAAM,SAAU,QACjC,MACJ,IAAK,MACD,GAAI7G,KAAK8pE,kBAAmB,CACxB9pE,KAAK2pE,YAAY9iE,MAAM,QAAS,QAChC7G,KAAK2pE,YAAY9iE,MAAM,SAAU,QACjC,IACM0jD,GADAuC,EAAO9sD,KAAK2pE,YAAYtkE,OAAOoM,yBACjBknB,MAAQ34B,KAAK24B,QAC3B6xB,EAASsC,EAAK5T,OAASl5C,KAAKk5C,SAC9BqR,EAASC,GACTxqD,KAAK2pE,YAAY9iE,MAAM,QAAS7G,KAAK24B,QAAU,MAC/C34B,KAAK2pE,YAAY9iE,MAAM,SAAWimD,EAAK5T,OAASqR,EAAU,QAE1DvqD,KAAK2pE,YAAY9iE,MAAM,QAAUimD,EAAKn0B,MAAQ6xB,EAAU,MACxDxqD,KAAK2pE,YAAY9iE,MAAM,SAAU7G,KAAKk5C,SAAW,M,MAGrDl5C,KAAK2pE,YAAY9iE,MAAM,QAAS7G,KAAK24B,QAAU,MAC/C34B,KAAK2pE,YAAY9iE,MAAM,SAAU7G,KAAKk5C,SAAW,MAErD,MACJ,IAAK,SACDl5C,KAAK2pE,YAAY9iE,MAAM,QAAS7G,KAAK+pE,eACrC/pE,KAAK2pE,YAAY9iE,MAAM,SAAU7G,KAAKgqE,gBAG9C,OAAQhqE,KAAKiqE,aACT,IAAK,SACD,MACJ,IAAK,SACD,IAAMnd,EAAO9sD,KAAK2pE,YAAYtkE,OAAOoM,wBACrCzR,KAAK2pE,YAAY9iE,MAAM,cAAe,GAAG3E,QAAClC,KAAK24B,QAAUm0B,EAAKn0B,OAAS,EAAK,OAC5E34B,KAAK2pE,YAAY9iE,MAAM,aAAc,GAAG3E,QAAClC,KAAKk5C,SAAW4T,EAAK5T,QAAU,EAAK,OApC9D,C,EAyC3Bib,EAAA10D,UAAA0F,KAAA,SAAKqwC,EAASf,GACVtG,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAS3B0f,CAAD,CAnFA,CAA2BvI,IAoF3BuI,GAAM10D,UAAU0rC,QAAU,gBAE1BgpB,GAAM10D,UAAUyxC,QAAQ,SAAU,KAAM,SAAU,eAAgB,KAAM,CAAE8B,KAAM,CAAC,WACjFmhB,GAAM10D,UAAUyxC,QAAQ,SAAU,SAAU,MAAO,uBAAwB,CAAC,SAAU,MAAO,UAAW,CAAE8B,KAAM,CAAC,WACjHmhB,GAAM10D,UAAUyxC,QAAQ,cAAe,MAAO,SAAU,uGAAwG,KAAM,CAAE8B,KAAM,CAAC,SAAUvB,QAAS,SAACrL,GAAM,MAAe,WAAfA,EAAEyjC,QAAqB,IAChO1V,GAAM10D,UAAUyxC,QAAQ,eAAgB,MAAO,SAAU,wGAAyG,KAAM,CAAE8B,KAAM,CAAC,SAAUvB,QAAS,SAACrL,GAAM,MAAe,WAAfA,EAAEyjC,QAAqB,IAClO1V,GAAM10D,UAAUyxC,QAAQ,mBAAmB,EAAM,UAAW,iDAAkD,KAAM,CAAE8B,KAAM,CAAC,SAAUvB,QAAS,SAACrL,GAAM,MAAe,QAAfA,EAAEyjC,QAAkB,IAC3K1V,GAAM10D,UAAUyxC,QAAQ,YAAa,SAAU,MAAO,kBAAmB,CAAC,SAAU,UAAW,CAAE8B,KAAM,CAAC,W,mNCxFxG,IAAAk3B,GAAA,SAAA/7B,GAII,SAAA+7B,IACI,IAAA97B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAERouC,EAAK+7B,aAAe,G,EAkF5B,OAzF0BvqE,EAASsqE,EAAA/7B,GAU/B+7B,EAAAzqE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAM5E,EAAU7vC,KAEVo5C,EAAO3E,EAAQlnC,UAAU,SAASnI,KAAKpF,KAAKoF,QAAQ,SAAUlG,GAAK,OAAOA,CAAE,IAC5EkrE,EAAYhxB,EAAKl0C,QAAQuJ,OAAO,KACjCmB,KAAK,QAAS,QACdjC,MAAK,SAAUzO,GACZ,IAAMmrE,GAAa,IAAI9B,IAClBznE,OAAOd,MACP0oE,WAAW,GACXC,cAAc,GACdH,YAAY,GACZC,aAAa,GACbz4D,KAAK9Q,GACLgnD,SAELmkB,EAAW51B,UACNvpC,GAAG,SAAS,SAAUqhB,GACnBsjB,EAAQwE,MAAM9nB,EAAGvc,OACrB,IACC9E,GAAG,YAAY,SAAUqhB,GACtBsjB,EAAQwlB,SAAS9oC,EAAGvc,OACxB,IAEJ6/B,EAAQs6B,aAAajrE,GAAKmrE,CAC9B,IAGAC,EAAa,EACbC,EAAY,EAChB,IAAK,IAAMxpE,KAAOf,KAAKmqE,aACnB,GAAKnqE,KAAKmqE,aAAazqE,eAAeqB,GAAtC,CACA,IAAM+rD,EAAO9sD,KAAKmqE,aAAappE,GAAK0pD,UACpC6f,GAAcxd,EAAK5T,OACfqxB,EAAYzd,EAAKn0B,QACjB4xC,EAAYzd,EAAKn0B,MAJuB,CAOhD,IAAI6xC,GAAQF,EAAa,EACzBF,EAAU17D,MAAM0qC,GAAMzrC,MAAK,SAAUzO,GACjC,IAAMwwC,EAASG,EAAQs6B,aAAajrE,GAC9B4tD,EAAOpd,EAAO+a,UACpB/a,EACKmL,IAAI,CAAEjtC,EAAG,EAAGuD,EAAGq5D,EAAO1d,EAAK5T,OAAS,IACpCgc,OAAOrlB,EAAQqlB,UACf4T,UAAU,CAAEnwC,MAAO4xC,EAAWrxB,OAAQ4T,EAAK5T,SAC3CgN,SAELskB,GAAQ1d,EAAK5T,MACjB,IACAE,EAAKj0C,OACAoD,SACAoF,MAAK,SAAUzO,GACZ2wC,EAAQs6B,aAAajrE,GAAG4B,OAAO,aACxB+uC,EAAQs6B,aAAajrE,EAChC,G,EAIRgrE,EAAAzqE,UAAA0F,KAAA,SAAKqwC,EAASf,GACV,IAAK,IAAM1zC,KAAOf,KAAKmqE,aACfnqE,KAAKmqE,aAAazqE,eAAeqB,IACjCf,KAAKmqE,aAAappE,GAAKD,OAAO,MAGtCqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAIxBy1B,EAAKzqE,UAAA40C,MAAL,SAAMn1C,G,EAINgrE,EAAQzqE,UAAA41D,SAAR,SAASn2D,G,EAKZgrE,CAAD,CAzFA,CAA0Bha,IA0F1Bga,GAAKzqE,UAAU0rC,QAAU,eAEzB++B,GAAKzqE,UAAUyxC,QAAQ,SAAU,QAAS,MAAO,kBAAmB,CAAC,GAAI,QAAS,SAAU,OAAQ,CAAE8B,KAAM,CAAC,a,iXC1F7G,IAAAy3B,GAAA,SAAAt8B,GAKI,SAAAs8B,IACI,IAAAr8B,EAAAD,EAAKxuC,KAAAK,OAAGA,KALFouC,EAAAs8B,OAAQ,IAAIlI,IAAOd,MAAM,UAAUiB,SAAS,IAAII,eAAe,GAC/D30B,EAAAu8B,MAAQ,IAAIT,GAMlB,IAAMr6B,EAAUzB,E,OAChBA,EAAKu8B,MAAMt2B,MAAQ,SAAUn1C,GACzB00C,QAAQF,kBACR7D,EAAQ+6B,WACR/6B,EAAQwE,MAAMn1C,EAClB,EACAkvC,EAAKy8B,OAAQ,E,EA2GrB,OAzH0BjrE,EAAS6qE,EAAAt8B,GAiB/Bs8B,EAAAhrE,UAAAqrE,WAAA,WACS9qE,KAAK6qE,MAGN7qE,KAAK4qE,WAFL5qE,KAAK+qE,U,EAMbN,EAAAhrE,UAAAsrE,SAAA,WACI/qE,KAAKgrE,cACLhrE,KAAK6qE,OAAQ,EACb7qE,KAAK2qE,MACAvlE,KAAKpF,KAAKoF,QACV8gD,SAGL,IAAM4G,EAAO9sD,KAAK0qE,MAAMjgB,SAAQ,GAC1BwgB,EAAWjrE,KAAK2qE,MAAMlgB,SAAQ,GAC9B5P,EAAM,CACRjtC,EAAGk/C,EAAKn0B,MAAQ,EAAIsyC,EAAStyC,MAAQ,EACrCxnB,EAAG27C,EAAK5T,OAAS,EAAI+xB,EAAS/xB,OAAS,GAE3Cl5C,KAAK2qE,MACApa,KAAK1V,GAEV,IAAMhL,EAAU7vC,KAChBq1C,GAAS,QACJnqC,GAAG,SAAWlL,KAAKiuB,KAAK,WACjB4hB,EAAQg7B,OACRh7B,EAAQ+6B,UAEhB,G,EAIRH,EAAAhrE,UAAAmrE,SAAA,WACIv1B,GAAS,QACJnqC,GAAG,SAAWlL,KAAKiuB,IAAK,MAE7BjuB,KAAK6qE,OAAQ,EACb7qE,KAAK2qE,MACAvlE,KAAK,IACL8gD,SAELlmD,KAAKkrE,c,EAGTT,EAAAhrE,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GAErBz0C,KAAK0qE,MACA5pE,OAAO00C,GACP0Q,SAGLlmD,KAAK2qE,MACA7pE,OAAO00C,GACP0Q,SAGL,IAAMrW,EAAU7vC,KAChBA,KAAK0qE,MAAMj2B,UACNvpC,GAAG,SAAS,WACT0oC,QAAQF,kBACR7D,EAAQi7B,YACZ,G,EAIRL,EAAAhrE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBA,EACK1kC,QAAQ,WAAmC,IAAvB/P,KAAKoF,OAAO1E,QAGrCV,KAAK0qE,MACAh0B,OAAO12C,KAAK02C,UACZqsB,eAAe/iE,KAAK+iE,kBACpB7c,Q,EAITukB,EAAAhrE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAK0qE,MACA5pE,OAAO,MAGZd,KAAK2qE,MACA7pE,OAAO,MAGZqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAIxBg2B,EAAKhrE,UAAA40C,MAAL,SAAMn1C,G,EAENurE,EAAAhrE,UAAAurE,YAAA,W,EAEAP,EAAAhrE,UAAAyrE,aAAA,W,EAKHT,CAAD,CAzHA,CAA0Bva,IA0H1Bua,GAAKhrE,UAAU0rC,QAAU,eAEzBs/B,GAAKhrE,UAAUqyC,aAAa,SAAU,QAAS,KAAM,KACrD24B,GAAKhrE,UAAUqyC,aAAa,iBAAkB,QAAS,KAAM,ICnI7D,IAAAq5B,GAAA,SAAAh9B,GAuBI,SAAAg9B,IACI,IAAA/8B,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAJFouC,EAAQg9B,UAAY,E,EAiFlC,OArGiCxrE,EAAWurE,EAAAh9B,GA2BxCg9B,EAAA1rE,UAAA4rE,QAAA,SAAQC,EAAkBC,GACtB,IAAMC,EAAWxrE,KAAK0N,OAChB+9D,EAAYzrE,KAAKwhB,QACjBkqD,EAAe1rE,KAAK2rE,cACpBC,EAAkC,IAAfF,GAAsB,GAAK18D,KAAKqX,MAAqB,IAAfqlD,GAAoB/6D,SAAS,IAAI1O,OAAO,GAAK,KACtG4pE,EAAa7rE,KAAK8rE,aAAeL,EACjCM,EAAY/rE,KAAKgsE,WACjBC,EAAUjsE,KAAKksE,UAAY,mDAAmDhqE,OAAA2pE,GAAU3pE,OAAG0pE,EAAgB,MAAA1pE,OAAK2pE,EAA2B,kBAAA3pE,OAAA6pE,EAAS,QAAS,GACnK,MAAO,kBACA7pE,OAAAlC,KAAKmsE,WAEK,oGAAAjqE,OAAAspE,EAAoB,aAAAtpE,OAAAqpE,EAET,yEAAArpE,OAAAupE,EACA,yCAAAvpE,OAACopE,EAAW,IAEjC,oCAAAppE,OAAAlC,KAAKmsE,WAEK,mGAAAjqE,OAAA6pE,EAAqB,aAAA7pE,OAAY,EAAZ6pE,EAClB,mCAAA7pE,OAAAqpE,EAAW,QAAArpE,OAAA6pE,EACjB,8BAAA7pE,SAAG6pE,EAAY,EAAMP,EAAW,GAAG,2CAAAtpE,OACrBupE,EAAS,wCAAAvpE,OACTopE,EAAW,IAAK,2DAAAppE,OACC6pE,EAAY,IAAG,6CAAA7pE,OAClD+pE,EAAO,4B,EAKrBd,EAAA1rE,UAAA4W,MAAA,WACIrW,KAAKorE,UAAW,EAChBprE,KAAKosE,eAAepsE,KAAKqsE,WAAY,G,EAGzClB,EAAA1rE,UAAA6sE,OAAA,WACItsE,KAAKosE,eAAe,IAAK,I,EAG7BjB,EAAA1rE,UAAAyF,MAAA,SAAMswC,EAASf,GAEX,GADAz0C,KAAKmsE,WAAa13B,EAAQ7kC,KAAK,OAC1B5P,KAAKmsE,WAAY,MAAM,IAAI35D,MAAM,4CACtCxS,KAAKusE,OAAS93B,EAAQvkC,OAAO,Q,EAGjCi7D,EAAA1rE,UAAA0F,KAAA,SAAKsmD,EAAU9E,GACX3mD,KAAKorE,UAAW,EACZprE,KAAKusE,QACLvsE,KAAKusE,OAAOhkE,gBACTvI,KAAKusE,M,EAGNpB,EAAA1rE,UAAA2sE,eAAV,SAAyBd,EAAkBC,GAA3C,IAsBCn9B,EAAApuC,KArBG,GAAKA,KAAKorE,SAAV,CACIprE,KAAKusE,QACLvsE,KAAKusE,OAAOt8D,KAAKjQ,KAAKqrE,QAAQC,EAAUC,IAI5CD,GAAYtrE,KAAKwsE,SACjBjB,EAAOA,GAAc,IAFH,GAId13D,YAAW,WACP,IAAM44D,EAAa,IAAMlB,EACzBn9B,EAAKg+B,eAAed,EAAUC,EAAQkB,EAAa,EACvD,GAAY,KAATlB,EAAc,IAAMD,GACP,MAATC,GACP13D,YAAW,WACPu6B,EAAKg9B,UAAW,EACZh9B,EAAKm+B,QACLn+B,EAAKm+B,OAAOt8D,KAAK,G,GAEtBq7D,EAnBa,C,EA5ExB1qE,EAAA,CADCswC,GAAQ,IAAM,SAAU,a,2BACOi6B,EAAA1rE,UAAA,mBAEhCmB,EAAA,CADCswC,GAAQ,IAAK,SAAU,S,2BACKi6B,EAAA1rE,UAAA,gBAE7BmB,EAAA,CADCswC,GAAQ,EAAG,SAAU,Q,2BACMi6B,EAAA1rE,UAAA,eAE5BmB,EAAA,CADCswC,GAAQ,UAAW,SAAU,S,2BACDi6B,EAAA1rE,UAAA,gBAE7BmB,EAAA,CADCswC,IAAQ,EAAM,UAAW,Y,2BACMi6B,EAAA1rE,UAAA,kBAEhCmB,EAAA,CADCswC,GAAQ,GAAI,SAAU,a,2BACSi6B,EAAA1rE,UAAA,mBAEhCmB,EAAA,CADCswC,GAAQ,UAAW,SAAU,mBAAoB,KAAM,CAAE5D,UAAU,I,2BACnC69B,EAAA1rE,UAAA,oBAEjCmB,EAAA,CADCswC,GAAQ,IAAM,SAAU,gB,2BACUi6B,EAAA1rE,UAAA,sBAoFtC0rE,C,CArGD,CAAiCj9B,ICA1B,SAASw+B,KACdtiE,QAAMuiE,0BACR,CAEe,SAAAC,KACbxiE,QAAMyiE,iBACNziE,QAAMuiE,0BACR,CCNe,SAAAG,GAASC,GACtB,IAAIngE,EAAOmgE,EAAK9pE,SAASI,gBACrB6J,EAAYC,GAAO4/D,GAAM7hE,GAAG,iBAAkB8hE,IAAS,GACvD,kBAAmBpgE,EACrBM,EAAUhC,GAAG,mBAAoB8hE,IAAS,IAE1CpgE,EAAKqgE,WAAargE,EAAK/F,MAAMqmE,cAC7BtgE,EAAK/F,MAAMqmE,cAAgB,OAE/B,CAEO,SAASC,GAAQJ,EAAMK,GAC5B,IAAIxgE,EAAOmgE,EAAK9pE,SAASI,gBACrB6J,EAAYC,GAAO4/D,GAAM7hE,GAAG,iBAAkB,MAC9CkiE,IACFlgE,EAAUhC,GAAG,aAAc8hE,IAAS,GACpCn5D,YAAW,WAAa3G,EAAUhC,GAAG,aAAc,KAAM,GAAI,IAE3D,kBAAmB0B,EACrBM,EAAUhC,GAAG,mBAAoB,OAEjC0B,EAAK/F,MAAMqmE,cAAgBtgE,EAAKqgE,kBACzBrgE,EAAKqgE,WAEhB,CC3Be,SAAAI,GAASz/D,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCJe,SAAS0/D,GAAUxsE,EAAQyK,EAAMgiE,EAASn7D,EAAIuE,EAAQ/I,EAAGuD,EAAGkb,EAAIC,EAAI/b,GACjFvQ,KAAKc,OAASA,EACdd,KAAKuL,KAAOA,EACZvL,KAAKutE,QAAUA,EACfvtE,KAAKkS,WAAaE,EAClBpS,KAAK2W,OAASA,EACd3W,KAAK4N,EAAIA,EACT5N,KAAKmR,EAAIA,EACTnR,KAAKqsB,GAAKA,EACVrsB,KAAKssB,GAAKA,EACVtsB,KAAK0Q,EAAIH,CACX,CCHA,SAASi9D,KACP,OAAQpjE,QAAMmqC,UAAYnqC,QAAMqjE,MAClC,CAEA,SAASC,KACP,OAAO1tE,KAAKqJ,UACd,CAEA,SAASskE,GAAezuE,GACtB,OAAY,MAALA,EAAY,CAAC0O,EAAGxD,QAAMwD,EAAGuD,EAAG/G,QAAM+G,GAAKjS,CAChD,CAEA,SAAS0uE,KACP,OAAOt2B,UAAUu2B,gBAAmB,iBAAkB7tE,IACxD,CAEe,SAAA8tE,KACb,IAOIC,EACAC,EACAC,EACAC,EAVA1gE,EAASggE,GACTW,EAAYT,GACZH,EAAUI,GACVS,EAAYR,GACZS,EAAW,GACX1gB,EAAYp9C,GAAS,QAAS,OAAQ,OACtCoG,EAAS,EAKT23D,EAAiB,EAErB,SAASC,EAAKrhE,GACZA,EACKhC,GAAG,iBAAkBsjE,GACvBhhE,OAAO4gE,GACLljE,GAAG,kBAAmBujE,GACtBvjE,GAAG,iBAAkBwjE,GACrBxjE,GAAG,iCAAkCyjE,GACrC9nE,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,gBAC9C,CAEE,SAAS2nE,IACP,IAAIN,GAAgB1gE,EAAO7M,MAAMX,KAAMS,WAAvC,CACA,IAAImuE,EAAUC,EAAY,QAASV,EAAUxtE,MAAMX,KAAMS,WAAYqR,GAAO9R,KAAMS,WAC7EmuE,IACLzhE,GAAO/C,QAAM2iE,MAAM7hE,GAAG,iBAAkB4jE,GAAY,GAAM5jE,GAAG,eAAgB6jE,GAAY,GACzFC,GAAO5kE,QAAM2iE,MACbL,KACAuB,GAAc,EACdF,EAAa3jE,QAAM8G,QACnB88D,EAAa5jE,QAAMgH,QACnBw9D,EAAQ,SAT2C,CAUvD,CAEE,SAASE,IAEP,GADA9B,MACKiB,EAAa,CAChB,IAAI5hD,EAAKjiB,QAAM8G,QAAU68D,EAAYzhD,EAAKliB,QAAMgH,QAAU48D,EAC1DC,EAAc5hD,EAAKA,EAAKC,EAAKA,EAAKgiD,CACxC,CACID,EAASv8D,MAAM,OACnB,CAEE,SAASi9D,IACP5hE,GAAO/C,QAAM2iE,MAAM7hE,GAAG,8BAA+B,MACrDiiE,GAAQ/iE,QAAM2iE,KAAMkB,GACpBjB,KACAqB,EAASv8D,MAAM,MACnB,CAEE,SAAS28D,IACP,GAAKjhE,EAAO7M,MAAMX,KAAMS,WAAxB,CACA,IAEwBF,EAAGquE,EAFvB38D,EAAU7H,QAAM2H,eAChB9Q,EAAIktE,EAAUxtE,MAAMX,KAAMS,WAC1BD,EAAIyR,EAAQvR,OAEhB,IAAKH,EAAI,EAAGA,EAAIC,IAAKD,GACfquE,EAAUC,EAAY58D,EAAQ1R,GAAG2R,WAAYjR,EAAG+Q,GAAOhS,KAAMS,cAC/DisE,KACAkC,EAAQ,SARwB,CAWxC,CAEE,SAASF,IACP,IACwBnuE,EAAGquE,EADvB38D,EAAU7H,QAAM2H,eAChBvR,EAAIyR,EAAQvR,OAEhB,IAAKH,EAAI,EAAGA,EAAIC,IAAKD,GACfquE,EAAUP,EAASp8D,EAAQ1R,GAAG2R,eAChC86D,KACA4B,EAAQ,QAGhB,CAEE,SAASD,IACP,IACwBpuE,EAAGquE,EADvB38D,EAAU7H,QAAM2H,eAChBvR,EAAIyR,EAAQvR,OAIhB,IAFIwtE,GAAal5D,aAAak5D,GAC9BA,EAAcr6D,YAAW,WAAaq6D,EAAc,IAAK,GAAI,KACxD3tE,EAAI,EAAGA,EAAIC,IAAKD,GACfquE,EAAUP,EAASp8D,EAAQ1R,GAAG2R,eAChCw6D,KACAkC,EAAQ,OAGhB,CAEE,SAASC,EAAYz8D,EAAI+7D,EAAWl9D,EAAOnF,EAAMC,GAC/C,IAA8BzL,EAAG+rB,EAAIC,EAAjC9sB,EAAIyR,EAAMk9D,EAAW/7D,GACrB68D,EAAethB,EAAU/6C,OAE7B,GAAK/G,GAAY,IAAIyhE,GAAUiB,EAAM,cAAejuE,EAAG8R,EAAIuE,EAAQnX,EAAE,GAAIA,EAAE,GAAI,EAAG,EAAGyvE,IAAe,WAClG,OAAuD,OAAlD7kE,QAAMmjE,QAAUjtE,EAAIitE,EAAQ5sE,MAAMmL,EAAMC,MAC7CsgB,EAAK/rB,EAAEsN,EAAIpO,EAAE,IAAM,EACnB8sB,EAAKhsB,EAAE6Q,EAAI3R,EAAE,IAAM,GACZ,EACb,IAEI,OAAO,SAASovE,EAAQrjE,GACtB,IAAY/K,EAARorB,EAAKpsB,EACT,OAAQ+L,GACN,IAAK,QAAS8iE,EAASj8D,GAAMw8D,EAASpuE,EAAImW,IAAU,MACpD,IAAK,aAAc03D,EAASj8D,KAAOuE,EACnC,IAAK,OAAQnX,EAAIyR,EAAMk9D,EAAW/7D,GAAK5R,EAAImW,EAE7C9K,GAAY,IAAIyhE,GAAUiB,EAAMhjE,EAAMjL,EAAG8R,EAAI5R,EAAGhB,EAAE,GAAK6sB,EAAI7sB,EAAE,GAAK8sB,EAAI9sB,EAAE,GAAKosB,EAAG,GAAIpsB,EAAE,GAAKosB,EAAG,GAAIqjD,GAAeA,EAAatuE,MAAOsuE,EAAc,CAAC1jE,EAAMO,EAAMC,GACtK,CACA,CA2BE,OAzBAwiE,EAAK/gE,OAAS,SAASkD,GACrB,OAAOjQ,UAAUC,QAAU8M,EAAsB,mBAANkD,EAAmBA,EAAIgW,KAAWhW,GAAI69D,GAAQ/gE,CAC7F,EAEE+gE,EAAKJ,UAAY,SAASz9D,GACxB,OAAOjQ,UAAUC,QAAUytE,EAAyB,mBAANz9D,EAAmBA,EAAIgW,GAAShW,GAAI69D,GAAQJ,CAC9F,EAEEI,EAAKhB,QAAU,SAAS78D,GACtB,OAAOjQ,UAAUC,QAAU6sE,EAAuB,mBAAN78D,EAAmBA,EAAIgW,GAAShW,GAAI69D,GAAQhB,CAC5F,EAEEgB,EAAKH,UAAY,SAAS19D,GACxB,OAAOjQ,UAAUC,QAAU0tE,EAAyB,mBAAN19D,EAAmBA,EAAIgW,KAAWhW,GAAI69D,GAAQH,CAChG,EAEEG,EAAKrjE,GAAK,WACR,IAAI9E,EAAQunD,EAAUziD,GAAGvK,MAAMgtD,EAAWltD,WAC1C,OAAO2F,IAAUunD,EAAY4gB,EAAOnoE,CACxC,EAEEmoE,EAAKW,cAAgB,SAASx+D,GAC5B,OAAOjQ,UAAUC,QAAU4tE,GAAkB59D,GAAKA,GAAKA,EAAG69D,GAAQv/D,KAAK8V,KAAKwpD,EAChF,EAESC,CACT,CL9DApD,GAAY1rE,UAAU0rC,QAAU,sBI3FhCmiC,GAAU7tE,UAAUyL,GAAK,WACvB,IAAI9E,EAAQpG,KAAK0Q,EAAExF,GAAGvK,MAAMX,KAAK0Q,EAAGjQ,WACpC,OAAO2F,IAAUpG,KAAK0Q,EAAI1Q,KAAOoG,CACnC,E,wgBENA,IAAA+oE,GAAA,SAAAhhC,GAcI,SAAAghC,IACI,IAAA/gC,EAAAD,EAAKxuC,KAAAK,OAAGA,KAERouC,EAAKghC,aAAc,IAAI5M,IAClB9rB,OAAO,KACPqsB,eAAe,IAEpB30B,EAAKihC,kBAAmB,IAAI5N,IACvBv2B,MAAM,aACNw2B,MAAM,QAEXtzB,EAAKkhC,kBAAmB,IAAI7N,IACvBv2B,MAAM,SACNw2B,MAAM,QAEXtzB,EAAKmhC,aAAc,IAAI1a,IAClB3pB,MAAM,SAEXkD,EAAKohC,aAAc,IAAI/E,IAClB1H,eAAe,GAEpB,IAAMlzB,EAAUzB,E,OAChBA,EAAKohC,YAAYxE,YAAc,WACvBn7B,EAAQ4/B,WAAa5/B,EAAQ4/B,UAAUtlB,cACvCta,EAAQ4/B,UAAU3mB,SAAQ,EAElC,EACA1a,EAAKohC,YAAYtE,aAAe,WACxBr7B,EAAQ4/B,WAAa5/B,EAAQ4/B,UAAUtlB,cACvCta,EAAQ4/B,UAAU3mB,SAAQ,EAElC,EAEA1a,EAAKshC,gBAAkB,G,EA6P/B,OA5S6B9vE,EAASuvE,EAAAhhC,GAkDlCghC,EAAA1vE,UAAAyF,MAAA,SAAMumD,EAAU9E,GACZxY,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACyrD,EAAU9E,GACtB,IAAMlS,EAAUkS,EAASl4C,OAAO,KAAKmB,KAAK,QAAS,SAC7C4lC,EAAUf,EAAQpvC,OACxBrF,KAAK2vE,UAAYl7B,EAAQhmC,OAAO,QAAQA,OAAO,YAC1CmB,KAAK,KAAM5P,KAAKoS,KAAO,SACvB3D,OAAO,QACPmB,KAAK,IAAK,GACVA,KAAK,IAAK,GACVA,KAAK,QAAS5P,KAAKqmD,MAAM1tB,OACzB/oB,KAAK,SAAU5P,KAAKqmD,MAAMnN,QAE/Bl5C,KAAKsvE,iBACAxuE,OAAO00C,GACP0Q,SACA6C,QAAQ/oD,KAAK4vE,aAAe5vE,KAAK6vE,YAEtC7vE,KAAKovE,YACAtuE,OAAO00C,GACP0Q,SAELlmD,KAAKwvE,YACA1uE,OAAO2qD,GAEZzrD,KAAKuvE,YACAzuE,OAAO00C,GAEZx1C,KAAKqvE,iBACAvuE,OAAO00C,GAEZx1C,KAAK8vE,gBAAkBz6B,GAASr1C,KAAKwmD,SAAS/3C,OAAO,OAAOmB,KAAK,QAAS,uB,EAG9Eu/D,EAAA1vE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtB,IAAM5E,EAAU7vC,KAEZ24B,EAAQ34B,KAAK24B,QAAU,EACrBugB,EAASl5C,KAAKk5C,SAAW,EAE/Bl5C,KAAKovE,YACArmB,QAAQ/oD,KAAK4vE,aAAe5vE,KAAK6vE,YACjCnO,MAAM1hE,KAAK+vE,cACX7pB,SAELlmD,KAAKwvE,YACAtpB,SAELlmD,KAAKuvE,YACAv/D,KAAKhQ,KAAKioE,SACVlf,QAAQ/oD,KAAK4vE,aACb1pB,SAGL,IAAM8pB,EAAiBhwE,KAAK8vE,gBAAgBviE,UAAU,mBAAmBnI,KAAKpF,KAAKiwE,qBACnFD,EAAe9qE,QAAQuJ,OAAO,UAAUmB,KAAK,QAAS,kBACjDjC,MAAK,SAAU8/D,EAAQh7B,GACpB,IAAMqwB,EAAKjzB,EAAQ6/B,gBAAgBj9B,GAAO4C,GAASr1C,MAC9C4P,KAAK,QAAS,mBAAqB69D,EAAOviC,MAAQuiC,EAAOviC,MAAQ,KACjEt7B,KAAK,KAAM69D,EAAOr7D,IAClBvL,MAAM,UAAW4mE,EAAO3uC,SACxBj4B,MAAM,QAAS4mE,EAAO90C,OACtB9xB,MAAM,SAAU4mE,EAAOv0B,QACvBryC,MAAM,SAAU,WAChBqE,GAAG,SAAS,SAAUhM,GAAK2wC,EAAQwE,MAAMn1C,EAAG,IAC7B,gBAAhBuuE,EAAOt0B,KACP2pB,EACKr0D,OAAO,KACPmB,KAAK,QAAS,MACdI,MAAK,WAAc,OAAOy9D,EAAOzvB,KAAM,IAE5C8kB,EACK9yD,MAAK,WAAc,OAAOy9D,EAAOzvB,KAAM,GAEpD,IAEJgyB,EAAe7qE,OACVwI,MAAK,SAAU+nD,EAAIjjB,GAChB,IAAMmvB,EAAWvsB,GAASr1C,aACnB6vC,EAAQ6/B,gBAAgBj9B,GAC/BmvB,EAASr5D,QACb,IAGJ,IAAM2nE,EAAqBlwE,KAAK4vE,YAAc5gE,KAAK0T,IAAI/hB,MAAM,KAAMX,KAAK0vE,gBAAgBrhE,KAAI,SAAUnP,GAAK,OAAOA,EAAEmG,OAAO8qE,YAAa,KAAO,EACzIC,EAAiBpwE,KAAK4vE,aAAe5vE,KAAK6vE,WAAa7vE,KAAKovE,YAAY3kB,SAAQ,GAAQ,CAAE9xB,MAAO,EAAGugB,OAAQ,GAC5Gm3B,EAAiBrwE,KAAKuvE,YAAY9kB,SAAQ,GAC1C6lB,EAAiBtwE,KAAKwvE,YAAY/kB,SAAQ,GAC1C8lB,EAAqBvhE,KAAK0T,IAAI0tD,EAAel3B,OAAQm3B,EAAen3B,OAAQo3B,EAAep3B,OAAQg3B,GACnGM,EAAoBxwE,KAAK4vE,YAAcW,EAAqB,EAC5DE,IAAWv3B,EAASq3B,GAAsB,EAE1CG,EAAkB1wE,KAAK4vE,YAAc5gE,KAAK0T,IAAI2tD,EAAen3B,OAAQo3B,EAAep3B,OAAQg3B,GAAsB,EAClHS,EAAiB3wE,KAAK4vE,YAAcS,EAAe13C,MAAQ23C,EAAe33C,MAAQ,EACpFg4C,EAAiBh4C,IACjBA,EAAQg4C,GAGZ,IAAMC,EAAYJ,GAAqBE,EAAkB,GAAKF,EAAoBE,GAAmB,EAC/FG,EAAaD,EAEnB5wE,KAAKsvE,iBACAz0B,IAAI,CAAEjtC,EAAGijE,EAAY1/D,EAAGs/D,IACxB93C,MAAMA,EAAqB,EAAbk4C,GACd33B,OAAOw3B,GACP3nB,QAAQ/oD,KAAK4vE,aACb1pB,SAELlmD,KAAKovE,YACA7e,KAAK,CAAE3iD,GAAI+qB,EAAQ,EAAIy3C,EAAez3C,MAAQ,EAAGxnB,EAAGs/D,IAEzDzwE,KAAKwvE,YACAjf,KAAK,CAAE3iD,EAAG+qB,EAAQ,EAAI23C,EAAe33C,MAAQ,EAAI34B,KAAK8wE,cAAe3/D,EAAGs/D,IAE7EzwE,KAAKuvE,YACAhf,KAAK,CAAE3iD,GAAIwiE,EAAez3C,MAAQ,EAAI23C,EAAe33C,MAAQ,GAAK,EAAGxnB,EAAGs/D,IAG7E,IAAMzc,EAAOnkB,EAAQy/B,iBAAiBjqE,OAAOoM,wBAAwBC,MAAQm+B,EAAQwW,MAAM1tB,MAAqB,EAAbk4C,GAAkBhhC,EAAQkhC,eAAiB/wE,KAAK8vE,gBAAgBzqE,OAAOopD,YACpK+b,EAAO36B,EAAQy/B,iBAAiBjqE,OAAOoM,wBAAwBG,KAAQ8+D,EAAkB1wE,KAAK8vE,gBAAgBzqE,OAAO8qE,cAAgB,EAwB3I,GAvBK1tD,MAAMuxC,IACPh0D,KAAK8vE,gBAAgBjpE,MAAM,OAAQmtD,EAAO,MAEzCvxC,MAAM+nD,IACPxqE,KAAK8vE,gBAAgBjpE,MAAM,MAAO2jE,EAAO,MAGzCxqE,KAAK4vE,YACL5vE,KAAKqvE,iBACAx0B,IAAI,CAAEjtC,EAAGijE,EAAa,EAAG1/D,EAAGq/D,EAAoB,EAAII,EAAY,IAChEj4C,MAAMA,EAAQk4C,GACd33B,OAAOA,EAASs3B,EAAoBI,GACpC1qB,SAGLlmD,KAAKqvE,iBACAx0B,IAAI,CAAEjtC,EAAG,EAAGuD,EAAG,IACfwnB,MAAMA,GACNugB,OAAOA,GACPgN,SAILlmD,KAAKgxE,cAAe,CACpB,IAAMC,EAAUJ,EACVK,EAAUV,EAAoBI,EAE9BnB,EAAUh7B,EAAQlnC,UAAU,YAAYnI,KAAKpF,KAAKyvE,UAAY,CAACzvE,KAAKyvE,WAAa,IAAI,SAAUvwE,GAAK,OAAOA,EAAE+uB,GAAI,IACvHwhD,EAAQvqE,QAAQuJ,OAAO,KAClBmB,KAAK,QAAS,WACdA,KAAK,YAAa,QAAU5P,KAAKoS,KAAO,UACxCzE,MAAK,SAAUzO,GACZA,EAAE4B,OAAOd,KACb,IACC0O,MAAM+gE,GACN7/D,KAAK,YAAa,aAAgBihE,EAAa,EAAK,MAAQL,EAAoB,EAAII,EAAY,GAAK,KACrGjjE,MAAK,SAAUzO,GACZ,IAAM4/B,EACI,EADJA,EAEG,EAFHA,EAGK,EAHLA,EAIM,EAEZ5/B,EACK2pD,OAAO,CACJlwB,MAAOA,EAAQs4C,GAAWnyC,EAAeA,GACzCoa,OAAQA,EAASg4B,GAAWpyC,EAAcA,IAGtD,IAEA9+B,KAAKyvE,WACLzvE,KAAK2vE,UACA//D,KAAK,MAAO+oB,EAAQs4C,GAAW,GAC/BrhE,KAAK,MAAOspC,EAASg4B,GAAW,GAChCthE,KAAK,QAAS+oB,EAAQs4C,GACtBrhE,KAAK,SAAUspC,EAASg4B,GAGjCzB,EAAQtqE,OAAO6oB,aACVrgB,MAAK,SAAUzO,GAAKA,EAAE4B,OAAO,KAAM,IACnCyH,Q,CAILvI,KAAKwvE,YAAY/6B,WAAaz0C,KAAKwvE,YAAY/6B,UAAUpvC,QAAUrF,KAAKwvE,YAAY/6B,UAAUpvC,OAAOgE,YACrGrJ,KAAKwvE,YAAY/6B,UAAUpvC,OAAOgE,WAAW1E,YAAY3E,KAAKwvE,YAAY/6B,UAAUpvC,O,EAI5F8pE,EAAA1vE,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAKsvE,iBACAxuE,OAAO,MAEZd,KAAKovE,YACAtuE,OAAO,MAEZd,KAAKwvE,YACA1uE,OAAO,MAEZd,KAAKuvE,YACAzuE,OAAO,MAEZd,KAAKqvE,iBACAvuE,OAAO,MAERd,KAAKyvE,WACLzvE,KAAKyvE,UAAU3uE,OAAO,MAE1BqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAGxB06B,EAAA1vE,UAAA+xD,aAAA,SAAaC,EAAQC,GACjB,IAAMyf,EAAO,GACPjjE,EAAKlO,KAAKovE,YAAY5d,aAAaC,EAAQC,EAAQ1xD,KAAKomD,MAC1Dl4C,GACAijE,EAAKpnE,KAAK,CAAExJ,EAAG2N,EAAIhP,EAAGc,KAAKuxD,SAASrjD,EAAIwjD,KAE5C,IAAM0f,EAAKpxE,KAAKsvE,iBAAiB9d,aAAaC,EAAQC,GAClD0f,GACAD,EAAKpnE,KAAK,CAAExJ,EAAG6wE,EAAIlyE,EAAGc,KAAKuxD,SAAS6f,EAAI1f,KAE5C,IAAM2f,EAAKrxE,KAAKqvE,iBAAiB7d,aAAaC,EAAQC,GAClD2f,GACAF,EAAKpnE,KAAK,CAAExJ,EAAG8wE,EAAInyE,EAAGc,KAAKuxD,SAAS8f,EAAI3f,KAE5C,IAAI4f,EAAU,KAMd,OALAH,EAAK34C,SAAQ,SAAU0W,IACH,OAAZoiC,GAAoBA,EAAQpyE,EAAIgwC,EAAKhwC,KACrCoyE,EAAUpiC,EAElB,IACOoiC,GAAWA,EAAQ/wE,EAAI+wE,EAAQ/wE,EAAI,I,EAG9C4uE,EAAK1vE,UAAA40C,MAAL,SAAMn1C,G,EAeTiwE,CAAD,CA5SA,CAA6Bjf,IA6S7Bif,GAAQ1vE,UAAU0rC,QAAU,kBAE5BgkC,GAAQ1vE,UAAUyxC,QAAQ,aAAa,EAAM,UAAW,aAAc,KAAM,CAAE8B,KAAM,CAAC,WACrFm8B,GAAQ1vE,UAAUyxC,QAAQ,QAAS,GAAI,SAAU,QAAS,KAAM,CAAE8B,KAAM,CAAC,WACzEm8B,GAAQ1vE,UAAUqyC,aAAa,gBAAiB,cAAe,YAC/Dq9B,GAAQ1vE,UAAUyxC,QAAQ,YAAY,EAAM,UAAW,aAAc,KAAM,CAAE8B,KAAM,CAAC,cACpFm8B,GAAQ1vE,UAAUqyC,aAAa,cAAe,cAAe,UAC7Dq9B,GAAQ1vE,UAAUqyC,aAAa,aAAc,cAAe,SAE5Dq9B,GAAQ1vE,UAAUyxC,QAAQ,UAAW,KAAM,SAAU,UAAW,KAAM,CAAE8B,KAAM,CAAC,aAE/Em8B,GAAQ1vE,UAAUyxC,QAAQ,oBAAqB,GAAI,QAAS,eAAgB,KAAM,CAAE8B,KAAM,CAAC,kBAC3Fm8B,GAAQ1vE,UAAUyxC,QAAQ,eAAgB,GAAI,SAAU,iCAAkC,KAAM,CAAE8B,KAAM,CAAC,kBAEzGm8B,GAAQ1vE,UAAUyxC,QAAQ,eAAe,EAAM,UAAW,eAAgB,KAAM,CAAE8B,KAAM,CAAC,kBACzFm8B,GAAQ1vE,UAAUyxC,QAAQ,OAAQ,GAAI,QAAS,iBAAkB,KAAM,CAAE8B,KAAM,CAAC,kBAChFm8B,GAAQ1vE,UAAUyxC,QAAQ,cAAe,EAAG,SAAU,eAAgB,KAAM,CAAE8B,KAAM,CAAC,cAErFm8B,GAAQ1vE,UAAU8xE,eAAiBpC,GAAQ1vE,UAAU+xE,KACrDrC,GAAQ1vE,UAAU+xE,KAAO,SAAyB9gE,GAE9C,OADAy+D,GAAQ1vE,UAAU8xE,eAAe5wE,MAAMX,KAAMS,WACzCA,UAAUC,QACVV,KAAKwvE,YAAYpqE,KAAKsL,GACf1Q,MAEJA,KAAKwvE,YAAYpqE,MAC5B,EAEA+pE,GAAQ1vE,UAAUgyE,iBAAmBtC,GAAQ1vE,UAAUuxE,YACvD7B,GAAQ1vE,UAAUuxE,YAAc,SAAUtgE,GACtC,IAAMq/B,EAASo/B,GAAQ1vE,UAAUgyE,iBAAiB9wE,MAAMX,KAAMS,WAM9D,OALIA,UAAUC,QACNV,KAAKyvE,WACLzvE,KAAKyvE,UAAU3mB,QAAQ9oD,KAAKgxE,eAG7BjhC,CACX,E,2SCrVA,IAAA2hC,GAAA,SAAAvjC,GAcI,SAAAujC,IACI,IAAAtjC,EAAAD,EAAKxuC,KAAAK,OAAGA,KAERouC,EAAKujC,YAAc,EACnBvjC,EAAKwjC,QAAU,CAAC,CAAEC,IAAK,MAAQ,CAAEA,IAAK,KAAO,CAAEA,IAAK,MAAQ,CAAEA,IAAK,KAAO,CAAEA,IAAK,MAAQ,CAAEA,IAAK,KAAO,CAAEA,IAAK,MAAQ,CAAEA,IAAK,MAE7H,IAAMhiC,EAAUzB,E,OAChBA,EAAK79B,SAAWuhE,GAAW,YAAa,OAAQ,WAChD1jC,EAAKmgC,KAAOT,KACPP,SAAQ,SAAUruE,GAAK,OAAOA,CAAE,IAErCkvC,EAAKmgC,KACArjE,GAAG,SAAS,SAAUhM,GACnB2wC,EAAQt/B,SAAS5Q,KAAK,YAAakwC,EAAS3wC,EAAE2yE,KAC1ChiC,EAAQkiC,gBACRn+B,QAAQ5nC,YAAY0nC,kBACpB7D,EAAQmiC,eAAiB,CAAEpkE,EAAG1O,EAAE0O,EAAGuD,EAAGjS,EAAEiS,GACxC0+B,EAAQoiC,cAAgBpiC,EAAQgL,MAChChL,EAAQqiC,eAAiBriC,EAAQniC,OACjCmiC,EAAQsiC,aAAe,CACnBvkE,EAAGiiC,EAAQoiC,cAAcrkE,EACzBuD,EAAG0+B,EAAQoiC,cAAc9gE,EACzBwnB,MAAOkX,EAAQqiC,eAAev5C,MAC9BugB,OAAQrJ,EAAQqiC,eAAeh5B,QAEnCrJ,EAAQuiC,aAAeviC,EAAQ0/B,YAAY9kB,SAAQ,GACnD5a,EAAQwiC,aAAexiC,EAAQu/B,YAAY3kB,SAAQ,GACnD5a,EAAQmhC,aAAY,GAE5B,IACC9lE,GAAG,QAAQ,SAAUhM,GAClB,GAAI2wC,EAAQkiC,cAAe,CACvBn+B,QAAQ5nC,YAAY0nC,kBACpB,IAAM4+B,EAAM1+B,QAAQhmC,EAAIiiC,EAAQmiC,eAAepkE,EACzC2kE,EAAM3+B,QAAQziC,EAAI0+B,EAAQmiC,eAAe7gE,EACzC2iB,EAAQ,CAAElmB,EAAG,EAAGuD,EAAG,EAAGi1B,EAAG,EAAGxjB,EAAG,GACrC,OAAQ1jB,EAAE2yE,KACN,IAAK,KACD/9C,EAAMlmB,EAAI0kE,EAAM,EAChBx+C,EAAMsS,GAAKksC,EAEf,IAAK,IACDx+C,EAAM3iB,EAAIohE,EAAM,EAChBz+C,EAAMlR,GAAK2vD,EACX,MACJ,IAAK,KACDz+C,EAAM3iB,EAAIohE,EAAM,EAChBz+C,EAAMlR,GAAK2vD,EAEf,IAAK,IACDz+C,EAAMlmB,EAAI0kE,EAAM,EAChBx+C,EAAMsS,EAAIksC,EACV,MACJ,IAAK,KACDx+C,EAAMlmB,EAAI0kE,EAAM,EAChBx+C,EAAMsS,EAAIksC,EAEd,IAAK,IACDx+C,EAAM3iB,EAAIohE,EAAM,EAChBz+C,EAAMlR,EAAI2vD,EACV,MACJ,IAAK,KACDz+C,EAAM3iB,EAAIohE,EAAM,EAChBz+C,EAAMlR,EAAI2vD,EAEd,IAAK,IACDz+C,EAAMlmB,EAAI0kE,EAAM,EAChBx+C,EAAMsS,GAAKksC,EAGnB,IAAME,EAAU,CACZ5kE,EAAGiiC,EAAQoiC,cAAcrkE,EAAIkmB,EAAMlmB,EACnCuD,EAAG0+B,EAAQoiC,cAAc9gE,EAAI2iB,EAAM3iB,EACnCwnB,MAAOkX,EAAQqiC,eAAev5C,MAAQ7E,EAAMsS,EAC5C8S,OAAQrJ,EAAQqiC,eAAeh5B,OAASplB,EAAMlR,GAE9C4vD,EAAQ75C,MAAqC,EAA7BkX,EAAQwiC,aAAa15C,MAAYkX,EAAQuiC,aAAaz5C,QACtE65C,EAAQ5kE,EAAIiiC,EAAQsiC,aAAavkE,EACjC4kE,EAAQ75C,MAAQkX,EAAQsiC,aAAax5C,OAErC65C,EAAQt5B,OAASrJ,EAAQuiC,aAAal5B,OAAS,KAC/Cs5B,EAAQrhE,EAAI0+B,EAAQsiC,aAAahhE,EACjCqhE,EAAQt5B,OAASrJ,EAAQsiC,aAAaj5B,QAE1CrJ,EACKgL,IAAI,CAAEjtC,EAAG4kE,EAAQ5kE,EAAGuD,EAAGqhE,EAAQrhE,IAC/BzD,KAAK,CAAEirB,MAAO65C,EAAQ75C,MAAOugB,OAAQs5B,EAAQt5B,SAC7CgN,SACAuE,SAAQ,GAEb5a,EAAQt/B,SAAS5Q,KAAK,OAAQkwC,EAAS3wC,EAAE2yE,KACzChiC,EAAQsiC,aAAeK,C,CAE/B,IACCtnE,GAAG,OAAO,SAAUhM,GACb2wC,EAAQkiC,gBACRn+B,QAAQ5nC,YAAY0nC,kBACpB7D,EACKmhC,aAAY,GACZ9qB,SAELrW,EAAQw/B,iBAAiB5kB,SAAQ,GACjC5a,EAAQy/B,iBAAiB7kB,SAAQ,GACjC5a,EAAQt/B,SAAS5Q,KAAK,UAAWkwC,EAAS3wC,EAAE2yE,KAEpD,I,EA2FZ,OAlNmCjyE,EAAO8xE,EAAAvjC,GA2HtCujC,EAAIjyE,UAAA8wD,KAAJ,SAAK7/C,GACD,IAAMq/B,EAAS5B,EAAK1uC,UAAC8wD,KAAK5vD,MAAMX,KAAMS,WAEtC,OADAT,KAAKyyE,cAAczyE,KAAKyrD,SAAUzrD,KAAK2mD,UAChC5W,C,EAGX2hC,EAAAjyE,UAAA2E,OAAA,SAAOoxC,EAASf,GACZtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBz0C,KAAKyyE,cAAcj9B,EAASf,E,EAGhCi9B,EAAAjyE,UAAAgzE,cAAA,SAAchnB,EAAU9E,GACpB,IAAM+rB,EAAc1yE,KAAKymD,oBAAoBl5C,UAAU,QAAQnI,KAAKpF,KAAK4xE,SAAS,SAAU1yE,GAAK,OAAOA,EAAE2yE,GAAI,IACxGc,EAAmBD,EAAYxtE,QAAQuJ,OAAO,QAC/CmB,KAAK,SAAS,SAAU1Q,GAAK,MAAO,SAAWA,EAAE2yE,GAAI,IACrDlyE,KAAKK,KAAKuuE,MAGTvsE,EAAIhC,KAAKomD,KAAKx4C,EAAI5N,KAAKqvE,iBAAiBjpB,KAAKx4C,EAAI5N,KAAKqvE,iBAAiB12C,QAAU,EACjFt4B,EAAIL,KAAKomD,KAAKj1C,EAAInR,KAAKsvE,iBAAiBlpB,KAAKj1C,EAAInR,KAAKsvE,iBAAiBp2B,SAAW,EAClFh4C,EAAIlB,KAAKomD,KAAKx4C,EAAI5N,KAAKqvE,iBAAiBjpB,KAAKx4C,EAAI5N,KAAKqvE,iBAAiB12C,QAAU,EACjFx5B,EAAIa,KAAKomD,KAAKj1C,EAAInR,KAAKqvE,iBAAiBjpB,KAAKj1C,EAAInR,KAAKqvE,iBAAiBn2B,SAAW,EAClF9S,EAAIllC,EAAIc,EACR4gB,EAAIzjB,EAAIkB,EACRwvC,EAAU7vC,KAChB2yE,EAAiBjkE,MAAMgkE,GAClB/kE,MAAK,SAAUzO,GACZ,OAAQA,EAAE2yE,KACN,IAAK,KACD3yE,EAAE0O,EAAI5L,EAAI6tC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAI9Q,EAAIwvC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,IACDzyE,EAAE0O,EAAI5L,EAAI6tC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAI9Q,EAAIwvC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQyN,EAAIyJ,EAAQ8hC,YACtBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,KACDzyE,EAAE0O,EAAI1M,EAAI2uC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAI9Q,EAAIwvC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,IACDzyE,EAAE0O,EAAI1M,EAAI2uC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAI9Q,EAAIwvC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASt2B,EAAIitB,EAAQ8hC,YACvB,MACJ,IAAK,KACDzyE,EAAE0O,EAAI1M,EAAI2uC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAIhS,EAAI0wC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,IACDzyE,EAAE0O,EAAI5L,EAAI6tC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAIhS,EAAI0wC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQyN,EAAIyJ,EAAQ8hC,YACtBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,KACDzyE,EAAE0O,EAAI5L,EAAI6tC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAIhS,EAAI0wC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASrJ,EAAQ8hC,YACnB,MACJ,IAAK,IACDzyE,EAAE0O,EAAI5L,EAAI6tC,EAAQ8hC,YAAc,EAChCzyE,EAAEiS,EAAI9Q,EAAIwvC,EAAQ8hC,YAAc,EAChCzyE,EAAEy5B,MAAQkX,EAAQ8hC,YAClBzyE,EAAEg6C,OAASt2B,EAAIitB,EAAQ8hC,YAG/Bt8B,GAASr1C,MACJ4P,KAAK,IAAK1Q,EAAE0O,GACZgC,KAAK,IAAK1Q,EAAEiS,GACZvB,KAAK,QAAS1Q,EAAEy5B,OAChB/oB,KAAK,SAAU1Q,EAAEg6C,OAE1B,G,EAIXw4B,CAAD,CAlNA,CAAmCvC,ICPpB,SAAAyD,GAAShlE,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCJe,SAASilE,GAAU/xE,EAAQyK,EAAMyf,GAC9ChrB,KAAKc,OAASA,EACdd,KAAKuL,KAAOA,EACZvL,KAAKgrB,UAAYA,CACnB,CCJO,SAAS8nD,GAAUtvD,EAAG5V,EAAGuD,GAC9BnR,KAAKwjB,EAAIA,EACTxjB,KAAK4N,EAAIA,EACT5N,KAAKmR,EAAIA,CACX,CHsNAugE,GAAcjyE,UAAU0rC,QAAU,wBAElCumC,GAAcjyE,UAAUyxC,QAAQ,eAAe,EAAM,UAAW,iCAAkC,KAAM,CAAE8B,KAAM,CAAC,UAAW,YGtN5H8/B,GAAUrzE,UAAY,CACpBQ,YAAa6yE,GACbhoD,MAAO,SAAStH,GACd,OAAa,IAANA,EAAUxjB,KAAO,IAAI8yE,GAAU9yE,KAAKwjB,EAAIA,EAAGxjB,KAAK4N,EAAG5N,KAAKmR,EACnE,EACE0Z,UAAW,SAASjd,EAAGuD,GACrB,OAAa,IAANvD,EAAgB,IAANuD,EAAUnR,KAAO,IAAI8yE,GAAU9yE,KAAKwjB,EAAGxjB,KAAK4N,EAAI5N,KAAKwjB,EAAI5V,EAAG5N,KAAKmR,EAAInR,KAAKwjB,EAAIrS,EACnG,EACExQ,MAAO,SAASsQ,GACd,MAAO,CAACA,EAAM,GAAKjR,KAAKwjB,EAAIxjB,KAAK4N,EAAGqD,EAAM,GAAKjR,KAAKwjB,EAAIxjB,KAAKmR,EACjE,EACE4hE,OAAQ,SAASnlE,GACf,OAAOA,EAAI5N,KAAKwjB,EAAIxjB,KAAK4N,CAC7B,EACEolE,OAAQ,SAAS7hE,GACf,OAAOA,EAAInR,KAAKwjB,EAAIxjB,KAAKmR,CAC7B,EACEqpD,OAAQ,SAASld,GACf,MAAO,EAAEA,EAAS,GAAKt9C,KAAK4N,GAAK5N,KAAKwjB,GAAI85B,EAAS,GAAKt9C,KAAKmR,GAAKnR,KAAKwjB,EAC3E,EACEyvD,QAAS,SAASrlE,GAChB,OAAQA,EAAI5N,KAAK4N,GAAK5N,KAAKwjB,CAC/B,EACE0vD,QAAS,SAAS/hE,GAChB,OAAQA,EAAInR,KAAKmR,GAAKnR,KAAKwjB,CAC/B,EACE2vD,SAAU,SAASvlE,GACjB,OAAOA,EAAEgF,OAAOmmD,OAAOnrD,EAAE8mB,QAAQrmB,IAAIrO,KAAKizE,QAASjzE,MAAMqO,IAAIT,EAAE4sD,OAAQ5sD,GAC3E,EACEwlE,SAAU,SAASjiE,GACjB,OAAOA,EAAEyB,OAAOmmD,OAAO5nD,EAAEujB,QAAQrmB,IAAIrO,KAAKkzE,QAASlzE,MAAMqO,IAAI8C,EAAEqpD,OAAQrpD,GAC3E,EACER,SAAU,WACR,MAAO,aAAe3Q,KAAK4N,EAAI,IAAM5N,KAAKmR,EAAI,WAAanR,KAAKwjB,EAAI,GACxE,GAGU,IAACkG,GAAW,IAAIopD,GAAU,EAAG,EAAG,GAI3B,SAAS9nD,GAAU3lB,GAChC,MAAQA,EAAKguE,aAAchuE,EAAOA,EAAKgE,YAAa,OAAOqgB,GAC3D,OAAOrkB,EAAKguE,MACd,CChDO,SAAS3G,KACdtiE,QAAMuiE,0BACR,CAEe,SAAA2G,KACblpE,QAAMyiE,iBACNziE,QAAMuiE,0BACR,CCEA,SAASa,KACP,OAAQpjE,QAAMmqC,UAAYnqC,QAAMqjE,MAClC,CAEA,SAAS8F,KACP,IAAIh/D,EAAIvU,KACR,OAAIuU,aAAaq2C,YACfr2C,EAAIA,EAAExD,iBAAmBwD,GACnBi/D,aAAa,WAEV,CAAC,EADRj/D,EAAIA,EAAEk/D,QAAQvoD,SACHtd,EAAG2G,EAAEpD,GAAI,CAACoD,EAAE3G,EAAI2G,EAAEokB,MAAOpkB,EAAEpD,EAAIoD,EAAE2kC,SAEvC,CAAC,CAAC,EAAG,GAAI,CAAC3kC,EAAEokB,MAAMzN,QAAQ9kB,MAAOmO,EAAE2kC,OAAOhuB,QAAQ9kB,QAEpD,CAAC,CAAC,EAAG,GAAI,CAACmO,EAAE83C,YAAa93C,EAAE+3C,cACpC,CAEA,SAASonB,KACP,OAAO1zE,KAAKqzE,QAAU3pD,EACxB,CAEA,SAASiqD,KACP,OAAQvpE,QAAMwpE,QAA8B,IAApBxpE,QAAMypE,UAAkB,IAAOzpE,QAAMypE,UAAY,EAAI,KAC/E,CAEA,SAASjG,KACP,OAAOt2B,UAAUu2B,gBAAmB,iBAAkB7tE,IACxD,CAEA,SAAS8zE,GAAiB9oD,EAAWoJ,EAAQ2/C,GAC3C,IAAIC,EAAMhpD,EAAUioD,QAAQ7+C,EAAO,GAAG,IAAM2/C,EAAgB,GAAG,GAC3DE,EAAMjpD,EAAUioD,QAAQ7+C,EAAO,GAAG,IAAM2/C,EAAgB,GAAG,GAC3DG,EAAMlpD,EAAUkoD,QAAQ9+C,EAAO,GAAG,IAAM2/C,EAAgB,GAAG,GAC3DI,EAAMnpD,EAAUkoD,QAAQ9+C,EAAO,GAAG,IAAM2/C,EAAgB,GAAG,GAC/D,OAAO/oD,EAAUH,UACfopD,EAAMD,GAAOA,EAAMC,GAAO,EAAIjlE,KAAKC,IAAI,EAAG+kE,IAAQhlE,KAAK0T,IAAI,EAAGuxD,GAC9DE,EAAMD,GAAOA,EAAMC,GAAO,EAAInlE,KAAKC,IAAI,EAAGilE,IAAQllE,KAAK0T,IAAI,EAAGyxD,GAElE,CAEe,SAAAC,KACb,IAUIC,EACAnG,EAXA1gE,EAASggE,GACTp5C,EAASm/C,GACTe,EAAYR,GACZS,EAAaZ,GACbvF,EAAYR,GACZ4G,EAAc,CAAC,EAAG5/D,KAClBm/D,EAAkB,CAAC,EAAEn/D,KAAWA,KAAW,CAACA,IAAUA,MACtD2B,EAAW,IACX2X,EAAcvC,GACdgiC,EAAYp9C,GAAS,QAAS,OAAQ,OAGtCkkE,EAAa,IACbC,EAAa,IACbpG,EAAiB,EAErB,SAASqG,EAAKznE,GACZA,EACK4C,SAAS,SAAU4jE,IACnBxoE,GAAG,aAAc0pE,GACjB1pE,GAAG,iBAAkBsjE,GACrBtjE,GAAG,gBAAiB2pE,GACtBrnE,OAAO4gE,GACLljE,GAAG,kBAAmBujE,GACtBvjE,GAAG,iBAAkBwjE,GACrBxjE,GAAG,iCAAkCyjE,GACrC9nE,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,gBAC9C,CAyDE,SAASikB,EAAME,EAAWxH,GAExB,OADAA,EAAIxU,KAAK0T,IAAI8xD,EAAY,GAAIxlE,KAAKC,IAAIulE,EAAY,GAAIhxD,OACzCwH,EAAUxH,EAAIwH,EAAY,IAAI8nD,GAAUtvD,EAAGwH,EAAUpd,EAAGod,EAAU7Z,EACnF,CAEE,SAAS0Z,EAAUG,EAAWY,EAAIC,GAChC,IAAIje,EAAIge,EAAG,GAAKC,EAAG,GAAKb,EAAUxH,EAAGrS,EAAIya,EAAG,GAAKC,EAAG,GAAKb,EAAUxH,EACnE,OAAO5V,IAAMod,EAAUpd,GAAKuD,IAAM6Z,EAAU7Z,EAAI6Z,EAAY,IAAI8nD,GAAU9nD,EAAUxH,EAAG5V,EAAGuD,EAC9F,CAEE,SAAS2jE,EAAS1gD,GAChB,MAAO,GAAGA,EAAO,GAAG,KAAMA,EAAO,GAAG,IAAM,IAAKA,EAAO,GAAG,KAAMA,EAAO,GAAG,IAAM,EACnF,CAEE,SAASte,EAASkY,EAAYhD,EAAW/Z,GACvC+c,EACK9iB,GAAG,cAAc,WAAa0jE,EAAQ5uE,KAAMS,WAAW4V,OAAQ,IAC/DnL,GAAG,2BAA2B,WAAa0jE,EAAQ5uE,KAAMS,WAAWymB,KAAM,IAC1E/Q,MAAM,QAAQ,WACb,IAAIrK,EAAO9L,KACP+L,EAAOtL,UACPwhB,EAAI2sD,EAAQ9iE,EAAMC,GAClBwI,EAAI6f,EAAOzzB,MAAMmL,EAAMC,GACvBvM,EAAa,MAATyR,EAAgB6jE,EAASvgE,GAAsB,mBAAVtD,EAAuBA,EAAMtQ,MAAMmL,EAAMC,GAAQkF,EAC1Fm1B,EAAIp3B,KAAK0T,IAAInO,EAAE,GAAG,GAAKA,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAKA,EAAE,GAAG,IAC/C1O,EAAIiG,EAAKunE,OACTl0E,EAAyB,mBAAd6rB,EAA2BA,EAAUrqB,MAAMmL,EAAMC,GAAQif,EACpEzqB,EAAI2tB,EAAYroB,EAAE20D,OAAOh7D,GAAG0C,OAAOkkC,EAAIvgC,EAAE2d,GAAIrkB,EAAEq7D,OAAOh7D,GAAG0C,OAAOkkC,EAAIjnC,EAAEqkB,IAC1E,OAAO,SAASnjB,GACd,GAAU,IAANA,EAASA,EAAIlB,MACZ,CAAE,IAAI6C,EAAIzB,EAAEF,GAAImjB,EAAI4iB,EAAIpkC,EAAE,GAAI3B,EAAI,IAAIyyE,GAAUtvD,EAAGhkB,EAAE,GAAKwC,EAAE,GAAKwhB,EAAGhkB,EAAE,GAAKwC,EAAE,GAAKwhB,EAAG,CAC1FvB,EAAE0yD,KAAK,KAAMt0E,EACzB,CACA,GACA,CAEE,SAASuuE,EAAQ9iE,EAAMC,EAAMgpE,GAC3B,OAASA,GAASjpE,EAAKkpE,WAAc,IAAIC,EAAQnpE,EAAMC,EAC3D,CAEE,SAASkpE,EAAQnpE,EAAMC,GACrB/L,KAAK8L,KAAOA,EACZ9L,KAAK+L,KAAOA,EACZ/L,KAAK2W,OAAS,EACd3W,KAAKo0B,OAASA,EAAOzzB,MAAMmL,EAAMC,GACjC/L,KAAKk1E,KAAO,CAChB,CA8BE,SAASN,IACP,GAAKpnE,EAAO7M,MAAMX,KAAMS,WAAxB,CACA,IAAIwhB,EAAI2sD,EAAQ5uE,KAAMS,WAClBJ,EAAIL,KAAKqzE,OACT7vD,EAAIxU,KAAK0T,IAAI8xD,EAAY,GAAIxlE,KAAKC,IAAIulE,EAAY,GAAIn0E,EAAEmjB,EAAIxU,KAAKyU,IAAI,EAAG8wD,EAAW5zE,MAAMX,KAAMS,cAC/FjB,EAAIsS,GAAM9R,MAId,GAAIiiB,EAAEkzD,MACAlzD,EAAEnQ,MAAM,GAAG,KAAOtS,EAAE,IAAMyiB,EAAEnQ,MAAM,GAAG,KAAOtS,EAAE,KAChDyiB,EAAEnQ,MAAM,GAAKzR,EAAEm6D,OAAOv4C,EAAEnQ,MAAM,GAAKtS,IAErCwV,aAAaiN,EAAEkzD,WAIZ,IAAI90E,EAAEmjB,IAAMA,EAAG,OAIlBvB,EAAEnQ,MAAQ,CAACtS,EAAGa,EAAEm6D,OAAOh7D,IACvBkX,GAAU1W,MACViiB,EAAE5L,OACR,CAEI22D,KACA/qD,EAAEkzD,MAAQthE,YAGV,WACEoO,EAAEkzD,MAAQ,KACVlzD,EAAEiF,KACR,GANqCwtD,GACjCzyD,EAAE0yD,KAAK,QAASL,EAAUzpD,EAAUC,EAAMzqB,EAAGmjB,GAAIvB,EAAEnQ,MAAM,GAAImQ,EAAEnQ,MAAM,IAAKmQ,EAAEmS,OAAQ2/C,GA3BhD,CAiCxC,CAEE,SAASvF,IACP,IAAIN,GAAgB1gE,EAAO7M,MAAMX,KAAMS,WAAvC,CACA,IAAIwhB,EAAI2sD,EAAQ5uE,KAAMS,WAAW,GAC7BgG,EAAI0G,GAAO/C,QAAM2iE,MAAM7hE,GAAG,kBAW9B,WAEE,GADA8hE,MACK/qD,EAAEmzD,MAAO,CACZ,IAAI/oD,EAAKjiB,QAAM8G,QAAU2pD,EAAIvuC,EAAKliB,QAAMgH,QAAUikE,EAClDpzD,EAAEmzD,MAAQ/oD,EAAKA,EAAKC,EAAKA,EAAKgiD,CACtC,CACMrsD,EAAE0yD,KAAK,QAASL,EAAUzpD,EAAU5I,EAAEnW,KAAKunE,OAAQpxD,EAAEnQ,MAAM,GAAKA,GAAMmQ,EAAEnW,MAAOmW,EAAEnQ,MAAM,IAAKmQ,EAAEmS,OAAQ2/C,GAC5G,IAlBgE,GAAM7oE,GAAG,gBAoBrE,WACEzE,EAAEyE,GAAG,8BAA+B,MACpCoqE,GAAWlrE,QAAM2iE,KAAM9qD,EAAEmzD,OACzBpI,KACA/qD,EAAEiF,KACR,IAzBqG,GAC7F1nB,EAAIsS,GAAM9R,MACV66D,EAAKzwD,QAAM8G,QACXmkE,EAAKjrE,QAAMgH,QAEf07D,GAAY1iE,QAAM2iE,MAClBL,KACAzqD,EAAEnQ,MAAQ,CAACtS,EAAGQ,KAAKqzE,OAAO7Y,OAAOh7D,IACjCkX,GAAU1W,MACViiB,EAAE5L,OAXiD,CA4BvD,CAEE,SAASw+D,IACP,GAAKrnE,EAAO7M,MAAMX,KAAMS,WAAxB,CACA,IAAIgU,EAAKzU,KAAKqzE,OACVznD,EAAK9Z,GAAM9R,MACX6rB,EAAKpX,EAAG+lD,OAAO5uC,GACf2pD,EAAK9gE,EAAG+O,GAAKpZ,QAAMorE,SAAW,GAAM,GACpC7gE,EAAK2/D,EAAUzpD,EAAUC,EAAMrW,EAAI8gE,GAAK3pD,EAAIC,GAAKuI,EAAOzzB,MAAMX,KAAMS,WAAYszE,GAEpF/G,KACIz2D,EAAW,EAAGpJ,GAAOnN,MAAMguB,aAAazX,SAASA,GAAU5W,KAAKmW,EAAUnB,EAAIiX,GAC7Eze,GAAOnN,MAAML,KAAKg1E,EAAK3pD,UAAWrW,EATH,CAUxC,CAEE,SAAS85D,IACP,GAAKjhE,EAAO7M,MAAMX,KAAMS,WAAxB,CACA,IAGIg1E,EAASl1E,EAAGF,EAAGb,EAHfyS,EAAU7H,QAAM6H,QAChBzR,EAAIyR,EAAQvR,OACZuhB,EAAI2sD,EAAQ5uE,KAAMS,UAAW2J,QAAM2H,eAAerR,SAAWF,GAIjE,IADAksE,KACKnsE,EAAI,EAAGA,EAAIC,IAAKD,EAEnBf,EAAI,CADYA,EAAIwS,GAAMhS,KAAMiS,GAAhC5R,EAAI4R,EAAQ1R,IAA+B2R,YACnClS,KAAKqzE,OAAO7Y,OAAOh7D,GAAIa,EAAE6R,YAC5B+P,EAAEyzD,OACGzzD,EAAE0zD,QAAU1zD,EAAEyzD,OAAO,KAAOl2E,EAAE,KAAIyiB,EAAE0zD,OAASn2E,EAAGyiB,EAAEizD,KAAO,IADpDjzD,EAAEyzD,OAASl2E,EAAGi2E,GAAU,EAAMxzD,EAAEizD,KAAO,IAAMb,GAI1DA,IAAeA,EAAgBr/D,aAAaq/D,IAE5CoB,IACExzD,EAAEizD,KAAO,IAAGb,EAAgBxgE,YAAW,WAAawgE,EAAgB,IAAK,GAAII,IACjF/9D,GAAU1W,MACViiB,EAAE5L,QAnBgC,CAqBxC,CAEE,SAASq4D,IACP,GAAK1uE,KAAKg1E,UAAV,CACA,IAEwBz0E,EAAGF,EAAGb,EAAGwC,EAF7BigB,EAAI2sD,EAAQ5uE,KAAMS,WAClBwR,EAAU7H,QAAM2H,eAChBvR,EAAIyR,EAAQvR,OAKhB,IAHAssE,KACIqH,IAAeA,EAAgBr/D,aAAaq/D,IAChDpyD,EAAEizD,KAAO,EACJ30E,EAAI,EAAGA,EAAIC,IAAKD,EACHf,EAAIwS,GAAMhS,KAAMiS,GAAhC5R,EAAI4R,EAAQ1R,IAA+B2R,YACvC+P,EAAEyzD,QAAUzzD,EAAEyzD,OAAO,KAAOr1E,EAAE6R,WAAY+P,EAAEyzD,OAAO,GAAKl2E,EACnDyiB,EAAE0zD,QAAU1zD,EAAE0zD,OAAO,KAAOt1E,EAAE6R,aAAY+P,EAAE0zD,OAAO,GAAKn2E,GAGnE,GADAa,EAAI4hB,EAAEnW,KAAKunE,OACPpxD,EAAE0zD,OAAQ,CACZ,IAAI/pD,EAAK3J,EAAEyzD,OAAO,GAAIE,EAAK3zD,EAAEyzD,OAAO,GAChC7pD,EAAK5J,EAAE0zD,OAAO,GAAIE,EAAK5zD,EAAE0zD,OAAO,GAChCG,GAAMA,EAAKjqD,EAAG,GAAKD,EAAG,IAAMkqD,GAAMA,EAAKjqD,EAAG,GAAKD,EAAG,IAAMkqD,EACxDC,GAAMA,EAAKF,EAAG,GAAKD,EAAG,IAAMG,GAAMA,EAAKF,EAAG,GAAKD,EAAG,IAAMG,EAC5D11E,EAAIyqB,EAAMzqB,EAAG2O,KAAK8V,KAAKgxD,EAAKC,IAC5Bv2E,EAAI,EAAEosB,EAAG,GAAKC,EAAG,IAAM,GAAID,EAAG,GAAKC,EAAG,IAAM,GAC5C7pB,EAAI,EAAE4zE,EAAG,GAAKC,EAAG,IAAM,GAAID,EAAG,GAAKC,EAAG,IAAM,EAClD,KACS,KAAI5zD,EAAEyzD,OACN,OADcl2E,EAAIyiB,EAAEyzD,OAAO,GAAI1zE,EAAIigB,EAAEyzD,OAAO,EAC5C,CACLzzD,EAAE0yD,KAAK,QAASL,EAAUzpD,EAAUxqB,EAAGb,EAAGwC,GAAIigB,EAAEmS,OAAQ2/C,GAzBnC,CA0BzB,CAEE,SAASpF,IACP,GAAK3uE,KAAKg1E,UAAV,CACA,IAEwBz0E,EAAGF,EAFvB4hB,EAAI2sD,EAAQ5uE,KAAMS,WAClBwR,EAAU7H,QAAM2H,eAChBvR,EAAIyR,EAAQvR,OAKhB,IAHAgsE,KACIwB,GAAal5D,aAAak5D,GAC9BA,EAAcr6D,YAAW,WAAaq6D,EAAc,IAAK,GAAIuG,GACxDl0E,EAAI,EAAGA,EAAIC,IAAKD,EACnBF,EAAI4R,EAAQ1R,GACR0hB,EAAEyzD,QAAUzzD,EAAEyzD,OAAO,KAAOr1E,EAAE6R,kBAAmB+P,EAAEyzD,OAC9CzzD,EAAE0zD,QAAU1zD,EAAE0zD,OAAO,KAAOt1E,EAAE6R,mBAAmB+P,EAAE0zD,OAG9D,GADI1zD,EAAE0zD,SAAW1zD,EAAEyzD,SAAQzzD,EAAEyzD,OAASzzD,EAAE0zD,cAAe1zD,EAAE0zD,QACrD1zD,EAAEyzD,OAAQzzD,EAAEyzD,OAAO,GAAK11E,KAAKqzE,OAAO7Y,OAAOv4C,EAAEyzD,OAAO,SAItD,GAFAzzD,EAAEiF,MAEa,IAAXjF,EAAEizD,KAAY,CAChB,IAAI11E,EAAI2N,GAAOnN,MAAMkL,GAAG,iBACpB1L,GAAGA,EAAEmB,MAAMX,KAAMS,UAC7B,CArByB,CAuBzB,CA+CE,OA/UAk0E,EAAK3pD,UAAY,SAASgrD,EAAYhrD,EAAW/Z,GAC/C,IAAI/D,EAAY8oE,EAAW9oE,UAAY8oE,EAAW9oE,YAAc8oE,EAChE9oE,EAAU4C,SAAS,SAAU4jE,IACzBsC,IAAe9oE,EACjB4I,EAASkgE,EAAYhrD,EAAW/Z,GAEhC/D,EAAUwJ,YAAY/I,MAAK,WACzBihE,EAAQ5uE,KAAMS,WACT4V,QACAs+D,KAAK,KAA2B,mBAAd3pD,EAA2BA,EAAUrqB,MAAMX,KAAMS,WAAauqB,GAChF9D,KACb,GAEA,EAEEytD,EAAKsB,QAAU,SAAS/oE,EAAWsW,EAAGhkB,GACpCm1E,EAAKuB,QAAQhpE,GAAW,WAGtB,OAFSlN,KAAKqzE,OAAO7vD,GACC,mBAANA,EAAmBA,EAAE7iB,MAAMX,KAAMS,WAAa+iB,EAEpE,GAAOhkB,EACP,EAEEm1E,EAAKuB,QAAU,SAAShpE,EAAWsW,EAAGhkB,GACpCm1E,EAAK3pD,UAAU9d,GAAW,WACxB,IAAIqH,EAAI6f,EAAOzzB,MAAMX,KAAMS,WACvBgU,EAAKzU,KAAKqzE,OACVznD,EAAU,MAALpsB,EAAYs1E,EAASvgE,GAAkB,mBAAN/U,EAAmBA,EAAEmB,MAAMX,KAAMS,WAAajB,EACpFqsB,EAAKpX,EAAG+lD,OAAO5uC,GACf2pD,EAAkB,mBAAN/xD,EAAmBA,EAAE7iB,MAAMX,KAAMS,WAAa+iB,EAC9D,OAAO8wD,EAAUzpD,EAAUC,EAAMrW,EAAI8gE,GAAK3pD,EAAIC,GAAKtX,EAAGw/D,EAC5D,GAAOv0E,EACP,EAEEm1E,EAAKwB,YAAc,SAASjpE,EAAWU,EAAGuD,GACxCwjE,EAAK3pD,UAAU9d,GAAW,WACxB,OAAOonE,EAAUt0E,KAAKqzE,OAAOxoD,UACd,mBAANjd,EAAmBA,EAAEjN,MAAMX,KAAMS,WAAamN,EACxC,mBAANuD,EAAmBA,EAAExQ,MAAMX,KAAMS,WAAa0Q,GACpDijB,EAAOzzB,MAAMX,KAAMS,WAAYszE,EACxC,GACA,EAEEY,EAAKyB,YAAc,SAASlpE,EAAWU,EAAGuD,EAAG3R,GAC3Cm1E,EAAK3pD,UAAU9d,GAAW,WACxB,IAAIqH,EAAI6f,EAAOzzB,MAAMX,KAAMS,WACvBJ,EAAIL,KAAKqzE,OACTznD,EAAU,MAALpsB,EAAYs1E,EAASvgE,GAAkB,mBAAN/U,EAAmBA,EAAEmB,MAAMX,KAAMS,WAAajB,EACxF,OAAO80E,EAAU5qD,GAASmB,UAAUe,EAAG,GAAIA,EAAG,IAAId,MAAMzqB,EAAEmjB,GAAGqH,UAC9C,mBAANjd,GAAoBA,EAAEjN,MAAMX,KAAMS,YAAcmN,EAC1C,mBAANuD,GAAoBA,EAAExQ,MAAMX,KAAMS,YAAc0Q,GACtDoD,EAAGw/D,EACZ,GAAOv0E,EACP,EAkDEy1E,EAAQx1E,UAAY,CAClB4W,MAAO,WAKL,OAJsB,KAAhBrW,KAAK2W,SACT3W,KAAK8L,KAAKkpE,UAAYh1E,KACtBA,KAAKq2E,KAAK,UAELr2E,IACb,EACI20E,KAAM,SAAS5zE,EAAKiqB,GAMlB,OALIhrB,KAAK8R,OAAiB,UAAR/Q,IAAiBf,KAAK8R,MAAM,GAAKkZ,EAAUwvC,OAAOx6D,KAAK8R,MAAM,KAC3E9R,KAAK01E,QAAkB,UAAR30E,IAAiBf,KAAK01E,OAAO,GAAK1qD,EAAUwvC,OAAOx6D,KAAK01E,OAAO,KAC9E11E,KAAK21E,QAAkB,UAAR50E,IAAiBf,KAAK21E,OAAO,GAAK3qD,EAAUwvC,OAAOx6D,KAAK21E,OAAO,KAClF31E,KAAK8L,KAAKunE,OAASroD,EACnBhrB,KAAKq2E,KAAK,QACHr2E,IACb,EACIknB,IAAK,WAKH,OAJsB,KAAhBlnB,KAAK2W,gBACF3W,KAAK8L,KAAKkpE,UACjBh1E,KAAKq2E,KAAK,QAELr2E,IACb,EACIq2E,KAAM,SAAS9qE,GACbM,GAAY,IAAIgnE,GAAU8B,EAAMppE,EAAMvL,KAAK8L,KAAKunE,QAAS1lB,EAAUhtD,MAAOgtD,EAAW,CAACpiD,EAAMvL,KAAK8L,KAAM9L,KAAK+L,MAClH,GAkKE4oE,EAAKJ,WAAa,SAAS7jE,GACzB,OAAOjQ,UAAUC,QAAU6zE,EAA0B,mBAAN7jE,EAAmBA,EAAIgW,IAAUhW,GAAIikE,GAAQJ,CAChG,EAEEI,EAAKnnE,OAAS,SAASkD,GACrB,OAAOjQ,UAAUC,QAAU8M,EAAsB,mBAANkD,EAAmBA,EAAIgW,KAAWhW,GAAIikE,GAAQnnE,CAC7F,EAEEmnE,EAAKvG,UAAY,SAAS19D,GACxB,OAAOjQ,UAAUC,QAAU0tE,EAAyB,mBAAN19D,EAAmBA,EAAIgW,KAAWhW,GAAIikE,GAAQvG,CAChG,EAEEuG,EAAKvgD,OAAS,SAAS1jB,GACrB,OAAOjQ,UAAUC,QAAU0zB,EAAsB,mBAAN1jB,EAAmBA,EAAIgW,GAAS,CAAC,EAAEhW,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAK,EAAEA,EAAE,GAAG,IAAKA,EAAE,GAAG,MAAOikE,GAAQvgD,CACtI,EAEEugD,EAAKH,YAAc,SAAS9jE,GAC1B,OAAOjQ,UAAUC,QAAU8zE,EAAY,IAAM9jE,EAAE,GAAI8jE,EAAY,IAAM9jE,EAAE,GAAIikE,GAAQ,CAACH,EAAY,GAAIA,EAAY,GACpH,EAEEG,EAAKZ,gBAAkB,SAASrjE,GAC9B,OAAOjQ,UAAUC,QAAUqzE,EAAgB,GAAG,IAAMrjE,EAAE,GAAG,GAAIqjE,EAAgB,GAAG,IAAMrjE,EAAE,GAAG,GAAIqjE,EAAgB,GAAG,IAAMrjE,EAAE,GAAG,GAAIqjE,EAAgB,GAAG,IAAMrjE,EAAE,GAAG,GAAIikE,GAAQ,CAAC,CAACZ,EAAgB,GAAG,GAAIA,EAAgB,GAAG,IAAK,CAACA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,IAC3Q,EAEEY,EAAKL,UAAY,SAAS5jE,GACxB,OAAOjQ,UAAUC,QAAU4zE,EAAY5jE,EAAGikE,GAAQL,CACtD,EAEEK,EAAKp+D,SAAW,SAAS7F,GACvB,OAAOjQ,UAAUC,QAAU6V,GAAY7F,EAAGikE,GAAQp+D,CACtD,EAEEo+D,EAAKzmD,YAAc,SAASxd,GAC1B,OAAOjQ,UAAUC,QAAUwtB,EAAcxd,EAAGikE,GAAQzmD,CACxD,EAEEymD,EAAKzpE,GAAK,WACR,IAAI9E,EAAQunD,EAAUziD,GAAGvK,MAAMgtD,EAAWltD,WAC1C,OAAO2F,IAAUunD,EAAYgnB,EAAOvuE,CACxC,EAEEuuE,EAAKzF,cAAgB,SAASx+D,GAC5B,OAAOjQ,UAAUC,QAAU4tE,GAAkB59D,GAAKA,GAAKA,EAAGikE,GAAQ3lE,KAAK8V,KAAKwpD,EAChF,EAESqG,CACT,CFrXA3pD,GAAUvrB,UAAYqzE,GAAUrzE,U,wzCGrChC,IAAA62E,GAAA,SAAAnoC,GAII,SAAAmoC,IACI,IAAAloC,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAJJouC,EAAQmoC,UAAG,EAKfnoC,EAAK6c,KAAO,I,EA4CpB,OAlD4BrrD,EAAU02E,EAAAnoC,GASlCmoC,EAAA72E,UAAAyF,MAAA,SAAMswC,EAAsBf,GACxBtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrB,IAAM5E,EAAU7vC,KAChBA,KAAK+uC,GAAK/uC,KAAK2mD,SACV/2C,KAAK,OAAQ,KACb1E,GAAG,SAAS,WACT2kC,EAAQwE,QACRT,QAAQi5B,gBACZ,IACC3hE,GAAG,YAAalL,KAAKw2E,WACrBtrE,GAAG,WAAYlL,KAAKu1C,UACpB9mC,OAAO,I,EAIhB6nE,EAAA72E,UAAA2E,OAAA,SAAOoxC,EAAsBf,GACzBtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBA,EACK1kC,QAAQ,YAAa/P,KAAKy2E,WAC1B7mE,KAAK,QAAS5P,KAAK8hE,WAExB9hE,KAAK+uC,GAAGn/B,KAAK,QAAS,MAAA1N,OAAMu0C,GAASz2C,KAAK02C,UAAS,gB,EAIvD4/B,EAAA72E,UAAA40C,MAAA,W,EAGAiiC,EAAA72E,UAAA+2E,UAAA,SAAUt3E,EAAGuzC,EAAK3lC,G,EAGlBwpE,EAAA72E,UAAA81C,SAAA,SAASr2C,EAAGuzC,EAAK3lC,G,EAKjBwpE,EAAO72E,UAAAg3E,QAAP,SAAQ/lE,GACJ,OAAKjQ,UAAUC,QACfV,KAAKu2E,SAAW7lE,EACT1Q,MAFuBA,KAAKu2E,Q,EAI1CD,CAAD,CAlDA,CAA4B1qB,IAmD5B0qB,GAAO72E,UAAU0rC,QAAU,iBAO3BmrC,GAAO72E,UAAUyxC,QAAQ,SAAU,GAAI,SAAU,qBACjDolC,GAAO72E,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,6CAGlD,IAAAwlC,GAAA,SAAAvoC,GAAA,SAAAuoC,I,+CAUA,OAVkC92E,EAAM82E,EAAAvoC,GAEpCuoC,EAAAj3E,UAAAyF,MAAA,SAAMswC,EAAsBf,GACxBtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAGzBiiC,EAAAj3E,UAAA2E,OAAA,SAAOoxC,EAAsBf,GACzBtG,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBA,EAAQ1kC,QAAQ,WAAY/P,KAAKm1C,W,EAExCuhC,CAAD,CAVA,CAAkCJ,IAWlCI,GAAaj3E,UAAU0rC,QAAU,uBAKjCurC,GAAaj3E,UAAUyxC,QAAQ,YAAY,EAAO,WAGlD,IAAAylC,GAAA,SAAAxoC,GAAA,SAAAwoC,I,+CAYA,OAZkC/2E,EAAY+2E,EAAAxoC,GAE1CwoC,EAAAl3E,UAAAyF,MAAA,SAAMswC,EAAsBf,GAA5B,IASCrG,EAAApuC,KARGy0C,EAAQvpC,GAAG,aAAa,SAAChM,EAAGuzC,EAAK3lC,GAC7BshC,EACK+G,UAAU/G,EAAK+G,YACf+Q,SAELtS,QAAQi5B,gBACZ,IACA1+B,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAE5BkiC,CAAD,CAZA,CAAkCD,IAalCC,GAAal3E,UAAU0rC,QAAU,uBAGjC,IAAAyrC,GAAA,SAAAzoC,GAAA,SAAAyoC,I,+CAUA,OAV4Bh3E,EAAUg3E,EAAAzoC,GAElCyoC,EAAAn3E,UAAAyF,MAAA,SAAMswC,EAAsBf,GACxBtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBA,EACK7kC,KAAK,QAAS5P,KAAK62E,QAAU,eAAiB,UAC9CjnE,KAAK,OAAQ,KACbnB,OAAO,I,EAGnBmoE,CAAD,CAVA,CAA4BhrB,IAW5BgrB,GAAOn3E,UAAU0rC,QAAU,iBAM3ByrC,GAAOn3E,UAAUyxC,QAAQ,SAAS,EAAM,WAExC,IAAA4lC,GAAA,SAAA3oC,GAGI,SAAA2oC,IACI,IAAA1oC,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHJouC,EAAQmoC,UAAG,EAIfnoC,EAAK6c,KAAO,S,EAwDpB,OA7DoCrrD,EAAUk3E,EAAA3oC,GAU1C2oC,EAAOr3E,UAAAg3E,QAAP,SAAQ/lE,GACJ,OAAKjQ,UAAUC,QACfV,KAAKu2E,SAAW7lE,EACT1Q,MAFuBA,KAAKu2E,Q,EAKvCO,EAAAr3E,UAAAyF,MAAA,SAAMswC,EAA4Bf,GAC9BtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrB,IAAM5E,EAAU7vC,KAChBy0C,EAAQvpC,GAAG,UAAU,SAAUhM,GAC3B,IAAMknB,EAASypB,EAAQzpB,SACvB,IAAK,IAAMrlB,KAAO8uC,EAAQzpB,SACtB,GAAIpmB,KAAKoG,QAAUggB,EAAOrlB,GAAM,CAC5B8uC,EAAQsF,SAASp0C,GACjB,K,CAGR8uC,EAAQwE,MAAMr0C,KAAKoG,MACvB,G,EAGJ0wE,EAAAr3E,UAAA2E,OAAA,SAAOoxC,EAAsBf,GAA7B,IAmBCrG,EAAApuC,KAlBGmuC,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GACtBA,EACK1kC,QAAQ,YAAa/P,KAAKy2E,WAC1B7mE,KAAK,QAAS5P,KAAK8hE,WAGxB,IAAM17C,EAASpmB,KAAKomB,SAEdqnB,EAAUgH,EAAQlnC,UAAU,2BAA2BnI,KAAKhG,OAAOw3B,KAAKxQ,IACxE2wD,EAAetpC,EAAQvoC,QAAQuJ,OAAO,UACvCmB,KAAK,QAAS,0BACdlB,MAAM++B,GACN79B,KAAK,SAAS,SAAA1O,GAAK,OAAAklB,EAAOllB,EAAE,IAC5B0O,KAAK,YAAY,SAAA1O,GAAK,OAAAA,IAAMktC,EAAK+G,WAAa,WAAa,IAArC,IACtBnlC,MAAK,SAAA9O,GAAK,OAAAA,CAAC,IAEhBusC,EAAQtoC,OAAOoD,SACfwuE,EAAapoE,O,EAIjBmoE,EAAKr3E,UAAA40C,MAAL,SAAMjuC,G,EAGN0wE,EAAAr3E,UAAA+2E,UAAA,SAAUt3E,EAAGuzC,EAAK3lC,G,EAGlBgqE,EAAAr3E,UAAA81C,SAAA,SAASr2C,EAAGuzC,EAAK3lC,G,EAEpBgqE,CAAD,CA7DA,CAAoClrB,IA8DpCkrB,GAAer3E,UAAU0rC,QAAU,yBASnC2rC,GAAer3E,UAAUyxC,QAAQ,SAAU,GAAI,SAAU,iBACzD4lC,GAAer3E,UAAUyxC,QAAQ,WAAY,GAAI,SAAU,iBAC3D4lC,GAAer3E,UAAUyxC,QAAQ,UAAW,GAAI,SAAU,6CAG1D,IAAA8lC,GAAA,SAAA7oC,GAII,SAAA6oC,IACI,IAAA5oC,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OAHZouC,EAAQ6oC,SAAa,G,EAoDzB,OAtD6Br3E,EAAUo3E,EAAA7oC,GAQnC6oC,EAAAv3E,UAAAyF,MAAA,SAAMswC,EAASf,GACXtG,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,GACrBz0C,KAAKk3E,YAAcziC,EAAQhmC,OAAO,OAC7BmB,KAAK,QAAS,W,EAIvBonE,EAAAv3E,UAAA2E,OAAA,SAAOoxC,EAASf,GAAhB,IAiCCrG,EAAApuC,KAhCGmuC,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GAEtB,IAAI0iC,EAAUn3E,KAAKm3E,UAAU3pE,QAAO,SAAAigE,GAAU,OAAAr/B,EAAKgpC,gBAAgBv0E,QAAQ4qE,GAAU,CAAC,IACtF0J,EAAUA,EAAQxjB,QAAO,SAACC,EAAM1kB,EAAMuD,GAClC,GAAIvD,aAAgB0nC,GAAQ,CACxB,GAAqB,IAAhBhjB,EAAKlzD,QAAgB+xC,IAAQ0kC,EAAQz2E,OAAS,EAC/C,OAAOkzD,EACJ,GAAIujB,EAAQ1kC,EAAM,aAAcmkC,GACnC,OAAOhjB,C,CAIf,OADAA,EAAK7pD,KAAKmlC,GACH0kB,C,GACR,IACH,IAAMyjB,EAAQr3E,KAAKk3E,YAAY3pE,UAAU,kBAAkBnI,KAAK+xE,GAAS,SAACj4E,GAAc,OAAAA,EAAEkT,IAAI,IAC9FilE,EAAMnyE,QAAQuJ,OAAO,OAChBmB,KAAK,QAAS,iBACdjC,MAAK,SAA6BzO,GAC/BA,EAAE4B,OAAOd,KACb,IACC0O,MAAM2oE,GACN1pE,MAAK,SAAUzO,GACZA,EAAEgnD,QACN,IAEJmxB,EAAMlyE,OACDwI,MAAK,SAAUzO,GACZA,EAAE4B,OAAO,KACb,IACCyH,SAEL8uE,EAAM1oE,O,EAGVqoE,EAAAv3E,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAKm3E,UAAU3+C,SAAQ,SAAAr5B,GAAK,OAAAA,EAAE2B,OAAO,KAAT,IAC5BqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAE3BuiC,CAAD,CAtDA,CAA6BprB,IAuD7BorB,GAAQv3E,UAAU0rC,QAAU,kBAQ5B6rC,GAAQv3E,UAAUyxC,QAAQ,UAAW,GAAI,cAAe,KAAM,CAAEE,UAAU,IAC1E4lC,GAAQv3E,UAAUyxC,QAAQ,gBAAiB,GAAI,cAAe,KAAM,CAAEE,UAAU,IAGhF,IAAAkmC,GAAA,SAAAnpC,GAAA,SAAAmpC,I,+CAqBA,OArBqC13E,EAAY03E,EAAAnpC,GAG7CmpC,EAAA73E,UAAAyF,MAAA,SAAMswC,EAAsBf,GAA5B,IAMCrG,EAAApuC,KALGy0C,EAAQvpC,GAAG,aAAa,SAAChM,EAAGuzC,EAAK3lC,GAC7BshC,EAAK+G,UAAS,GAAM+Q,SACpBtS,QAAQi5B,gBACZ,IACA1+B,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAKzB6iC,EAAQ73E,UAAA01C,SAAR,SAASzkC,GAAT,IAOC09B,EAAApuC,KANS+vC,EAAS5B,EAAK1uC,UAAC01C,SAASx0C,MAAMX,KAAMS,WAK1C,OAJIiQ,GAAK1Q,KAAK+9C,SACV/9C,KAAK+9C,OAAOo5B,UAAU3pE,QAAO,SAAA+pE,GAAM,OAAAA,IAAOnpC,GAAQmpC,aAAcD,CAAe,IAAE9+C,SAAQ,SAAC++C,GAAwB,OAAAA,EAAGpiC,UAAS,GAAO+Q,QAAnB,IAClHlmD,KAAK+9C,OAAO5I,SAASn1C,OAElB+vC,C,EAEdunC,CAAD,CArBA,CAAqCZ,IAsBrCY,GAAgB73E,UAAU0rC,QAAU,0BAEpC,IAAAqsC,GAAA,SAAArpC,GAAA,SAAAqpC,I,+CAiBA,OAjBkC53E,EAAO43E,EAAArpC,GAIrCqpC,EAAO/3E,UAAA03E,QAAP,SAAQzmE,GAAR,IAQC09B,EAAApuC,KAPS+vC,EAAS5B,EAAK1uC,UAAC03E,QAAQx2E,MAAMX,KAAMS,WAMzC,OALIA,UAAUC,QACVgQ,EAAElD,QAAO,SAAArO,GAAK,OAAAA,aAAam4E,EAAe,IAAE9+C,SAAQ,SAAC++C,GACjDA,EAAGx5B,OAAS3P,CAChB,IAEG2B,C,EAIXynC,EAAQ/3E,UAAA01C,SAAR,SAAS7e,G,EAEZkhD,CAAD,CAjBA,CAAkCR,IAkBlCQ,GAAa/3E,UAAU0rC,QAAU,uBAGjC,IAAAssC,GAAA,SAAAtpC,GAOI,SAAAspC,IACI,OAAAtpC,EAAKxuC,KAAAK,OAAGA,I,CAgDhB,OAxD8BJ,EAAO63E,EAAAtpC,GAWjCspC,EAAAh4E,UAAAyF,MAAA,SAAMswC,EAASf,GACXz0C,KAAK03E,UAAYjjC,EAAQhmC,OAAO,OAC3BmB,KAAK,QAAS,eACd/I,MAAM,YAAa,OAExB7G,KAAK23E,cAAgB33E,KAAK03E,UAAUjpE,OAAO,OACtCmB,KAAK,QAAS,cACd/I,MAAM,cAAe7G,KAAK43E,iBAC1B/wE,MAAM,YAAa,GAAA3E,OAAGlC,KAAK63E,oBAAmB,OAC9ChxE,MAAM,QAAS,GAAG3E,OAAAlC,KAAK63E,oBAAuB,OAEnD73E,KAAK03E,UAAUjpE,OAAO,OACjBmB,KAAK,QAAS,cAEnB5P,KAAK83E,cAAgB93E,KAAK03E,UAAUjpE,OAAO,OACtCmB,KAAK,QAAS,cACd/I,MAAM,cAAe7G,KAAK+3E,aAC1BlxE,MAAM,YAAa,GAAG3E,OAAAlC,KAAKkoE,gBAAmB,OAEnDloE,KAAKg4E,oBAAsBh4E,KAAK03E,UAAUjpE,OAAO,OAC5CmB,KAAK,QAAS,oBACd/I,MAAM,cAAe7G,KAAKi4E,mBAG/B9pC,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASf,E,EAGzBgjC,EAAAh4E,UAAA2E,OAAA,SAAOoxC,EAASf,GACZz0C,KAAK23E,cACA3nE,KAAKhQ,KAAKk4E,aACVrxE,MAAM,UAAgC,KAArB7G,KAAKk4E,YAAqB,eAAiB,QAEjEl4E,KAAK83E,cACA9nE,KAAKhQ,KAAKioE,SACVr4D,KAAK,QAAS5P,KAAKioE,SAExBjoE,KAAKg4E,oBACAnxE,MAAM,UAAW7G,KAAKm4E,qBAAuB,QAAU,QACvDtxE,MAAM,YAAa7G,KAAKm4E,qBAAuB,GAAAj2E,OAAGlC,KAAKokE,sBAAqB,MAAO,MACnFv9D,MAAM,cAAe7G,KAAKm4E,qBAAuB,GAAAj2E,OAAGlC,KAAKokE,sBAAqB,MAAO,MACrFp0D,KAAKhQ,KAAKmtC,eAGfgB,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,E,EAE7BgjC,CAAD,CAxDA,CAA8BT,IAyD9BS,GAASh4E,UAAU0rC,QAAU,mBAuB7BssC,GAASh4E,UAAUyxC,QAAQ,YAAa,GAAI,SAAU,aACtDumC,GAASh4E,UAAUyxC,QAAQ,gBAAiB,GAAI,SAAU,oBAC1DumC,GAASh4E,UAAUyxC,QAAQ,oBAAqB,GAAI,SAAU,2BAC9DumC,GAASh4E,UAAUyxC,QAAQ,QAAS,GAAI,SAAU,cAClDumC,GAASh4E,UAAUyxC,QAAQ,YAAa,GAAI,SAAU,qBACtDumC,GAASh4E,UAAUyxC,QAAQ,gBAAiB,GAAI,SAAU,4BAC1DumC,GAASh4E,UAAUyxC,QAAQ,cAAe,KAAM,SAAU,mBAAoB,KAAM,CAAE5D,UAAU,IAChGmqC,GAASh4E,UAAUyxC,QAAQ,kBAAmB,GAAI,SAAU,2BAC5DumC,GAASh4E,UAAUyxC,QAAQ,sBAAuB,GAAI,SAAU,kC,+MCtYhE,IAAAknC,GAAA,SAAAjqC,GAwDI,SAAAiqC,IACI,IAAAhqC,EAAAD,EAAKxuC,KAAAK,OAAGA,K,OApDFouC,EAAUiqC,WAAG,EACbjqC,EAAAkqC,eAAiB,CAAC,EAAG,GASrBlqC,EAAkBmqC,oBAAG,EAErBnqC,EAAAoqC,yBAA0B,IAAI7B,IAAejgC,OAAO,eAAeorB,QAAQ,qBAChF52D,GAAG,SAAS,WACLkjC,EAAKoqC,wBAAwBrjC,YAC7B/G,EAAKqqC,UAAU,oBAEnBrqC,EAAKsqC,eACT,IAGMtqC,EAAAuqC,aAAc,IAAIhC,IAAejgC,OAAO,oBAAoBorB,QAAQ,QACzE52D,GAAG,SAAS,WACLkjC,EAAKuqC,YAAYxjC,YACjB/G,EAAKqqC,UAAU,QAEnBrqC,EAAKsqC,eACT,IAGJtqC,EAAQwqC,UAAG,IAAI5B,IACVG,QAAQ,CACL/oC,EAAKoqC,wBACLpqC,EAAKuqC,aACL,IAAI/B,IAASC,OAAM,IACnB,IAAIP,IAAS5/B,OAAO,iBAAiBorB,QAAQ,eACxC52D,GAAG,SAAS,WACTkjC,EAAKyqC,WACT,KACJ,IAAIjC,IAASC,OAAM,IACnB,IAAIP,IAAS5/B,OAAO,WAAWorB,QAAQ,WAClC52D,GAAG,SAAS,WACTkjC,EAAK0qC,UACT,KACJ,IAAIxC,IAAS5/B,OAAO,YAAYorB,QAAQ,YACnC52D,GAAG,SAAS,WACTkjC,EAAK2qC,WACT,MAOR3qC,EAAK4qC,UAAY5E,KACZI,YAAY,CAAC,IAAM,KACnBtpE,GAAG,YAAY,SAACopC,GACblG,EAAK6qC,UACT,I,EA8TZ,OA7XmCr5E,EAASw4E,EAAAjqC,GAmExCiqC,EAAa34E,UAAAy5E,cAAb,SAAcp4E,GAGV,IAFA,IAAIq4E,EAAWr4E,EAEiB,MAAzBq4E,EAAS7nE,cAA+C,MAAvB6nE,EAAS9vE,YAC7C8vE,EAAWA,EAAS9vE,WAGxB,IAAMyjD,EAAY,GACZ1hC,EAAS+tD,EAAS7nE,eAClB8nE,EAAQD,EAAS1uB,UACjB9xB,EAAQygD,EAAMzgD,MACdugB,EAASkgC,EAAMlgC,OACftrC,EAAIwrE,EAAMxrE,EACVuD,EAAIioE,EAAMjoE,EACVF,EAAQjR,KAAKymD,oBAAoBphD,OAAO2L,iBAqB9C,OApBAC,EAAMrD,EAAIA,EACVqD,EAAME,EAAIA,EAEV27C,EAAKusB,GAAKpoE,EAAMI,gBAAgB+Z,GAChCna,EAAMrD,GAAK+qB,EACXm0B,EAAKwsB,GAAKroE,EAAMI,gBAAgB+Z,GAChCna,EAAME,GAAK+nC,EACX4T,EAAKysB,GAAKtoE,EAAMI,gBAAgB+Z,GAChCna,EAAMrD,GAAK+qB,EACXm0B,EAAK0sB,GAAKvoE,EAAMI,gBAAgB+Z,GAChCna,EAAME,GAAK+nC,EAAS,EACpB4T,EAAK1mB,EAAIn1B,EAAMI,gBAAgB+Z,GAC/Bna,EAAMrD,GAAK+qB,EACXm0B,EAAKv4C,EAAItD,EAAMI,gBAAgB+Z,GAC/Bna,EAAMrD,GAAK+qB,EAAQ,EACnB1nB,EAAME,GAAK+nC,EAAS,EACpB4T,EAAKtsD,EAAIyQ,EAAMI,gBAAgB+Z,GAC/Bna,EAAME,GAAK+nC,EACX4T,EAAKxsD,EAAI2Q,EAAMI,gBAAgB+Z,GAExB,CACHxd,EAAGk/C,EAAKusB,GAAGzrE,EACXuD,EAAG27C,EAAKusB,GAAGloE,EACXwnB,MAAOm0B,EAAKysB,GAAG3rE,EAAIk/C,EAAKusB,GAAGzrE,EAC3BsrC,OAAQ4T,EAAKysB,GAAGpoE,EAAI27C,EAAKusB,GAAGloE,E,EAIpCinE,EAAA34E,UAAAg6E,UAAA,WACI,OAAOz5E,KAAKq4E,U,EAGhBD,EAAA34E,UAAAi6E,cAAA,WACI,OAAO15E,KAAKs4E,c,EAGhBF,EAAU34E,UAAAk6E,WAAV,SAAWjlD,GACP10B,KAAKg5E,UAAUxE,YAAY9/C,E,EAG/B0jD,EAAA34E,UAAAm6E,OAAA,SAAO/uD,EAAYC,EAAQ0lC,QAAA,IAAAA,MAAwB,KAC/C3lC,EAAYA,GAAa7qB,KAAKs4E,eAC9BxtD,EAAQA,GAAS9qB,KAAKq4E,WACtB7nB,OAA4CngC,IAAvBmgC,EAAmCxwD,KAAK65E,eAAiBrpB,EAE9ExwD,KAAK85E,UAAU9rD,aAAazX,SAASi6C,GAChC7wD,KAAKK,KAAKg5E,UAAUhuD,UAAW+uD,GAAelvD,UAAUA,EAAU,GAAIA,EAAU,IAAIC,MAAMA,G,EAInGstD,EAAA34E,UAAAq5E,SAAA,WACI94E,KAAK85E,UAAU9rD,aACVruB,KAAKK,KAAKg5E,UAAU/C,QAAS,K,EAItCmC,EAAA34E,UAAAs5E,UAAA,WACI/4E,KAAK85E,UAAU9rD,aACVruB,KAAKK,KAAKg5E,UAAU/C,QAAS,EAAI,K,EAI1CmC,EAAA34E,UAAAu6E,aAAA,SAAaltB,EAAM0D,GACf,GAAI1D,EAAKn0B,OAASm0B,EAAK5T,OAAQ,CAC3B,IAAMtrC,EAAIk/C,EAAKl/C,EAAIk/C,EAAKn0B,MAAQ,EAC1BxnB,EAAI27C,EAAK37C,EAAI27C,EAAK5T,OAAS,EAC3BvgB,EAAQ34B,KAAK24B,QACbugB,EAASl5C,KAAKk5C,SAEdpuB,EAAQ9qB,KAAKy5E,YACb5uD,EAAY,CAAC8N,EAAQ,EAAI7N,EAAQld,EAAGsrC,EAAS,EAAIpuB,EAAQ3Z,GAC/DnR,KAAK45E,OAAO/uD,EAAWC,EAAO0lC,E,GAItC4nB,EAAA34E,UAAAw6E,qBAAA,WACI,OAAOj6E,KAAKk6E,eAAe70E,OAAOolD,S,EAGtC2tB,EAAA34E,UAAA06E,eAAA,SAAertB,EAAMstB,EAA4BtvD,QAA5B,IAAAsvD,OAA0B,GAC3C,IAAMzhD,EAAQ34B,KAAK24B,QACbugB,EAASl5C,KAAKk5C,SACpB,GAAI4T,EAAKn0B,OAASm0B,EAAK5T,OAAQ,CAC3B,IAAMtrC,EAAIk/C,EAAKl/C,EAAIk/C,EAAKn0B,MAAQ,EAC1BxnB,EAAI27C,EAAK37C,EAAI27C,EAAK5T,OAAS,EAC3B7sB,EAAKygC,EAAKn0B,MACVrM,EAAKwgC,EAAK5T,OAEZmhC,EAAWvvD,GAAS,GAAKsvD,EAAY/tD,EAAKsM,EAAQ3pB,KAAK0T,IAAI2J,EAAKsM,EAAOrM,EAAK4sB,IAKhF,OAJIl5C,KAAKs6E,yBAA2BD,EAAWr6E,KAAKu6E,mBAChDF,EAAWr6E,KAAKu6E,kBAGb,CAAE1vD,UADS,CAAC8N,EAAQ,EAAI0hD,EAAWzsE,EAAGsrC,EAAS,EAAImhC,EAAWlpE,GACjDkpE,SAAQA,E,CAEhC,MAAO,CAAExvD,UAAW,CAAC8N,EAAQ,EAAGugB,EAAS,GAAImhC,SAAUvvD,E,EAG3DstD,EAAU34E,UAAA+6E,WAAV,SAAW1tB,EAAM0D,EAAqB4pB,EAA4BtvD,QAA5B,IAAAsvD,OAA0B,GACtD,IAAAnqC,EAA0BjwC,KAAKm6E,eAAertB,EAAMstB,EAAWtvD,GAA7DD,EAASolB,EAAAplB,UAAEwvD,EAAQpqC,EAAAoqC,SAC3Br6E,KAAK45E,OAAO/uD,EAAWwvD,EAAU7pB,E,EAGrC4nB,EAAA34E,UAAAg7E,YAAA,SAAY3vD,EAAO0lC,GACf,GAAIxwD,KAAKk6E,eAAgB,CACrB,IAAMptB,EAAO9sD,KAAKi6E,uBAClBj6E,KAAKw6E,WAAW1tB,EAAM0D,OAAoBngC,EAAWvF,E,GAI7DstD,EAAW34E,UAAAi7E,YAAX,SAAYlqB,GACR,GAAIxwD,KAAKk6E,eAAgB,CACrB,IAAMptB,EAAO9sD,KAAKi6E,uBAClBj6E,KAAKw6E,WAAW1tB,EAAM0D,GAAoB,E,GAIlD4nB,EAAS34E,UAAAo5E,UAAT,SAAUroB,GACN,GAAIxwD,KAAKk6E,eAAgB,CACrB,IAAMptB,EAAO9sD,KAAKi6E,uBAClBj6E,KAAKw6E,WAAW1tB,EAAM0D,E,GAI9B4nB,EAAA34E,UAAAw5E,SAAA,WACQrlC,SAAWA,QAAQ5oB,WAAkC,SAArBhrB,KAAKy4E,aACrCz4E,KAAK26E,OAAO/mC,QAAQ5oB,U,EAI5BotD,EAAM34E,UAAAk7E,OAAN,SAAO3vD,GACHhrB,KAAKq4E,WAAartD,EAAUxH,EAC5BxjB,KAAKs4E,eAAiB,CAACttD,EAAUpd,EAAGod,EAAU7Z,GAC9CnR,KAAK46E,OAAOhrE,KAAK,YAAaob,E,EAGlCotD,EAAA34E,UAAAi5E,cAAA,WACI14E,KAAKw4E,wBAAwBrjC,SAA8B,qBAArBn1C,KAAKy4E,aAAoCvyB,SAC/ElmD,KAAK24E,YAAYxjC,SAA8B,SAArBn1C,KAAKy4E,aAAwBvyB,Q,EAG3DkyB,EAAA34E,UAAAo7E,0BAAA,WACI,IAAMr7E,EAAIs7E,GAAQ96E,KAAK+6E,sBAAsB11E,QAC7CrF,KAAKg7E,kBAAoBh7E,KAAKy0C,UAAUhmC,OAAO,QAC1CmB,KAAK,QAAS,oBACdA,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,IAAKpQ,EAAE,IACZoQ,KAAK,IAAKpQ,EAAE,IACZoQ,KAAK,QAAS,GACdA,KAAK,SAAU,GAEpB5P,KAAKi7E,uB,EAGT7C,EAAA34E,UAAAy7E,0BAAA,WACI,GAAIl7E,KAAKg7E,kBAAmB,CACxB,IAAMx7E,EAAIs7E,GAAQ96E,KAAK+6E,sBAAsB11E,QACvCnG,EAAI,CACN0O,EAAGgU,SAAS5hB,KAAKg7E,kBAAkBprE,KAAK,KAAM,IAC9CuB,EAAGyQ,SAAS5hB,KAAKg7E,kBAAkBprE,KAAK,KAAM,IAC9C+oB,MAAO/W,SAAS5hB,KAAKg7E,kBAAkBprE,KAAK,SAAU,IACtDspC,OAAQt3B,SAAS5hB,KAAKg7E,kBAAkBprE,KAAK,UAAW,KAEtD2gD,EAAO,CACT3iD,EAAGpO,EAAE,GAAKN,EAAE0O,EACZuD,EAAG3R,EAAE,GAAKN,EAAEiS,GAGZo/C,EAAK3iD,EAAI,GAAe,EAAT2iD,EAAK3iD,EAAQ1O,EAAEy5B,OAC9Bz5B,EAAE0O,EAAIpO,EAAE,GACRN,EAAEy5B,OAAS43B,EAAK3iD,GAEhB1O,EAAEy5B,MAAQ43B,EAAK3iD,EAGf2iD,EAAKp/C,EAAI,GAAe,EAATo/C,EAAKp/C,EAAQjS,EAAEg6C,QAC9Bh6C,EAAEiS,EAAI3R,EAAE,GACRN,EAAEg6C,QAAUqX,EAAKp/C,GAEjBjS,EAAEg6C,OAASqX,EAAKp/C,EAGpBnR,KAAKg7E,kBACAprE,KAAK,IAAK1Q,EAAE0O,GACZgC,KAAK,IAAK1Q,EAAEiS,GACZvB,KAAK,QAAS1Q,EAAEy5B,OAChB/oB,KAAK,SAAU1Q,EAAEg6C,QAGtBl5C,KAAKm7E,uBAAuB,CACxBvtE,GAAI1O,EAAE0O,EAAI5N,KAAKs4E,eAAe,IAAMt4E,KAAKq4E,WACzClnE,GAAIjS,EAAEiS,EAAInR,KAAKs4E,eAAe,IAAMt4E,KAAKq4E,WACzC1/C,MAAOz5B,EAAEy5B,MAAQ34B,KAAKq4E,WACtBn/B,OAAQh6C,EAAEg6C,OAASl5C,KAAKq4E,Y,GAKpCD,EAAA34E,UAAA27E,wBAAA,WACQp7E,KAAKg7E,oBACLh7E,KAAKg7E,kBAAkBzyE,gBAChBvI,KAAKg7E,kBACRh7E,KAAKu4E,qBACLv4E,KAAKu4E,oBAAqB,EAC1Bv4E,KAAKy4E,UAAU,QACfz4E,KAAK04E,iBAET14E,KAAKq7E,sB,EAIbjD,EAAA34E,UAAAyF,MAAA,SAAMswC,EAASmR,GAAf,IAiDCvY,EAAApuC,KAhDGmuC,EAAA1uC,UAAMyF,MAAKvF,KAAAK,KAACw1C,EAASmR,GACrBA,EAAS9/C,MAAM,cAAe,QAE9B7G,KAAK+6E,sBAAwBp0B,EAASl4C,OAAO,QACxCmB,KAAK,QAAS,kBACdA,KAAK,QAAS5P,KAAK24B,SACnB/oB,KAAK,SAAU5P,KAAKk5C,UACpBryC,MAAM,OAAQ,eACdA,MAAM,SAAU,aAChBqE,GAAG,aAAa,WACbkjC,EAAKysC,2BACT,IACC3vE,GAAG,aAAa,WACbkjC,EAAK8sC,2BACT,IACChwE,GAAG,oBAAoB,WACpBkjC,EAAKgtC,yBACT,IAGJp7E,KAAK85E,UAAYnzB,EAASl4C,OAAO,KAEjCzO,KAAKs7E,UAAYt7E,KAAK85E,UAAUrrE,OAAO,QAClCmB,KAAK,QAAS,kBACdA,KAAK,QAAS5P,KAAK24B,SACnB/oB,KAAK,SAAU5P,KAAKk5C,UACpBhuC,GAAG,aAAa,WACT0oC,QAAQ4hC,UAAiC,SAArBpnC,EAAKqqC,cACzB7kC,QAAQF,kBACRtF,EAAKqqC,UAAU,oBACfrqC,EAAKmqC,oBAAqB,EAC1BnqC,EAAKysC,4BAEb,IAEJ76E,KAAK46E,OAAS56E,KAAK85E,UAAUrrE,OAAO,KACpCzO,KAAKk6E,eAAiBl6E,KAAK46E,OAAOnsE,OAAO,KAErCzO,KAAKu7E,gBAAkBv7E,KAAKw7E,aACxBx7E,KAAKw7E,WACLx7E,KAAK85E,UAAUn6E,KAAKK,KAAKg5E,WAEzBh5E,KAAK85E,UAAU5uE,GAAG,QAAS,MAE/BlL,KAAKu7E,cAAgBv7E,KAAKw7E,YAG9Bx7E,KAAK44E,SAAS93E,OAAOd,KAAK85E,UAAUz0E,O,EAGxC+yE,EAAA34E,UAAA2E,OAAA,SAAOoxC,EAASf,GAAhB,IAoBCrG,EAAApuC,KAnBGmuC,EAAA1uC,UAAM2E,OAAMzE,KAAAK,KAACw1C,EAASf,GAEtBz0C,KAAKs7E,UACA1rE,KAAK,QAAS5P,KAAK24B,SACnB/oB,KAAK,SAAU5P,KAAKk5C,UAGzBl5C,KAAK+6E,sBACAnrE,KAAK,QAAS5P,KAAK24B,SACnB/oB,KAAK,SAAU5P,KAAKk5C,UAGzBl5C,KAAK44E,SACA9vB,QAAQ9oD,KAAKw7E,YAAcx7E,KAAKy7E,eAChCv1B,QAAO,SAAC9f,GACL,IAAM0mB,EAAO1mB,EAAEqkB,UACfrkB,EAAEqmB,WAAW,CAAE7+C,EAAGwgC,EAAKzV,QAAUm0B,EAAKn0B,MAAQ,EAAGxnB,GAAI,GACzD,G,EAIRinE,EAAA34E,UAAA0F,KAAA,SAAKqwC,EAASf,GACVz0C,KAAK44E,SAAS93E,OAAO,MACrBqtC,EAAA1uC,UAAM0F,KAAIxF,KAAAK,KAACw1C,EAASf,E,EAIxB2jC,EAAA34E,UAAAw7E,sBAAA,W,EAGA7C,EAAsB34E,UAAA07E,uBAAtB,SAAuB3pE,G,EAGvB4mE,EAAA34E,UAAA47E,oBAAA,W,EAEHjD,CAAD,CA7XA,CAAmCloB,IA8XnCkoB,GAAc34E,UAAU0rC,QAAU,wBAelCitC,GAAc34E,UAAUyxC,QAAQ,eAAe,EAAM,UAAW,gBAChEknC,GAAc34E,UAAUyxC,QAAQ,YAAY,EAAM,UAAW,0BAC7DknC,GAAc34E,UAAUyxC,QAAQ,eAAgB,IAAK,SAAU,uBAC/DknC,GAAc34E,UAAUyxC,QAAQ,sBAAkB7gB,EAAW,SAAU,yBAAqBA,EAAW,CAAEid,UAAU,IACnH8qC,GAAc34E,UAAUyxC,QAAQ,YAAa,OAAQ,MAAO,uCAAwC,CAAC,OAAQ,qBAE7G,IAAMwqC,GAAiBtD,GAAc34E,UAAUg5E,UAC/CL,GAAc34E,UAAUg5E,UAAY,SAAU/nE,EAAI8/C,GAC9C,IAAMzgB,EAAS2rC,GAAe/6E,MAAMX,KAAMS,WAS1C,OARIA,UAAUC,SAENk1C,GADM,SAANllC,EACU1Q,KAAK85E,UAAUz0E,OAEfrF,KAAK+6E,sBAAsB11E,QAEzCrF,KAAK04E,iBAEF3oC,CACX,ECtaA,IAAA4rC,GAAA,SAAAxtC,GAKI,SAAAwtC,IACI,OAAAxtC,EAAKxuC,KAAAK,OAAGA,I,CAEhB,OARiCJ,EAAM+7E,EAAAxtC,GAGnCvtC,EAAA,CADCswC,GAAQ,GAAI,cAAe,gB,2BACKyqC,EAAAl8E,UAAA,kBAKpCk8E,C,CARD,CAAiCj2B,ICHlB,SAAAh/B,GAAS9Y,GACtB,OAAO,WACL,OAAOA,CACX,CACA,CCJe,SAAAguE,GAAS96E,EAAQyK,EAAM2B,GACpClN,KAAKc,OAASA,EACdd,KAAKuL,KAAOA,EACZvL,KAAKkN,UAAYA,CACnB,CCFO,SAASw/D,KACdtiE,QAAMuiE,0BACR,CAEe,SAAAK,KACb5iE,QAAMyiE,iBACNziE,QAAMuiE,0BACR,CHGAgP,GAAYl8E,UAAU0rC,QAAU,sBIHhC,IAAI0wC,GAAY,CAACl5E,KAAM,QACnBm5E,GAAa,CAACn5E,KAAM,SACpBo5E,GAAc,CAACp5E,KAAM,UACrBq5E,GAAc,CAACr5E,KAAM,UAEzB,SAASs5E,GAAQ1nE,GACf,MAAO,EAAEA,EAAE,IAAKA,EAAE,GACpB,CAEA,SAAS2nE,GAAQ3nE,GACf,MAAO,CAAC0nE,GAAQ1nE,EAAE,IAAK0nE,GAAQ1nE,EAAE,IACnC,CAQA,IAAI2oB,GAAI,CACNv6B,KAAM,IACNivE,QAAS,CAAC,IAAK,KAAKvjE,IAAI9C,IACxB8uD,MAAO,SAASzsD,EAAG2G,GAAK,OAAY,MAAL3G,EAAY,KAAO,CAAC,EAAEA,EAAE,GAAI2G,EAAE,GAAG,IAAK,EAAE3G,EAAE,GAAI2G,EAAE,GAAG,IAAK,EACvF6lD,OAAQ,SAAS+hB,GAAM,OAAOA,GAAM,CAACA,EAAG,GAAG,GAAIA,EAAG,GAAG,GAAI,GAGvD31C,GAAI,CACN7jC,KAAM,IACNivE,QAAS,CAAC,IAAK,KAAKvjE,IAAI9C,IACxB8uD,MAAO,SAASlpD,EAAGoD,GAAK,OAAY,MAALpD,EAAY,KAAO,CAAC,CAACoD,EAAE,GAAG,IAAKpD,EAAE,IAAK,CAACoD,EAAE,GAAG,IAAKpD,EAAE,IAAK,EACvFipD,OAAQ,SAAS+hB,GAAM,OAAOA,GAAM,CAACA,EAAG,GAAG,GAAIA,EAAG,GAAG,GAAI,GAGvDC,GAAK,CACPz5E,KAAM,KACNivE,QAAS,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAMvjE,IAAI9C,IAC1D8uD,MAAO,SAAS8hB,GAAM,OAAa,MAANA,EAAa,KAAOD,GAAQC,EAAI,EAC7D/hB,OAAQ,SAAS+hB,GAAM,OAAOA,CAAG,GAG/BE,GAAU,CACZ3vB,QAAS,YACTx/C,UAAW,OACX1M,EAAG,YACH+T,EAAG,YACHjU,EAAG,YACH8lC,EAAG,YACHizC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAGF8C,GAAQ,CACV/nE,EAAG,IACH6xB,EAAG,IACHizC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGF+C,GAAQ,CACV/7E,EAAG,IACHF,EAAG,IACH+4E,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGFgD,GAAS,CACX9vB,QAAS,EACTx/C,UAAW,EACX1M,EAAG,KACH+T,EAAG,EACHjU,EAAG,KACH8lC,GAAI,EACJizC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,IAAK,GAGHiD,GAAS,CACX/vB,QAAS,EACTx/C,UAAW,EACX1M,GAAI,EACJ+T,EAAG,KACHjU,EAAG,EACH8lC,EAAG,KACHizC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,GAAI,GAGN,SAASjuE,GAAKlL,GACZ,MAAO,CAACkL,KAAMlL,EAChB,CAGA,SAASmtE,KACP,OAAQpjE,QAAMmqC,UAAYnqC,QAAMqjE,MAClC,CAEA,SAAS8F,KACP,IAAIjxE,EAAMtC,KAAK+Q,iBAAmB/Q,KAClC,OAAIsC,EAAIkxE,aAAa,WAEZ,CAAC,EADRlxE,EAAMA,EAAImxE,QAAQvoD,SACLtd,EAAGtL,EAAI6O,GAAI,CAAC7O,EAAIsL,EAAItL,EAAIq2B,MAAOr2B,EAAI6O,EAAI7O,EAAI42C,SAEnD,CAAC,CAAC,EAAG,GAAI,CAAC52C,EAAIq2B,MAAMzN,QAAQ9kB,MAAO9D,EAAI42C,OAAOhuB,QAAQ9kB,OAC/D,CAEA,SAASwnE,KACP,OAAOt2B,UAAUu2B,gBAAmB,iBAAkB7tE,IACxD,CAGA,SAAS+C,GAAMsC,GACb,MAAQA,EAAKq3E,cAAer3E,EAAOA,EAAKgE,YAAa,OACrD,OAAOhE,EAAKq3E,OACd,CAwBA,SAASC,GAAMC,GACb,IAMI1O,EANA95C,EAASm/C,GACT/lE,EAASggE,GACTY,EAAYR,GACZh3C,GAAO,EACP+2B,EAAYp9C,GAAS,QAAS,QAAS,OACvCssE,EAAa,EAGjB,SAASF,EAAM13E,GACb,IAAIynD,EAAUznD,EACT6K,SAAS,UAAWgtE,GACtBvvE,UAAU,YACVnI,KAAK,CAACmG,GAAK,aAEdmhD,EAAQxnD,QAAQuJ,OAAO,QAClBmB,KAAK,QAAS,WACdA,KAAK,iBAAkB,OACvBA,KAAK,SAAUysE,GAAQ3vB,SACzBh+C,MAAMg+C,GACJ/+C,MAAK,WACJ,IAAIymB,EAASrxB,GAAM/C,MAAMo0B,OACzBjnB,GAAOnN,MACF4P,KAAK,IAAKwkB,EAAO,GAAG,IACpBxkB,KAAK,IAAKwkB,EAAO,GAAG,IACpBxkB,KAAK,QAASwkB,EAAO,GAAG,GAAKA,EAAO,GAAG,IACvCxkB,KAAK,SAAUwkB,EAAO,GAAG,GAAKA,EAAO,GAAG,GACvD,IAEInvB,EAAMsI,UAAU,cACbnI,KAAK,CAACmG,GAAK,eACXrG,QAAQuJ,OAAO,QACbmB,KAAK,QAAS,aACdA,KAAK,SAAUysE,GAAQnvE,WACvB0C,KAAK,OAAQ,QACbA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfA,KAAK,kBAAmB,cAE7B,IAAImtE,EAAS93E,EAAMsI,UAAU,WAC1BnI,KAAKw3E,EAAIhL,SAAS,SAAS1yE,GAAK,OAAOA,EAAEqM,IAAK,IAEjDwxE,EAAO53E,OAAOoD,SAEdw0E,EAAO73E,QAAQuJ,OAAO,QACjBmB,KAAK,SAAS,SAAS1Q,GAAK,MAAO,kBAAoBA,EAAEqM,IAAK,IAC9DqE,KAAK,UAAU,SAAS1Q,GAAK,OAAOm9E,GAAQn9E,EAAEqM,KAAM,IAEzDtG,EACK0I,KAAKqvE,GACLptE,KAAK,OAAQ,QACbA,KAAK,iBAAkB,OACvB1E,GAAG,kBAAmBuqE,GACxBjoE,OAAO4gE,GACLljE,GAAG,mBAAoBuqE,GACvBvqE,GAAG,kBAAmBwjE,GACtBxjE,GAAG,mCAAoCyjE,GACvC9nE,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,gBAC9C,CA4CE,SAASm2E,IACP,IAAI/3E,EAAQkI,GAAOnN,MACfkN,EAAYnK,GAAM/C,MAAMkN,UAExBA,GACFjI,EAAMsI,UAAU,cACX1G,MAAM,UAAW,MACjB+I,KAAK,IAAK1C,EAAU,GAAG,IACvB0C,KAAK,IAAK1C,EAAU,GAAG,IACvB0C,KAAK,QAAS1C,EAAU,GAAG,GAAKA,EAAU,GAAG,IAC7C0C,KAAK,SAAU1C,EAAU,GAAG,GAAKA,EAAU,GAAG,IAEnDjI,EAAMsI,UAAU,WACX1G,MAAM,UAAW,MACjB+I,KAAK,KAAK,SAAS1Q,GAAK,MAAqC,MAA9BA,EAAEqM,KAAKrM,EAAEqM,KAAK7K,OAAS,GAAawM,EAAU,GAAG,GAAK2vE,EAAa,EAAI3vE,EAAU,GAAG,GAAK2vE,EAAa,CAAE,IACvIjtE,KAAK,KAAK,SAAS1Q,GAAK,MAAqB,MAAdA,EAAEqM,KAAK,GAAa2B,EAAU,GAAG,GAAK2vE,EAAa,EAAI3vE,EAAU,GAAG,GAAK2vE,EAAa,CAAE,IACvHjtE,KAAK,SAAS,SAAS1Q,GAAK,MAAkB,MAAXA,EAAEqM,MAA2B,MAAXrM,EAAEqM,KAAe2B,EAAU,GAAG,GAAKA,EAAU,GAAG,GAAK2vE,EAAaA,CAAW,IAClIjtE,KAAK,UAAU,SAAS1Q,GAAK,MAAkB,MAAXA,EAAEqM,MAA2B,MAAXrM,EAAEqM,KAAe2B,EAAU,GAAG,GAAKA,EAAU,GAAG,GAAK2vE,EAAaA,CAAW,KAIxI53E,EAAMsI,UAAU,sBACX1G,MAAM,UAAW,QACjB+I,KAAK,IAAK,MACVA,KAAK,IAAK,MACVA,KAAK,QAAS,MACdA,KAAK,SAAU,KAE1B,CAEE,SAASqtE,EAAQnxE,EAAMC,EAAMgpE,GAC3B,IAAIsB,EAAOvqE,EAAK4wE,QAAQO,QACxB,OAAO5G,GAAUtB,GAAUsB,EAAKtB,MAAgB,IAAImI,EAAQpxE,EAAMC,EAAMgpE,GAA/BsB,CAC7C,CAEE,SAAS6G,EAAQpxE,EAAMC,EAAMgpE,GAC3B/0E,KAAK8L,KAAOA,EACZ9L,KAAK+L,KAAOA,EACZ/L,KAAKoW,MAAQtK,EAAK4wE,QAClB18E,KAAK2W,OAAS,EACd3W,KAAK+0E,MAAQA,CACjB,CAyBE,SAASU,IACP,KAAIvH,GAAgB9jE,QAAM6H,UACrBzE,EAAO7M,MAAMX,KAAMS,WAAxB,CAEA,IAQsBwrB,EAAIG,EACJ+wD,EAAIC,EACJC,EAAIC,EACJC,EAAIC,EAGtBC,EAEAC,EACAC,EApUSzrE,EAmTTpG,EAAO9L,KACPuL,EAAOnB,QAAMtJ,OAAO4D,SAAS6G,KAC7BqyE,EAA6D,eAArDhnD,GAAQxsB,QAAMyzE,QAAUtyE,EAAO,UAAYA,GAAwBswE,GAAajlD,GAAQxsB,QAAM0zE,OAAS9B,GAAcD,GAC7HgC,EAAQnB,IAAQp2C,GAAI,KAAOg2C,GAAOjxE,GAClCyyE,EAAQpB,IAAQ1/C,GAAI,KAAOu/C,GAAOlxE,GAClC6K,EAAQrT,GAAM+I,GACdsoB,EAAShe,EAAMge,OACflnB,EAAYkJ,EAAMlJ,UAClBo5B,EAAIlS,EAAO,GAAG,GACd4F,EAAI5F,EAAO,GAAG,GACd9O,EAAI8O,EAAO,GAAG,GACdtI,EAAIsI,EAAO,GAAG,GACd/H,EAAK,EACLC,EAAK,EAEL2xD,EAAWF,GAASC,GAASpnD,GAAQxsB,QAAMorE,SAG3C0I,EAAU9zE,QAAM6H,SArUPC,EAqUyB9H,QAAM2H,eAAe,GAAGG,WApUzD,SAASpR,GACd,OAAOkR,GAAMlR,EAAQsJ,QAAM6H,QAASC,EACxC,GAkUgFJ,GACxEqsE,EAASD,EAAQpyE,GACjBmF,EAAQktE,EACR9H,EAAO4G,EAAQnxE,EAAMrL,WAAW,GAAMouE,cAE7B,YAATtjE,GACE2B,IAAWuwE,GAAS,GACxBrnE,EAAMlJ,UAAYA,EAAY,CAC5B,CAAC+e,EAAK2wD,IAAQp2C,GAAIF,EAAI63C,EAAO,GAAIhB,EAAKP,IAAQ1/C,GAAIlD,EAAImkD,EAAO,IAC7D,CAACd,EAAKT,IAAQp2C,GAAIlhB,EAAI2G,EAAIsxD,EAAKX,IAAQ1/C,GAAIpR,EAAIqxD,MAGjDlxD,EAAK/e,EAAU,GAAG,GAClBiwE,EAAKjwE,EAAU,GAAG,GAClBmwE,EAAKnwE,EAAU,GAAG,GAClBqwE,EAAKrwE,EAAU,GAAG,IAGpBkf,EAAKH,EACLmxD,EAAKD,EACLG,EAAKD,EACLG,EAAKD,EAEL,IAAIt4E,EAAQkI,GAAOrB,GACd8D,KAAK,iBAAkB,QAExB88C,EAAUznD,EAAMsI,UAAU,YACzBqC,KAAK,SAAUysE,GAAQ9wE,IAE5B,GAAInB,QAAM6H,QACRokE,EAAKjB,MAAQA,EACbiB,EAAK+H,MAAQA,MACR,CACL,IAAIrR,EAAO5/D,GAAO/C,QAAM2iE,MACnB7hE,GAAG,kBAAmBkqE,GAAO,GAC7BlqE,GAAG,gBAAiBkzE,GAAO,GAC5BxnD,GAAMm2C,EACL7hE,GAAG,iBA+FV,WACE,OAAQd,QAAMi0E,SACZ,KAAK,GACHJ,EAAWF,GAASC,EACpB,MAEF,KAAK,GACCJ,IAAS7B,KACPgC,IAAOV,EAAKC,EAAKjxD,EAAK0xD,EAAO9xD,EAAKG,EAAKC,EAAK0xD,GAC5CC,IAAOT,EAAKC,EAAKlxD,EAAK0xD,EAAOb,EAAKC,EAAK9wD,EAAK0xD,GAChDJ,EAAO5B,GACPzrB,KAEF,MAEF,KAAK,GACCqtB,IAAS7B,IAAe6B,IAAS5B,KAC/B+B,EAAQ,EAAGV,EAAKC,EAAKjxD,EAAa0xD,EAAQ,IAAG9xD,EAAKG,EAAKC,GACvD2xD,EAAQ,EAAGT,EAAKC,EAAKlxD,EAAa0xD,EAAQ,IAAGb,EAAKC,EAAK9wD,GAC3DsxD,EAAO9B,GACPpvB,EAAQ98C,KAAK,SAAUysE,GAAQnvE,WAC/BqjD,KAEF,MAEF,QAAS,OAEXyc,IACN,IA3H0C,GAC/B9hE,GAAG,eA4HV,WACE,OAAQd,QAAMi0E,SACZ,KAAK,GACCJ,IACFP,EAAQC,EAAQM,GAAW,EAC3B1tB,KAEF,MAEF,KAAK,GACCqtB,IAAS5B,KACP+B,EAAQ,EAAGV,EAAKC,EAAaS,EAAQ,IAAG9xD,EAAKG,GAC7C4xD,EAAQ,EAAGT,EAAKC,EAAaQ,EAAQ,IAAGb,EAAKC,GACjDQ,EAAO7B,GACPxrB,KAEF,MAEF,KAAK,GACCqtB,IAAS9B,KACP1xE,QAAM0zE,QACJC,IAAOV,EAAKC,EAAKjxD,EAAK0xD,EAAO9xD,EAAKG,EAAKC,EAAK0xD,GAC5CC,IAAOT,EAAKC,EAAKlxD,EAAK0xD,EAAOb,EAAKC,EAAK9wD,EAAK0xD,GAChDJ,EAAO5B,KAEH+B,EAAQ,EAAGV,EAAKC,EAAaS,EAAQ,IAAG9xD,EAAKG,GAC7C4xD,EAAQ,EAAGT,EAAKC,EAAaQ,EAAQ,IAAGb,EAAKC,GACjDQ,EAAO7B,IAETrvB,EAAQ98C,KAAK,SAAUysE,GAAQ9wE,IAC/BglD,KAEF,MAEF,QAAS,OAEXyc,IACN,IAjKuC,GAEjCF,GAAY1iE,QAAM2iE,KACxB,CAEIL,KACAh2D,GAAU5K,GACVkxE,EAAOr9E,KAAKmM,GACZuqE,EAAKhgE,OAlE+B,CAoEpC,SAAS++D,IACP,IAAIkJ,EAASJ,EAAQpyE,IACjBmyE,GAAaP,GAAUC,IACrB3uE,KAAKwmB,IAAI8oD,EAAO,GAAKrtE,EAAM,IAAMjC,KAAKwmB,IAAI8oD,EAAO,GAAKrtE,EAAM,IAAK0sE,GAAQ,EACxED,GAAQ,GAEfzsE,EAAQqtE,EACRb,GAAS,EACTzQ,KACAzc,GACN,CAEI,SAASA,IACP,IAAIlwD,EAKJ,OAHAgsB,EAAKpb,EAAM,GAAKktE,EAAO,GACvB7xD,EAAKrb,EAAM,GAAKktE,EAAO,GAEfP,GACN,KAAK9B,GACL,KAAKD,GACCkC,IAAO1xD,EAAKrd,KAAK0T,IAAI4jB,EAAIra,EAAIjd,KAAKC,IAAIqW,EAAI+3D,EAAIhxD,IAAMD,EAAKH,EAAKI,EAAIixD,EAAKD,EAAKhxD,GAC5E2xD,IAAO1xD,EAAKtd,KAAK0T,IAAIsX,EAAImjD,EAAInuE,KAAKC,IAAI6c,EAAIyxD,EAAIjxD,IAAM8wD,EAAKD,EAAK7wD,EAAIkxD,EAAKD,EAAKjxD,GAChF,MAEF,KAAKyvD,GACCgC,EAAQ,GAAG1xD,EAAKrd,KAAK0T,IAAI4jB,EAAIra,EAAIjd,KAAKC,IAAIqW,EAAI2G,EAAII,IAAMD,EAAKH,EAAKI,EAAIixD,EAAKD,GACtEU,EAAQ,IAAG1xD,EAAKrd,KAAK0T,IAAI4jB,EAAI+2C,EAAIruE,KAAKC,IAAIqW,EAAI+3D,EAAIhxD,IAAMD,EAAKH,EAAIqxD,EAAKD,EAAKhxD,GAChF2xD,EAAQ,GAAG1xD,EAAKtd,KAAK0T,IAAIsX,EAAImjD,EAAInuE,KAAKC,IAAI6c,EAAIqxD,EAAI7wD,IAAM8wD,EAAKD,EAAK7wD,EAAIkxD,EAAKD,GACtES,EAAQ,IAAG1xD,EAAKtd,KAAK0T,IAAIsX,EAAIujD,EAAIvuE,KAAKC,IAAI6c,EAAIyxD,EAAIjxD,IAAM8wD,EAAKD,EAAIK,EAAKD,EAAKjxD,GACpF,MAEF,KAAK0vD,GACC+B,IAAO3xD,EAAKpd,KAAK0T,IAAI4jB,EAAGt3B,KAAKC,IAAIqW,EAAG2G,EAAKI,EAAK0xD,IAAST,EAAKtuE,KAAK0T,IAAI4jB,EAAGt3B,KAAKC,IAAIqW,EAAG+3D,EAAKhxD,EAAK0xD,KAC9FC,IAAOZ,EAAKpuE,KAAK0T,IAAIsX,EAAGhrB,KAAKC,IAAI6c,EAAGqxD,EAAK7wD,EAAK0xD,IAASR,EAAKxuE,KAAK0T,IAAIsX,EAAGhrB,KAAKC,IAAI6c,EAAGyxD,EAAKjxD,EAAK0xD,KAKlGV,EAAKlxD,IACP2xD,IAAU,EACV19E,EAAI4rB,EAAIA,EAAKoxD,EAAIA,EAAKh9E,EACtBA,EAAI+rB,EAAIA,EAAKkxD,EAAIA,EAAKj9E,EAClBkL,KAAQ+wE,IAAO5vB,EAAQ98C,KAAK,SAAUysE,GAAQ9wE,EAAO+wE,GAAM/wE,MAG7DiyE,EAAKJ,IACPY,IAAU,EACV39E,EAAI88E,EAAIA,EAAKI,EAAIA,EAAKl9E,EACtBA,EAAI+8E,EAAIA,EAAKI,EAAIA,EAAKn9E,EAClBkL,KAAQgxE,IAAO7vB,EAAQ98C,KAAK,SAAUysE,GAAQ9wE,EAAOgxE,GAAMhxE,MAG7D6K,EAAMlJ,YAAWA,EAAYkJ,EAAMlJ,WACnCwwE,IAAOtxD,EAAKlf,EAAU,GAAG,GAAIowE,EAAKpwE,EAAU,GAAG,IAC/CywE,IAAOP,EAAKlwE,EAAU,GAAG,GAAIswE,EAAKtwE,EAAU,GAAG,IAE/CA,EAAU,GAAG,KAAOkf,GACjBlf,EAAU,GAAG,KAAOkwE,GACpBlwE,EAAU,GAAG,KAAOowE,GACpBpwE,EAAU,GAAG,KAAOswE,IACzBpnE,EAAMlJ,UAAY,CAAC,CAACkf,EAAIgxD,GAAK,CAACE,EAAIE,IAClCR,EAAOr9E,KAAKmM,GACZuqE,EAAKsG,QAEb,CAEI,SAASyB,IAEP,GADA1R,KACItiE,QAAM6H,QAAS,CACjB,GAAI7H,QAAM6H,QAAQvR,OAAQ,OACtBwtE,GAAal5D,aAAak5D,GAC9BA,EAAcr6D,YAAW,WAAaq6D,EAAc,IAAK,GAAI,IACrE,MACQoH,GAAWlrE,QAAM2iE,KAAM0Q,GACvB1Q,EAAK7hE,GAAG,0DAA2D,MAErEjG,EAAM2K,KAAK,iBAAkB,OAC7B88C,EAAQ98C,KAAK,SAAUysE,GAAQ3vB,SAC3Bt2C,EAAMlJ,YAAWA,EAAYkJ,EAAMlJ,WApV7C,SAAeknB,GACb,OAAOA,EAAO,GAAG,KAAOA,EAAO,GAAG,IAC3BA,EAAO,GAAG,KAAOA,EAAO,GAAG,EACpC,CAkVUtwB,CAAMoJ,KAAYkJ,EAAMlJ,UAAY,KAAM8vE,EAAOr9E,KAAKmM,IAC1DuqE,EAAKnvD,KACX,CAsEA,CAEE,SAASwnD,IACPuO,EAAQj9E,KAAMS,WAAW20E,OAC7B,CAEE,SAASzG,IACPsO,EAAQj9E,KAAMS,WAAW29E,OAC7B,CAEE,SAAStB,IACP,IAAI1mE,EAAQpW,KAAK08E,SAAW,CAACxvE,UAAW,MAGxC,OAFAkJ,EAAMge,OAAS8nD,GAAQ9nD,EAAOzzB,MAAMX,KAAMS,YAC1C2V,EAAMwmE,IAAMA,EACLxmE,CACX,CA2BE,OApXAumE,EAAMpsB,KAAO,SAAStrD,EAAOiI,GACvBjI,EAAMiI,UACRjI,EACKiG,GAAG,eAAe,WAAa+xE,EAAQj9E,KAAMS,WAAWouE,cAAcx4D,OAAQ,IAC9EnL,GAAG,6BAA6B,WAAa+xE,EAAQj9E,KAAMS,WAAWymB,KAAM,IAC5E/Q,MAAM,SAAS,WACd,IAAIrK,EAAO9L,KACPoW,EAAQtK,EAAK4wE,QACbrG,EAAO4G,EAAQnxE,EAAMrL,WACrB89E,EAAanoE,EAAMlJ,UACnBsxE,EAAa5B,EAAIviB,MAA2B,mBAAdntD,EAA2BA,EAAUvM,MAAMX,KAAMS,WAAayM,EAAWkJ,EAAMge,QAC7G7zB,EAAI2tB,GAAYqwD,EAAYC,GAEhC,SAASroE,EAAM9V,GACb+V,EAAMlJ,UAAkB,IAAN7M,GAA0B,OAAfm+E,EAAsB,KAAOj+E,EAAEF,GAC5D28E,EAAOr9E,KAAKmM,GACZuqE,EAAKsG,OACnB,CAEY,OAAsB,OAAf4B,GAAsC,OAAfC,EAAsBroE,EAAQA,EAAM,EAC9E,IAEMlR,EACK0I,MAAK,WACJ,IAAI7B,EAAO9L,KACP+L,EAAOtL,UACP2V,EAAQtK,EAAK4wE,QACb8B,EAAa5B,EAAIviB,MAA2B,mBAAdntD,EAA2BA,EAAUvM,MAAMmL,EAAMC,GAAQmB,EAAWkJ,EAAMge,QACxGiiD,EAAO4G,EAAQnxE,EAAMC,GAAM8iE,cAE/Bn4D,GAAU5K,GACVsK,EAAMlJ,UAA2B,OAAfsxE,EAAsB,KAAOA,EAC/CxB,EAAOr9E,KAAKmM,GACZuqE,EAAKhgE,QAAQsmE,QAAQz1D,KACjC,GAEA,EAEEy1D,EAAMhlD,MAAQ,SAAS1yB,GACrB03E,EAAMpsB,KAAKtrD,EAAO,KACtB,EA6CEi4E,EAAQz9E,UAAY,CAClBovE,YAAa,WAEX,OADsB,KAAhB7uE,KAAK2W,SAAc3W,KAAKoW,MAAM6mE,QAAUj9E,KAAMA,KAAKy+E,UAAW,GAC7Dz+E,IACb,EACIqW,MAAO,WAGL,OAFIrW,KAAKy+E,UAAUz+E,KAAKy+E,UAAW,EAAOz+E,KAAKq2E,KAAK,UAC/Cr2E,KAAKq2E,KAAK,SACRr2E,IACb,EACI28E,MAAO,WAEL,OADA38E,KAAKq2E,KAAK,SACHr2E,IACb,EACIknB,IAAK,WAEH,OADsB,KAAhBlnB,KAAK2W,gBAAqB3W,KAAKoW,MAAM6mE,QAASj9E,KAAKq2E,KAAK,QACvDr2E,IACb,EACIq2E,KAAM,SAAS9qE,GACbM,GAAY,IAAI+vE,GAAWe,EAAOpxE,EAAMqxE,EAAIxiB,OAAOp6D,KAAKoW,MAAMlJ,YAAaygD,EAAUhtD,MAAOgtD,EAAW,CAACpiD,EAAMvL,KAAK8L,KAAM9L,KAAK+L,MACpI,GAkPE4wE,EAAMvoD,OAAS,SAAS1jB,GACtB,OAAOjQ,UAAUC,QAAU0zB,EAAsB,mBAAN1jB,EAAmBA,EAAIgW,GAASw1D,GAAQxrE,IAAKisE,GAASvoD,CACrG,EAEEuoD,EAAMnvE,OAAS,SAASkD,GACtB,OAAOjQ,UAAUC,QAAU8M,EAAsB,mBAANkD,EAAmBA,EAAIgW,KAAWhW,GAAIisE,GAASnvE,CAC9F,EAEEmvE,EAAMvO,UAAY,SAAS19D,GACzB,OAAOjQ,UAAUC,QAAU0tE,EAAyB,mBAAN19D,EAAmBA,EAAIgW,KAAWhW,GAAIisE,GAASvO,CACjG,EAEEuO,EAAME,WAAa,SAASnsE,GAC1B,OAAOjQ,UAAUC,QAAUm8E,GAAcnsE,EAAGisE,GAASE,CACzD,EAEEF,EAAM+B,aAAe,SAAShuE,GAC5B,OAAOjQ,UAAUC,QAAUk2B,IAASlmB,EAAGisE,GAAS/lD,CACpD,EAEE+lD,EAAMzxE,GAAK,WACT,IAAI9E,EAAQunD,EAAUziD,GAAGvK,MAAMgtD,EAAWltD,WAC1C,OAAO2F,IAAUunD,EAAYgvB,EAAQv2E,CACzC,EAESu2E,CACT,C,gBvP5kB6B,U,oRAFL,kB,cACG,S,gWkHIZ,SAASt3E,EAAM1C,GAC5B,IACImT,EACAvV,EAFAyV,EAAY3Q,EAAK4Q,aAIrB,GAAID,EAEF,IAAKzV,KADLoC,EAAe,MAARA,EAAe,KAAOA,EAAO,GAC1BqT,EACR,IAAKF,EAAWE,EAAUzV,IAAI6V,MAAQZ,IAAaM,EAASnT,OAASA,EACnE,OAAO,IAAIwsB,GAAW,CAAC,CAAC9pB,IAAQuH,GAAMjK,GAAOpC,GAKnD,OAAO,IACT,E,0B8BpBe,SAAkB6nB,GAC/B,IAAK,IAAIrnB,KAAOqnB,EAAQ,CACtB,IAAgCU,EAAQxd,EAApClF,EAAQgiB,EAAOrnB,GAAK4G,OACxB,GAAKvB,EACA,GAAc,SAAVA,EAAkBA,GAAQ,OAC9B,GAAc,UAAVA,EAAmBA,GAAQ,OAC/B,GAAc,QAAVA,EAAiBA,EAAQN,SAC7B,GAAK2c,MAAMqG,GAAU1iB,GACrB,MAAIkF,EAAIlF,EAAMqH,MAAM,gGAIpB,SAHCouB,IAAWvwB,EAAE,KAAOA,EAAE,KAAIlF,EAAQA,EAAMi0B,QAAQ,KAAM,KAAKA,QAAQ,IAAK,MAC5Ej0B,EAAQ,IAAIqN,KAAKrN,EAEd,MAL6BA,EAAQ0iB,OAJ9B1iB,EAAQ,KAUpBgiB,EAAOrnB,GAAOqF,CAClB,CACE,OAAOgiB,CACT,E,mEuGwIe,WACb,OAAOu0D,GAAMP,GACf,E,iBAfO,SAAwB/2E,GAC7B,IAAI+Q,EAAQ/Q,EAAKq3E,QACjB,OAAOtmE,EAAQA,EAAMwmE,IAAIxiB,OAAOhkD,EAAMlJ,WAAa,IACrD,E,SAEO,WACL,OAAOyvE,GAAMz/C,GACf,E,SAEO,WACL,OAAOy/C,GAAMn2C,GACf,E,qCCnJe,SAAS7jC,GACtB,OAAOwK,GAAOzJ,EAAQf,GAAMhD,KAAKsD,SAASI,iBAC5C,E,oBCHe,SAASs7E,EAASC,EAASjrB,GACxC,IAGI1lD,EACAC,EACA3N,EACAs1B,EANAsnD,EAAKwB,EAAQj+E,OACb08E,EAAKwB,EAAQl+E,OACb0lB,EAAS,IAAI7mB,MAAM49E,EAAKC,GAQ5B,IAFc,MAAVzpB,IAAgBA,EAASlgC,IAExBxlB,EAAK1N,EAAI,EAAG0N,EAAKkvE,IAAMlvE,EAC1B,IAAK4nB,EAAS8oD,EAAQ1wE,GAAKC,EAAK,EAAGA,EAAKkvE,IAAMlvE,IAAM3N,EAClD6lB,EAAO7lB,GAAKozD,EAAO99B,EAAQ+oD,EAAQ1wE,IAIvC,OAAOkY,CACT,E,qKCkCuB,WAAM,OAAAy4D,OAAA,E,wM9I3CtB,SAAkBx+E,GACvB,OAAO,EAAI8xB,GAAU,EAAI9xB,EAC3B,E,kBAMO,SAAqBA,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAI8xB,GAAU,EAAI9xB,GAAK8xB,GAAU9xB,EAAI,GAAK,GAAK,CACzE,E,kDDrBO,SAAkBA,GACvB,OAAO,EAAI2O,KAAK8V,KAAK,EAAIzkB,EAAIA,EAC/B,E,qCAEO,SAAmBA,GACxB,OAAO2O,KAAK8V,KAAK,KAAMzkB,EAAIA,EAC7B,E,6BjBNO,SAAiBA,GACtB,OAAOA,EAAIA,EAAIA,CACjB,E,mCAEO,SAAkBA,GACvB,QAASA,EAAIA,EAAIA,EAAI,CACvB,E,uGgBJO,SAAeA,GACpB,OAAOmxB,GAAK,GAAKnxB,EACnB,E,+BAEO,SAAgBA,GACrB,OAAO,EAAImxB,GAAKnxB,EAClB,E,aiJRO,SAAgBA,GACrB,OAAQA,CACV,E,6FlKFO,SAAgBA,GACrB,OAAOA,EAAIA,CACb,E,iCAEO,SAAiBA,GACtB,OAAOA,GAAK,EAAIA,EAClB,E,yBeHO,SAAeA,GACpB,OAAe,IAANA,EAAW,EAAI,EAAI2O,KAAKgW,IAAI3kB,EAAIixB,GAC3C,E,+BAEO,SAAgBjxB,GACrB,OAAO2O,KAAKiW,IAAI5kB,EAAIixB,GACtB,E,UoJTe,SAASjjB,GACtB,IAAI8oB,EAAU,GACd,IAAK,IAAIp2B,KAAOsN,EAAK8oB,EAAQptB,KAAK,CAAChJ,IAAKA,EAAKqF,MAAOiI,EAAItN,KACxD,OAAOo2B,CACT,E,0GnMyBO,SAAcn1B,EAAGmgB,GACtB,OAAO,IAAIgC,GAAIniB,EAAG,EAAG,EAAc,MAAXmgB,EAAkB,EAAIA,EAChD,E,qBoMtBe,WACb,IAAI/b,EAAQsjB,GACRqvC,EAAS3kC,GACTkkB,EAAY5iB,GAEhB,SAASopD,EAAU15E,GACjB,IAAI7E,EAEAqN,EADApN,EAAI4E,EAAK1E,OAET0lB,EAAS,IAAI7mB,MAAMiB,GAEvB,IAAKD,EAAI,EAAGA,EAAIC,IAAKD,EACnB6lB,EAAO7lB,GAAK6F,EAAMhB,EAAK7E,GAAIA,EAAG6E,GAGhC,IAAI25E,EAAKhmB,EAAO3yC,GACZy0C,EAAKkkB,EAAG,GACRjkB,EAAKikB,EAAG,GACRC,EAAK1mC,EAAUlyB,EAAQy0C,EAAIC,GAG1Bv7D,MAAM4pB,QAAQ61D,KACjBA,EAAK1pD,GAASulC,EAAIC,EAAIkkB,GACtBA,EAAKtqD,GAAM1lB,KAAKylB,KAAKomC,EAAKmkB,GAAMA,EAAIlkB,EAAIkkB,IAK1C,IADA,IAAI1zE,EAAI0zE,EAAGt+E,OACJs+E,EAAG,IAAMnkB,GAAImkB,EAAGC,UAAW3zE,EAClC,KAAO0zE,EAAG1zE,EAAI,GAAKwvD,GAAIkkB,EAAGx0D,QAASlf,EAEnC,IACI4zE,EADAC,EAAO,IAAI5/E,MAAM+L,EAAI,GAIzB,IAAK/K,EAAI,EAAGA,GAAK+K,IAAK/K,GACpB2+E,EAAMC,EAAK5+E,GAAK,IACZs6D,GAAKt6D,EAAI,EAAIy+E,EAAGz+E,EAAI,GAAKs6D,EAC7BqkB,EAAIpkB,GAAKv6D,EAAI+K,EAAI0zE,EAAGz+E,GAAKu6D,EAI3B,IAAKv6D,EAAI,EAAGA,EAAIC,IAAKD,EAEfs6D,IADJjtD,EAAIwY,EAAO7lB,KACIqN,GAAKktD,GAClBqkB,EAAKllB,GAAO+kB,EAAIpxE,EAAG,EAAGtC,IAAIvB,KAAK3E,EAAK7E,IAIxC,OAAO4+E,CACX,CAcE,OAZAL,EAAU14E,MAAQ,SAASsK,GACzB,OAAOjQ,UAAUC,QAAU0F,EAAqB,mBAANsK,EAAmBA,EAAIgW,GAAShW,GAAIouE,GAAa14E,CAC/F,EAEE04E,EAAU/lB,OAAS,SAASroD,GAC1B,OAAOjQ,UAAUC,QAAUq4D,EAAsB,mBAANroD,EAAmBA,EAAIgW,GAAS,CAAChW,EAAE,GAAIA,EAAE,KAAMouE,GAAa/lB,CAC3G,EAEE+lB,EAAUM,WAAa,SAAS1uE,GAC9B,OAAOjQ,UAAUC,QAAU43C,EAAyB,mBAAN5nC,EAAmBA,EAAInR,MAAM4pB,QAAQzY,GAAKgW,GAASzkB,GAAMtC,KAAK+Q,IAAMgW,GAAShW,GAAIouE,GAAaxmC,CAChJ,EAESwmC,CACT,E,6C5LvEe,SAASj5E,EAAG1G,GACzB,OAAQuoB,GAAcvoB,GAAKsoB,GAAcK,IAAcjiB,EAAG1G,EAC5D,E,2M6LLe,SAASu1B,GACtB,IAAIl0B,EAAIk0B,EAAMh0B,OACd,OAAO,SAASL,GACd,OAAOq0B,EAAM1lB,KAAK0T,IAAI,EAAG1T,KAAKC,IAAIzO,EAAI,EAAGwO,KAAKqX,MAAMhmB,EAAIG,KAC5D,CACA,E,yGCHe,SAASqF,EAAG1G,GACzB,IAAIoB,EAAIkmB,IAAK5gB,GAAI1G,GACjB,OAAO,SAASkB,GACd,IAAIuN,EAAIrN,EAAEF,GACV,OAAOuN,EAAI,IAAMoB,KAAKqX,MAAMzY,EAAI,IACpC,CACA,E,wL1CCe,SAASvN,IAClBA,EAAI,GAAKA,EAAI,KAAGA,GAAK2O,KAAKqX,MAAMhmB,IACpC,IAAIg/E,EAAKrwE,KAAKwmB,IAAIn1B,EAAI,IAItB,OAHAs8D,GAAQ/5C,EAAI,IAAMviB,EAAI,IACtBs8D,GAAQr8D,EAAI,IAAM,IAAM++E,EACxB1iB,GAAQ36D,EAAI,GAAM,GAAMq9E,EACjB1iB,GAAU,EACnB,E,wS2ChBe,SAAStuD,GACtB,IAAIuoB,EAAO,GACX,IAAK,IAAI71B,KAAOsN,EAAKuoB,EAAK7sB,KAAKhJ,GAC/B,OAAO61B,CACT,E,evMuFO,SAAa50B,EAAGf,EAAG2hB,EAAGT,GAC3B,OAA4B,IAArB1hB,UAAUC,OAAekkB,GAAW5iB,GAAK,IAAIoiB,GAAIxB,EAAG3hB,EAAGe,EAAc,MAAXmgB,EAAkB,EAAIA,EACzF,E,uEwM7Fe,SAASm9D,GAQtB,IAPA,IACIh0E,EAGAi0E,EACArrD,EALA1zB,EAAI8+E,EAAO5+E,OAEXH,GAAK,EACL8K,EAAI,IAIC9K,EAAIC,GAAG6K,GAAKi0E,EAAO/+E,GAAGG,OAG/B,IAFA6+E,EAAS,IAAIhgF,MAAM8L,KAEV7K,GAAK,GAGZ,IADA8K,GADA4oB,EAAQorD,EAAO9+E,IACLE,SACD4K,GAAK,GACZi0E,IAASl0E,GAAK6oB,EAAM5oB,GAIxB,OAAOi0E,CACT,E,mE3IpBe,SAASrrD,EAAOtgB,GACpB,MAALA,IAAWA,EAAI6f,IAEnB,IADA,IAAIlzB,EAAI,EAAGC,EAAI0zB,EAAMxzB,OAAS,EAAGlB,EAAI00B,EAAM,GAAIsrD,EAAQ,IAAIjgF,MAAMiB,EAAI,EAAI,EAAIA,GACtED,EAAIC,GAAGg/E,EAAMj/E,GAAKqT,EAAEpU,EAAGA,EAAI00B,IAAQ3zB,IAC1C,OAAOi/E,CACT,E,U4ILe,SAAStrD,EAAOurD,GAE7B,IADA,IAAIl/E,EAAIk/E,EAAQ/+E,OAAQg/E,EAAW,IAAIngF,MAAMgB,GACtCA,KAAKm/E,EAASn/E,GAAK2zB,EAAMurD,EAAQl/E,IACxC,OAAOm/E,CACT,E,YCJe,SAAmBxxD,EAAa9H,GAE7C,IADA,IAAI7lB,EAAI,EAAGC,EAAI4lB,EAAO1lB,OAAS,EAAG+F,EAAI2f,EAAO,GAAI6T,EAAI,IAAI16B,MAAMiB,EAAI,EAAI,EAAIA,GACpED,EAAIC,GAAGy5B,EAAE15B,GAAK2tB,EAAYznB,EAAGA,EAAI2f,IAAS7lB,IACjD,OAAO,SAASF,GACd,IAAIE,EAAIyO,KAAK0T,IAAI,EAAG1T,KAAKC,IAAIzO,EAAI,EAAGwO,KAAKqX,MAAMhmB,GAAKG,KACpD,OAAOy5B,EAAE15B,GAAGF,EAAIE,EACpB,CACA,E,yF9E0wBM,SAAuBwtC,EAAeC,EAAiBd,EAAeE,GACxE,YADwE,IAAAA,MAA6B,IAC9F,SAAUtsC,EAAaC,GACtBqsC,EAAI2G,OACJjzC,EAAO+vC,eAEX/vC,EAAOgxC,aAAa/wC,EAAKgtC,EAAOC,EAAQd,EAC5C,CACJ,E,yB+ExxBe,SAAS+vB,EAAcz8D,GAEpC,IADA,IAAIm/E,EAAU,IAAIpgF,MAAMiB,GACfD,EAAI,EAAGA,EAAIC,IAAKD,EAAGo/E,EAAQp/E,GAAK08D,EAAa18D,GAAKC,EAAI,IAC/D,OAAOm/E,CACT,E,mDCAe,SAASj2D,IACtB,IAAIqvC,EAAS,CAAC,EAAG,GAEjB,SAASjuC,EAAMld,GACb,OAAQA,CACZ,CAYE,OAVAkd,EAAM0vC,OAAS1vC,EAEfA,EAAMiuC,OAASjuC,EAAM4J,MAAQ,SAAShkB,GACpC,OAAOjQ,UAAUC,QAAUq4D,EAAS1qD,GAAI1O,KAAK+Q,EAAGoY,IAASgC,GAASiuC,EAAO92D,OAC7E,EAEE6oB,EAAMlY,KAAO,WACX,OAAO8W,IAAWqvC,OAAOA,EAC7B,EAES2B,GAAU5vC,EACnB,E,+C1DmBe,SAAS0B,IACtB,IAAI1B,EAAQovC,GAAWJ,GAAeC,IAAehB,OAAO,CAAC,EAAG,KAC5DA,EAASjuC,EAAMiuC,OACfkC,EAAO,GACP2kB,EAAO1kB,GAAK,IACZ2kB,EAAO7kB,GAAK,IAEhB,SAAS1B,IAGP,OAFAsmB,EAAO1kB,GAAKD,GAAO4kB,EAAO7kB,GAAKC,GAC3BlC,IAAS,GAAK,IAAG6mB,EAAOvkB,GAAQukB,GAAOC,EAAOxkB,GAAQwkB,IACnD/0D,CACX,CA0EE,OAxEAA,EAAMmwC,KAAO,SAASvqD,GACpB,OAAOjQ,UAAUC,QAAUu6D,GAAQvqD,EAAG4oD,KAAa2B,CACvD,EAEEnwC,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUq4D,EAAOroD,GAAI4oD,KAAaP,GACvD,EAEEjuC,EAAMgK,MAAQ,SAASC,GACrB,IAGI7zB,EAHAhC,EAAI65D,IACJhsC,EAAI7tB,EAAE,GACNuH,EAAIvH,EAAEA,EAAEwB,OAAS,IAGjBQ,EAAIuF,EAAIsmB,KAAGxsB,EAAIwsB,EAAGA,EAAItmB,EAAGA,EAAIlG,GAEjC,IAEIf,EACAgkB,EACAnjB,EAJAE,EAAIq/E,EAAK7yD,GACT1hB,EAAIu0E,EAAKn5E,GAITjG,EAAa,MAATu0B,EAAgB,IAAMA,EAC1BzQ,EAAI,GAER,KAAM22C,EAAO,IAAM5vD,EAAI9K,EAAIC,GAEzB,GADAD,EAAIyO,KAAK2T,MAAMpiB,GAAK,EAAG8K,EAAI2D,KAAK2T,MAAMtX,GAAK,EACvC0hB,EAAI,GAAG,KAAOxsB,EAAI8K,IAAK9K,EACzB,IAAKijB,EAAI,EAAGhkB,EAAIqgF,EAAKt/E,GAAIijB,EAAIy3C,IAAQz3C,EAEnC,MADAnjB,EAAIb,EAAIgkB,GACAuJ,GAAR,CACA,GAAI1sB,EAAIoG,EAAG,MACX6d,EAAEva,KAAK1J,EAFI,OAIR,KAAOE,EAAI8K,IAAK9K,EACrB,IAAKijB,EAAIy3C,EAAO,EAAGz7D,EAAIqgF,EAAKt/E,GAAIijB,GAAK,IAAKA,EAExC,MADAnjB,EAAIb,EAAIgkB,GACAuJ,GAAR,CACA,GAAI1sB,EAAIoG,EAAG,MACX6d,EAAEva,KAAK1J,EAFI,OAMfikB,EAAIwQ,GAAMv0B,EAAG8K,EAAG2D,KAAKC,IAAI5D,EAAI9K,EAAGC,IAAI6N,IAAIwxE,GAG1C,OAAO3+E,EAAIojB,EAAE0Q,UAAY1Q,CAC7B,EAEEwG,EAAM6vC,WAAa,SAAS5lC,EAAOsH,GAGjC,GAFiB,MAAbA,IAAmBA,EAAqB,KAAT4+B,EAAc,MAAQ,KAChC,mBAAd5+B,IAA0BA,EAAY5a,SAAO4a,IACpDtH,IAAUngB,IAAU,OAAOynB,EAClB,MAATtH,IAAeA,EAAQ,IAC3B,IAAIvR,EAAIxU,KAAK0T,IAAI,EAAGu4C,EAAOlmC,EAAQjK,EAAMgK,QAAQp0B,QACjD,OAAO,SAASxB,GACd,IAAIqB,EAAIrB,EAAI2gF,EAAK7wE,KAAK2T,MAAMi9D,EAAK1gF,KAEjC,OADIqB,EAAI06D,EAAOA,EAAO,KAAK16D,GAAK06D,GACzB16D,GAAKijB,EAAI6Y,EAAUn9B,GAAK,EACrC,CACA,EAEE4rB,EAAM8vC,KAAO,WACX,OAAO7B,EAAO6B,GAAK7B,IAAU,CAC3B1yC,MAAO,SAASzY,GAAK,OAAOiyE,EAAK7wE,KAAKqX,MAAMu5D,EAAKhyE,IAAK,EACtD6mB,KAAM,SAAS7mB,GAAK,OAAOiyE,EAAK7wE,KAAKylB,KAAKmrD,EAAKhyE,IAAK,IAE1D,EAEEkd,EAAMlY,KAAO,WACX,OAAOA,GAAKkY,EAAO0B,IAAMyuC,KAAKA,GAClC,EAESnwC,CACT,E,+BP7BO,WACL,OAAO0uC,GAASP,KAAOG,aAAa,GACtC,E,8BkEjGe,SAASljC,IACtB,IAAI6iC,EAAS,GACTrkC,EAAQ,GACR0qD,EAAa,GAEjB,SAAS9lB,IACP,IAAI/4D,EAAI,EAAGC,EAAIwO,KAAK0T,IAAI,EAAGgS,EAAMh0B,QAEjC,IADA0+E,EAAa,IAAI7/E,MAAMiB,EAAI,KAClBD,EAAIC,GAAG4+E,EAAW7+E,EAAI,GAAK+3C,GAAUygB,EAAQx4D,EAAIC,GAC1D,OAAOsqB,CACX,CAEE,SAASA,EAAMld,GACb,IAAK6U,MAAM7U,GAAKA,GAAI,OAAO8mB,EAAMulC,GAAOmlB,EAAYxxE,GACxD,CAgCE,OA9BAkd,EAAMywC,aAAe,SAASpqD,GAC5B,IAAI5Q,EAAIm0B,EAAM7xB,QAAQsO,GACtB,OAAO5Q,EAAI,EAAI,CAACuF,IAAKA,KAAO,CAC1BvF,EAAI,EAAI6+E,EAAW7+E,EAAI,GAAKw4D,EAAO,GACnCx4D,EAAI6+E,EAAW1+E,OAAS0+E,EAAW7+E,GAAKw4D,EAAOA,EAAOr4D,OAAS,GAErE,EAEEoqB,EAAMiuC,OAAS,SAASroD,GACtB,IAAKjQ,UAAUC,OAAQ,OAAOq4D,EAAO92D,QACrC82D,EAAS,GACT,IAAK,IAAyB75D,EAArBqB,EAAI,EAAGC,EAAIkQ,EAAEhQ,OAAWH,EAAIC,IAAKD,EAAsB,OAAfrB,EAAIwR,EAAEnQ,KAAkBkiB,MAAMvjB,GAAKA,IAAI65D,EAAOhvD,KAAK7K,GAEpG,OADA65D,EAAO1pD,KAAKzJ,IACL0zD,GACX,EAEExuC,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUg0B,EAAQzyB,GAAMtC,KAAK+Q,GAAI4oD,KAAa5kC,EAAMzyB,OACzE,EAEE6oB,EAAMg1D,UAAY,WAChB,OAAOV,EAAWn9E,OACtB,EAEE6oB,EAAMlY,KAAO,WACX,OAAOsjB,IACF6iC,OAAOA,GACPrkC,MAAMA,EACf,EAES5J,CACT,E,oD1DfO,WACL,OAAOrH,KAAMyN,SAAS,GACxB,E,iB2DlCe,SAASonB,IACtB,IAAIygB,EAAS,CAAC,IACVrkC,EAAQ,CAAC,EAAG,GACZl0B,EAAI,EAER,SAASsqB,EAAMld,GACb,GAAIA,GAAKA,EAAG,OAAO8mB,EAAMulC,GAAOlB,EAAQnrD,EAAG,EAAGpN,GAClD,CAqBE,OAnBAsqB,EAAMiuC,OAAS,SAASroD,GACtB,OAAOjQ,UAAUC,QAAUq4D,EAAS92D,GAAMtC,KAAK+Q,GAAIlQ,EAAIwO,KAAKC,IAAI8pD,EAAOr4D,OAAQg0B,EAAMh0B,OAAS,GAAIoqB,GAASiuC,EAAO92D,OACtH,EAEE6oB,EAAM4J,MAAQ,SAAShkB,GACrB,OAAOjQ,UAAUC,QAAUg0B,EAAQzyB,GAAMtC,KAAK+Q,GAAIlQ,EAAIwO,KAAKC,IAAI8pD,EAAOr4D,OAAQg0B,EAAMh0B,OAAS,GAAIoqB,GAAS4J,EAAMzyB,OACpH,EAEE6oB,EAAMywC,aAAe,SAASpqD,GAC5B,IAAI5Q,EAAIm0B,EAAM7xB,QAAQsO,GACtB,MAAO,CAAC4nD,EAAOx4D,EAAI,GAAIw4D,EAAOx4D,GAClC,EAEEuqB,EAAMlY,KAAO,WACX,OAAO0lC,IACFygB,OAAOA,GACPrkC,MAAMA,EACf,EAES5J,CACT,E,YzDoGe,WACb,OAAO4wC,GAASvxB,GAAU41C,GAAWC,GAAUp2C,GAASq2C,GAAUC,GAAYC,GAAYC,GAAiB31C,cAAYsuB,OAAO,CAAC,IAAItlD,KAAK,IAAM,EAAG,GAAI,IAAIA,KAAK,IAAM,EAAG,IACzK,E,W0DlIe,WACb,OAAOioD,GAAS94B,GAASF,GAAU29C,GAASv+C,GAAQF,GAASF,GAAW4+C,GAAWC,GAAgB12C,aAAWkvB,OAAO,CAACtlD,KAAK0vB,IAAI,IAAM,EAAG,GAAI1vB,KAAK0vB,IAAI,IAAM,EAAG,IAChK,E,OCJe,SAAS/c,EAAQ9W,GAC9B,GAAM9O,EAAI4lB,EAAO1lB,OAAjB,CACA,IAAIF,EAGAggF,EAFAjgF,EAAI,EACJ8K,EAAI,EAEJo1E,EAAKr6D,EAAO/a,GAIhB,IAFe,MAAXiE,IAAiBA,EAAU1J,MAEtBrF,EAAIC,IACP8O,EAAQkxE,EAAKp6D,EAAO7lB,GAAIkgF,GAAM,GAAyB,IAApBnxE,EAAQmxE,EAAIA,MACjDA,EAAKD,EAAIn1E,EAAI9K,GAIjB,OAAwB,IAApB+O,EAAQmxE,EAAIA,GAAkBp1E,OAAlC,CAf0B,CAgB5B,E,kHCjBe,SAASzH,GACtB,MAA2B,iBAAbA,EACR,IAAIiJ,GAAU,CAAC5J,SAASe,iBAAiBJ,IAAY,CAACX,SAASI,kBAC/D,IAAIwJ,GAAU,CAAa,MAAZjJ,EAAmB,GAAKA,GAAWgJ,GAC1D,E,+DCNe,SAASsnB,EAAOjmB,EAAIC,GAKjC,IAJA,IACI7N,EACAE,EAFA+K,GAAW,MAAN4C,EAAagmB,EAAMxzB,OAASwN,IAAOD,EAAW,MAANA,EAAa,GAAKA,GAI5D3C,GACL/K,EAAIyO,KAAK0xE,SAAWp1E,IAAM,EAC1BjL,EAAI6zB,EAAM5oB,EAAI2C,GACdimB,EAAM5oB,EAAI2C,GAAMimB,EAAM3zB,EAAI0N,GAC1BimB,EAAM3zB,EAAI0N,GAAM5N,EAGlB,OAAO6zB,CACT,E,+CCRe,SAAS9N,EAAQnX,EAAKyT,GAEnC,OADA0D,EAAS/X,GAAI1O,KAAKymB,EAAQ0C,IAAQzZ,KAAKzJ,IAChCoJ,KAAKylB,MAAM/R,EAAMzT,IAAQ,GAAKinB,GAAS9P,EAAQ,KAAQ8P,GAAS9P,EAAQ,MAASpX,KAAKyU,IAAI2C,EAAO1lB,QAAS,EAAI,IACvH,E,iBCNe,SAAS0lB,EAAQnX,EAAKyT,GACnC,OAAO1T,KAAKylB,MAAM/R,EAAMzT,IAAQ,IAAM0uC,GAAUv3B,GAAUpX,KAAKyU,IAAI2C,EAAO1lB,QAAS,EAAI,IACzF,E,0ICDe,SAAS2E,EAAM4M,GACb,MAAXA,IAAiBA,EAAUjG,KAAciG,SAE7C,IAAK,IAAI1R,EAAI,EAAGC,EAAIyR,EAAUA,EAAQvR,OAAS,EAAG4uD,EAAS,IAAI/vD,MAAMiB,GAAID,EAAIC,IAAKD,EAChF+uD,EAAO/uD,GAAK0Q,GAAM5L,EAAM4M,EAAQ1R,IAGlC,OAAO+uD,CACT,E,qMCTe,WACb,OAAOj5B,GAAU51B,UACnB,E","ignoreList":[]}
|