{"version":3,"file":"jquery.ztree.exedit.mjs","sources":["../../../../../../packages/components/tree/js/jquery.ztree.exedit.js"],"sourcesContent":["/*\r\n * JQuery zTree exedit\r\n * v3.5.48\r\n * http://treejs.cn/\r\n *\r\n * Copyright (c) 2010 Hunter.z\r\n *\r\n * Licensed same as jquery - MIT License\r\n * http://www.opensource.org/licenses/mit-license.php\r\n *\r\n * Date: 2020-11-21\r\n */\r\nimport {isClient} from '@vueuse/core'\r\n\r\nexport const ztreeExedit = ($) => {\r\n  //default consts of exedit\r\n  var _consts = {\r\n      event: {\r\n        DRAG: \"ztree_drag\",\r\n        DROP: \"ztree_drop\",\r\n        RENAME: \"ztree_rename\",\r\n        DRAGMOVE: \"ztree_dragmove\"\r\n      },\r\n      id: {\r\n        EDIT: \"_edit\",\r\n        INPUT: \"_input\",\r\n        REMOVE: \"_remove\"\r\n      },\r\n      move: {\r\n        TYPE_INNER: \"inner\",\r\n        TYPE_PREV: \"prev\",\r\n        TYPE_NEXT: \"next\"\r\n      },\r\n      node: {\r\n        CURSELECTED_EDIT: \"curSelectedNode_Edit\",\r\n        TMPTARGET_TREE: \"tmpTargetzTree\",\r\n        TMPTARGET_NODE: \"tmpTargetNode\"\r\n      }\r\n    },\r\n    //default setting of exedit\r\n    _setting = {\r\n      edit: {\r\n        enable: false,\r\n        editNameSelectAll: false,\r\n        showRemoveBtn: true,\r\n        showRenameBtn: true,\r\n        removeTitle: \"remove\",\r\n        renameTitle: \"rename\",\r\n        drag: {\r\n          autoExpandTrigger: false,\r\n          isCopy: true,\r\n          isMove: true,\r\n          prev: true,\r\n          next: true,\r\n          inner: true,\r\n          minMoveSize: 5,\r\n          borderMax: 10,\r\n          borderMin: -5,\r\n          maxShowNodeNum: 5,\r\n          autoOpenTime: 500\r\n        }\r\n      },\r\n      view: {\r\n        addHoverDom: null,\r\n        removeHoverDom: null\r\n      },\r\n      callback: {\r\n        beforeDrag: null,\r\n        beforeDragOpen: null,\r\n        beforeDrop: null,\r\n        beforeEditName: null,\r\n        beforeRename: null,\r\n        onDrag: null,\r\n        onDragMove: null,\r\n        onDrop: null,\r\n        onRename: null\r\n      }\r\n    },\r\n    //default root of exedit\r\n    _initRoot = function (setting) {\r\n      var r = data.getRoot(setting), rs = data.getRoots();\r\n      r.curEditNode = null;\r\n      r.curEditInput = null;\r\n      r.curHoverNode = null;\r\n      r.dragFlag = 0;\r\n      r.dragNodeShowBefore = [];\r\n      r.dragMaskList = new Array();\r\n      rs.showHoverDom = true;\r\n    },\r\n    //default cache of exedit\r\n    _initCache = function (treeId) {\r\n    },\r\n    //default bind event of exedit\r\n    _bindEvent = function (setting) {\r\n      var o = setting.treeObj;\r\n      var c = consts.event;\r\n      o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) {\r\n        tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]);\r\n      });\r\n\r\n      o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) {\r\n        tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]);\r\n      });\r\n\r\n      o.bind(c.DRAGMOVE, function (event, srcEvent, treeId, treeNodes) {\r\n        tools.apply(setting.callback.onDragMove, [srcEvent, treeId, treeNodes]);\r\n      });\r\n\r\n      o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) {\r\n        tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]);\r\n      });\r\n    },\r\n    _unbindEvent = function (setting) {\r\n      var o = setting.treeObj;\r\n      var c = consts.event;\r\n      o.unbind(c.RENAME);\r\n      o.unbind(c.DRAG);\r\n      o.unbind(c.DRAGMOVE);\r\n      o.unbind(c.DROP);\r\n    },\r\n    //default event proxy of exedit\r\n    _eventProxy = function (e) {\r\n      var target = e.target,\r\n        setting = data.getSetting(e.data.treeId),\r\n        relatedTarget = e.relatedTarget,\r\n        tId = \"\", node = null,\r\n        nodeEventType = \"\", treeEventType = \"\",\r\n        nodeEventCallback = null, treeEventCallback = null,\r\n        tmp = null;\r\n\r\n      if (tools.eqs(e.type, \"mouseover\")) {\r\n        tmp = tools.getMDom(setting, target, [{tagName: \"label\", attrName: \"treeNode\" + consts.id.LABEL}]);\r\n        if (tmp) {\r\n          tId = tools.getNodeMainDom(tmp).id;\r\n          nodeEventType = \"hoverOverNode\";\r\n        }\r\n      } else if (tools.eqs(e.type, \"mouseout\")) {\r\n        tmp = tools.getMDom(setting, relatedTarget, [{tagName: \"label\", attrName: \"treeNode\" + consts.id.LABEL}]);\r\n        if (!tmp) {\r\n          tId = \"remove\";\r\n          nodeEventType = \"hoverOutNode\";\r\n        }\r\n      } else if (tools.eqs(e.type, \"mousedown\")) {\r\n        tmp = tools.getMDom(setting, target, [{tagName: \"a\", attrName: \"treeNode\" + consts.id.A}]);\r\n        if (tmp) {\r\n          tId = tools.getNodeMainDom(tmp).id;\r\n          nodeEventType = \"mousedownNode\";\r\n        }\r\n      }\r\n      if (tId.length > 0) {\r\n        node = data.getNodeCache(setting, tId);\r\n        switch (nodeEventType) {\r\n          case \"mousedownNode\" :\r\n            nodeEventCallback = _handler.onMousedownNode;\r\n            break;\r\n          case \"hoverOverNode\" :\r\n            nodeEventCallback = _handler.onHoverOverNode;\r\n            break;\r\n          case \"hoverOutNode\" :\r\n            nodeEventCallback = _handler.onHoverOutNode;\r\n            break;\r\n        }\r\n      }\r\n      var proxyResult = {\r\n        stop: false,\r\n        node: node,\r\n        nodeEventType: nodeEventType,\r\n        nodeEventCallback: nodeEventCallback,\r\n        treeEventType: treeEventType,\r\n        treeEventCallback: treeEventCallback\r\n      };\r\n      return proxyResult\r\n    },\r\n    //default init node of exedit\r\n    _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {\r\n      if (!n) return;\r\n      n.isHover = false;\r\n      n.editNameFlag = false;\r\n    },\r\n    //update zTreeObj, add method of edit\r\n    _zTreeTools = function (setting, zTreeTools) {\r\n      zTreeTools.cancelEditName = function (newName) {\r\n        var root = data.getRoot(this.setting);\r\n        if (!root.curEditNode) return;\r\n        view.cancelCurEditNode(this.setting, newName ? newName : null, true);\r\n      }\r\n      zTreeTools.copyNode = function (targetNode, node, moveType, isSilent) {\r\n        if (!node) return null;\r\n        var isParent = data.nodeIsParent(setting, targetNode);\r\n        if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null;\r\n        var _this = this,\r\n          newNode = tools.clone(node);\r\n        if (!targetNode) {\r\n          targetNode = null;\r\n          moveType = consts.move.TYPE_INNER;\r\n        }\r\n        if (moveType == consts.move.TYPE_INNER) {\r\n          function copyCallback() {\r\n            view.addNodes(_this.setting, targetNode, -1, [newNode], isSilent);\r\n          }\r\n\r\n          if (tools.canAsync(this.setting, targetNode)) {\r\n            view.asyncNode(this.setting, targetNode, isSilent, copyCallback);\r\n          } else {\r\n            copyCallback();\r\n          }\r\n        } else {\r\n          view.addNodes(this.setting, targetNode.parentNode, -1, [newNode], isSilent);\r\n          view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent);\r\n        }\r\n        return newNode;\r\n      }\r\n      zTreeTools.editName = function (node) {\r\n        if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return;\r\n        if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true);\r\n        view.editNode(this.setting, node)\r\n      }\r\n      zTreeTools.moveNode = function (targetNode, node, moveType, isSilent) {\r\n        if (!node) return node;\r\n        var isParent = data.nodeIsParent(setting, targetNode);\r\n        if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) {\r\n          return null;\r\n        } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find(\"#\" + targetNode.tId).length > 0)) {\r\n          return null;\r\n        } else if (!targetNode) {\r\n          targetNode = null;\r\n        }\r\n        var _this = this;\r\n\r\n        function moveCallback() {\r\n          view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent);\r\n        }\r\n\r\n        if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) {\r\n          view.asyncNode(this.setting, targetNode, isSilent, moveCallback);\r\n        } else {\r\n          moveCallback();\r\n        }\r\n        return node;\r\n      }\r\n      zTreeTools.setEditable = function (editable) {\r\n        this.setting.edit.enable = editable;\r\n        return this.refresh();\r\n      }\r\n    },\r\n    //method of operate data\r\n    _data = {\r\n      setSonNodeLevel: function (setting, parentNode, node) {\r\n        if (!node) return;\r\n        var children = data.nodeChildren(setting, node);\r\n        var oldLevel = node.level;\r\n        node.level = (parentNode) ? parentNode.level + 1 : 0;\r\n        view.repairNodeLevelClass(setting, node, oldLevel);\r\n\r\n        if (!children) return;\r\n        for (var i = 0, l = children.length; i < l; i++) {\r\n          if (children[i]) data.setSonNodeLevel(setting, node, children[i]);\r\n        }\r\n      }\r\n    },\r\n    //method of event proxy\r\n    _event = {},\r\n    //method of event handler\r\n    _handler = {\r\n      onHoverOverNode: function (event, node) {\r\n        var setting = data.getSetting(event.data.treeId),\r\n          root = data.getRoot(setting);\r\n        if (root.curHoverNode != node) {\r\n          _handler.onHoverOutNode(event);\r\n        }\r\n        root.curHoverNode = node;\r\n        view.addHoverDom(setting, node);\r\n      },\r\n      onHoverOutNode: function (event, node) {\r\n        var setting = data.getSetting(event.data.treeId),\r\n          root = data.getRoot(setting);\r\n        if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) {\r\n          view.removeTreeDom(setting, root.curHoverNode);\r\n          root.curHoverNode = null;\r\n        }\r\n      },\r\n      onMousedownNode: function (eventMouseDown, _node) {\r\n        var i, l,\r\n          setting = data.getSetting(eventMouseDown.data.treeId),\r\n          root = data.getRoot(setting), roots = data.getRoots();\r\n        //right click can't drag & drop\r\n        if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true;\r\n\r\n        //input of edit node name can't drag & drop\r\n        var target = eventMouseDown.target,\r\n          _nodes = data.getRoot(setting).curSelectedList,\r\n          nodes = [];\r\n        if (!data.isSelectedNode(setting, _node)) {\r\n          nodes = [_node];\r\n        } else {\r\n          for (i = 0, l = _nodes.length; i < l; i++) {\r\n            if (_nodes[i].editNameFlag && tools.eqs(target.tagName, \"input\") && target.getAttribute(\"treeNode\" + consts.id.INPUT) !== null) {\r\n              return true;\r\n            }\r\n            nodes.push(_nodes[i]);\r\n            if (nodes[0].parentTId !== _nodes[i].parentTId) {\r\n              nodes = [_node];\r\n              break;\r\n            }\r\n          }\r\n        }\r\n\r\n        view.editNodeBlur = true;\r\n        view.cancelCurEditNode(setting);\r\n\r\n        var doc = $(setting.treeObj.get(0).ownerDocument),\r\n          body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget,\r\n          isOtherTree = false,\r\n          targetSetting = setting,\r\n          sourceSetting = setting,\r\n          preNode, nextNode,\r\n          preTmpTargetNodeId = null,\r\n          preTmpMoveType = null,\r\n          tmpTargetNodeId = null,\r\n          moveType = consts.move.TYPE_INNER,\r\n          mouseDownX = eventMouseDown.clientX,\r\n          mouseDownY = eventMouseDown.clientY,\r\n          startTime = (new Date()).getTime();\r\n\r\n        if (tools.uCanDo(setting)) {\r\n          doc.bind(\"mousemove\", _docMouseMove);\r\n        }\r\n\r\n        function _docMouseMove(event) {\r\n          //avoid start drag after click node\r\n          if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.edit.drag.minMoveSize\r\n            && Math.abs(mouseDownY - event.clientY) < setting.edit.drag.minMoveSize) {\r\n            return true;\r\n          }\r\n          var i, l, tmpNode, tmpDom, tmpNodes;\r\n          body.css(\"cursor\", \"pointer\");\r\n\r\n          if (root.dragFlag == 0) {\r\n            if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) {\r\n              _docMouseUp(event);\r\n              return true;\r\n            }\r\n\r\n            for (i = 0, l = nodes.length; i < l; i++) {\r\n              if (i == 0) {\r\n                root.dragNodeShowBefore = [];\r\n              }\r\n              tmpNode = nodes[i];\r\n              if (data.nodeIsParent(setting, tmpNode) && tmpNode.open) {\r\n                view.expandCollapseNode(setting, tmpNode, !tmpNode.open);\r\n                root.dragNodeShowBefore[tmpNode.tId] = true;\r\n              } else {\r\n                root.dragNodeShowBefore[tmpNode.tId] = false;\r\n              }\r\n            }\r\n\r\n            root.dragFlag = 1;\r\n            roots.showHoverDom = false;\r\n            tools.showIfameMask(setting, true);\r\n\r\n            //sort\r\n            var isOrder = true, lastIndex = -1;\r\n            if (nodes.length > 1) {\r\n              var pNodes = nodes[0].parentTId ? data.nodeChildren(setting, nodes[0].getParentNode()) : data.getNodes(setting);\r\n              tmpNodes = [];\r\n              for (i = 0, l = pNodes.length; i < l; i++) {\r\n                if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) {\r\n                  if (isOrder && lastIndex > -1 && (lastIndex + 1) !== i) {\r\n                    isOrder = false;\r\n                  }\r\n                  tmpNodes.push(pNodes[i]);\r\n                  lastIndex = i;\r\n                }\r\n                if (nodes.length === tmpNodes.length) {\r\n                  nodes = tmpNodes;\r\n                  break;\r\n                }\r\n              }\r\n            }\r\n            if (isOrder) {\r\n              preNode = nodes[0].getPreNode();\r\n              nextNode = nodes[nodes.length - 1].getNextNode();\r\n            }\r\n\r\n            //set node in selected\r\n            curNode = $$(\"<ul class='zTreeDragUL'></ul>\", setting);\r\n            for (i = 0, l = nodes.length; i < l; i++) {\r\n              tmpNode = nodes[i];\r\n              tmpNode.editNameFlag = false;\r\n              view.selectNode(setting, tmpNode, i > 0);\r\n              view.removeTreeDom(setting, tmpNode);\r\n\r\n              if (i > setting.edit.drag.maxShowNodeNum - 1) {\r\n                continue;\r\n              }\r\n\r\n              tmpDom = $$(\"<li id='\" + tmpNode.tId + \"_tmp'></li>\", setting);\r\n              tmpDom.append($$(tmpNode, consts.id.A, setting).clone());\r\n              tmpDom.css(\"padding\", \"0\");\r\n              tmpDom.children(\"#\" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED);\r\n              curNode.append(tmpDom);\r\n              if (i == setting.edit.drag.maxShowNodeNum - 1) {\r\n                tmpDom = $$(\"<li id='\" + tmpNode.tId + \"_moretmp'><a>  ...  </a></li>\", setting);\r\n                curNode.append(tmpDom);\r\n              }\r\n            }\r\n            curNode.attr(\"id\", nodes[0].tId + consts.id.UL + \"_tmp\");\r\n            curNode.addClass(setting.treeObj.attr(\"class\"));\r\n            curNode.appendTo(body);\r\n\r\n            tmpArrow = $$(\"<span class='tmpzTreeMove_arrow'></span>\", setting);\r\n            tmpArrow.attr(\"id\", \"zTreeMove_arrow_tmp\");\r\n            tmpArrow.appendTo(body);\r\n\r\n            setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]);\r\n          }\r\n\r\n          if (root.dragFlag == 1) {\r\n            if (tmpTarget && tmpArrow.attr(\"id\") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft() + 2) > ($(\"#\" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) {\r\n              var xT = $(\"#\" + tmpTargetNodeId + consts.id.A, tmpTarget);\r\n              event.target = (xT.length > 0) ? xT.get(0) : event.target;\r\n            } else if (tmpTarget) {\r\n              tmpTarget.removeClass(consts.node.TMPTARGET_TREE);\r\n              if (tmpTargetNodeId) $(\"#\" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + \"_\" + consts.move.TYPE_PREV)\r\n                .removeClass(consts.node.TMPTARGET_NODE + \"_\" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + \"_\" + _consts.move.TYPE_INNER);\r\n            }\r\n            tmpTarget = null;\r\n            tmpTargetNodeId = null;\r\n\r\n            //judge drag & drop in multi ztree\r\n            isOtherTree = false;\r\n            targetSetting = setting;\r\n            var settings = data.getSettings();\r\n            for (var s in settings) {\r\n              if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId\r\n                && (event.target.id == settings[s].treeId || $(event.target).parents(\"#\" + settings[s].treeId).length > 0)) {\r\n                isOtherTree = true;\r\n                targetSetting = settings[s];\r\n              }\r\n            }\r\n\r\n            var docScrollTop = doc.scrollTop(),\r\n              docScrollLeft = doc.scrollLeft(),\r\n              treeOffset = targetSetting.treeObj.offset(),\r\n              scrollHeight = targetSetting.treeObj.get(0).scrollHeight,\r\n              scrollWidth = targetSetting.treeObj.get(0).scrollWidth,\r\n              dTop = (event.clientY + docScrollTop - treeOffset.top),\r\n              dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop),\r\n              dLeft = (event.clientX + docScrollLeft - treeOffset.left),\r\n              dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft),\r\n              isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin),\r\n              isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin),\r\n              isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin),\r\n              isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin),\r\n              isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin,\r\n              isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0),\r\n              isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height() + 10) >= scrollHeight),\r\n              isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0),\r\n              isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width() + 10) >= scrollWidth);\r\n\r\n            if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) {\r\n              //get node <li> dom\r\n              var targetObj = event.target;\r\n              while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, \"li\") && targetObj.id != targetSetting.treeId) {\r\n                targetObj = targetObj.parentNode;\r\n              }\r\n\r\n              var canMove = true;\r\n              //don't move to self or children of self\r\n              for (i = 0, l = nodes.length; i < l; i++) {\r\n                tmpNode = nodes[i];\r\n                if (targetObj.id === tmpNode.tId) {\r\n                  canMove = false;\r\n                  break;\r\n                } else if ($$(tmpNode, setting).find(\"#\" + targetObj.id).length > 0) {\r\n                  canMove = false;\r\n                  break;\r\n                }\r\n              }\r\n              if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) {\r\n                tmpTarget = $(targetObj);\r\n                tmpTargetNodeId = targetObj.id;\r\n              }\r\n            }\r\n\r\n            //the mouse must be in zTree\r\n            tmpNode = nodes[0];\r\n            if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) {\r\n              //judge mouse move in root of ztree\r\n              if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) {\r\n                tmpTarget = targetSetting.treeObj;\r\n              }\r\n              //auto scroll top\r\n              if (isTop) {\r\n                targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() - 10);\r\n              } else if (isBottom) {\r\n                targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() + 10);\r\n              }\r\n              if (isLeft) {\r\n                targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() - 10);\r\n              } else if (isRight) {\r\n                targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + 10);\r\n              }\r\n              //auto scroll left\r\n              if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) {\r\n                targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + tmpTarget.offset().left - targetSetting.treeObj.offset().left);\r\n              }\r\n            }\r\n\r\n            curNode.css({\r\n              \"top\": (event.clientY + docScrollTop + 3) + \"px\",\r\n              \"left\": (event.clientX + docScrollLeft + 3) + \"px\"\r\n            });\r\n\r\n            var dX = 0;\r\n            var dY = 0;\r\n            if (tmpTarget && tmpTarget.attr(\"id\") != targetSetting.treeId) {\r\n              var tmpTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId),\r\n                isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy),\r\n                isPrev = !!(preNode && tmpTargetNodeId === preNode.tId),\r\n                isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId),\r\n                isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId),\r\n                canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev),\r\n                canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next),\r\n                canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !data.nodeIsParent(setting, tmpTargetNode)) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner);\r\n\r\n              function clearMove() {\r\n                tmpTarget = null;\r\n                tmpTargetNodeId = \"\";\r\n                moveType = consts.move.TYPE_INNER;\r\n                tmpArrow.css({\r\n                  \"display\": \"none\"\r\n                });\r\n                if (window.zTreeMoveTimer) {\r\n                  clearTimeout(window.zTreeMoveTimer);\r\n                  window.zTreeMoveTargetNodeTId = null\r\n                }\r\n              }\r\n\r\n              if (!canPrev && !canNext && !canInner) {\r\n                clearMove();\r\n              } else {\r\n                var tmpTargetA = $(\"#\" + tmpTargetNodeId + consts.id.A, tmpTarget),\r\n                  tmpNextA = tmpTargetNode.isLastNode ? null : $(\"#\" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()),\r\n                  tmpTop = tmpTargetA.offset().top,\r\n                  tmpLeft = tmpTargetA.offset().left,\r\n                  prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1)) : -1,\r\n                  nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0)) : -1,\r\n                  dY_percent = (event.clientY + docScrollTop - tmpTop) / tmpTargetA.height();\r\n\r\n                if ((prevPercent == 1 || dY_percent <= prevPercent && dY_percent >= -.2) && canPrev) {\r\n                  dX = 1 - tmpArrow.width();\r\n                  dY = tmpTop - tmpArrow.height() / 2;\r\n                  moveType = consts.move.TYPE_PREV;\r\n                } else if ((nextPercent == 0 || dY_percent >= nextPercent && dY_percent <= 1.2) && canNext) {\r\n                  dX = 1 - tmpArrow.width();\r\n                  dY = (tmpNextA == null || (data.nodeIsParent(setting, tmpTargetNode) && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height() / 2) : (tmpNextA.offset().top - tmpArrow.height() / 2);\r\n                  moveType = consts.move.TYPE_NEXT;\r\n                } else if (canInner) {\r\n                  dX = 5 - tmpArrow.width();\r\n                  dY = tmpTop;\r\n                  moveType = consts.move.TYPE_INNER;\r\n                } else {\r\n                  clearMove();\r\n                }\r\n\r\n                if (tmpTarget) {\r\n                  tmpArrow.css({\r\n                    \"display\": \"block\",\r\n                    \"top\": dY + \"px\",\r\n                    \"left\": (tmpLeft + dX) + \"px\"\r\n                  });\r\n                  tmpTargetA.addClass(consts.node.TMPTARGET_NODE + \"_\" + moveType);\r\n\r\n                  if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) {\r\n                    startTime = (new Date()).getTime();\r\n                  }\r\n                  if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && moveType == consts.move.TYPE_INNER) {\r\n                    var startTimer = true;\r\n                    if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) {\r\n                      clearTimeout(window.zTreeMoveTimer);\r\n                      window.zTreeMoveTargetNodeTId = null;\r\n                    } else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) {\r\n                      startTimer = false;\r\n                    }\r\n                    if (startTimer) {\r\n                      window.zTreeMoveTimer = setTimeout(function () {\r\n                        if (moveType != consts.move.TYPE_INNER) return;\r\n                        if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime\r\n                          && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) {\r\n                          view.switchNode(targetSetting, tmpTargetNode);\r\n                          if (targetSetting.edit.drag.autoExpandTrigger) {\r\n                            targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]);\r\n                          }\r\n                        }\r\n                      }, targetSetting.edit.drag.autoOpenTime + 50);\r\n                      window.zTreeMoveTargetNodeTId = tmpTargetNode.tId;\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n            } else {\r\n              moveType = consts.move.TYPE_INNER;\r\n              if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) {\r\n                tmpTarget.addClass(consts.node.TMPTARGET_TREE);\r\n              } else {\r\n                tmpTarget = null;\r\n              }\r\n              tmpArrow.css({\r\n                \"display\": \"none\"\r\n              });\r\n              if (window.zTreeMoveTimer) {\r\n                clearTimeout(window.zTreeMoveTimer);\r\n                window.zTreeMoveTargetNodeTId = null;\r\n              }\r\n            }\r\n            preTmpTargetNodeId = tmpTargetNodeId;\r\n            preTmpMoveType = moveType;\r\n\r\n            setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]);\r\n          }\r\n          return false;\r\n        }\r\n\r\n        doc.bind(\"mouseup\", _docMouseUp);\r\n\r\n        function _docMouseUp(event) {\r\n          if (window.zTreeMoveTimer) {\r\n            clearTimeout(window.zTreeMoveTimer);\r\n            window.zTreeMoveTargetNodeTId = null;\r\n          }\r\n          preTmpTargetNodeId = null;\r\n          preTmpMoveType = null;\r\n          doc.unbind(\"mousemove\", _docMouseMove);\r\n          doc.unbind(\"mouseup\", _docMouseUp);\r\n          doc.unbind(\"selectstart\", _docSelect);\r\n          body.css(\"cursor\", \"\");\r\n          if (tmpTarget) {\r\n            tmpTarget.removeClass(consts.node.TMPTARGET_TREE);\r\n            if (tmpTargetNodeId) $(\"#\" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + \"_\" + consts.move.TYPE_PREV)\r\n              .removeClass(consts.node.TMPTARGET_NODE + \"_\" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + \"_\" + _consts.move.TYPE_INNER);\r\n          }\r\n          tools.showIfameMask(setting, false);\r\n\r\n          roots.showHoverDom = true;\r\n          if (root.dragFlag == 0) return;\r\n          root.dragFlag = 0;\r\n\r\n          var i, l, tmpNode;\r\n          for (i = 0, l = nodes.length; i < l; i++) {\r\n            tmpNode = nodes[i];\r\n            if (data.nodeIsParent(setting, tmpNode) && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) {\r\n              view.expandCollapseNode(setting, tmpNode, !tmpNode.open);\r\n              delete root.dragNodeShowBefore[tmpNode.tId];\r\n            }\r\n          }\r\n\r\n          if (curNode) curNode.remove();\r\n          if (tmpArrow) tmpArrow.remove();\r\n\r\n          var isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy);\r\n          if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId == nodes[0].parentTId && moveType == consts.move.TYPE_INNER) {\r\n            tmpTarget = null;\r\n          }\r\n          if (tmpTarget) {\r\n            var dragTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId);\r\n            if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) {\r\n              view.selectNodes(sourceSetting, nodes);\r\n              return;\r\n            }\r\n            var newNodes = isCopy ? tools.clone(nodes) : nodes;\r\n\r\n            function dropCallback() {\r\n              if (isOtherTree) {\r\n                if (!isCopy) {\r\n                  for (var i = 0, l = nodes.length; i < l; i++) {\r\n                    view.removeNode(setting, nodes[i]);\r\n                  }\r\n                }\r\n                if (moveType == consts.move.TYPE_INNER) {\r\n                  view.addNodes(targetSetting, dragTargetNode, -1, newNodes);\r\n                } else {\r\n                  view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes);\r\n                }\r\n              } else {\r\n                if (isCopy && moveType == consts.move.TYPE_INNER) {\r\n                  view.addNodes(targetSetting, dragTargetNode, -1, newNodes);\r\n                } else if (isCopy) {\r\n                  view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes);\r\n                } else {\r\n                  if (moveType != consts.move.TYPE_NEXT) {\r\n                    for (i = 0, l = newNodes.length; i < l; i++) {\r\n                      view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);\r\n                    }\r\n                  } else {\r\n                    for (i = -1, l = newNodes.length - 1; i < l; l--) {\r\n                      view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              view.selectNodes(targetSetting, newNodes);\r\n\r\n              var a = $$(newNodes[0], setting).get(0);\r\n              view.scrollIntoView(setting, a);\r\n\r\n              setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]);\r\n            }\r\n\r\n            if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) {\r\n              view.asyncNode(targetSetting, dragTargetNode, false, dropCallback);\r\n            } else {\r\n              dropCallback();\r\n            }\r\n\r\n          } else {\r\n            view.selectNodes(sourceSetting, nodes);\r\n            setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]);\r\n          }\r\n        }\r\n\r\n        doc.bind(\"selectstart\", _docSelect);\r\n\r\n        function _docSelect() {\r\n          return false;\r\n        }\r\n\r\n        // 2018-03-30 FireFox has fixed this issue.\r\n        //Avoid FireFox's Bug\r\n        //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error.\r\n        // if(eventMouseDown.preventDefault) {\r\n        // \teventMouseDown.preventDefault();\r\n        // }\r\n        return true;\r\n      }\r\n    },\r\n    //method of tools for zTree\r\n    _tools = {\r\n      getAbs: function (obj) {\r\n        var oRect = obj.getBoundingClientRect(),\r\n          scrollTop = document.body.scrollTop + document.documentElement.scrollTop,\r\n          scrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\r\n        return [oRect.left + scrollLeft, oRect.top + scrollTop];\r\n      },\r\n      inputFocus: function (inputObj) {\r\n        if (inputObj.get(0)) {\r\n          inputObj.focus();\r\n          tools.setCursorPosition(inputObj.get(0), inputObj.val().length);\r\n        }\r\n      },\r\n      inputSelect: function (inputObj) {\r\n        if (inputObj.get(0)) {\r\n          inputObj.focus();\r\n          inputObj.select();\r\n        }\r\n      },\r\n      setCursorPosition: function (obj, pos) {\r\n        if (obj.setSelectionRange) {\r\n          obj.focus();\r\n          obj.setSelectionRange(pos, pos);\r\n        } else if (obj.createTextRange) {\r\n          var range = obj.createTextRange();\r\n          range.collapse(true);\r\n          range.moveEnd('character', pos);\r\n          range.moveStart('character', pos);\r\n          range.select();\r\n        }\r\n      },\r\n      showIfameMask: function (setting, showSign) {\r\n        var root = data.getRoot(setting);\r\n        //clear full mask\r\n        while (root.dragMaskList.length > 0) {\r\n          root.dragMaskList[0].remove();\r\n          root.dragMaskList.shift();\r\n        }\r\n        if (showSign) {\r\n          //show mask\r\n          var iframeList = $$(\"iframe\", setting);\r\n          for (var i = 0, l = iframeList.length; i < l; i++) {\r\n            var obj = iframeList.get(i),\r\n              r = tools.getAbs(obj),\r\n              dragMask = $$(\"<div id='zTreeMask_\" + i + \"' class='zTreeMask' style='top:\" + r[1] + \"px; left:\" + r[0] + \"px; width:\" + obj.offsetWidth + \"px; height:\" + obj.offsetHeight + \"px;'></div>\", setting);\r\n            dragMask.appendTo($$(\"body\", setting));\r\n            root.dragMaskList.push(dragMask);\r\n          }\r\n        }\r\n      }\r\n    },\r\n    //method of operate ztree dom\r\n    _view = {\r\n      addEditBtn: function (setting, node) {\r\n        if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) {\r\n          return;\r\n        }\r\n        if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) {\r\n          return;\r\n        }\r\n        var aObj = $$(node, consts.id.A, setting),\r\n          editStr = \"<span class='\" + consts.className.BUTTON + \" edit' id='\" + node.tId + consts.id.EDIT + \"' title='\" + tools.apply(setting.edit.renameTitle, [setting.treeId, node], setting.edit.renameTitle) + \"' treeNode\" + consts.id.EDIT + \" style='display:none;'></span>\";\r\n        aObj.append(editStr);\r\n\r\n        $$(node, consts.id.EDIT, setting).bind('click',\r\n          function () {\r\n            if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false;\r\n            view.editNode(setting, node);\r\n            return false;\r\n          }\r\n        ).show();\r\n      },\r\n      addRemoveBtn: function (setting, node) {\r\n        if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) {\r\n          return;\r\n        }\r\n        if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) {\r\n          return;\r\n        }\r\n        var aObj = $$(node, consts.id.A, setting),\r\n          removeStr = \"<span class='\" + consts.className.BUTTON + \" remove' id='\" + node.tId + consts.id.REMOVE + \"' title='\" + tools.apply(setting.edit.removeTitle, [setting.treeId, node], setting.edit.removeTitle) + \"' treeNode\" + consts.id.REMOVE + \" style='display:none;'></span>\";\r\n        aObj.append(removeStr);\r\n\r\n        $$(node, consts.id.REMOVE, setting).bind('click',\r\n          function () {\r\n            if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false;\r\n            view.removeNode(setting, node);\r\n            setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);\r\n            return false;\r\n          }\r\n        ).bind('mousedown',\r\n          function (eventMouseDown) {\r\n            return true;\r\n          }\r\n        ).show();\r\n      },\r\n      addHoverDom: function (setting, node) {\r\n        if (data.getRoots().showHoverDom) {\r\n          node.isHover = true;\r\n          if (setting.edit.enable) {\r\n            view.addEditBtn(setting, node);\r\n            view.addRemoveBtn(setting, node);\r\n          }\r\n          tools.apply(setting.view.addHoverDom, [setting.treeId, node]);\r\n        }\r\n      },\r\n      cancelCurEditNode: function (setting, forceName, isCancel) {\r\n        var root = data.getRoot(setting),\r\n          node = root.curEditNode;\r\n\r\n        if (node) {\r\n          var inputObj = root.curEditInput,\r\n            newName = forceName ? forceName : (isCancel ? data.nodeName(setting, node) : inputObj.val());\r\n          if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) {\r\n            return false;\r\n          }\r\n          data.nodeName(setting, node, newName);\r\n          var aObj = $$(node, consts.id.A, setting);\r\n          aObj.removeClass(consts.node.CURSELECTED_EDIT);\r\n          inputObj.unbind();\r\n          view.setNodeName(setting, node);\r\n          node.editNameFlag = false;\r\n          root.curEditNode = null;\r\n          root.curEditInput = null;\r\n          view.selectNode(setting, node, false);\r\n          setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]);\r\n        }\r\n        root.noSelection = true;\r\n        return true;\r\n      },\r\n      editNode: function (setting, node) {\r\n        var root = data.getRoot(setting);\r\n        view.editNodeBlur = false;\r\n        if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {\r\n          setTimeout(function () {\r\n            tools.inputFocus(root.curEditInput);\r\n          }, 0);\r\n          return;\r\n        }\r\n        node.editNameFlag = true;\r\n        view.removeTreeDom(setting, node);\r\n        view.cancelCurEditNode(setting);\r\n        view.selectNode(setting, node, false);\r\n        $$(node, consts.id.SPAN, setting).html(\"<input type=text class='rename' id='\" + node.tId + consts.id.INPUT + \"' treeNode\" + consts.id.INPUT + \" >\");\r\n        var inputObj = $$(node, consts.id.INPUT, setting);\r\n        inputObj.attr(\"value\", data.nodeName(setting, node));\r\n        if (setting.edit.editNameSelectAll) {\r\n          tools.inputSelect(inputObj);\r\n        } else {\r\n          tools.inputFocus(inputObj);\r\n        }\r\n\r\n        inputObj.bind('blur', function (event) {\r\n          if (!view.editNodeBlur) {\r\n            view.cancelCurEditNode(setting);\r\n          }\r\n        }).bind('keydown', function (event) {\r\n          if (event.keyCode == \"13\") {\r\n            view.editNodeBlur = true;\r\n            view.cancelCurEditNode(setting);\r\n          } else if (event.keyCode == \"27\") {\r\n            view.cancelCurEditNode(setting, null, true);\r\n          }\r\n        }).bind('click', function (event) {\r\n          return false;\r\n        }).bind('dblclick', function (event) {\r\n          return false;\r\n        });\r\n\r\n        $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT);\r\n        root.curEditInput = inputObj;\r\n        root.noSelection = false;\r\n        root.curEditNode = node;\r\n      },\r\n      moveNode: function (setting, targetNode, node, moveType, animateFlag, isSilent) {\r\n        var root = data.getRoot(setting);\r\n        if (targetNode == node) return;\r\n        if (setting.data.keep.leaf && targetNode && !data.nodeIsParent(setting, targetNode) && moveType == consts.move.TYPE_INNER) return;\r\n        var oldParentNode = (node.parentTId ? node.getParentNode() : root),\r\n          targetNodeIsRoot = (targetNode === null || targetNode == root);\r\n        if (targetNodeIsRoot && targetNode === null) targetNode = root;\r\n        if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER;\r\n        var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root);\r\n\r\n        if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) {\r\n          moveType = consts.move.TYPE_INNER;\r\n        }\r\n\r\n        if (moveType == consts.move.TYPE_INNER) {\r\n          if (targetNodeIsRoot) {\r\n            //parentTId of root node is null\r\n            node.parentTId = null;\r\n          } else {\r\n            if (!data.nodeIsParent(setting, targetNode)) {\r\n              data.nodeIsParent(setting, targetNode, true);\r\n              targetNode.open = !!targetNode.open;\r\n              view.setNodeLineIcos(setting, targetNode);\r\n            }\r\n            node.parentTId = targetNode.tId;\r\n          }\r\n        }\r\n\r\n        //move node Dom\r\n        var targetObj, target_ulObj;\r\n        if (targetNodeIsRoot) {\r\n          targetObj = setting.treeObj;\r\n          target_ulObj = targetObj;\r\n        } else {\r\n          if (!isSilent && moveType == consts.move.TYPE_INNER) {\r\n            view.expandCollapseNode(setting, targetNode, true, false);\r\n          } else if (!isSilent) {\r\n            view.expandCollapseNode(setting, targetNode.getParentNode(), true, false);\r\n          }\r\n          targetObj = $$(targetNode, setting);\r\n          target_ulObj = $$(targetNode, consts.id.UL, setting);\r\n          if (!!targetObj.get(0) && !target_ulObj.get(0)) {\r\n            var ulstr = [];\r\n            view.makeUlHtml(setting, targetNode, ulstr, '');\r\n            targetObj.append(ulstr.join(''));\r\n          }\r\n          target_ulObj = $$(targetNode, consts.id.UL, setting);\r\n        }\r\n        var nodeDom = $$(node, setting);\r\n        if (!nodeDom.get(0)) {\r\n          nodeDom = view.appendNodes(setting, node.level, [node], null, -1, false, true).join('');\r\n        } else if (!targetObj.get(0)) {\r\n          nodeDom.remove();\r\n        }\r\n        if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) {\r\n          target_ulObj.append(nodeDom);\r\n        } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) {\r\n          targetObj.before(nodeDom);\r\n        } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) {\r\n          targetObj.after(nodeDom);\r\n        }\r\n\r\n        //repair the data after move\r\n        var i, l,\r\n          tmpSrcIndex = -1,\r\n          tmpTargetIndex = 0,\r\n          oldNeighbor = null,\r\n          newNeighbor = null,\r\n          oldLevel = node.level;\r\n        var oldChildren = data.nodeChildren(setting, oldParentNode);\r\n        var targetParentChildren = data.nodeChildren(setting, targetParentNode);\r\n        var targetChildren = data.nodeChildren(setting, targetNode);\r\n        if (node.isFirstNode) {\r\n          tmpSrcIndex = 0;\r\n          if (oldChildren.length > 1) {\r\n            oldNeighbor = oldChildren[1];\r\n            oldNeighbor.isFirstNode = true;\r\n          }\r\n        } else if (node.isLastNode) {\r\n          tmpSrcIndex = oldChildren.length - 1;\r\n          oldNeighbor = oldChildren[tmpSrcIndex - 1];\r\n          oldNeighbor.isLastNode = true;\r\n        } else {\r\n          for (i = 0, l = oldChildren.length; i < l; i++) {\r\n            if (oldChildren[i].tId == node.tId) {\r\n              tmpSrcIndex = i;\r\n              break;\r\n            }\r\n          }\r\n        }\r\n        if (tmpSrcIndex >= 0) {\r\n          oldChildren.splice(tmpSrcIndex, 1);\r\n        }\r\n        if (moveType != consts.move.TYPE_INNER) {\r\n          for (i = 0, l = targetParentChildren.length; i < l; i++) {\r\n            if (targetParentChildren[i].tId == targetNode.tId) tmpTargetIndex = i;\r\n          }\r\n        }\r\n        if (moveType == consts.move.TYPE_INNER) {\r\n          if (!targetChildren) {\r\n            targetChildren = data.nodeChildren(setting, targetNode, []);\r\n          }\r\n          if (targetChildren.length > 0) {\r\n            newNeighbor = targetChildren[targetChildren.length - 1];\r\n            newNeighbor.isLastNode = false;\r\n          }\r\n          targetChildren.splice(targetChildren.length, 0, node);\r\n          node.isLastNode = true;\r\n          node.isFirstNode = (targetChildren.length == 1);\r\n        } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) {\r\n          targetParentChildren.splice(tmpTargetIndex, 0, node);\r\n          newNeighbor = targetNode;\r\n          newNeighbor.isFirstNode = false;\r\n          node.parentTId = targetNode.parentTId;\r\n          node.isFirstNode = true;\r\n          node.isLastNode = false;\r\n\r\n        } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) {\r\n          targetParentChildren.splice(tmpTargetIndex + 1, 0, node);\r\n          newNeighbor = targetNode;\r\n          newNeighbor.isLastNode = false;\r\n          node.parentTId = targetNode.parentTId;\r\n          node.isFirstNode = false;\r\n          node.isLastNode = true;\r\n\r\n        } else {\r\n          if (moveType == consts.move.TYPE_PREV) {\r\n            targetParentChildren.splice(tmpTargetIndex, 0, node);\r\n          } else {\r\n            targetParentChildren.splice(tmpTargetIndex + 1, 0, node);\r\n          }\r\n          node.parentTId = targetNode.parentTId;\r\n          node.isFirstNode = false;\r\n          node.isLastNode = false;\r\n        }\r\n        data.fixPIdKeyValue(setting, node);\r\n        data.setSonNodeLevel(setting, node.getParentNode(), node);\r\n\r\n        //repair node what been moved\r\n        view.setNodeLineIcos(setting, node);\r\n        view.repairNodeLevelClass(setting, node, oldLevel);\r\n\r\n        //repair node's old parentNode dom\r\n        if (!setting.data.keep.parent && oldChildren.length < 1) {\r\n          //old parentNode has no child nodes\r\n          data.nodeIsParent(setting, oldParentNode, false);\r\n          oldParentNode.open = false;\r\n          var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting),\r\n            tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting),\r\n            tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting);\r\n          view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU);\r\n          view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU);\r\n          tmp_ulObj.css(\"display\", \"none\");\r\n\r\n        } else if (oldNeighbor) {\r\n          //old neighbor node\r\n          view.setNodeLineIcos(setting, oldNeighbor);\r\n        }\r\n\r\n        //new neighbor node\r\n        if (newNeighbor) {\r\n          view.setNodeLineIcos(setting, newNeighbor);\r\n        }\r\n\r\n        //repair checkbox / radio\r\n        if (!!setting.check && setting.check.enable && view.repairChkClass) {\r\n          view.repairChkClass(setting, oldParentNode);\r\n          view.repairParentChkClassWithSelf(setting, oldParentNode);\r\n          if (oldParentNode != node.parent)\r\n            view.repairParentChkClassWithSelf(setting, node);\r\n        }\r\n\r\n        //expand parents after move\r\n        if (!isSilent) {\r\n          view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag);\r\n        }\r\n        //更新label的缩进\r\n        $(\"#\" + node.tId).find('label').css({\r\n          'padding-left': 18 * node.level + 'px'\r\n        })\r\n      },\r\n      removeEditBtn: function (setting, node) {\r\n        $$(node, consts.id.EDIT, setting).unbind().remove();\r\n      },\r\n      removeRemoveBtn: function (setting, node) {\r\n        $$(node, consts.id.REMOVE, setting).unbind().remove();\r\n      },\r\n      removeTreeDom: function (setting, node) {\r\n        node.isHover = false;\r\n        view.removeEditBtn(setting, node);\r\n        view.removeRemoveBtn(setting, node);\r\n        tools.apply(setting.view.removeHoverDom, [setting.treeId, node]);\r\n      },\r\n      repairNodeLevelClass: function (setting, node, oldLevel) {\r\n        if (oldLevel === node.level) return;\r\n        var liObj = $$(node, setting),\r\n          aObj = $$(node, consts.id.A, setting),\r\n          ulObj = $$(node, consts.id.UL, setting),\r\n          oldClass = consts.className.LEVEL + oldLevel,\r\n          newClass = consts.className.LEVEL + node.level;\r\n        liObj.removeClass(oldClass);\r\n        liObj.addClass(newClass);\r\n        aObj.removeClass(oldClass);\r\n        aObj.addClass(newClass);\r\n        ulObj.removeClass(oldClass);\r\n        ulObj.addClass(newClass);\r\n      },\r\n      selectNodes: function (setting, nodes) {\r\n        for (var i = 0, l = nodes.length; i < l; i++) {\r\n          view.selectNode(setting, nodes[i], i > 0);\r\n        }\r\n      }\r\n    },\r\n\r\n    _z = {\r\n      tools: _tools,\r\n      view: _view,\r\n      event: _event,\r\n      data: _data\r\n    };\r\n  if(isClient) {\r\n    $.extend(true, $.fn.zTree.consts, _consts);\r\n    $.extend(true, $.fn.zTree._z, _z);\r\n    var zt = $.fn.zTree,\r\n        tools = zt._z.tools,\r\n        consts = zt.consts,\r\n        view = zt._z.view,\r\n        data = zt._z.data,\r\n        event = zt._z.event,\r\n        $$ = tools.$;\r\n\r\n    data.exSetting(_setting);\r\n    data.addInitBind(_bindEvent);\r\n    data.addInitUnBind(_unbindEvent);\r\n    data.addInitCache(_initCache);\r\n    data.addInitNode(_initNode);\r\n    data.addInitProxy(_eventProxy);\r\n    data.addInitRoot(_initRoot);\r\n    data.addZTreeTools(_zTreeTools);\r\n\r\n    var _cancelPreSelectedNode = view.cancelPreSelectedNode;\r\n    view.cancelPreSelectedNode = function (setting, node) {\r\n      var list = data.getRoot(setting).curSelectedList;\r\n      for (var i = 0, j = list.length; i < j; i++) {\r\n        if (!node || node === list[i]) {\r\n          view.removeTreeDom(setting, list[i]);\r\n          if (node) break;\r\n        }\r\n      }\r\n      if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments);\r\n    }\r\n\r\n    var _createNodes = view.createNodes;\r\n    view.createNodes = function (setting, level, nodes, parentNode, index) {\r\n      if (_createNodes) {\r\n        _createNodes.apply(view, arguments);\r\n      }\r\n      if (!nodes) return;\r\n      if (view.repairParentChkClassWithSelf) {\r\n        view.repairParentChkClassWithSelf(setting, parentNode);\r\n      }\r\n    }\r\n\r\n    var _makeNodeUrl = view.makeNodeUrl;\r\n    view.makeNodeUrl = function (setting, node) {\r\n      return setting.edit.enable ? null : (_makeNodeUrl.apply(view, arguments));\r\n    }\r\n\r\n    var _removeNode = view.removeNode;\r\n    view.removeNode = function (setting, node) {\r\n      var root = data.getRoot(setting);\r\n      if (root.curEditNode === node) root.curEditNode = null;\r\n      if (_removeNode) {\r\n        _removeNode.apply(view, arguments);\r\n      }\r\n    }\r\n\r\n    var _selectNode = view.selectNode;\r\n    view.selectNode = function (setting, node, addFlag) {\r\n      var root = data.getRoot(setting);\r\n      if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {\r\n        return false;\r\n      }\r\n      if (_selectNode) _selectNode.apply(view, arguments);\r\n      view.addHoverDom(setting, node);\r\n      return true;\r\n    }\r\n\r\n    var _uCanDo = tools.uCanDo;\r\n    tools.uCanDo = function (setting, e) {\r\n      var root = data.getRoot(setting);\r\n      if (e && (tools.eqs(e.type, \"mouseover\") || tools.eqs(e.type, \"mouseout\") || tools.eqs(e.type, \"mousedown\") || tools.eqs(e.type, \"mouseup\"))) {\r\n        return true;\r\n      }\r\n      if (root.curEditNode) {\r\n        view.editNodeBlur = false;\r\n        root.curEditInput.focus();\r\n      }\r\n      return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true);\r\n    }\r\n  }\r\n}\r\n"],"names":[],"mappings":";;AACY,MAAC,WAAW,GAAG,CAAC,CAAC,KAAK;AAClC,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,KAAK,EAAE;AACX,MAAM,IAAI,EAAE,YAAY;AACxB,MAAM,IAAI,EAAE,YAAY;AACxB,MAAM,MAAM,EAAE,cAAc;AAC5B,MAAM,QAAQ,EAAE,gBAAgB;AAChC,KAAK;AACL,IAAI,EAAE,EAAE;AACR,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,KAAK,EAAE,QAAQ;AACrB,MAAM,MAAM,EAAE,SAAS;AACvB,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,SAAS,EAAE,MAAM;AACvB,MAAM,SAAS,EAAE,MAAM;AACvB,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,gBAAgB,EAAE,sBAAsB;AAC9C,MAAM,cAAc,EAAE,gBAAgB;AACtC,MAAM,cAAc,EAAE,eAAe;AACrC,KAAK;AACL,GAAG,EAAE,QAAQ,GAAG;AAChB,IAAI,IAAI,EAAE;AACV,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,iBAAiB,EAAE,KAAK;AAC9B,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,WAAW,EAAE,QAAQ;AAC3B,MAAM,WAAW,EAAE,QAAQ;AAC3B,MAAM,IAAI,EAAE;AACZ,QAAQ,iBAAiB,EAAE,KAAK;AAChC,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,SAAS,EAAE,CAAC,CAAC;AACrB,QAAQ,cAAc,EAAE,CAAC;AACzB,QAAQ,YAAY,EAAE,GAAG;AACzB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,WAAW,EAAE,IAAI;AACvB,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK;AACL,GAAG,EAAE,SAAS,GAAG,SAAS,OAAO,EAAE;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxD,IAAI,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,IAAI,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,IAAI,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,IAAI,CAAC,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC9B,IAAI,CAAC,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;AACjC,IAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,GAAG,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE;AACnC,GAAG,EAAE,UAAU,GAAG,SAAS,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAClE,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnF,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;AACjE,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;AACrE,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC/F,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,KAAK,CAAC,CAAC;AACP,GAAG,EAAE,YAAY,GAAG,SAAS,OAAO,EAAE;AACtC,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACvB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrB,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC,EAAE;AAC/B,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,aAAa,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;AACpO,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;AACxC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3G,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3C,QAAQ,aAAa,GAAG,eAAe,CAAC;AACxC,OAAO;AACP,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;AAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClH,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,GAAG,GAAG,QAAQ,CAAC;AACvB,QAAQ,aAAa,GAAG,cAAc,CAAC;AACvC,OAAO;AACP,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;AAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnG,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3C,QAAQ,aAAa,GAAG,eAAe,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,MAAM,QAAQ,aAAa;AAC3B,QAAQ,KAAK,eAAe;AAC5B,UAAU,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAAC;AACvD,UAAU,MAAM;AAChB,QAAQ,KAAK,eAAe;AAC5B,UAAU,iBAAiB,GAAG,QAAQ,CAAC,eAAe,CAAC;AACvD,UAAU,MAAM;AAChB,QAAQ,KAAK,cAAc;AAC3B,UAAU,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC;AACtD,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,IAAI;AACV,MAAM,aAAa;AACnB,MAAM,iBAAiB;AACvB,MAAM,aAAa;AACnB,MAAM,iBAAiB;AACvB,KAAK,CAAC;AACN,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG,EAAE,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC5F,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,OAAO;AACb,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,IAAI,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3B,GAAG,EAAE,WAAW,GAAG,SAAS,OAAO,EAAE,UAAU,EAAE;AACjD,IAAI,UAAU,CAAC,cAAc,GAAG,SAAS,OAAO,EAAE;AAClD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW;AAC3B,QAAQ,OAAO;AACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3E,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,QAAQ,GAAG,SAAS,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACzE,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,OAAO,IAAI,CAAC;AACpB,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC5D,MAAM,IAAI,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU;AACvG,QAAQ,OAAO,IAAI,CAAC;AACpB,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpD,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,QAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,OAAO;AACP,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAQ,IAAI,YAAY,GAAG,WAAW;AACtC,UAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5E,SAAS,CAAC;AACV,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;AACtD,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC3E,SAAS,MAAM;AACf,UAAU,YAAY,EAAE,CAAC;AACzB,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpF,OAAO;AACP,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;AACzC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;AAClF,QAAQ,OAAO;AACf,MAAM,IAAI,IAAI,CAAC,SAAS;AACxB,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;AAChF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,QAAQ,GAAG,SAAS,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACzE,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,OAAO,IAAI,CAAC;AACpB,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC5D,MAAM,IAAI,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AACzG,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,MAAM,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACzK,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,MAAM,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,OAAO;AACP,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB,MAAM,SAAS,YAAY,GAAG;AAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClF,OAAO;AACP,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC3F,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzE,OAAO,MAAM;AACb,QAAQ,YAAY,EAAE,CAAC;AACvB,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,WAAW,GAAG,SAAS,QAAQ,EAAE;AAChD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC1C,MAAM,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,KAAK,CAAC;AACN,GAAG,EAAE,KAAK,GAAG;AACb,IAAI,eAAe,EAAE,SAAS,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;AACzD,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,OAAO;AACf,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtD,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,IAAI,CAAC,QAAQ;AACnB,QAAQ,OAAO;AACf,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACvD,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC;AACvB,UAAU,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,OAAO;AACP,KAAK;AACL,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG;AAC7B,IAAI,eAAe,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE;AAC5C,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;AACrC,QAAQ,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxC,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,cAAc,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE;AAC3C,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AACjF,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,eAAe,EAAE,SAAS,cAAc,EAAE,KAAK,EAAE;AACrD,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7H,MAAM,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACtH,QAAQ,OAAO,IAAI,CAAC;AACpB,MAAM,IAAI,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,KAAK,GAAG,EAAE,CAAC;AACrG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AAChD,QAAQ,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAC1I,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AAC1D,YAAY,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,GAAG,KAAK,EAAE,aAAa,GAAG,OAAO,EAAE,aAAa,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC9b,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACjC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,SAAS,aAAa,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAClL,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AAChC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;AAChG,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC;AAChC,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACzD,YAAY,IAAI,EAAE,IAAI,CAAC,EAAE;AACzB,cAAc,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC3C,aAAa;AACb,YAAY,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;AACrE,cAAc,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvE,cAAc,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1D,aAAa,MAAM;AACnB,cAAc,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3D,aAAa;AACb,WAAW;AACX,UAAU,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,UAAU,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AACrC,UAAU,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,UAAU,IAAI,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7C,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5H,YAAY,QAAQ,GAAG,EAAE,CAAC;AAC1B,YAAY,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,cAAc,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AACtE,gBAAgB,IAAI,OAAO,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;AACvE,kBAAkB,OAAO,GAAG,KAAK,CAAC;AAClC,iBAAiB;AACjB,gBAAgB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,gBAAgB,SAAS,GAAG,EAAE,CAAC;AAC/B,eAAe;AACf,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACpD,gBAAgB,KAAK,GAAG,QAAQ,CAAC;AACjC,gBAAgB,MAAM;AACtB,eAAe;AACf,aAAa;AACb,WAAW;AACX,UAAU,IAAI,OAAO,EAAE;AACvB,YAAY,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAC5C,YAAY,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,WAAW;AACX,UAAU,OAAO,GAAG,EAAE,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;AACjE,UAAU,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACzD,YAAY,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,YAAY,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;AACzC,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AAC3D,cAAc,SAAS;AACvB,aAAa;AACb,YAAY,MAAM,GAAG,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC;AAC3E,YAAY,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACrE,YAAY,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClG,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,YAAY,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AAC5D,cAAc,MAAM,GAAG,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,GAAG,+BAA+B,EAAE,OAAO,CAAC,CAAC;AAC/F,cAAc,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrC,aAAa;AACb,WAAW;AACX,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACnE,UAAU,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,UAAU,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjC,UAAU,QAAQ,GAAG,EAAE,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;AAC7E,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;AACrD,UAAU,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,UAAU,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AAChC,UAAU,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,eAAe,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AAClM,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACtE,WAAW,MAAM,IAAI,SAAS,EAAE;AAChC,YAAY,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAY,IAAI,eAAe;AAC/B,cAAc,CAAC,CAAC,GAAG,GAAG,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrR,WAAW;AACX,UAAU,SAAS,GAAG,IAAI,CAAC;AAC3B,UAAU,eAAe,GAAG,IAAI,CAAC;AACjC,UAAU,WAAW,GAAG,KAAK,CAAC;AAC9B,UAAU,aAAa,GAAG,OAAO,CAAC;AAClC,UAAU,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5C,UAAU,KAAK,IAAI,CAAC,IAAI,QAAQ,EAAE;AAClC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACpN,cAAc,WAAW,GAAG,IAAI,CAAC;AACjC,cAAc,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAa;AACb,WAAW;AACX,UAAU,IAAI,YAAY,GAAG,GAAG,CAAC,SAAS,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,YAAY,EAAE,UAAU,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC;AAC33C,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;AACzF,YAAY,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1C,YAAY,OAAO,SAAS,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,IAAI,aAAa,CAAC,MAAM,EAAE;AAClI,cAAc,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC;AAC/B,YAAY,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AAC3D,cAAc,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,cAAc,IAAI,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE;AAChD,gBAAgB,OAAO,GAAG,KAAK,CAAC;AAChC,gBAAgB,MAAM;AACtB,eAAe,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACnF,gBAAgB,OAAO,GAAG,KAAK,CAAC;AAChC,gBAAgB,MAAM;AACtB,eAAe;AACf,aAAa;AACb,YAAY,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC5G,cAAc,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACvC,cAAc,eAAe,GAAG,SAAS,CAAC,EAAE,CAAC;AAC7C,aAAa;AACb,WAAW;AACX,UAAU,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,UAAU,IAAI,WAAW,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;AACvF,YAAY,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,aAAa,CAAC,MAAM,IAAI,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW,CAAC,KAAK,WAAW,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1L,cAAc,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;AAChD,aAAa;AACb,YAAY,IAAI,KAAK,EAAE;AACvB,cAAc,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AACtF,aAAa,MAAM,IAAI,QAAQ,EAAE;AACjC,cAAc,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AACtF,aAAa;AACb,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;AACxF,aAAa,MAAM,IAAI,OAAO,EAAE;AAChC,cAAc,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;AACxF,aAAa;AACb,YAAY,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AAClI,cAAc,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;AACnJ,aAAa;AACb,WAAW;AACX,UAAU,OAAO,CAAC,GAAG,CAAC;AACtB,YAAY,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,YAAY,GAAG,CAAC,GAAG,IAAI;AAC3D,YAAY,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,CAAC,GAAG,IAAI;AAC7D,WAAW,CAAC,CAAC;AACb,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC;AACrB,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC;AACrB,UAAU,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE;AACzE,YAAY,IAAI,SAAS,GAAG,WAAW;AACvC,cAAc,SAAS,GAAG,IAAI,CAAC;AAC/B,cAAc,eAAe,GAAG,EAAE,CAAC;AACnC,cAAc,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,cAAc,QAAQ,CAAC,GAAG,CAAC;AAC3B,gBAAgB,SAAS,EAAE,MAAM;AACjC,eAAe,CAAC,CAAC;AACjB,cAAc,IAAI,MAAM,CAAC,cAAc,EAAE;AACzC,gBAAgB,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACpD,gBAAgB,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACrD,eAAe;AACf,aAAa,CAAC;AACd,YAAY,IAAI,aAAa,GAAG,eAAe,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,IAAI,eAAe,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7+B,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;AACnD,cAAc,SAAS,EAAE,CAAC;AAC1B,aAAa,MAAM;AACnB,cAAc,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,GAAG,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;AAC/d,cAAc,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,CAAC,GAAG,KAAK,OAAO,EAAE;AACpG,gBAAgB,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC1C,gBAAgB,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACpD,gBAAgB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACjD,eAAe,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,IAAI,GAAG,KAAK,OAAO,EAAE;AAC1G,gBAAgB,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC1C,gBAAgB,EAAE,GAAG,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChN,gBAAgB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACjD,eAAe,MAAM,IAAI,QAAQ,EAAE;AACnC,gBAAgB,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC1C,gBAAgB,EAAE,GAAG,MAAM,CAAC;AAC5B,gBAAgB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAClD,eAAe,MAAM;AACrB,gBAAgB,SAAS,EAAE,CAAC;AAC5B,eAAe;AACf,cAAc,IAAI,SAAS,EAAE;AAC7B,gBAAgB,QAAQ,CAAC,GAAG,CAAC;AAC7B,kBAAkB,SAAS,EAAE,OAAO;AACpC,kBAAkB,KAAK,EAAE,EAAE,GAAG,IAAI;AAClC,kBAAkB,MAAM,EAAE,OAAO,GAAG,EAAE,GAAG,IAAI;AAC7C,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC;AACjF,gBAAgB,IAAI,kBAAkB,IAAI,eAAe,IAAI,cAAc,IAAI,QAAQ,EAAE;AACzF,kBAAkB,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACnD,iBAAiB;AACjB,gBAAgB,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AACtH,kBAAkB,IAAI,UAAU,GAAG,IAAI,CAAC;AACxC,kBAAkB,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,sBAAsB,KAAK,aAAa,CAAC,GAAG,EAAE;AACpG,oBAAoB,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACxD,oBAAoB,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACzD,mBAAmB,MAAM,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,sBAAsB,KAAK,aAAa,CAAC,GAAG,EAAE;AAC3G,oBAAoB,UAAU,GAAG,KAAK,CAAC;AACvC,mBAAmB;AACnB,kBAAkB,IAAI,UAAU,EAAE;AAClC,oBAAoB,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,WAAW;AAClE,sBAAsB,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU;AAC5D,wBAAwB,OAAO;AAC/B,sBAAsB,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE;AAC3R,wBAAwB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACtE,wBAAwB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACvE,0BAA0B,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AACpH,yBAAyB;AACzB,uBAAuB;AACvB,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;AAClE,oBAAoB,MAAM,CAAC,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAAC;AACtE,mBAAmB;AACnB,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb,WAAW,MAAM;AACjB,YAAY,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,YAAY,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/I,cAAc,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7D,aAAa,MAAM;AACnB,cAAc,SAAS,GAAG,IAAI,CAAC;AAC/B,aAAa;AACb,YAAY,QAAQ,CAAC,GAAG,CAAC;AACzB,cAAc,SAAS,EAAE,MAAM;AAC/B,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,MAAM,CAAC,cAAc,EAAE;AACvC,cAAc,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAClD,cAAc,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnD,aAAa;AACb,WAAW;AACX,UAAU,kBAAkB,GAAG,eAAe,CAAC;AAC/C,UAAU,cAAc,GAAG,QAAQ,CAAC;AACpC,UAAU,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACvC,MAAM,SAAS,WAAW,CAAC,MAAM,EAAE;AACnC,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE;AACnC,UAAU,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC9C,UAAU,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;AAC/C,SAAS;AACT,QAAQ,kBAAkB,GAAG,IAAI,CAAC;AAClC,QAAQ,cAAc,GAAG,IAAI,CAAC;AAC9B,QAAQ,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/B,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5D,UAAU,IAAI,eAAe;AAC7B,YAAY,CAAC,CAAC,GAAG,GAAG,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnR,SAAS;AACT,QAAQ,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAQ,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC;AAC9B,UAAU,OAAO;AACjB,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC;AAC5B,QAAQ,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,UAAU,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5G,YAAY,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE,YAAY,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxD,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,OAAO;AACnB,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC;AAC3B,QAAQ,IAAI,QAAQ;AACpB,UAAU,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5B,QAAQ,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzK,QAAQ,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,eAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,eAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1J,UAAU,SAAS,GAAG,IAAI,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,IAAI,YAAY,GAAG,WAAW;AACxC,YAAY,IAAI,WAAW,EAAE;AAC7B,cAAc,IAAI,CAAC,MAAM,EAAE;AAC3B,gBAAgB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACnE,kBAAkB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,iBAAiB;AACjB,eAAe;AACf,cAAc,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AACtD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3E,eAAe,MAAM;AACrB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,aAAa,EAAE,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtL,eAAe;AACf,aAAa,MAAM;AACnB,cAAc,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAChE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3E,eAAe,MAAM,IAAI,MAAM,EAAE;AACjC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,aAAa,EAAE,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtL,eAAe,MAAM;AACrB,gBAAgB,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACvD,kBAAkB,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACpE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAChG,mBAAmB;AACnB,iBAAiB,MAAM;AACvB,kBAAkB,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACzE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAChG,mBAAmB;AACnB,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5C,YAAY,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACnI,WAAW,CAAC;AACZ,UAAU,IAAI,cAAc,GAAG,eAAe,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAClH,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;AACxI,YAAY,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,IAAI,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7D,UAAU,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE;AACnG,YAAY,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC/E,WAAW,MAAM;AACjB,YAAY,YAAY,EAAE,CAAC;AAC3B,WAAW;AACX,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACjD,UAAU,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxG,SAAS;AACT,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC1C,MAAM,SAAS,UAAU,GAAG;AAC5B,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG,EAAE,MAAM,GAAG;AACd,IAAI,MAAM,EAAE,SAAS,GAAG,EAAE;AAC1B,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,qBAAqB,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;AACrM,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,UAAU,EAAE,SAAS,QAAQ,EAAE;AACnC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3B,QAAQ,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,QAAQ,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AACxE,OAAO;AACP,KAAK;AACL,IAAI,WAAW,EAAE,SAAS,QAAQ,EAAE;AACpC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3B,QAAQ,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC1B,OAAO;AACP,KAAK;AACL,IAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;AAC1C,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE;AACjC,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC;AACpB,QAAQ,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,OAAO,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE;AACtC,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AAC1C,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAQ,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACxC,QAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC1C,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,OAAO;AACP,KAAK;AACL,IAAI,aAAa,EAAE,SAAS,OAAO,EAAE,QAAQ,EAAE;AAC/C,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAClC,OAAO;AACP,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,IAAI,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,UAAU,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,qBAAqB,GAAG,CAAC,GAAG,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,WAAW,GAAG,aAAa,GAAG,GAAG,CAAC,YAAY,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC;AACpQ,UAAU,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACjD,UAAU,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG,EAAE,KAAK,GAAG;AACb,IAAI,UAAU,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AACxC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACxG,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,gCAAgC,CAAC;AAC5T,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW;AACjE,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK;AACzH,UAAU,OAAO,KAAK,CAAC;AACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,YAAY,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AAC1C,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/E,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACxG,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,gCAAgC,CAAC;AACpU,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW;AACnE,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK;AACvH,UAAU,OAAO,KAAK,CAAC;AACvB,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,WAAW,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AACzC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;AACjC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,UAAU,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,IAAI,iBAAiB,EAAE,SAAS,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC9D,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAChE,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrI,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE;AACnH,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAQ,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvF,OAAO;AACP,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,QAAQ,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AACtC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/F,QAAQ,UAAU,CAAC,WAAW;AAC9B,UAAU,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,SAAS,EAAE,CAAC,CAAC,CAAC;AACd,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC1J,MAAM,IAAI,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxD,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC1C,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnC,OAAO;AACP,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS;AACT,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE;AAC1C,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;AACpC,UAAU,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACnC,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;AAC3C,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,SAAS;AACT,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE;AACxC,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE;AAC3C,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC,CAAC;AACT,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5E,MAAM,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AACnC,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/B,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,EAAE,SAAS,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;AACnF,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,IAAI,UAAU,IAAI,IAAI;AAC5B,QAAQ,OAAO;AACf,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU;AAC/H,QAAQ,OAAO;AACf,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,EAAE,gBAAgB,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;AACrI,MAAM,IAAI,gBAAgB,IAAI,UAAU,KAAK,IAAI;AACjD,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,gBAAgB;AAC1B,QAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,MAAM,IAAI,gBAAgB,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC;AACtF,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAClF,QAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,OAAO;AACP,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAQ,IAAI,gBAAgB,EAAE;AAC9B,UAAU,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;AACvD,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACzD,YAAY,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAChD,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACtD,WAAW;AACX,UAAU,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC;AAC1C,SAAS;AACT,OAAO;AACP,MAAM,IAAI,SAAS,EAAE,YAAY,CAAC;AAClC,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;AACpC,QAAQ,YAAY,GAAG,SAAS,CAAC;AACjC,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC7D,UAAU,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpE,SAAS,MAAM,IAAI,CAAC,QAAQ,EAAE;AAC9B,UAAU,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,SAAS,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5C,QAAQ,YAAY,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxD,UAAU,IAAI,KAAK,GAAG,EAAE,CAAC;AACzB,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1D,UAAU,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,YAAY,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7D,OAAO;AACP,MAAM,IAAI,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3B,QAAQ,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChG,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACpC,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;AACzB,OAAO;AACP,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AACrE,QAAQ,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,OAAO,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACxE,QAAQ,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,OAAO,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACxE,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,OAAO;AACP,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AACpH,MAAM,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,IAAI,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC9E,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClE,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,WAAW,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,UAAU,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACvC,UAAU,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC;AACzC,SAAS;AACT,OAAO,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AAClC,QAAQ,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAQ,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACnD,QAAQ,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;AAC9C,YAAY,WAAW,GAAG,CAAC,CAAC;AAC5B,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,IAAI,WAAW,IAAI,CAAC,EAAE;AAC5B,QAAQ,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3C,OAAO;AACP,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACjE,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG;AAC3D,YAAY,cAAc,GAAG,CAAC,CAAC;AAC/B,SAAS;AACT,OAAO;AACP,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,UAAU,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,UAAU,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClE,UAAU,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;AACzC,SAAS;AACT,QAAQ,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC;AACtD,OAAO,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAC9E,QAAQ,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7D,QAAQ,WAAW,GAAG,UAAU,CAAC;AACjC,QAAQ,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAC9C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,OAAO,MAAM,IAAI,UAAU,CAAC,UAAU,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7E,QAAQ,oBAAoB,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,QAAQ,WAAW,GAAG,UAAU,CAAC;AACjC,QAAQ,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAC9C,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,OAAO,MAAM;AACb,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/C,UAAU,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,SAAS,MAAM;AACf,UAAU,oBAAoB,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAC9C,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,OAAO;AACP,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;AAChE,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/D,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACzD,QAAQ,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AACnC,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxL,QAAQ,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5E,QAAQ,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzC,OAAO,MAAM,IAAI,WAAW,EAAE;AAC9B,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1E,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAClE,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM;AACxC,UAAU,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACxF,OAAO;AACP,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;AAC1C,QAAQ,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;AAC9C,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,aAAa,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AAC1D,KAAK;AACL,IAAI,eAAe,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AAC7C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AAC5D,KAAK;AACL,IAAI,aAAa,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;AAC3C,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,oBAAoB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC5D,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK;AACjC,QAAQ,OAAO;AACf,MAAM,IAAI,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAClN,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9B,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,WAAW,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE;AAC1C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,OAAO;AACP,KAAK;AACL,GAAG,EAAE,EAAE,GAAG;AACV,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,IAAI,EAAE,KAAK;AACf,GAAG,CAAC;AACJ,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1I,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC,IAAI,IAAI,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC5D,IAAI,IAAI,CAAC,qBAAqB,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACzD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC;AACvD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACvC,UAAU,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,UAAU,IAAI,IAAI;AAClB,YAAY,MAAM;AAClB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,sBAAsB;AAChC,QAAQ,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AACxC,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AAC1E,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,IAAI,CAAC,KAAK;AAChB,QAAQ,OAAO;AACf,MAAM,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC7C,QAAQ,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AACxC,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AAC/C,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9E,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;AACtC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AAC9C,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI;AACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;AACtC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/F,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,IAAI,WAAW;AACrB,QAAQ,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACtC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE;AACxC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AACpJ,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAClC,OAAO;AACP,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AACpF,KAAK,CAAC;AACN,GAAG;AACH;;;;"}