UNPKG

@appello/common

Version:

Common package with many useful features for web and mobile development

2 lines 233 kB
"use strict";var t=require("react"),e=require("buffer");function n(e){const n=t.useRef(e);n.current=t.useMemo((()=>e),[e]);const r=t.useRef();return r.current||(r.current=function(...t){return n.current.apply(this,t)}),r.current}function r({fn:e,delay:r=1e3,onStop:a,immediateStart:o=!1,immediateCallFn:i=!1}){const[s,u]=t.useState(o),c=t.useRef(null),l=n(e);t.useEffect((()=>{u(o)}),[o]),t.useEffect((()=>s?(i&&l(),c.current=setInterval(l,r),()=>{c.current&&(clearInterval(c.current),a?.(),u(!1))}):()=>{c.current&&(clearInterval(c.current),a?.())}),[s,r,i]);return{start:t.useCallback((()=>u(!0)),[]),stop:t.useCallback((()=>u(!1)),[]),setState:u}}const a=t=>!!t&&t.constructor===Object;function o(t,e=0,n){let r,o,i,s,u,c=0,l=0,d=!1,f=!1,m=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function h(e){const n=r,a=o;return r=o=void 0,l=e,i=t.apply(a,n),i}function g(t,e){return setTimeout(t,e)}function w(t){const n=t-u;return void 0===u||n>=e||n<0||f&&t-l>=c}function p(){const t=Date.now();if(w(t))return b(t);s=g(p,function(t){const n=t-l,r=e-(t-u);return f?Math.min(r,c-n):r}(t))}function b(t){return s=void 0,m&&r?h(t):(r=o=void 0,i)}function y(...t){const n=Date.now(),a=w(n);if(r=t,o=this,u=n,a){if(void 0===s)return function(t){return l=t,s=g(p,e),d?h(t):i}(u);if(f)return s=g(p,e),h(u)}return void 0===s&&(s=g(p,e)),i}return a(n)&&(d=!!n.leading,f="maxWait"in n,c=f?Math.max(n?.maxWait||0,e):c,m="trailing"in n?!!n.trailing:m),y.cancel=function(){void 0!==s&&clearTimeout(s),l=0,r=u=o=s=void 0},y.flush=function(){return void 0===s?i:b(Date.now())},y.pending=function(){return void 0!==s},y}const i=Object.keys,s=(t,e)=>{const n={...t};return a(t)&&a(e)&&i(e).forEach((r=>{"__proto__"!==r&&(a(e[r])?n[r]=r in t?s(n[r],e[r]):e[r]:n[r]=e[r])})),n},u=Object.entries;function c(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}function l(t){const e=Object.prototype.toString.call(t);return t instanceof Date||"object"==typeof t&&"[object Date]"===e?new t.constructor(+t):"number"==typeof t||"[object Number]"===e||"string"==typeof t||"[object String]"===e?new Date(t):new Date(NaN)}function d(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}const f=6048e5;let m={};function h(){return m}function g(t,e){const n=h(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=l(t),o=a.getDay(),i=(o<r?7:0)+o-r;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function w(t){return g(t,{weekStartsOn:1})}function p(t){const e=l(t),n=e.getFullYear(),r=d(t,0);r.setFullYear(n+1,0,4),r.setHours(0,0,0,0);const a=w(r),o=d(t,0);o.setFullYear(n,0,4),o.setHours(0,0,0,0);const i=w(o);return e.getTime()>=a.getTime()?n+1:e.getTime()>=i.getTime()?n:n-1}function b(t){const e=l(t);return e.setHours(0,0,0,0),e}function y(t){const e=l(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function v(t){if(!(e=t,e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)||"number"==typeof t))return!1;var e;const n=l(t);return!isNaN(Number(n))}function x(t,e){const n=h(),r=n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=l(t),o=a.getDay(),i=6+(o<r?-7:0)-(o-r);return a.setDate(a.getDate()+i),a.setHours(23,59,59,999),a}const M={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function k(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const S={date:k({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:k({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:k({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},P={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function D(t){return(e,n)=>{let r;if("formatting"===(n?.context?String(n.context):"standalone")&&t.formattingValues){const e=t.defaultFormattingWidth||t.defaultWidth,a=n?.width?String(n.width):e;r=t.formattingValues[a]||t.formattingValues[e]}else{const e=t.defaultWidth,a=n?.width?String(n.width):t.defaultWidth;r=t.values[a]||t.values[e]}return r[t.argumentCallback?t.argumentCallback(e):e]}}function O(t){return(e,n={})=>{const r=n.width,a=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],o=e.match(a);if(!o)return null;const i=o[0],s=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],u=Array.isArray(s)?function(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n;return}(s,(t=>t.test(i))):function(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n;return}(s,(t=>t.test(i)));let c;c=t.valueCallback?t.valueCallback(u):u,c=n.valueCallback?n.valueCallback(c):c;return{value:c,rest:e.slice(i.length)}}}var C;const E={code:"en-US",formatDistance:(t,e,n)=>{let r;const a=M[t];return r="string"==typeof a?a:1===e?a.one:a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:S,formatRelative:(t,e,n,r)=>P[t],localize:{ordinalNumber:(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:D({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:D({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:t=>t-1}),month:D({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:D({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:D({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(C={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:t=>parseInt(t,10)},(t,e={})=>{const n=t.match(C.matchPattern);if(!n)return null;const r=n[0],a=t.match(C.parsePattern);if(!a)return null;let o=C.valueCallback?C.valueCallback(a[0]):a[0];return o=e.valueCallback?e.valueCallback(o):o,{value:o,rest:t.slice(r.length)}}),era:O({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:O({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:t=>t+1}),month:O({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:O({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:O({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function j(t){const e=l(t),n=function(t,e){const n=b(t),r=b(e),a=+n-y(n),o=+r-y(r);return Math.round((a-o)/864e5)}(e,function(t){const e=l(t),n=d(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}(e));return n+1}function W(t){const e=l(t),n=+w(e)-+function(t){const e=p(t),n=d(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),w(n)}(e);return Math.round(n/f)+1}function T(t,e){const n=l(t),r=n.getFullYear(),a=h(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,i=d(t,0);i.setFullYear(r+1,0,o),i.setHours(0,0,0,0);const s=g(i,e),u=d(t,0);u.setFullYear(r,0,o),u.setHours(0,0,0,0);const c=g(u,e);return n.getTime()>=s.getTime()?r+1:n.getTime()>=c.getTime()?r:r-1}function F(t,e){const n=l(t),r=+g(n,e)-+function(t,e){const n=h(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=T(t,e),o=d(t,0);return o.setFullYear(a,0,r),o.setHours(0,0,0,0),g(o,e)}(n,e);return Math.round(r/f)+1}function N(t,e){return(t<0?"-":"")+Math.abs(t).toString().padStart(e,"0")}const q={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return N("yy"===e?r%100:r,e.length)},M(t,e){const n=t.getMonth();return"M"===e?String(n+1):N(n+1,2)},d:(t,e)=>N(t.getDate(),e.length),a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(t,e)=>N(t.getHours()%12||12,e.length),H:(t,e)=>N(t.getHours(),e.length),m:(t,e)=>N(t.getMinutes(),e.length),s:(t,e)=>N(t.getSeconds(),e.length),S(t,e){const n=e.length,r=t.getMilliseconds();return N(Math.trunc(r*Math.pow(10,n-3)),e.length)}},I="midnight",Y="noon",H="morning",A="afternoon",z="evening",$="night",L={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if("yo"===e){const e=t.getFullYear(),r=e>0?e:1-e;return n.ordinalNumber(r,{unit:"year"})}return q.y(t,e)},Y:function(t,e,n,r){const a=T(t,r),o=a>0?a:1-a;if("YY"===e){return N(o%100,2)}return"Yo"===e?n.ordinalNumber(o,{unit:"year"}):N(o,e.length)},R:function(t,e){return N(p(t),e.length)},u:function(t,e){return N(t.getFullYear(),e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return N(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return N(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return q.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return N(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const a=F(t,r);return"wo"===e?n.ordinalNumber(a,{unit:"week"}):N(a,e.length)},I:function(t,e,n){const r=W(t);return"Io"===e?n.ordinalNumber(r,{unit:"week"}):N(r,e.length)},d:function(t,e,n){return"do"===e?n.ordinalNumber(t.getDate(),{unit:"date"}):q.d(t,e)},D:function(t,e,n){const r=j(t);return"Do"===e?n.ordinalNumber(r,{unit:"dayOfYear"}):N(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const a=t.getDay(),o=(a-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(o);case"ee":return N(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const a=t.getDay(),o=(a-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(o);case"cc":return N(o,e.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),a=0===r?7:r;switch(e){case"i":return String(a);case"ii":return N(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const r=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let a;switch(a=12===r?Y:0===r?I:r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let a;switch(a=r>=17?z:r>=12?A:r>=4?H:$,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if("ho"===e){let e=t.getHours()%12;return 0===e&&(e=12),n.ordinalNumber(e,{unit:"hour"})}return q.h(t,e)},H:function(t,e,n){return"Ho"===e?n.ordinalNumber(t.getHours(),{unit:"hour"}):q.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return"Ko"===e?n.ordinalNumber(r,{unit:"hour"}):N(r,e.length)},k:function(t,e,n){let r=t.getHours();return 0===r&&(r=24),"ko"===e?n.ordinalNumber(r,{unit:"hour"}):N(r,e.length)},m:function(t,e,n){return"mo"===e?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):q.m(t,e)},s:function(t,e,n){return"so"===e?n.ordinalNumber(t.getSeconds(),{unit:"second"}):q.s(t,e)},S:function(t,e){return q.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(0===r)return"Z";switch(e){case"X":return Q(r);case"XXXX":case"XX":return R(r);default:return R(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return Q(r);case"xxxx":case"xx":return R(r);default:return R(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+B(r,":");default:return"GMT"+R(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+B(r,":");default:return"GMT"+R(r,":")}},t:function(t,e,n){return N(Math.trunc(t.getTime()/1e3),e.length)},T:function(t,e,n){return N(t.getTime(),e.length)}};function B(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),a=Math.trunc(r/60),o=r%60;return 0===o?n+String(a):n+String(a)+e+N(o,2)}function Q(t,e){if(t%60==0){return(t>0?"-":"+")+N(Math.abs(t)/60,2)}return R(t,e)}function R(t,e=""){const n=t>0?"-":"+",r=Math.abs(t);return n+N(Math.trunc(r/60),2)+e+N(r%60,2)}const U=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},G=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},X={p:G,P:(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],a=n[2];if(!a)return U(t,e);let o;switch(r){case"P":o=e.dateTime({width:"short"});break;case"PP":o=e.dateTime({width:"medium"});break;case"PPP":o=e.dateTime({width:"long"});break;default:o=e.dateTime({width:"full"})}return o.replace("{{date}}",U(r,e)).replace("{{time}}",G(a,e))}},J=/^D+$/,V=/^Y+$/,_=["D","DD","YY","YYYY"];const K=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Z=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,tt=/^'([^]*?)'?$/,et=/''/g,nt=/[a-zA-Z]/;function rt(t,e,n){const r=h(),a=r.locale??E,o=r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,i=r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=l(t);if(!v(s))throw new RangeError("Invalid time value");let u=e.match(Z).map((t=>{const e=t[0];if("p"===e||"P"===e){return(0,X[e])(t,a.formatLong)}return t})).join("").match(K).map((t=>{if("''"===t)return{isToken:!1,value:"'"};const e=t[0];if("'"===e)return{isToken:!1,value:at(t)};if(L[e])return{isToken:!0,value:t};if(e.match(nt))throw new RangeError("Format string contains an unescaped latin alphabet character `"+e+"`");return{isToken:!1,value:t}}));a.localize.preprocessor&&(u=a.localize.preprocessor(s,u));const c={firstWeekContainsDate:o,weekStartsOn:i,locale:a};return u.map((n=>{if(!n.isToken)return n.value;const r=n.value;(function(t){return V.test(t)}(r)||function(t){return J.test(t)}(r))&&function(t,e,n){const r=function(t,e,n){const r="Y"===t[0]?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(t,e,n);if(console.warn(r),_.includes(t))throw new RangeError(r)}(r,e,String(t));return(0,L[r[0]])(s,r,a.localize,c)})).join("")}function at(t){const e=t.match(tt);return e?e[1].replace(et,"'"):t}const ot=Array.isArray,it=t=>"[object Date]"===c(t),st=t=>!!(t&&t.constructor&&t.call&&t.apply);function ut(t){return void 0===t||null==t}const ct=t=>{try{return Number(t)===t}catch{return!1}},lt=t=>!!t&&t.constructor===Symbol,dt=t=>!!t&&(!!t.then&&st(t.then));const ft=1/0;function mt(e){const n=t.useRef(e);return n.current=e,n}const ht=e=>{const n=mt(e);t.useEffect((()=>()=>{n.current()}),[])};function gt(e,n){const r=mt(e),a=n?.wait??600,i=t.useMemo((()=>o(((...t)=>r.current(...t)),a,n)),[]);return ht((()=>{i.cancel()})),{debounce:i,cancel:i.cancel,flush:i.flush}}function wt(){const e=t.useRef(!0);return e.current?(e.current=!1,!0):e.current}function pt(e,n){const r=wt();t.useEffect((()=>r?()=>{}:e()),n)}const bt=e=>{t.useEffect((()=>{e?.()}),[])};const yt=(t,e)=>!Object.is(t,e);function vt(e){const[n,r]=t.useState(e),a=t.useCallback((()=>{r(!0)}),[]),o=t.useCallback((()=>{r(!1)}),[]),i=t.useCallback((()=>{r((t=>!t))}),[]);return t.useMemo((()=>({value:n,on:a,off:o,toggle:i,set:r})),[n,a,o,i])}function xt(t,e){return e.split(".").reduce((function(t,e){return null==t?void 0:t[e]}),t)}class Mt{constructor(t,e){if(Object.defineProperty(this,"awsUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"awsBucket",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),!t)throw new Error("AWS url link is required.");if(!e)throw new Error("AWS bucket link is required.");this.awsUrl=t,this.awsBucket=e}static initialize(t,e){return Mt.instance||(Mt.instance=new Mt(t,e)),Mt.instance}static getInstance(){if(!Mt.instance)throw new Error("AwsImageService is not initialized. Call AwsImageService.initialize() first in your root.");return Mt.instance}static genAwsImgUrl(t,n){const r=Mt.getInstance(),a=n??{};if(!t)throw new Error("Key is required to generate an image URL.");const o={...a,resize:{...a.resize,fit:a.resize?.fit||"cover"}},i=JSON.stringify({bucket:r.awsBucket,key:t,edits:o}),s=e.Buffer.from(i).toString("base64");return`${r.awsUrl}/${s}`}}exports.AwsImageService=Mt,exports.checkIsServer=()=>"undefined"==typeof window,exports.checkNavigator=()=>"undefined"!=typeof navigator,exports.debounce=o,exports.deepMergeObjects=s,exports.entries=u,exports.getDirtyValues=function t(e,n){return Object.keys(e).reduce(((r,a)=>e[a]?(r[a]="object"==typeof e[a]?t(e[a],n[a]):n[a],r):r),{})},exports.getFileExtension=t=>t.split(".").pop()?.toLowerCase(),exports.getProto=c,exports.getWeekdaysNames=function(t={}){return function(t){const e=l(t.start),n=l(t.end);let r=+e>+n;const a=r?+e:+n,o=r?n:e;o.setHours(0,0,0,0);const i=[];for(;+o<=a;)i.push(l(o)),o.setDate(o.getDate()+1),o.setHours(0,0,0,0);return r?i.reverse():i}({start:g(new Date),end:x(new Date)}).map((e=>rt(e,t.longFormat?"iiii":"E")))},exports.isArray=ot,exports.isDate=it,exports.isEmpty=t=>{if(!0===t||!1===t)return!0;if(ut(t))return!0;if(ct(t))return 0===t;if(it(t))return Number.isNaN(t.getTime());if(st(t))return!1;if(lt(t))return!1;const e=t.length;if(ct(e))return 0===e;const n=t.size;if(ct(n))return 0===n;return 0===Object.keys(t).length},exports.isFloat=t=>ct(t)&&t%1!=0,exports.isFunction=st,exports.isInt=t=>ct(t)&&t%1==0,exports.isNil=ut,exports.isNumber=ct,exports.isObject=a,exports.isPrimitive=t=>null==t||"object"!=typeof t&&"function"!=typeof t,exports.isPromise=dt,exports.isString=t=>"string"==typeof t||t instanceof String,exports.isSymbol=lt,exports.keys=i,exports.makeFormData=function t(e,n=new FormData,r){if(void 0===e)return n;if(Array.isArray(e))e.length?e.forEach(((e,a)=>t(e,n,`${r}[${a}]`))):t("",n,`${r}`);else if(a(e))Object.entries(e).forEach((([e,a])=>{e=r&&/\[\d+\]$/.test(r)?r?`${r}${e}`:e:r?`${r}.${e}`:e,t(a,n,e)}));else if(null!==e){let t=e;"boolean"==typeof t&&(t=Number(t)),n.append(`${r}`,t)}return n},exports.makeQueryString=function(t,e={}){const{withPrefix:n=!0}=e;return Object.entries(t).filter((t=>void 0!==t[1])).map((([t,e],r)=>`${0===r&&n?"?":""}${encodeURIComponent(t)}=${encodeURIComponent(e)}`)).join("&")},exports.mapFormData=function(t,e){const n=function(t){if("_parts"in t)return t._parts;if("entries"in t)return[...t.entries()];throw new Error("You are trying to map not a FormData object")}(t);return n.reduce(((t,n)=>(t.append(...e(n)),t)),new FormData)},exports.mergeCollectionByKey=(t,e,n="push",r="id")=>{const a=new Map,o=t=>String(st(r)?r(t):t[r]);return("push"===n?t:e).forEach((t=>{a.set(o(t),t)})),("push"===n?e:t).forEach((t=>{a.set(o(t),"push"===n?{...a.get(o(t)),...t}:{...t,...a.get(o(t))})})),Array.from(a.values())},exports.noop=function(){},exports.omit=function(t,e){return e.reduce(((t,e)=>(Object.prototype.hasOwnProperty.call(t,e)&&delete t[e],t)),{...t})},exports.pick=function(t,e){return e.reduce(((e,n)=>({...e,[n]:t[n]})),{})},exports.sleep=function(t){return new Promise((e=>{setTimeout(e,t)}))},exports.throttle=function(t,e=0,n){let r=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return a(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),o(t,e,{leading:r,trailing:i,maxWait:e})},exports.toBase64=t=>t?new Promise(((e,n)=>{const r=new FileReader;r.readAsDataURL(t),r.onload=()=>e(r.result),r.onerror=t=>n(t)})):Promise.reject(new Error("File not found")),exports.toFinite=function(t){if(!t)return 0===t?t:0;if((t=Number(t))===ft||t===-1/0){return 17976931348623157e292*(t<0?-1:1)}return t},exports.useCodeTimer=function(){const[e,n]=t.useState(0),{start:a,stop:o}=r({fn:()=>{n((t=>{const e=t>0?t-1:t;return 0===e&&o(),e}))}});return{seconds:e,inProgress:!!e,sendCode:(t,e=59)=>{n(e),o(),a(),t?.()}}},exports.useCombinedRef=function(...e){return t.useCallback((t=>{e.forEach((e=>{st(e)?e(t):null!==e&&(e.current=t)}))}),e)},exports.useDebounceCallback=gt,exports.useDebounceEffect=function(e,n,r){const[a,o]=t.useState({}),{debounce:i}=gt((()=>{o({})}),r);t.useEffect((()=>i()),n),pt(e,[a])},exports.useDefault=function(e,n){const[r,a]=t.useState(n);return ut(r)?[e,a]:[r,a]},exports.useFirstMountState=wt,exports.useHookFormPersist=({key:t,storage:e,excludeFields:n=[],includeFields:r=[]})=>{if(!e)throw new Error("useFormPersist: storage is required. Try using one of the provided storage engines: sessionStorage / localStorage / AsyncStorage (react-native) ");const a=function(t){if("undefined"==typeof document&&dt(t.getItem("useFormPersist test object"))){const e=t;return{getItem:e.getItem,setItem:e.setItem,removeItem:e.removeItem}}const e=t;return{getItem:async(...t)=>e.getItem(...t),setItem:async(...t)=>e.setItem(...t),removeItem:async(...t)=>e.removeItem(...t)}}(e);return{syncFromStorage:async({defaultValues:e,syncPolicy:o="storage-first"})=>{const i=await a.getItem(t)||"{}",s=JSON.parse(i),u=r?.length?Object.fromEntries(Object.entries(s).filter((([t])=>r.includes(t)))):s,c={};return Object.keys(u).forEach((t=>{!n?.includes(t)&&(c[t]=u[t])})),e?"default-values-first"===o?Object.keys(e??{}).length?e:c:Object.keys(c??{}).length?c:e||{}:c},syncToStorage:e=>{const r=n.length?Object.entries(e).filter((([t])=>!n.includes(t))).reduce(((t,[e,n])=>Object.assign(t,{[e]:n})),{}):{...e};Object.entries(r).length&&a.setItem(t,JSON.stringify(r))},clear:()=>a.removeItem(t)}},exports.useInterval=r,exports.useIsClient=function(){const[e,n]=t.useState(!1);return bt((()=>{n(!0)})),e},exports.useIsMounted=function(){const e=t.useRef(!1);return t.useEffect((()=>(e.current=!0,()=>{e.current=!1})),[]),t.useCallback((()=>e.current),[])},exports.useLatest=mt,exports.useManualUpdate=function(){const[,e]=t.useState({});return t.useCallback((()=>e({})),[])},exports.useMemoCallback=n,exports.useMountEffect=bt,exports.usePrevious=function(e,n=yt){const r=t.useRef(),a=t.useRef();return n(a.current,e)&&(r.current=a.current,a.current=e),r.current},exports.useQueryParamsBuilder=({requestCb:e,defaultParams:n,options:r={wait:600}})=>{const a=t.useRef(!1),{value:o,on:i,off:s}=vt(!1),[u,c]=t.useState(n),l=async t=>{i();try{await e(t)}finally{s()}},d=gt((t=>l(t)),r);bt((()=>{l(u)})),pt((()=>{a.current?d.debounce(u):l(u)}),[JSON.stringify(u)]);return{loading:o,queryParams:u,updateQueryParams:(t,e=!1)=>{a.current=e,c((e=>({...e,...t})))},reset:()=>c(n)}},exports.useSelectOptions=function(e,n,r){const a=t.useMemo((()=>n.label),[n.label]),o=t.useMemo((()=>n.value),[n.value]);return t.useMemo((()=>e?.map((t=>({value:xt(t,o),label:xt(t,a),...r?.(t)||{}})))??[]),[e,o,a,r])},exports.useStateObject=function(e){const[n,r]=t.useState(e);return{state:n,handleUpdate:t.useCallback((t=>{st(t)&&r((e=>{const n=t(e);return a(n)?{...e,...n}:e})),a(t)&&r((e=>({...e,...t})))}),[])}},exports.useStep=function(e=0){const[n,r]=t.useState(e);return{step:n,increment:t.useCallback((()=>{r((t=>t+1))}),[]),decrement:t.useCallback((()=>{r((t=>t-1))}),[]),reset:t.useCallback((()=>{r(e)}),[e]),setStep:r}},exports.useSwitchValue=vt,exports.useUnmountEffect=ht,exports.useUpdateEffect=pt; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW1vQ2FsbGJhY2svdXNlTWVtb0NhbGxiYWNrLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUludGVydmFsL3VzZUludGVydmFsLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2NoZWNrSXNTZXJ2ZXIvY2hlY2tJc1NlcnZlci50cyIsIi4uLy4uL3NyYy91dGlscy9pc09iamVjdC9pc09iamVjdC50cyIsIi4uLy4uL3NyYy91dGlscy9kZWJvdW5jZS9kZWJvdW5jZS50cyIsIi4uLy4uL3NyYy91dGlscy9rZXlzL2tleXMudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcE1lcmdlT2JqZWN0cy9kZWVwTWVyZ2VPYmplY3RzLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2VudHJpZXMvZW50cmllcy50cyIsIi4uLy4uL3NyYy91dGlscy9nZXRQcm90by9nZXRQcm90by50cyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9kZWZhdWx0T3B0aW9ucy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRJU09XZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZkRheS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc1ZhbGlkLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0RhdGUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VuZE9mV2Vlay5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0RGlzdGFuY2UubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRMb25nLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRSZWxhdGl2ZS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL19saWIvYnVpbGRMb2NhbGl6ZUZuLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvX2xpYi9idWlsZE1hdGNoRm4ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9lbi1VUy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTL19saWIvbG9jYWxpemUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9lbi1VUy9fbGliL21hdGNoLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXREYXlPZlllYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZlllYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldElTT1dlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9hZGRMZWFkaW5nWmVyb3MubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZm9ybWF0L2xpZ2h0Rm9ybWF0dGVycy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvZm9ybWF0dGVycy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvcHJvdGVjdGVkVG9rZW5zLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9mb3JtYXQubWpzIiwiLi4vLi4vc3JjL3V0aWxzL2lzQXJyYXkvaXNBcnJheS50cyIsIi4uLy4uL3NyYy91dGlscy9pc0RhdGUvaXNEYXRlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzRnVuY3Rpb24vaXNGdW5jdGlvbi50cyIsIi4uLy4uL3NyYy91dGlscy9pc05pbC9pc05pbC50cyIsIi4uLy4uL3NyYy91dGlscy9pc051bWJlci9pc051bWJlci50cyIsIi4uLy4uL3NyYy91dGlscy9pc1N5bWJvbC9pc1N5bWJvbC50cyIsIi4uLy4uL3NyYy91dGlscy9pc1Byb21pc2UvaXNQcm9taXNlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3RvQmFzZTY0L3RvQmFzZTY0LnRzIiwiLi4vLi4vc3JjL3V0aWxzL3RvRmluaXRlL3RvRmluaXRlLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUxhdGVzdC91c2VMYXRlc3QudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlVW5tb3VudEVmZmVjdC91c2VVbm1vdW50RWZmZWN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZURlYm91bmNlL3VzZURlYm91bmNlQ2FsbGJhY2sudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlRmlyc3RNb3VudFN0YXRlL3VzZUZpcnN0TW91bnRTdGF0ZS50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VVcGRhdGVFZmZlY3QvdXNlVXBkYXRlRWZmZWN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZU1vdW50RWZmZWN0L3VzZU1vdW50RWZmZWN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZVByZXZpb3VzL3VzZVByZXZpb3VzLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZVN3aXRjaFZhbHVlL3VzZVN3aXRjaFZhbHVlLnRzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RvdC1wYXRoLXZhbHVlL2Rpc3QvaW5kZXguZXNtLmpzIiwiLi4vLi4vc3JjL3NlcnZpY2VzL0F3c0ltYWdlU2VydmljZS50cyIsIi4uLy4uL3NyYy91dGlscy9jaGVja05hdmlnYXRvci9jaGVja05hdmlnYXRvci50cyIsIi4uLy4uL3NyYy91dGlscy9nZXREaXJ0eVZhbHVlcy9nZXREaXJ0eVZhbHVlcy50cyIsIi4uLy4uL3NyYy91dGlscy9nZXRGaWxlRXh0ZW5zaW9uL2dldEZpbGVFeHRlbnNpb24udHMiLCIuLi8uLi9zcmMvdXRpbHMvZ2V0V2Vla2RheXNOYW1lcy9nZXRXZWVrZGF5c05hbWVzLnRzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VhY2hEYXlPZkludGVydmFsLm1qcyIsIi4uLy4uL3NyYy91dGlscy9pc0VtcHR5L2lzRW1wdHkudHMiLCIuLi8uLi9zcmMvdXRpbHMvaXNGbG9hdC9pc0Zsb2F0LnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzSW50L2lzSW50LnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzUHJpbWl0aXZlL2lzUHJpbWl0aXZlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzU3RyaW5nL2lzU3RyaW5nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL21ha2VGb3JtRGF0YS9tYWtlRm9ybURhdGEudHMiLCIuLi8uLi9zcmMvdXRpbHMvbWFrZVF1ZXJ5U3RyaW5nL21ha2VRdWVyeVN0cmluZy50cyIsIi4uLy4uL3NyYy91dGlscy9tYXBGb3JtRGF0YS9tYXBGb3JtRGF0YS50cyIsIi4uLy4uL3NyYy91dGlscy9tZXJnZUNvbGxlY3Rpb25CeUtleS9tZXJnZUNvbGxlY3Rpb25CeUtleS50cyIsIi4uLy4uL3NyYy91dGlscy9ub29wL25vb3AudHMiLCIuLi8uLi9zcmMvdXRpbHMvb21pdC9vbWl0LnRzIiwiLi4vLi4vc3JjL3V0aWxzL3BpY2svcGljay50cyIsIi4uLy4uL3NyYy91dGlscy9zbGVlcC9zbGVlcC50cyIsIi4uLy4uL3NyYy91dGlscy90aHJvdHRsZS90aHJvdHRsZS50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VDb2RlVGltZXIvdXNlQ29kZVRpbWVyLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUNvbWJpbmVkUmVmL3VzZUNvbWJpbmVkUmVmLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZURlYm91bmNlL3VzZURlYm91bmNlRWZmZWN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZURlZmF1bHQvdXNlRGVmYXVsdC50c3giLCIuLi8uLi9zcmMvaG9va3MvdXNlSG9va0Zvcm1QZXJzaXN0L3VzZUhvb2tGb3JtUGVyc2lzdC50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VJc0NsaWVudC91c2VJc0NsaWVudC50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VJc01vdW50ZWQvdXNlSXNNb3VudGVkLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZU1hbnVhbFVwZGF0ZS91c2VNYW51YWxVcGRhdGUudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlUXVlcnlQYXJhbXNCdWlsZGVyL3VzZVF1ZXJ5UGFyYW1zQnVpbGRlci50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VTZWxlY3RPcHRpb25zL3VzZVNlbGVjdE9wdGlvbnMudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlU3RhdGVPYmplY3QvdXNlU3RhdGVPYmplY3QudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlU3RlcC91c2VTdGVwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCIvKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gYXJndW1lbnQgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb25lIHRoZSBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKG5ldyBEYXRlKDIwMTQsIDEsIDExLCAxMSwgMzAsIDMwKSlcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcCB0byBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gdG9EYXRlKDEzOTIwOTg0MzAwMDApXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKGFyZ3VtZW50KSB7XG4gIGNvbnN0IGFyZ1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudCk7XG5cbiAgLy8gQ2xvbmUgdGhlIGRhdGVcbiAgaWYgKFxuICAgIGFyZ3VtZW50IGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgJiYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIilcbiAgKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBhcmd1bWVudC5jb25zdHJ1Y3RvcigrYXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxuICAgIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgIGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIlxuICApIHtcbiAgICAvLyBUT0RPOiBDYW4gd2UgZ2V0IHJpZCBvZiBhcz9cbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwiLyoqXG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgZGF0ZSB1c2luZyB0aGUgcmVmZXJlbmNlIGRhdGUgYW5kIHRoZSB2YWx1ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBuZXcgZGF0ZSB1c2luZyB0aGUgY29uc3RydWN0b3IgZnJvbSB0aGUgcmVmZXJlbmNlXG4gKiBkYXRlIGFuZCB0aGUgZ2l2ZW4gdmFsdWUuIEl0IGhlbHBzIHRvIGJ1aWxkIGdlbmVyaWMgZnVuY3Rpb25zIHRoYXQgYWNjZXB0XG4gKiBkYXRlIGV4dGVuc2lvbnMuXG4gKlxuICogSXQgZGVmYXVsdHMgdG8gYERhdGVgIGlmIHRoZSBwYXNzZWQgcmVmZXJlbmNlIGRhdGUgaXMgYSBudW1iZXIgb3IgYSBzdHJpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgcmVmZXJlbmNlIGRhdGUgdG8gdGFrZSBjb25zdHJ1Y3RvciBmcm9tXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY3JlYXRlIHRoZSBkYXRlXG4gKlxuICogQHJldHVybnMgRGF0ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdmFsdWVcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gJ2RhdGUtZm5zJ1xuICpcbiAqIC8vIEEgZnVuY3Rpb24gdGhhdCBjbG9uZXMgYSBkYXRlIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHR5cGVcbiAqIGZ1bmN0aW9uIGNsb25lRGF0ZTxEYXRlVHlwZSBleHRlbmRzIERhdGUoZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb250cnVzdG9yIGZyb20gdGhlIGdpdmVuIGRhdGVcbiAqICAgICBkYXRlLmdldFRpbWUoKSAvLyBVc2UgdGhlIGRhdGUgdmFsdWUgdG8gY3JlYXRlIGEgbmV3IGRhdGVcbiAqICAgKVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbShkYXRlLCB2YWx1ZSkge1xuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IGRhdGUuY29uc3RydWN0b3IodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwiLyoqXG4gKiBAbW9kdWxlIGNvbnN0YW50c1xuICogQHN1bW1hcnkgVXNlZnVsIGNvbnN0YW50c1xuICogQGRlc2NyaXB0aW9uXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCBkYXRlIGNvbnN0YW50cy5cbiAqXG4gKiBUaGUgY29uc3RhbnRzIGNvdWxkIGJlIGltcG9ydGVkIGZyb20gYGRhdGUtZm5zL2NvbnN0YW50c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1heFRpbWUsIG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogZnVuY3Rpb24gaXNBbGxvd2VkVGltZSh0aW1lKSB7XG4gKiAgIHJldHVybiB0aW1lIDw9IG1heFRpbWUgJiYgdGltZSA+PSBtaW5UaW1lO1xuICogfVxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJbldlZWtcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgZGF5c0luV2VlayA9IDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBkYXlzSW5ZZWFyXG4gKiBAc3VtbWFyeSBEYXlzIGluIDEgeWVhci5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEhvdyBtYW55IGRheXMgaW4gYSB5ZWFyLlxuICpcbiAqIE9uZSB5ZWFycyBlcXVhbHMgMzY1LjI0MjUgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6XG4gKlxuICogPiBMZWFwIHllYXIgb2NjdXJlcyBldmVyeSA0IHllYXJzLCBleGNlcHQgZm9yIHllYXJzIHRoYXQgYXJlIGRpdmlzYWJsZSBieSAxMDAgYW5kIG5vdCBkaXZpc2FibGUgYnkgNDAwLlxuICogPiAxIG1lYW4geWVhciA9ICgzNjUrMS80LTEvMTAwKzEvNDAwKSBkYXlzID0gMzY1LjI0MjUgZGF5c1xuICovXG5leHBvcnQgY29uc3QgZGF5c0luWWVhciA9IDM2NS4yNDI1O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWF4VGltZVxuICogQHN1bW1hcnkgTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1heFRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IDg2NDAwMDAwMDAwMDAwMDEgPD0gbWF4VGltZTtcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSg4NjQwMDAwMDAwMDAwMDAxKTtcbiAqIC8vPT4gSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtYXhUaW1lID0gTWF0aC5wb3coMTAsIDgpICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pblRpbWVcbiAqIEBzdW1tYXJ5IE1pbmltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtaW5UaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSAtODY0MDAwMDAwMDAwMDAwMSA+PSBtaW5UaW1lO1xuICogLy89PiBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKC04NjQwMDAwMDAwMDAwMDAxKVxuICogLy89PiBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pblRpbWUgPSAtbWF4VGltZTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luV2VlayA9IDYwNDgwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIG1pbnV0ZVxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5NaW51dGUgPSA2MDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgaG91clxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5Ib3VyID0gMzYwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luU2Vjb25kXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJblllYXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luWWVhciA9IDUyNTYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbk1vbnRoXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgbW9udGguXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Nb250aCA9IDQzMjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luRGF5XG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luRGF5ID0gMTQ0MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luSG91ciA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5RdWFydGVyID0gMztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luWWVhciA9IDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgcXVhcnRlcnNJblllYXJcbiAqIEBzdW1tYXJ5IFF1YXJ0ZXJzIGluIDEgeWVhclxuICovXG5leHBvcnQgY29uc3QgcXVhcnRlcnNJblllYXIgPSA0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luSG91clxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Ib3VyID0gMzYwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1pbnV0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1pbnV0ZSA9IDYwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luRGF5XG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luRGF5ID0gc2Vjb25kc0luSG91ciAqIDI0O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luV2Vla1xuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5XZWVrID0gc2Vjb25kc0luRGF5ICogNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblllYXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luWWVhciA9IHNlY29uZHNJbkRheSAqIGRheXNJblllYXI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIG1vbnRoXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5Nb250aCA9IHNlY29uZHNJblllYXIgLyAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBxdWFydGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luUXVhcnRlciA9IHNlY29uZHNJbk1vbnRoICogMztcbiIsImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZldlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1xuICogQGNhdGVnb3J5IFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3Qgd2Vla1N0YXJ0c09uID1cbiAgICBvcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgMDtcblxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgY29uc3QgZGF5ID0gX2RhdGUuZ2V0RGF5KCk7XG4gIGNvbnN0IGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuXG4gIF9kYXRlLnNldERhdGUoX2RhdGUuZ2V0RGF0ZSgpIC0gZGlmZik7XG4gIF9kYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZldlZWs7XG4iLCJpbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSByZXN1bHQgd2lsbCBiZSBpbiB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZklTT1dlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mSVNPV2VlayhkYXRlKSB7XG4gIHJldHVybiBzdGFydE9mV2VlayhkYXRlLCB7IHdlZWtTdGFydHNPbjogMSB9KTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mSVNPV2VlaztcbiIsImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLm1qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZklTT1dlZWsgfSBmcm9tIFwiLi9zdGFydE9mSVNPV2Vlay5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBnZXRJU09XZWVrWWVhclxuICogQGNhdGVnb3J5IElTTyBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgS