File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/ui/reactions-select/dist/reactions-select.bundle.js.map
Back
{"version":3,"file":"reactions-select.bundle.js","sources":["../src/reactions-select.js"],"sourcesContent":["import {Type, Dom, Tag, Browser, Loc, Event} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Lottie} from \"ui.lottie\";\nimport {Popup} from 'main.popup';\n\nimport \"./reactions-select.css\";\nimport \"./reactions-icon.css\";\n\nimport likeAnimatedEmojiData from '../animations/em_01.json';\nimport laughAnimatedEmojiData from '../animations/em_02.json';\nimport wonderAnimatedEmojiData from '../animations/em_03.json';\nimport cryAnimatedEmojiData from '../animations/em_04.json';\nimport angryAnimatedEmojiData from '../animations/em_05.json';\nimport facepalmAnimatedEmojiData from '../animations/em_06.json';\nimport admireAnimatedEmojiData from '../animations/em_07.json';\n\nexport const reactionType = Object.freeze({\n\tlike: 'like',\n\tkiss: 'kiss',\n\tlaugh: 'laugh',\n\twonder: 'wonder',\n\tcry: 'cry',\n\tangry: 'angry',\n\tfacepalm: 'facepalm',\n});\n\nexport const reactionLottieAnimations = Object.freeze({\n\tlike: likeAnimatedEmojiData,\n\tlaugh: laughAnimatedEmojiData,\n\twonder: wonderAnimatedEmojiData,\n\tcry: cryAnimatedEmojiData,\n\tangry: angryAnimatedEmojiData,\n\tfacepalm: facepalmAnimatedEmojiData,\n\tkiss: admireAnimatedEmojiData,\n});\n\nexport const reactionCssClass = Object.freeze({\n\tlike: \"reaction-icon_like\",\n\tlaugh: \"reaction-icon_laugh\",\n\twonder: \"reaction-icon_wonder\",\n\tcry: \"reaction-icon_cry\",\n\tangry: \"reaction-icon_angry\",\n\tfacepalm: \"reaction-icon_facepalm\",\n\tkiss: \"reaction-icon_kiss\",\n});\n\nexport const reactionSelectEvents = Object.freeze({\n\tshow: 'show',\n\thide: 'hide',\n\tmouseenter: 'mouseenter',\n\tmouseleave: 'mouseleave',\n\tselect: 'select',\n\ttouchenter: 'touchenter',\n\ttouchleave: 'touchleave',\n\ttouchend: 'touchend',\n\ttouchmove: 'touchmove',\n});\n\ntype TouchEventHandler = (e: TouchEvent) => void;\n\ntype ReactionsSelectForcePosition = {\n\tleft: number;\n\ttop: number;\n}\n\ntype ReactionsSelectPosition = | HTMLElement | ReactionsSelectForcePosition;\ntype ReactionsSelectOptions = {\n\tname?: string;\n\tposition: ReactionsSelectPosition;\n\tcontainerClassname?: string;\n}\n\n/*\n* Emitted events\n* show,\n* hide,\n* select,\n* mouseleave,\n* mouseenter,\n* touchenter,\n* touchleave,\n* touchend\n*/\n\nexport class ReactionsSelect extends EventEmitter\n{\n\t#name: string;\n\t#containerClassname: string = '';\n\t#position: ReactionsSelectPosition | null;\n\t#baseClassname: string;\n\t#popupContentClassname: string;\n\t#reactionsPopup: Popup | null;\n\t#popupContent: HTMLElement | null = null;\n\t#availableReactions: string[];\n\t#hoveredElement: HTMLElement | null;\n\t#touchMoveHandler: TouchEventHandler | null = null;\n\t#touchEndHandler: TouchEventHandler | null = null;\n\t#mouseEnterHandler: MouseEvent | null = null;\n\t#mouseLeaveHandler: MouseEvent | null = null;\n\t#isPopupTouched: boolean = false;\n\t#showClassname: null;\n\t#hideClassname: null;\n\n\tconstructor(options: ReactionsSelectOptions = {name: 'ReactionsSelect'})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('UI:ReactionsSelect');\n\n\t\tthis.#name = Type.isString(options.name) ? options.name : this.#generateName();\n\t\tthis.#baseClassname = 'reaction-select';\n\t\tthis.#popupContentClassname = `${this.#baseClassname}_container`;\n\t\tthis.#availableReactions = Object.keys(reactionType);\n\t\tthis.#reactionsPopup = null;\n\t\tthis.#containerClassname = Type.isString(options.containerClassname) ? options.containerClassname : '';\n\t\tthis.#position = this.#checkPositionOption(options.position) ? options.position : null;\n\t\tthis.#hoveredElement = null;\n\t\tthis.#showClassname = 'reactions-popup-show';\n\t\tthis.#hideClassname = 'reactions-popup-close';\n\n\t\tif (Browser.isMobile())\n\t\t{\n\t\t\tthis.#touchMoveHandler = this.#handleTouchMove.bind(this);\n\t\t\tthis.#touchEndHandler = this.#handleTouchEnd.bind(this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#mouseEnterHandler = this.#handleMouseEnter.bind(this);\n\t\t\tthis.#mouseLeaveHandler = this.#handleMouseLeave.bind(this);\n\t\t\tthis.#touchMoveHandler = null;\n\t\t\tthis.#touchEndHandler = null;\n\t\t}\n\t}\n\n\tstatic Events = reactionSelectEvents;\n\tstatic getLottieAnimation(reactionName?: string): Object | null\n\t{\n\t\tif (!reactionName)\n\t\t{\n\t\t\treturn reactionLottieAnimations;\n\t\t}\n\n\t\treturn reactionLottieAnimations[reactionName] || null;\n\t}\n\n\tstatic getReactionCssClass(reactionName?: string): Object | null\n\t{\n\t\tif (!reactionName)\n\t\t{\n\t\t\treturn reactionCssClass;\n\t\t}\n\n\t\treturn reactionCssClass[reactionName] || null;\n\t}\n\n\tshow(): void\n\t{\n\t\tif (!this.#reactionsPopup)\n\t\t{\n\t\t\tthis.#createReactionsPopup();\n\t\t}\n\n\t\tif (Browser.isMobile())\n\t\t{\n\t\t\tthis.#disableScrollOnMobile();\n\t\t\tEvent.bind(window, 'touchmove', this.#touchMoveHandler);\n\t\t\tEvent.bind(window, 'touchend', this.#touchEndHandler);\n\t\t}\n\n\t\tthis.#reactionsPopup.show();\n\n\t\tthis.emit(ReactionsSelect.Events.show);\n\t}\n\n\thide(): void\n\t{\n\t\tif (this.#reactionsPopup)\n\t\t{\n\t\t\tEvent.unbind(this.#popupContent, 'mouseleave', this.#mouseLeaveHandler);\n\t\t\tEvent.unbind(this.#popupContent, 'mouseenter', this.#mouseEnterHandler);\n\t\t\tEvent.unbind(window, 'touchmove', this.#touchMoveHandler);\n\t\t\tEvent.unbind(window, 'touchend', this.#touchEndHandler);\n\n\t\t\tthis.#reactionsPopup.close();\n\t\t\tthis.#reactionsPopup = null;\n\t\t\tthis.#popupContent = null;\n\n\t\t\tthis.#enableScrollOnMobile();\n\t\t}\n\n\t\tthis.emit(ReactionsSelect.Events.hide);\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.#reactionsPopup && this.#reactionsPopup.isShown();\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.#name;\n\t}\n\n\t#createReactionsPopup()\n\t{\n\t\tthis.#reactionsPopup = new Popup({\n\t\t\tid: 'reactions-list-'+this.#name,\n\t\t\tcontent: this.#renderPopupContent(),\n\t\t\t...this.#getPopupPositionOptions(),\n\t\t\tnoAllPaddings: true,\n\t\t\tborderRadius: '25px',\n\t\t\tanimation: {\n\t\t\t\tshowClassName: this.#showClassname,\n\t\t\t\tcloseClassName: this.#hideClassname,\n\t\t\t\tcloseAnimationType: 'animation',\n\t\t\t},\n\t\t\tcacheable: false,\n\t\t\tdisableScroll: Browser.isMobile(),\n\t\t\tclassName: 'reaction-select-popup',\n\t\t});\n\t}\n\n\t#renderPopupContent(): HTMLElement\n\t{\n\t\tthis.#popupContent = Tag.render`\n\t\t\t<div class=\"${this.#getPopupContentClassname()}\">\n\t\t\t\t${this.#renderReactionsList()}\n\t\t\t</div>\n\t\t`;\n\n\t\tif (!Browser.isMobile())\n\t\t{\n\t\t\tEvent.bind(this.#popupContent, 'mouseleave', this.#mouseLeaveHandler);\n\t\t\tEvent.bind(this.#popupContent, 'mouseenter', this.#mouseEnterHandler);\n\t\t}\n\n\t\treturn this.#popupContent;\n\t}\n\n\t#getPopupContentClassname(): string\n\t{\n\t\tconst baseClassname = `${this.#popupContentClassname}`;\n\t\tconst mobileDeviceModifier = `${Browser.isMobile() ? '--mobile' : ''}`;\n\n\t\treturn [\n\t\t\tbaseClassname,\n\t\t\tthis.#containerClassname,\n\t\t\tmobileDeviceModifier\n\t\t].join(' ');\n\t}\n\n\t#renderReactionsList(): HTMLElement\n\t{\n\t\tconst container: HTMLElement = Tag.render`<div class=\"${this.#baseClassname}_list\"></div>`;\n\n\t\tthis.#availableReactions.forEach((reactionName) => {\n\t\t\tDom.append(this.#renderReactionItem(reactionName), container);\n\t\t});\n\n\t\treturn container;\n\t}\n\n\t#renderReactionItem(reactionName: string): HTMLElement\n\t{\n\t\tconst className = `${this.#baseClassname}_reaction-icon-item`;\n\t\tconst reactionTitle = Loc.getMessage(`REACTIONS_SELECT_${reactionName.toUpperCase()}`);\n\t\tconst reactionIcon = this.#renderAnimatedReactionIcon(reactionName);\n\t\tconst reactionHoverArea = this.#renderReactionItemHoverArea(reactionName);\n\n\t\treturn Tag.render`\n\t\t\t<div\n\t\t\t\tclass=\"${className}\"\n\t\t\t\tdata-reaction=\"${reactionName}\"\n\t\t\t\ttitle=\"${reactionTitle}\"\n\t\t\t>\n\t\t\t\t${reactionHoverArea}\n\t\t\t\t${reactionIcon}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#renderAnimatedReactionIcon(reactionName: string): HTMLElement\n\t{\n\t\tconst reactionIcon = Tag.render`<div class=\"${this.#baseClassname}_reaction-icon\"></div>`;\n\n\t\tLottie.loadAnimation({\n\t\t\trenderer: 'svg',\n\t\t\tcontainer: reactionIcon,\n\t\t\tanimationData: reactionLottieAnimations[reactionName],\n\t\t});\n\n\t\treturn reactionIcon;\n\t}\n\n\t#renderReactionItemHoverArea(reactionName: string): HTMLElement\n\t{\n\t\tconst className = `${this.#baseClassname}_reaction-hover-area`;\n\t\tconst reactionHoverArea: HTMLElement= Tag.render`<div class=\"${className}\"></div>`;\n\n\t\tif (!Browser.isMobile())\n\t\t{\n\t\t\tEvent.bind(reactionHoverArea, 'click', () => {\n\t\t\t\tthis.emit(ReactionsSelect.Events.select, {\n\t\t\t\t\treaction: reactionName,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn reactionHoverArea;\n\t}\n\n\t#getPopupPositionForBindElement()\n\t{\n\t\tconst leftShift = -50;\n\t\tconst topShift = -60;\n\n\t\tconst {left = 0, top = 0} = Dom.getPosition(this.#position);\n\n\t\treturn {left: left + leftShift, top: top + topShift};\n\t}\n\n\t#getPopupPositionOptions(): Object\n\t{\n\t\tif (Type.isPlainObject(this.#position) && this.#position?.left && this.#position?.top)\n\t\t{\n\t\t\treturn {\n\t\t\t\tbindElement: this.#position,\n\t\t\t};\n\t\t}\n\t\telse if (Type.isDomNode(this.#position))\n\t\t{\n\t\t\treturn {\n\t\t\t\tbindElement: this.#getPopupPositionForBindElement(),\n\t\t\t};\n\t\t}\n\n\t\treturn {};\n\t}\n\n\t#handleTouchMove(e: TouchEvent): void\n\t{\n\t\tconst reactionHoverArea = this.#getReactionHoverAreaFromTouch(e);\n\t\tconst isCurrentTouchOnPopup = this.#checkIsPopupTouched(e);\n\n\t\tif (this.#isPopupTouched === false && isCurrentTouchOnPopup === true)\n\t\t{\n\t\t\tthis.emit( ReactionsSelect.Events.touchenter);\n\t\t}\n\t\telse if (this.#isPopupTouched === true && isCurrentTouchOnPopup === false)\n\t\t{\n\t\t\tthis.emit(ReactionsSelect.Events.mouseleave);\n\t\t}\n\n\t\tthis.#isPopupTouched = isCurrentTouchOnPopup;\n\n\t\tif (reactionHoverArea === null)\n\t\t{\n\t\t\tDom.removeClass(this.#hoveredElement, '--hover');\n\t\t\tthis.#hoveredElement = null;\n\t\t}\n\t\telse if (this.#hoveredElement !== reactionHoverArea)\n\t\t{\n\t\t\tDom.removeClass(this.#hoveredElement, '--hover');\n\t\t\tthis.#hoveredElement = reactionHoverArea;\n\t\t\tDom.addClass(this.#hoveredElement, '--hover');\n\t\t}\n\n\t\tthis.emit(ReactionsSelect.Events.touchmove);\n\t}\n\n\t#handleTouchEnd(e: TouchEvent): void\n\t{\n\t\tconst reactionHoverArea = this.#hoveredElement || this.#getReactionHoverAreaFromTouch(e);\n\n\t\tconst reactionName = reactionHoverArea?.parentElement.getAttribute('data-reaction');\n\n\t\tif (reactionName)\n\t\t{\n\t\t\tthis.emit(ReactionsSelect.Events.select, {\n\t\t\t\treaction: reactionName || null,\n\t\t\t});\n\t\t}\n\t\tthis.emit(ReactionsSelect.Events.touchend);\n\t}\n\n\t#handleMouseLeave(e: MouseEvent): void\n\t{\n\t\tthis.emit(ReactionsSelect.Events.mouseleave, e);\n\t}\n\n\t#handleMouseEnter(e: MouseEvent): void\n\t{\n\t\tthis.emit(ReactionsSelect.Events.mouseenter, e);\n\t}\n\n\t#getReactionHoverAreaFromTouch(e: TouchEvent): HTMLElement | null\n\t{\n\t\tconst element = this.#getElementFromTouchEvent(e);\n\n\t\treturn this.#isReactionHoverArea(element) ? element : null;\n\t}\n\n\t#isReactionHoverArea(element: Element | null): boolean\n\t{\n\t\treturn element && element.classList.contains(`reaction-select_reaction-hover-area`);\n\t}\n\n\t#touchMoveScrollListener(e)\n\t{\n\t\te.preventDefault();\n\t}\n\n\t#disableScrollOnMobile(): void\n\t{\n\t\tif (!Browser.isMobile())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (app)\n\t\t{\n\t\t\tapp.exec('disableTabScrolling');\n\t\t}\n\t\tthis.emit('onPullDownDisable');\n\t\tEvent.bind(window, 'touchmove', this.#touchMoveScrollListener, { passive: false });\n\t}\n\n\t#enableScrollOnMobile(): void\n\t{\n\t\tif (!Browser.isMobile())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tdocument.removeEventListener('touchmove', this.#touchMoveScrollListener, { passive: false });\n\t\tthis.emit('onPullDownEnable');\n\t}\n\n\t#generateName(): string\n\t{\n\t\tconst num = Math.round(Math.random() * 1000);\n\n\t\treturn `ReactionsSelect${num}`;\n\t}\n\n\t#checkPositionOption(position: ReactionsSelectPosition): boolean\n\t{\n\t\tif (position === undefined)\n\t\t{\n\t\t\tconsole.warn('UI.ReactionSelect: \"position\" parameter is required');\n\t\t\treturn false;\n\t\t}\n\t\telse if (!Type.isDomNode(position) && !Type.isPlainObject(position))\n\t\t{\n\t\t\tconsole.warn('UI.ReactionSelect: \"position\" parameter must be an Object or an HTMLElement');\n\t\t\treturn false;\n\t\t}\n\t\telse if (\n\t\t\t!Type.isPlainObject(position)\n\t\t\t&& !Type.isDomNode(position)\n\t\t)\n\t\t{\n\t\t\tconsole.warn('UI.ReactionSelect: \"position\" must be HTMLElement');\n\t\t\treturn false;\n\t\t}\n\t\telse if (\n\t\t\tType.isPlainObject(position) && !Type.isNumber(position.left)\n\t\t)\n\t\t{\n\t\t\tconsole.warn('UI.ReactionSelect: position.left must be a number');\n\t\t\treturn false;\n\t\t}\n\t\telse if (Type.isPlainObject(position) && !Type.isNumber(position.top))\n\t\t{\n\t\t\tconsole.warn('UI.ReactionSelect: position.top must be a number');\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t#getElementFromTouchEvent(e: TouchEvent): HTMLElement | null\n\t{\n\t\tif (!e || !e.touches || e.touches.length < 1)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\tconst touchX = e.touches.item(0)?.pageX;\n\t\tconst touchY = e.touches.item(0)?.pageY;\n\n\t\treturn document.elementFromPoint(touchX, touchY);\n\t}\n\n\t#checkIsPopupTouched(e: TouchEvent): boolean\n\t{\n\t\tconst element = this.#getElementFromTouchEvent(e);\n\n\t\treturn Boolean(element.closest(`.${this.#popupContentClassname}`));\n\t}\n}"],"names":["reactionType","Object","freeze","like","kiss","laugh","wonder","cry","angry","facepalm","reactionLottieAnimations","likeAnimatedEmojiData","laughAnimatedEmojiData","wonderAnimatedEmojiData","cryAnimatedEmojiData","angryAnimatedEmojiData","facepalmAnimatedEmojiData","admireAnimatedEmojiData","reactionCssClass","reactionSelectEvents","show","hide","mouseenter","mouseleave","select","touchenter","touchleave","touchend","touchmove","ReactionsSelect","EventEmitter","constructor","options","name","setEventNamespace","Type","isString","keys","containerClassname","position","Browser","isMobile","bind","getLottieAnimation","reactionName","getReactionCssClass","Event","window","emit","Events","unbind","close","isShown","getName","Popup","id","content","noAllPaddings","borderRadius","animation","showClassName","closeClassName","closeAnimationType","cacheable","disableScroll","className","Tag","render","baseClassname","mobileDeviceModifier","join","container","forEach","Dom","append","reactionTitle","Loc","getMessage","toUpperCase","reactionIcon","reactionHoverArea","Lottie","loadAnimation","renderer","animationData","reaction","leftShift","topShift","left","top","getPosition","isPlainObject","bindElement","isDomNode","e","isCurrentTouchOnPopup","removeClass","addClass","parentElement","getAttribute","element","classList","contains","preventDefault","app","exec","passive","document","removeEventListener","num","Math","round","random","undefined","console","warn","isNumber","touches","length","touchX","item","pageX","touchY","pageY","elementFromPoint","Boolean","closest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings