{
  "_format": "hh-sol-artifact-1",
  "contractName": "RoundHandlerHelper",
  "sourceName": "contracts/V3/handler/RoundHandlerHelper.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVOKE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "allGroups",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "weights",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "randomNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "getRandomGroupsWithWeight",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "branchHash",
          "type": "bytes32"
        }
      ],
      "name": "getRuleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_randomGenerator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_roundHandlerState",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.RandomParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "processClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "groupId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.RandomParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "processInput",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "processRefund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexInput",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "ruleSlotIndexOutput",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.RandomParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "processTrigger",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "clusterRuleHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "processWithdraw",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "percentage",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            },
            {
              "internalType": "uint32",
              "name": "multiple",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "weight",
              "type": "uint32"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.BranchConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "regBranchConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "roundLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ruleBeginBlock",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ruleBeginTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blocksPerRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timePerRound",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "groupCounts",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "groupHitCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "leastUserCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "leastGroupCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "mostUserCount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentActive",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "gameMode",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "rewardMode",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "winMode",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "roundMode",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "groupMode",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "rangeMode",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.RuleConfig",
          "name": "config",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "fee",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "claimed",
              "type": "uint256"
            }
          ],
          "internalType": "struct IRoundHandlerHelper.FeeInfo[]",
          "name": "feeInfos",
          "type": "tuple[]"
        }
      ],
      "name": "regRuleConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implNew",
          "type": "address"
        }
      ],
      "name": "setHandlerState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50614f42806100206000396000f3fe608060405234801561001057600080fd5b506004361061012d5760003560e01c80636e8580b2116100b35780636e8580b2146102e25780638b38b514146102f55780639010d07c1461030a57806391d14854146103355780639ccc53b914610348578063a217fddf1461035b578063badccd7e14610363578063c2bd355214610376578063ca15c87314610389578063d547741f1461039c578063f8ead276146103af578063ffa08160146103c25761012d565b806301ffc9a7146101a4578063097942f3146101cc578063248a9ca3146101ed5780632f2ff15d1461021057806333a86cd21461022357806334c76b251461023657806336568abe1461026f578063485cc955146102825780634e4a539f1461029557806354fd4d50146102c357806360c07fdc146102cf575b600080516020614eed833981519152610145816103e2565b600f5460408051808201909152600a81526966616c6c6261636b203160b01b60208201526001600160a01b039091169061017e906103ef565b3660008037600080366000845af43d6000803e80801561019d573d6000f35b3d6000fd5b005b6101b76101b2366004614309565b610432565b60405190151581526020015b60405180910390f35b6101df6101da36600461434a565b61045d565b6040519081526020016101c3565b6101df6101fb36600461437f565b60009081526011602052604090206001015490565b6101a261021e366004614398565b610502565b6101a261023136600461449c565b61052c565b6040805180820190915260148152732927aaa7222fa420a7222622a92fa422a62822a960611b60208201525b6040516101c391906145f2565b6101a261027d366004614398565b6105c6565b6101a2610290366004614605565b610644565b6102a86102a33660046146f3565b6106f9565b604080519384526020840192909252908201526060016101c3565b65126ad8dcd6326101df565b6101a26102dd36600461473b565b610a41565b6101df6102f0366004614786565b610df3565b6101df600080516020614eed83398151915281565b61031d6103183660046147c3565b610ee9565b6040516001600160a01b0390911681526020016101c3565b6101b7610343366004614398565b610f08565b61026261035636600461437f565b610f33565b6101df600081565b6101a26103713660046148b9565b610fdb565b6101a2610384366004614a27565b611268565b6101df61039736600461437f565b6112a3565b6101a26103aa366004614398565b6112ba565b6101b76103bd36600461434a565b6112df565b6103d56103d0366004614a9d565b6113ae565b6040516101c39190614b10565b6103ec813361176b565b50565b6103ec8160405160240161040391906145f2565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526117c4565b60006001600160e01b03198216635a05180f60e01b14806104575750610457826117cd565b92915050565b6000600080516020614eed833981519152610477816103e2565b600085815260208181526040808320600183528184208785529092529091206104a38282898989611802565b6104e75760405162461bcd60e51b815260206004820152601060248201526f31b432b1b5903932b33ab7321032b93960811b60448201526064015b60405180910390fd5b60006104f4888789611a0d565b94505050505b509392505050565b60008281526011602052604090206001015461051d816103e2565b6105278383611a7d565b505050565b600080516020614eed833981519152610544816103e2565b600083815260026020818152604092839020855181559085015160018201805460ff191660ff909216919091179055918401518492918201906105879082614bdc565b5060608201516003909101805460809093015163ffffffff908116600160201b0267ffffffffffffffff19909416921691909117919091179055505050565b6001600160a01b03811633146106365760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016104de565b6106408282611a9f565b5050565b60006106506001611ac1565b9050801561066c576010805460ff60a81b1916600160a81b1790555b601080546001600160a01b038086166001600160a01b031992831617909255600f8054928516929091169190911790556106ad60006106a83390565b611b63565b8015610527576010805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000806000600080516020614eed833981519152610716816103e2565b600088815260208181526040808320600183528184208b855290925290912060028201546107565760405162461bcd60e51b81526004016104de90614c9b565b61077f604051806040016040528060078152602001661c9bdd5b99125960ca1b8152508a611b6d565b6107b06040518060400160405280600f81526020016e0626c6f636b2e74696d657374616d7608c1b81525042611b6d565b60006107f360008c8c6040516020016107d3929190918252602082015260400190565b60405160208183030381529060405280519060200120858560008f611bb2565b90506108226040518060400160405280600b81526020016a31b0b7103a3934b3b3b2b960a91b81525082612237565b80156108485760006108378b8d8b878761227c565b90506108468b8d868685612914565b505b5060006108578b838c8c612a40565b90508061089a5760405162461bcd60e51b815260206004820152601160248201527031b630b4b69031b432b1b59032b93937b960791b60448201526064016104de565b506108af8a8a8960c001516000806001612bca565b600c82015460031961010090910460ff16016108ff5760008060006108ed8d8b6020015163ffffffff168c6060015161ffff168f8e60c00151612c5d565b919a5098509650610a36945050505050565b600080600061090f8d8d8d61301f565b92509250925061094c60405180604001604052806015815260200174070726f63657373436c61696d20616d6f756e74203605c1b81525084611b6d565b6109886040518060400160405280601a815260200179070726f63657373436c61696d20696e707574416d6f756e7420360341b81525083611b6d565b6109bf60405180604001604052806015815260200174070726f63657373436c61696d206272616e6368203605c1b81525082611b6d565b600c85015462010000900460ff1660011480156109dc5750600083115b156109f0576109ed8d8b858f6133ff565b92505b610a2760405180604001604052806015815260200174070726f63657373436c61696d20616d6f756e74203605c1b81525084611b6d565b91975095509350610a36915050565b509450945094915050565b600080516020614eed833981519152610a59816103e2565b600086815260208181526040808320600183528184208985529092529091206002820154610a995760405162461bcd60e51b81526004016104de90614c9b565b6000610aad8984848860c001518c8c613632565b905080610aec5760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b60448201526064016104de565b50866000819003610b5c57610b2d604051806040016040528060148152602001731c1c9bd8d95cdcd25b9c1d5d081c9bdd5b99125960621b81525089611b6d565b6005830154610b3d906001614cd7565b60008a8152600160209081526040808320848452909152902090985091505b6000610b9e888b8b604051602001610b7e929190918252602082015260400190565b60405160208183030381529060405280519060200120868660018e611bb2565b60008b8152600c6020526040812091925090815b8154811015610d185760008d8152600b6020526040812083546127109290859085908110610be257610be2614cea565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610c1f9063ffffffff600160a01b909104168c614d00565b610c299190614d2d565b600b60008f81526020019081526020016000206000848481548110610c5057610c50614cea565b60009182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190610c87908490614cd7565b909155505060008d8152600b6020526040812083546127109290859085908110610cb357610cb3614cea565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610cf09063ffffffff600160a01b909104168c614d00565b610cfa9190614d2d565b610d049084614cd7565b925080610d1081614d41565b915050610bb2565b50610d2590508189614d5a565b60008c81526008602052604081208054929a508a935091610d47908490614cd7565b909155505060408051602081018c90529081018a9052610dac9060600160408051601f19818403018152919052805160209091012060c0880151600c870154879187918d91906301000000900460ff1615610da3578715610da6565b60005b8d61383c565b9750610dc18a8a8860c001518b8b6000612bca565b8015610de7576000610dd68a8c89888861227c565b9050610de58a8c878785612914565b505b50505050505050505050565b6000600080516020614eed833981519152610e0d816103e2565b60008681526020818152604080832060018352818420888552835281842082519384018b9052918301889052929091610e6590829060600160405160208183030381529060405280519060200120858560008c611bb2565b905080610eb45760405162461bcd60e51b815260206004820152601e60248201527f70726f636573735472696767657220696e76616c69642074726967676572000060448201526064016104de565b8015610eda576000610ec9888b89878761227c565b9050610ed8888b868685612914565b505b50600098975050505050505050565b6000828152601260205260408120610f019083613a53565b9392505050565b60009182526011602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600260008381526020019081526020016000206002018054610f5690614b54565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8290614b54565b8015610fcf5780601f10610fa457610100808354040283529160200191610fcf565b820191906000526020600020905b815481529060010190602001808311610fb257829003601f168201915b50505050509050919050565b600080516020614eed833981519152610ff3816103e2565b600084815260208181526040808320865181559186015160018301558501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008086015160088301556101208601516009830155610140860151600a830155610160860151600b830155610180860151600c90920180546101a08801516101c08901516101e08a01516102008b01516102208c01516102408d01516001600160a01b0316600160301b02600160301b600160d01b031960ff928316600160281b0260ff60281b19948416600160201b029490941665ffff000000001995841663010000000263ff0000001997851662010000029790971663ffff000019988516909b0261ffff1990991693909b169290921796909617949094169690961791909117169490941792909217929092161790555b8251811015611261576000858152600c60205260409020835184908390811061116a5761116a614cea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905582518390829081106111ba576111ba614cea565b6020026020010151600b600087815260200190815260200160002060008584815181106111e9576111e9614cea565b602090810291909101810151516001600160a01b039081168352828201939093526040918201600020845181549286015163ffffffff16600160a01b026001600160c01b031990931694169390931717825582015160018201556060909101516002909101558061125981614d41565b91505061113f565b5050505050565b600080516020614eed833981519152611280816103e2565b50600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260126020526040812061045790613a5f565b6000828152601160205260409020600101546112d5816103e2565b6105278383611a9f565b6000600080516020614eed8339815191526112f9816103e2565b6000858152600b602090815260408083206001600160a01b038816845290915290206001015483116113a3576000858152600b602090815260408083206001600160a01b03881684529091528120600101805485929061135a908490614d5a565b90915550506000858152600b602090815260408083206001600160a01b038816845290915281206002018054859290611394908490614cd7565b90915550600192506104fa9050565b506000949350505050565b6060845182106113bf575083611763565b84518451146114065760405162461bcd60e51b81526020600482015260136024820152723bb2b4b3b43a103632b733ba341032b93937b960691b60448201526064016104de565b6000826001600160401b03811115611420576114206143c4565b604051908082528060200260200182016040528015611449578160200160208202803683370190505b509050600086516001600160401b03811115611467576114676143c4565b604051908082528060200260200182016040528015611490578160200160208202803683370190505b50905060005b8481101561175d5760008189516114ad9190614d5a565b6114b8906002614d00565b6001600160401b038111156114cf576114cf6143c4565b6040519080825280602002602001820160405280156114f8578160200160208202803683370190505b5090506000805b8a518110156116195784818151811061151a5761151a614cea565b602002602001015115156001151514611607578a818151811061153f5761153f614cea565b602002602001015183838151811061155957611559614cea565b602090810291909101015281156115b75782611576600184614d5a565b8151811061158657611586614cea565b60200260200101518a82815181106115a0576115a0614cea565b60200260200101516115b29190614cd7565b6115d2565b8981815181106115c9576115c9614cea565b60200260200101515b836115de846001614cd7565b815181106115ee576115ee614cea565b6020908102919091010152611604600283614cd7565b91505b8061161181614d41565b9150506114ff565b50506040805160208082018a9052818301859052825180830384018152606090920190925280519101208151829061165390600190614d5a565b8151811061166357611663614cea565b6020026020010151816116769190614d6d565b905060005b82518110156117475782611690826001614cd7565b815181106116a0576116a0614cea565b6020026020010151821015611735578281815181106116c1576116c1614cea565b60200260200101518685815181106116db576116db614cea565b60200260200101818152505060018560018584815181106116fe576116fe614cea565b60200260200101516117109190614d5a565b8151811061172057611720614cea565b91151560209283029190910190910152611747565b611740600282614cd7565b905061167b565b505050808061175590614d41565b915050611496565b50909150505b949350505050565b6117758282610f08565b6106405761178281613a69565b61178d836020613a7b565b60405160200161179e929190614d81565b60408051601f198184030181529082905262461bcd60e51b82526104de916004016145f2565b6103ec81613c16565b60006001600160e01b03198216637965db0b60e01b148061045757506301ffc9a760e01b6001600160e01b0319831614610457565b600080600660008685604051602001611825929190918252602082015260400190565b60408051808303601f19018152918152815160209283012083528282019390935290820160009081206001600160a01b0388168252909152206002810154909150610100900460ff161561187d576000915050611a04565b600886015415611891576000915050611a04565b866008015486600101541061198a57600c870154600019600160201b90910460ff16016118d35785546009880154116118ce576000915050611a04565b61198a565b600c870154600160201b900460ff1661198a576000808685604051602001611905929190918252602082015260400190565b60408051601f198184030181529190528051602090910120905060015b8960060154811161196f576000828152600e602090815260408083208484529091529020600101541561195d578261195981614d41565b9350505b8061196781614d41565b915050611922565b50818960090154116119875760009350505050611a04565b50505b600c8701546301000000900460ff166119b057826119a788613c37565b11915050611a04565b6004870154156119d85742876004015487600601546119cf9190614cd7565b10915050611a04565b6003870154156119fe576119ea613ca9565b876003015487600501546119cf9190614cd7565b60009150505b95945050505050565b6000808484604051602001611a2c929190918252602082015260400190565b60408051601f1981840301815291815281516020928301206000908152600683528181206001600160a01b0387168252909252902060028101805461ff001916610100179055549150509392505050565b611a878282613d26565b60008281526012602052604090206105279082613dac565b611aa98282613dc1565b60008281526012602052604090206105279082613e28565b601054600090600160a81b900460ff1615611b0c578160ff166001148015611ae85750303b155b611b045760405162461bcd60e51b81526004016104de90614df0565b506000919050565b60105460ff808416600160a01b9092041610611b3a5760405162461bcd60e51b81526004016104de90614df0565b506010805460ff909216600160a01b0260ff60a01b19909216919091179055600190565b919050565b6106408282611a7d565b6106408282604051602401611b83929190614e3e565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526117c4565b6000611be46040518060400160405280600f81526020016e5f636865636b54726967676572203160881b8152506103ef565b600c850154600885015460ff8083169263010000009004169015611c0d5760009250505061222d565b611c3d6040518060400160405280600f81526020016e2fb1b432b1b5aa3934b3b3b2b9101960891b8152506103ef565b600c870154600019600160201b90910460ff1601611d475784158015611c67575085546009880154115b80611c895750848015611c8957508554611c82906001614cd7565b8760090154115b15611d4257611ccb604051806040016040528060178152602001761cd0dbdb999a59cb9b19585cdd11dc9bdd5c10dbdd5b9d604a1b8152508860090154611b6d565b611d0660405180604001604052806015815260200174073526f756e64496e666f2e746f74616c47726f757605c1b8152508760000154611b6d565b611d376040518060400160405280601081526020016f5f636865636b5472696767657220323160801b8152506103ef565b60009250505061222d565b611e04565b600c870154600160201b900460ff16611e0457600060015b88600601548111611db85760008a8152600e60209081526040808320848452909152902060010154151580611d935750808b145b15611da65781611da281614d41565b9250505b80611db081614d41565b915050611d5f565b508088600901541115611e0257611df66040518060400160405280601081526020016f2fb1b432b1b5aa3934b3b3b2b910191960811b8152506103ef565b6000935050505061222d565b505b611e346040518060400160405280600f81526020016e5f636865636b54726967676572203360881b8152506103ef565b8415611e5557600c87015460ff1660011901611e555760009250505061222d565b611e856040518060400160405280600f81526020016e17d8da1958dad51c9a59d9d95c880d608a1b8152506103ef565b80612089576001198201611f7657611ed86040518060400160405280601b81526020017a5f67657443757272656e74526f756e6449642873436f6e6669672960281b815250611ed389613c37565b611b6d565b611f14604051806040016040528060168152602001751cd0dbdb999a59cb9b19585cdd155cd95c90dbdd5b9d60521b8152508860080154611b6d565b611f4e6040518060400160405280601481526020017339a937bab73224b73337973a37ba30b62ab9b2b960611b8152508760010154611b6d565b83611f5888613c37565b118015611f6d57508560010154876008015411155b9250505061222d565b600219820161208457611fbd6040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203100008152506103ef565b841561201f576120016040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203200008152506103ef565b600a87015460018088015461201591614cd7565b149250505061222d565b61205d6040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203300008152506103ef565b8560010154876008015411158015611f6d57508361207a88613c37565b119250505061222d565b612226565b60001981016122265760011982016120f3576003870154156120de576120ad613ca9565b876003015487600501546120c19190614cd7565b108015611f6d57508560010154876008015411159250505061222d565b42876004015487600601546120c19190614cd7565b600219820161222657841561211657600a87015460018088015461201591614cd7565b600387015415612159578560010154876008015411158015611f6d575061213b613ca9565b8760030154876005015461214f9190614cd7565b109250505061222d565b6121936040518060400160405280601481526020017373526f756e64496e666f2e626567696e54696d6560601b8152508760060154611b6d565b6121cd604051806040016040528060148152602001731cd0dbdb999a59cb9d1a5b5954195c949bdd5b9960621b8152508860040154611b6d565b6121fe6040518060400160405280600f81526020016e0626c6f636b2e74696d657374616d7608c1b81525042611b6d565b8560010154876008015411158015611f6d5750428760040154876006015461214f9190614cd7565b6000925050505b9695505050505050565b610640828260405160240161224d929190614e60565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b1790526117c4565b6060600061228985613e3d565b600c85015490915060609060031961010090910460ff16016126c1576000805b60208801516060890151600091906122c2846065614cd7565b6040516020016122d493929190614e84565b60408051808303601f19018152918152815160209283012060008181526002909352912060030154909150600160201b900463ffffffff1615612323578261231b81614d41565b935050612329565b5061233c565b508061233481614d41565b9150506122a9565b50600c860154600090600160201b900460ff16600114612360578660060154612363565b85545b9050808211156123735780612375565b815b600c88015490925060609150600160201b900460ff161580156123a65750600c870154600160281b900460ff166002145b1561250a5760408051602081018b90529081018b905260009060600160408051601f19818403018152919052805160209091012060009b50905060015b886006015481111580156123f75750838111155b1561243e576000828152600e602090815260408083208484529091529020600101541561242c578b61242881614d41565b9c50505b8061243681614d41565b9150506123e3565b508a6001600160401b03811115612457576124576143c4565b604051908082528060200260200182016040528015612480578160200160208202803683370190505b5060009b50915060015b8860060154811115801561249e5750838111155b15612503576000828152600e60209081526040808320848452909152902060010154156124f15780838d815181106124d8576124d8614cea565b60209081029190910101528b6124ed81614d41565b9c50505b806124fb81614d41565b91505061248a565b5050612595565b816001600160401b03811115612522576125226143c4565b60405190808252806020026020018201604052801561254b578160200160208202803683370190505b50905060015b81518111612593578082612566600183614d5a565b8151811061257657612576614cea565b60209081029190910101528061258b81614d41565b915050612551565b505b600081516001600160401b038111156125b0576125b06143c4565b6040519080825280602002602001820160405280156125d9578160200160208202803683370190505b50905060005b82518110156126a65760008a602001518b60600151600186858151811061260857612608614cea565b6020026020010151606560ff1661261f9190614cd7565b6126299190614d5a565b60405160200161263b93929190614e84565b60408051808303601f190181529181528151602092830120600081815260029093529120600301548451919250600160201b900463ffffffff169084908490811061268857612688614cea565b6020908102919091010152508061269e81614d41565b9150506125df565b506126b78282878b600701546113ae565b9350505050612909565b600c850154600160281b900460ff1660021480156126eb5750600c850154600160201b900460ff16155b1561284757604080516020810189905290810189905260009060600160408051601f19818403018152919052805160209091012060009950905060015b86600601548111612775576000828152600e6020908152604080832084845290915290206001015415612763578961275f81614d41565b9a50505b8061276d81614d41565b915050612728565b506000896001600160401b03811115612790576127906143c4565b6040519080825280602002602001820160405280156127b9578160200160208202803683370190505b5060009a50905060015b8760060154811161282e576000838152600e602090815260408083208484529091529020600101541561281c5780828c8151811061280357612803614cea565b60209081029190910101528a61281881614d41565b9b50505b8061282681614d41565b9150506127c3565b5061283e81858960070154613f26565b92505050612909565b600c850154600090600160201b900460ff1660011461286a57856006015461286d565b84545b6001600160401b03811115612884576128846143c4565b6040519080825280602002602001820160405280156128ad578160200160208202803683370190505b50905060015b815181116128f55780826128c8600183614d5a565b815181106128d8576128d8614cea565b6020908102919091010152806128ed81614d41565b9150506128b3565b5061290581848860070154613f26565b9150505b979650505050505050565b600b8301541561293657600b8301805490600061293083614ea6565b91905055505b805161294b906008840190602084019061427d565b506000805b82518110156129ea57600e60008789604051602001612979929190918252602082015260400190565b60405160208183030381529060405280519060200120815260200190815260200160002060008483815181106129b1576129b1614cea565b6020026020010151815260200190815260200160002060000154826129d69190614cd7565b9150806129e281614d41565b915050612950565b50600c8401546000196201000090910460ff1601612a1557808360070154612a129190614d5a565b90505b60008581526009602052604081208054839290612a33908490614cd7565b9091555050505050505050565b6000612a706040518060400160405280600d81526020016c5f636865636b436c61696d203160981b8152506103ef565b6008840154600003612a8457506000611763565b612ab26040518060400160405280600d81526020016c2fb1b432b1b5a1b630b4b6901960991b8152506103ef565b600d60008685604051602001612ad2929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935290820160009081206001600160a01b0386168252909152205460ff16612b1b57506000611763565b612b496040518060400160405280600d81526020016c5f636865636b436c61696d203360981b8152506103ef565b6000600660008786604051602001612b6b929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935290820160009081206001600160a01b038716825290915220600281015490915060ff1615612bbe576000915050611763565b50600195945050505050565b604080516020808201899052818301889052825180830384018152606090920183528151918101919091206000818152600683528381206001600160a01b038916825290925291902082612c4257838155600181018590556000888152600a60205260408120805491612c3c83614d41565b91905055505b600201805460ff191692151592909217909155505050505050565b6000858152602081815260408083206001835281842086855283528184208251808401909352601b83527a5f676574436c61696d416d6f756e7457697468576569676874203160281b9383019390935283928392612cba906103ef565b600c82015460031961010090910460ff160161300657612cd86142c8565b60408051602081018d905290810189905260009060600160408051601f1981840301815282825280516020918201206000908152600682528281206001600160a01b038d1682528252829020608084018352805484526001810154918401919091526002015460ff80821615159284019290925261010090048116151560608301526008850154600c8701549294509250600019620100009092041601612ef357612db56040518060400160405280601b81526020017a2fb3b2ba21b630b4b6a0b6b7bab73a2bb4ba342bb2b4b3b43a101960291b8152506103ef565b60005b81811015612eed57836008018181548110612dd557612dd5614cea565b9060005260206000200154836020015103612edb5760008c8c6001876008018581548110612e0557612e05614cea565b600091825260209091200154612e1c906065614cd7565b612e269190614d5a565b604080516020810194909452830191909152606082015260800160408051601f1981840301815291815281516020928301206000818152600290935290822060030154865191935061271091612e829163ffffffff1690614d00565b612e8c9190614d2d565b90508060006001886008018681548110612ea857612ea8614cea565b600091825260209091200154612ebf906065614cd7565b612ec99190614d5a565b99509950995050505050505050613014565b80612ee581614d41565b915050612db8565b50613003565b600c84015462010000900460ff16613003576000805b82811015612f5657846008018181548110612f2657612f26614cea565b9060005260206000200154846020015103612f445760019150612f56565b80612f4e81614d41565b915050612f09565b50806130015760008c8c60018660200151606560ff16612f769190614cd7565b612f809190614d5a565b604080516020810194909452830191909152606082015260800160408051601f1981840301815291815281516020928301206000818152600290935290822060030154865191935061271091612fdc9163ffffffff1690614d00565b612fe69190614d2d565b905080600060018760200151606560ff16612ebf9190614cd7565b505b50505b600080600094509450945050505b955095509592505050565b600083815260208181526040808320600183528184208685529092528220829182916130496142c8565b506040805160208082018b90528183018a9052825180830384018152606083018085528151918301919091206000908152600683528481206001600160a01b038c168252835284812060e08501865280548352600180820154608087015260029091015460ff808216151560a0880152610100918290048116151560c0909701969096528e83529084528582208d8352909352939093206008810154600c87015491939092600219920416016131655760005b8181101561315f5782600801818154811061311957613119614cea565b906000526020600020015484602001510361314d5760008061313c836001614cd7565b9850985098505050505050506133f6565b8061315781614d41565b9150506130fc565b506133e5565b60008060005b838110156131b85784600801818154811061318857613188614cea565b90600052602060002001548660200151036131a657600191506131b8565b806131b081614d41565b91505061316b565b5060005b8381101561325b57600e60008f8f6040516020016131e4929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020600086600801838154811061321f5761321f614cea565b9060005260206000200154815260200190815260200160002060000154836132479190614cd7565b92508061325381614d41565b9150506131bc565b50600c870154600090610100900460ff1661327b575060078601546132c1565b600c88015460001961010090910460ff16016132985750816132c1565b600c88015460011961010090910460ff16016132c1578287600701546132be9190614d5a565b90505b600c88015462010000900460ff161580156132da575081155b15613353578287600701546132ef9190614d5a565b1561331f578287600701546133049190614d5a565b86516133109083614d00565b61331a9190614d2d565b613322565b60005b600c890154610100900460ff161561333b57865161333e565b60005b60009a509a509a5050505050505050506133f6565b600c88015462010000900460ff16600114801561337257506001821515145b156133e157600e60008f8f604051602001613397929190918252602082015260400190565b60408051601f198184030181529181528151602092830120835282820193909352908201600090812089830151825290915220549250821561331f57855183906133109083614d00565b5050505b600080600097509750975050505050505b93509350939050565b600061343660405180604001604052806014815260200173383937b1b2b9b9a832b931b2b73a103132b3b4b760611b8152506103ef565b61343e6142c8565b506000858152600160208181526040808420868552825280842081518084018b90528083018890528251808203840181526060820180855281519186019190912087526006855283872060c08c8101516001600160a01b03168952955283872060e083019094528354815294830154608082015260029092015460ff808216151560a0850152610100909104161515929091019190915290915b60088201548110156136265782602001518260080182815481106134fe576134fe614cea565b906000526020600020015403613614576020870151606088015160009190613527846065614cd7565b60405160200161353993929190614e84565b60408051601f198184030181528282528051602091820120838301835260158452740e0e4dec6cae6e6a0cae4c6cadce840c4e4c2dcc6d605b1b848301526000818152600290925291902060010154909250613598919060ff16611b6d565b6135e96040518060400160405280601981526020017870726f6365737350657263656e742070657263656e7461676560381b8152506002600084815260200190815260200160002060000154611b6d565b600081815260026020526040902054612710906136069089614d00565b6136109190614d2d565b9650505b8061361e81614d41565b9150506134d8565b50939695505050505050565b600c8501546040805160208082018a9052818301869052825180830384018152606090920183528151918101919091206000908152600d82528281206001600160a01b038816825290915290812054909160ff80821692630100000090920481169116156136a55760009250505061222d565b6008870154156136ba5760009250505061222d565b600c880154600160201b900460ff166136e95787600601548411156136e45760009250505061222d565b6136fa565b83156136fa5760009250505061222d565b6137286040518060400160405280600d81526020016c2fb1b432b1b5a4b7383aba101960991b8152506103ef565b60001981016137965784158015613759575087541580159061375957508754600b890154613757906001614cd7565b115b156137695760009250505061222d565b841580159061377b5750848860050154105b1561378b5760009250505061222d565b60019250505061222d565b6137c46040518060400160405280600d81526020016c5f636865636b496e707574203360981b8152506103ef565b8061380e5760028214806137d85750600382145b1561380e57846137e789613c37565b148015611f6d5750600a88015460018089015461380391614cd7565b11159250505061222d565b6122266040518060400160405280600d81526020016c17d8da1958dad25b9c1d5d080d609a1b8152506103ef565b60006138746040518060400160405280601481526020017317dd5c19185d19525b9c1d5d0819dc9bdd5c125960621b81525086611b6d565b82156138d55760058701805490600061388c83614d41565b9091555050600b870180549060006138a383614d41565b90915550506004870154156138bd574260068701556138d5565b6003870154156138d5576138cf613ca9565b60058701555b84600081900361392e57613916604051806040016040528060168152602001755f757064617465496e7075742067726f75704964203160501b8152506103ef565b865487600061392483614d41565b9091555050865490505b60018760010160008282546139439190614cd7565b925050819055508287600701600082825461395e9190614cd7565b90915550506000898152600d602090815260408083206001600160a01b03891684528252808320805460ff191660011790558b8352600e8252808320848452909152812080548592906139b2908490614cd7565b90915550506000898152600e60209081526040808320848452909152812060019081018054919290916139e6908490614cd7565b90915550506000988952600e60209081526040808b20838c5282528a2060028101805460018082018355918d52838d200180546001600160a01b0319166001600160a01b039990991698909817909755600301805496870181558a52909820909301555093949350505050565b6000610f018383614111565b6000610457825490565b60606104576001600160a01b03831660145b60606000613a8a836002614d00565b613a95906002614cd7565b6001600160401b03811115613aac57613aac6143c4565b6040519080825280601f01601f191660200182016040528015613ad6576020820181803683370190505b509050600360fc1b81600081518110613af157613af1614cea565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613b2057613b20614cea565b60200101906001600160f81b031916908160001a9053506000613b44846002614d00565b613b4f906001614cd7565b90505b6001811115613bc7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613b8357613b83614cea565b1a60f81b828281518110613b9957613b99614cea565b60200101906001600160f81b031916908160001a90535060049490941c93613bc081614ea6565b9050613b52565b508315610f015760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104de565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600c810154600090600019630100000090910460ff1601613c5a57506005015490565b600482015415613c8d5760048201546002830154613c789042614d5a565b613c829190614d2d565b610457906001614cd7565b81600301548260010154613c9f613ca9565b613c789190614d5a565b60004661a4b1819003613d1f5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d199190614ebd565b91505090565b4391505090565b613d308282610f08565b6106405760008281526011602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613d683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610f01836001600160a01b03841661413b565b613dcb8282610f08565b156106405760008281526011602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610f01836001600160a01b03841661418a565b601054815160208301516040808501516060860151608087015160a088015160c08901519451631e83fbeb60e31b81526101006004820152600261010482015261060f60f31b6101248201526001600160a01b03978816602482015263ffffffff968716604482015261ffff9485166064820152939092166084840152851660a48301529290921660c4830152821660e4820152600092919091169063f41fdf5890610144016020604051808303816000875af1158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104579190614ebd565b606083518210613f37575082610f01565b6000826001600160401b03811115613f5157613f516143c4565b604051908082528060200260200182016040528015613f7a578160200160208202803683370190505b509050600085516001600160401b03811115613f9857613f986143c4565b604051908082528060200260200182016040528015613fc1578160200160208202803683370190505b50905060005b865181101561401957868181518110613fe257613fe2614cea565b6020026020010151828281518110613ffc57613ffc614cea565b60209081029190910101528061401181614d41565b915050613fc7565b50855160005b858110156141055760006140338389614d6d565b905083818151811061404757614047614cea565b602002602001015185838151811061406157614061614cea565b602090810291909101015283614078600185614d5a565b8151811061408857614088614cea565b60200260200101518482815181106140a2576140a2614cea565b6020908102919091010152826140b781614ea6565b93505087826040516020016140d6929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c97505080806140fd90614d41565b91505061401f565b50919695505050505050565b600082600001828154811061412857614128614cea565b9060005260206000200154905092915050565b600081815260018301602052604081205461418257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610457565b506000610457565b600081815260018301602052604081205480156142735760006141ae600183614d5a565b85549091506000906141c290600190614d5a565b90508181146142275760008660000182815481106141e2576141e2614cea565b906000526020600020015490508087600001848154811061420557614205614cea565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061423857614238614ed6565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610457565b6000915050610457565b8280548282559060005260206000209081019282156142b8579160200282015b828111156142b857825182559160200191906001019061429d565b506142c49291506142f4565b5090565b604051806080016040528060008152602001600081526020016000151581526020016000151581525090565b5b808211156142c457600081556001016142f5565b60006020828403121561431b57600080fd5b81356001600160e01b031981168114610f0157600080fd5b80356001600160a01b0381168114611b5e57600080fd5b60008060006060848603121561435f57600080fd5b8335925061436f60208501614333565b9150604084013590509250925092565b60006020828403121561439157600080fd5b5035919050565b600080604083850312156143ab57600080fd5b823591506143bb60208401614333565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156143fc576143fc6143c4565b60405290565b604051608081016001600160401b03811182821017156143fc576143fc6143c4565b60405161026081016001600160401b03811182821017156143fc576143fc6143c4565b604051601f8201601f191681016001600160401b038111828210171561446f5761446f6143c4565b604052919050565b803560ff81168114611b5e57600080fd5b803563ffffffff81168114611b5e57600080fd5b600080604083850312156144af57600080fd5b823591506020808401356001600160401b03808211156144ce57600080fd5b9085019060a082880312156144e257600080fd5b6144ea6143da565b823581526144f9848401614477565b8482015260408301358281111561450f57600080fd5b8301601f8101891361452057600080fd5b803583811115614532576145326143c4565b614544601f8201601f19168701614447565b9350808452898682840101111561455a57600080fd5b80868301878601376000868286010152505081604082015261457e60608401614488565b606082015261458f60808401614488565b6080820152809450505050509250929050565b60005b838110156145bd5781810151838201526020016145a5565b50506000910152565b600081518084526145de8160208601602086016145a2565b601f01601f19169290920160200192915050565b602081526000610f0160208301846145c6565b6000806040838503121561461857600080fd5b61462183614333565b91506143bb60208401614333565b803561ffff81168114611b5e57600080fd5b600060e0828403121561465357600080fd5b60405160e081018181106001600160401b0382111715614675576146756143c4565b60405290508061468483614333565b815261469260208401614488565b60208201526146a36040840161462f565b60408201526146b46060840161462f565b60608201526146c560808401614333565b60808201526146d660a08401614488565b60a08201526146e760c08401614333565b60c08201525092915050565b600080600080610140858703121561470a57600080fd5b843593506020850135925061472160408601614333565b91506147308660608701614641565b905092959194509250565b6000806000806000610160868803121561475457600080fd5b8535945060208601359350604086013592506060860135915061477a8760808801614641565b90509295509295909350565b600080600080610140858703121561479d57600080fd5b843593506147ad60208601614333565b9250604085013591506147308660608701614641565b600080604083850312156147d657600080fd5b50508035926020909101359150565b60006001600160401b038211156147fe576147fe6143c4565b5060051b60200190565b600082601f83011261481957600080fd5b8135602061482e614829836147e5565b614447565b82815260079290921b8401810191818101908684111561484d57600080fd5b8286015b848110156148ae576080818903121561486a5760008081fd5b614872614402565b61487b82614333565b8152614888858301614488565b818601526040828101359082015260608083013590820152835291830191608001614851565b509695505050505050565b60008060008385036102a08112156148d057600080fd5b8435935061026080601f19830112156148e857600080fd5b6148f0614424565b91506020860135825260408601356020830152606086013560408301526080860135606083015260a0860135608083015260c086013560a083015260e086013560c08301526101008087013560e084015261012080880135828501526101409150818801358185015250610160808801358285015261018091508188013581850152506101a0614981818901614477565b828501526101c09150614995828901614477565b908401526101e06149a7888201614477565b8285015261020091506149bb828901614477565b908401526102206149cd888201614477565b8285015261024091506149e1828901614477565b908401526149f0878301614333565b908301525091506102808401356001600160401b03811115614a1157600080fd5b614a1d86828701614808565b9150509250925092565b600060208284031215614a3957600080fd5b610f0182614333565b600082601f830112614a5357600080fd5b81356020614a63614829836147e5565b82815260059290921b84018101918181019086841115614a8257600080fd5b8286015b848110156148ae5780358352918301918301614a86565b60008060008060808587031215614ab357600080fd5b84356001600160401b0380821115614aca57600080fd5b614ad688838901614a42565b95506020870135915080821115614aec57600080fd5b50614af987828801614a42565b949794965050505060408301359260600135919050565b6020808252825182820181905260009190848201906040850190845b81811015614b4857835183529284019291840191600101614b2c565b50909695505050505050565b600181811c90821680614b6857607f821691505b602082108103614b8857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561052757600081815260208120601f850160051c81016020861015614bb55750805b601f850160051c820191505b81811015614bd457828155600101614bc1565b505050505050565b81516001600160401b03811115614bf557614bf56143c4565b614c0981614c038454614b54565b84614b8e565b602080601f831160018114614c3e5760008415614c265750858301515b600019600386901b1c1916600185901b178555614bd4565b600085815260208120601f198616915b82811015614c6d57888601518255948401946001909101908401614c4e565b5085821015614c8b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600c908201526b696e76616c69642072756c6560a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561045757610457614cc1565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761045757610457614cc1565b634e487b7160e01b600052601260045260246000fd5b600082614d3c57614d3c614d17565b500490565b600060018201614d5357614d53614cc1565b5060010190565b8181038181111561045757610457614cc1565b600082614d7c57614d7c614d17565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614db38160178501602088016145a2565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614de48160288401602088016145a2565b01602801949350505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b604081526000614e5160408301856145c6565b90508260208301529392505050565b604081526000614e7360408301856145c6565b905082151560208301529392505050565b63ffffffff93909316835261ffff919091166020830152604082015260600190565b600081614eb557614eb5614cc1565b506000190190565b600060208284031215614ecf57600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fdfe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adca26469706673582212204385628a696ca284d8b371b0ce7b325b93be17ef86262317b39b384ff0d3858664736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012d5760003560e01c80636e8580b2116100b35780636e8580b2146102e25780638b38b514146102f55780639010d07c1461030a57806391d14854146103355780639ccc53b914610348578063a217fddf1461035b578063badccd7e14610363578063c2bd355214610376578063ca15c87314610389578063d547741f1461039c578063f8ead276146103af578063ffa08160146103c25761012d565b806301ffc9a7146101a4578063097942f3146101cc578063248a9ca3146101ed5780632f2ff15d1461021057806333a86cd21461022357806334c76b251461023657806336568abe1461026f578063485cc955146102825780634e4a539f1461029557806354fd4d50146102c357806360c07fdc146102cf575b600080516020614eed833981519152610145816103e2565b600f5460408051808201909152600a81526966616c6c6261636b203160b01b60208201526001600160a01b039091169061017e906103ef565b3660008037600080366000845af43d6000803e80801561019d573d6000f35b3d6000fd5b005b6101b76101b2366004614309565b610432565b60405190151581526020015b60405180910390f35b6101df6101da36600461434a565b61045d565b6040519081526020016101c3565b6101df6101fb36600461437f565b60009081526011602052604090206001015490565b6101a261021e366004614398565b610502565b6101a261023136600461449c565b61052c565b6040805180820190915260148152732927aaa7222fa420a7222622a92fa422a62822a960611b60208201525b6040516101c391906145f2565b6101a261027d366004614398565b6105c6565b6101a2610290366004614605565b610644565b6102a86102a33660046146f3565b6106f9565b604080519384526020840192909252908201526060016101c3565b65126ad8dcd6326101df565b6101a26102dd36600461473b565b610a41565b6101df6102f0366004614786565b610df3565b6101df600080516020614eed83398151915281565b61031d6103183660046147c3565b610ee9565b6040516001600160a01b0390911681526020016101c3565b6101b7610343366004614398565b610f08565b61026261035636600461437f565b610f33565b6101df600081565b6101a26103713660046148b9565b610fdb565b6101a2610384366004614a27565b611268565b6101df61039736600461437f565b6112a3565b6101a26103aa366004614398565b6112ba565b6101b76103bd36600461434a565b6112df565b6103d56103d0366004614a9d565b6113ae565b6040516101c39190614b10565b6103ec813361176b565b50565b6103ec8160405160240161040391906145f2565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b1790526117c4565b60006001600160e01b03198216635a05180f60e01b14806104575750610457826117cd565b92915050565b6000600080516020614eed833981519152610477816103e2565b600085815260208181526040808320600183528184208785529092529091206104a38282898989611802565b6104e75760405162461bcd60e51b815260206004820152601060248201526f31b432b1b5903932b33ab7321032b93960811b60448201526064015b60405180910390fd5b60006104f4888789611a0d565b94505050505b509392505050565b60008281526011602052604090206001015461051d816103e2565b6105278383611a7d565b505050565b600080516020614eed833981519152610544816103e2565b600083815260026020818152604092839020855181559085015160018201805460ff191660ff909216919091179055918401518492918201906105879082614bdc565b5060608201516003909101805460809093015163ffffffff908116600160201b0267ffffffffffffffff19909416921691909117919091179055505050565b6001600160a01b03811633146106365760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016104de565b6106408282611a9f565b5050565b60006106506001611ac1565b9050801561066c576010805460ff60a81b1916600160a81b1790555b601080546001600160a01b038086166001600160a01b031992831617909255600f8054928516929091169190911790556106ad60006106a83390565b611b63565b8015610527576010805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000806000600080516020614eed833981519152610716816103e2565b600088815260208181526040808320600183528184208b855290925290912060028201546107565760405162461bcd60e51b81526004016104de90614c9b565b61077f604051806040016040528060078152602001661c9bdd5b99125960ca1b8152508a611b6d565b6107b06040518060400160405280600f81526020016e0626c6f636b2e74696d657374616d7608c1b81525042611b6d565b60006107f360008c8c6040516020016107d3929190918252602082015260400190565b60405160208183030381529060405280519060200120858560008f611bb2565b90506108226040518060400160405280600b81526020016a31b0b7103a3934b3b3b2b960a91b81525082612237565b80156108485760006108378b8d8b878761227c565b90506108468b8d868685612914565b505b5060006108578b838c8c612a40565b90508061089a5760405162461bcd60e51b815260206004820152601160248201527031b630b4b69031b432b1b59032b93937b960791b60448201526064016104de565b506108af8a8a8960c001516000806001612bca565b600c82015460031961010090910460ff16016108ff5760008060006108ed8d8b6020015163ffffffff168c6060015161ffff168f8e60c00151612c5d565b919a5098509650610a36945050505050565b600080600061090f8d8d8d61301f565b92509250925061094c60405180604001604052806015815260200174070726f63657373436c61696d20616d6f756e74203605c1b81525084611b6d565b6109886040518060400160405280601a815260200179070726f63657373436c61696d20696e707574416d6f756e7420360341b81525083611b6d565b6109bf60405180604001604052806015815260200174070726f63657373436c61696d206272616e6368203605c1b81525082611b6d565b600c85015462010000900460ff1660011480156109dc5750600083115b156109f0576109ed8d8b858f6133ff565b92505b610a2760405180604001604052806015815260200174070726f63657373436c61696d20616d6f756e74203605c1b81525084611b6d565b91975095509350610a36915050565b509450945094915050565b600080516020614eed833981519152610a59816103e2565b600086815260208181526040808320600183528184208985529092529091206002820154610a995760405162461bcd60e51b81526004016104de90614c9b565b6000610aad8984848860c001518c8c613632565b905080610aec5760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b60448201526064016104de565b50866000819003610b5c57610b2d604051806040016040528060148152602001731c1c9bd8d95cdcd25b9c1d5d081c9bdd5b99125960621b81525089611b6d565b6005830154610b3d906001614cd7565b60008a8152600160209081526040808320848452909152902090985091505b6000610b9e888b8b604051602001610b7e929190918252602082015260400190565b60405160208183030381529060405280519060200120868660018e611bb2565b60008b8152600c6020526040812091925090815b8154811015610d185760008d8152600b6020526040812083546127109290859085908110610be257610be2614cea565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610c1f9063ffffffff600160a01b909104168c614d00565b610c299190614d2d565b600b60008f81526020019081526020016000206000848481548110610c5057610c50614cea565b60009182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190610c87908490614cd7565b909155505060008d8152600b6020526040812083546127109290859085908110610cb357610cb3614cea565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610cf09063ffffffff600160a01b909104168c614d00565b610cfa9190614d2d565b610d049084614cd7565b925080610d1081614d41565b915050610bb2565b50610d2590508189614d5a565b60008c81526008602052604081208054929a508a935091610d47908490614cd7565b909155505060408051602081018c90529081018a9052610dac9060600160408051601f19818403018152919052805160209091012060c0880151600c870154879187918d91906301000000900460ff1615610da3578715610da6565b60005b8d61383c565b9750610dc18a8a8860c001518b8b6000612bca565b8015610de7576000610dd68a8c89888861227c565b9050610de58a8c878785612914565b505b50505050505050505050565b6000600080516020614eed833981519152610e0d816103e2565b60008681526020818152604080832060018352818420888552835281842082519384018b9052918301889052929091610e6590829060600160405160208183030381529060405280519060200120858560008c611bb2565b905080610eb45760405162461bcd60e51b815260206004820152601e60248201527f70726f636573735472696767657220696e76616c69642074726967676572000060448201526064016104de565b8015610eda576000610ec9888b89878761227c565b9050610ed8888b868685612914565b505b50600098975050505050505050565b6000828152601260205260408120610f019083613a53565b9392505050565b60009182526011602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600260008381526020019081526020016000206002018054610f5690614b54565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8290614b54565b8015610fcf5780601f10610fa457610100808354040283529160200191610fcf565b820191906000526020600020905b815481529060010190602001808311610fb257829003601f168201915b50505050509050919050565b600080516020614eed833981519152610ff3816103e2565b600084815260208181526040808320865181559186015160018301558501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008086015160088301556101208601516009830155610140860151600a830155610160860151600b830155610180860151600c90920180546101a08801516101c08901516101e08a01516102008b01516102208c01516102408d01516001600160a01b0316600160301b02600160301b600160d01b031960ff928316600160281b0260ff60281b19948416600160201b029490941665ffff000000001995841663010000000263ff0000001997851662010000029790971663ffff000019988516909b0261ffff1990991693909b169290921796909617949094169690961791909117169490941792909217929092161790555b8251811015611261576000858152600c60205260409020835184908390811061116a5761116a614cea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905582518390829081106111ba576111ba614cea565b6020026020010151600b600087815260200190815260200160002060008584815181106111e9576111e9614cea565b602090810291909101810151516001600160a01b039081168352828201939093526040918201600020845181549286015163ffffffff16600160a01b026001600160c01b031990931694169390931717825582015160018201556060909101516002909101558061125981614d41565b91505061113f565b5050505050565b600080516020614eed833981519152611280816103e2565b50600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260126020526040812061045790613a5f565b6000828152601160205260409020600101546112d5816103e2565b6105278383611a9f565b6000600080516020614eed8339815191526112f9816103e2565b6000858152600b602090815260408083206001600160a01b038816845290915290206001015483116113a3576000858152600b602090815260408083206001600160a01b03881684529091528120600101805485929061135a908490614d5a565b90915550506000858152600b602090815260408083206001600160a01b038816845290915281206002018054859290611394908490614cd7565b90915550600192506104fa9050565b506000949350505050565b6060845182106113bf575083611763565b84518451146114065760405162461bcd60e51b81526020600482015260136024820152723bb2b4b3b43a103632b733ba341032b93937b960691b60448201526064016104de565b6000826001600160401b03811115611420576114206143c4565b604051908082528060200260200182016040528015611449578160200160208202803683370190505b509050600086516001600160401b03811115611467576114676143c4565b604051908082528060200260200182016040528015611490578160200160208202803683370190505b50905060005b8481101561175d5760008189516114ad9190614d5a565b6114b8906002614d00565b6001600160401b038111156114cf576114cf6143c4565b6040519080825280602002602001820160405280156114f8578160200160208202803683370190505b5090506000805b8a518110156116195784818151811061151a5761151a614cea565b602002602001015115156001151514611607578a818151811061153f5761153f614cea565b602002602001015183838151811061155957611559614cea565b602090810291909101015281156115b75782611576600184614d5a565b8151811061158657611586614cea565b60200260200101518a82815181106115a0576115a0614cea565b60200260200101516115b29190614cd7565b6115d2565b8981815181106115c9576115c9614cea565b60200260200101515b836115de846001614cd7565b815181106115ee576115ee614cea565b6020908102919091010152611604600283614cd7565b91505b8061161181614d41565b9150506114ff565b50506040805160208082018a9052818301859052825180830384018152606090920190925280519101208151829061165390600190614d5a565b8151811061166357611663614cea565b6020026020010151816116769190614d6d565b905060005b82518110156117475782611690826001614cd7565b815181106116a0576116a0614cea565b6020026020010151821015611735578281815181106116c1576116c1614cea565b60200260200101518685815181106116db576116db614cea565b60200260200101818152505060018560018584815181106116fe576116fe614cea565b60200260200101516117109190614d5a565b8151811061172057611720614cea565b91151560209283029190910190910152611747565b611740600282614cd7565b905061167b565b505050808061175590614d41565b915050611496565b50909150505b949350505050565b6117758282610f08565b6106405761178281613a69565b61178d836020613a7b565b60405160200161179e929190614d81565b60408051601f198184030181529082905262461bcd60e51b82526104de916004016145f2565b6103ec81613c16565b60006001600160e01b03198216637965db0b60e01b148061045757506301ffc9a760e01b6001600160e01b0319831614610457565b600080600660008685604051602001611825929190918252602082015260400190565b60408051808303601f19018152918152815160209283012083528282019390935290820160009081206001600160a01b0388168252909152206002810154909150610100900460ff161561187d576000915050611a04565b600886015415611891576000915050611a04565b866008015486600101541061198a57600c870154600019600160201b90910460ff16016118d35785546009880154116118ce576000915050611a04565b61198a565b600c870154600160201b900460ff1661198a576000808685604051602001611905929190918252602082015260400190565b60408051601f198184030181529190528051602090910120905060015b8960060154811161196f576000828152600e602090815260408083208484529091529020600101541561195d578261195981614d41565b9350505b8061196781614d41565b915050611922565b50818960090154116119875760009350505050611a04565b50505b600c8701546301000000900460ff166119b057826119a788613c37565b11915050611a04565b6004870154156119d85742876004015487600601546119cf9190614cd7565b10915050611a04565b6003870154156119fe576119ea613ca9565b876003015487600501546119cf9190614cd7565b60009150505b95945050505050565b6000808484604051602001611a2c929190918252602082015260400190565b60408051601f1981840301815291815281516020928301206000908152600683528181206001600160a01b0387168252909252902060028101805461ff001916610100179055549150509392505050565b611a878282613d26565b60008281526012602052604090206105279082613dac565b611aa98282613dc1565b60008281526012602052604090206105279082613e28565b601054600090600160a81b900460ff1615611b0c578160ff166001148015611ae85750303b155b611b045760405162461bcd60e51b81526004016104de90614df0565b506000919050565b60105460ff808416600160a01b9092041610611b3a5760405162461bcd60e51b81526004016104de90614df0565b506010805460ff909216600160a01b0260ff60a01b19909216919091179055600190565b919050565b6106408282611a7d565b6106408282604051602401611b83929190614e3e565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526117c4565b6000611be46040518060400160405280600f81526020016e5f636865636b54726967676572203160881b8152506103ef565b600c850154600885015460ff8083169263010000009004169015611c0d5760009250505061222d565b611c3d6040518060400160405280600f81526020016e2fb1b432b1b5aa3934b3b3b2b9101960891b8152506103ef565b600c870154600019600160201b90910460ff1601611d475784158015611c67575085546009880154115b80611c895750848015611c8957508554611c82906001614cd7565b8760090154115b15611d4257611ccb604051806040016040528060178152602001761cd0dbdb999a59cb9b19585cdd11dc9bdd5c10dbdd5b9d604a1b8152508860090154611b6d565b611d0660405180604001604052806015815260200174073526f756e64496e666f2e746f74616c47726f757605c1b8152508760000154611b6d565b611d376040518060400160405280601081526020016f5f636865636b5472696767657220323160801b8152506103ef565b60009250505061222d565b611e04565b600c870154600160201b900460ff16611e0457600060015b88600601548111611db85760008a8152600e60209081526040808320848452909152902060010154151580611d935750808b145b15611da65781611da281614d41565b9250505b80611db081614d41565b915050611d5f565b508088600901541115611e0257611df66040518060400160405280601081526020016f2fb1b432b1b5aa3934b3b3b2b910191960811b8152506103ef565b6000935050505061222d565b505b611e346040518060400160405280600f81526020016e5f636865636b54726967676572203360881b8152506103ef565b8415611e5557600c87015460ff1660011901611e555760009250505061222d565b611e856040518060400160405280600f81526020016e17d8da1958dad51c9a59d9d95c880d608a1b8152506103ef565b80612089576001198201611f7657611ed86040518060400160405280601b81526020017a5f67657443757272656e74526f756e6449642873436f6e6669672960281b815250611ed389613c37565b611b6d565b611f14604051806040016040528060168152602001751cd0dbdb999a59cb9b19585cdd155cd95c90dbdd5b9d60521b8152508860080154611b6d565b611f4e6040518060400160405280601481526020017339a937bab73224b73337973a37ba30b62ab9b2b960611b8152508760010154611b6d565b83611f5888613c37565b118015611f6d57508560010154876008015411155b9250505061222d565b600219820161208457611fbd6040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203100008152506103ef565b841561201f576120016040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203200008152506103ef565b600a87015460018088015461201591614cd7565b149250505061222d565b61205d6040518060400160405280601e81526020017f5f636865636b547269676765722047414d455f4d4f44455f464f5552203300008152506103ef565b8560010154876008015411158015611f6d57508361207a88613c37565b119250505061222d565b612226565b60001981016122265760011982016120f3576003870154156120de576120ad613ca9565b876003015487600501546120c19190614cd7565b108015611f6d57508560010154876008015411159250505061222d565b42876004015487600601546120c19190614cd7565b600219820161222657841561211657600a87015460018088015461201591614cd7565b600387015415612159578560010154876008015411158015611f6d575061213b613ca9565b8760030154876005015461214f9190614cd7565b109250505061222d565b6121936040518060400160405280601481526020017373526f756e64496e666f2e626567696e54696d6560601b8152508760060154611b6d565b6121cd604051806040016040528060148152602001731cd0dbdb999a59cb9d1a5b5954195c949bdd5b9960621b8152508860040154611b6d565b6121fe6040518060400160405280600f81526020016e0626c6f636b2e74696d657374616d7608c1b81525042611b6d565b8560010154876008015411158015611f6d5750428760040154876006015461214f9190614cd7565b6000925050505b9695505050505050565b610640828260405160240161224d929190614e60565b60408051601f198184030181529190526020810180516001600160e01b031663c3b5563560e01b1790526117c4565b6060600061228985613e3d565b600c85015490915060609060031961010090910460ff16016126c1576000805b60208801516060890151600091906122c2846065614cd7565b6040516020016122d493929190614e84565b60408051808303601f19018152918152815160209283012060008181526002909352912060030154909150600160201b900463ffffffff1615612323578261231b81614d41565b935050612329565b5061233c565b508061233481614d41565b9150506122a9565b50600c860154600090600160201b900460ff16600114612360578660060154612363565b85545b9050808211156123735780612375565b815b600c88015490925060609150600160201b900460ff161580156123a65750600c870154600160281b900460ff166002145b1561250a5760408051602081018b90529081018b905260009060600160408051601f19818403018152919052805160209091012060009b50905060015b886006015481111580156123f75750838111155b1561243e576000828152600e602090815260408083208484529091529020600101541561242c578b61242881614d41565b9c50505b8061243681614d41565b9150506123e3565b508a6001600160401b03811115612457576124576143c4565b604051908082528060200260200182016040528015612480578160200160208202803683370190505b5060009b50915060015b8860060154811115801561249e5750838111155b15612503576000828152600e60209081526040808320848452909152902060010154156124f15780838d815181106124d8576124d8614cea565b60209081029190910101528b6124ed81614d41565b9c50505b806124fb81614d41565b91505061248a565b5050612595565b816001600160401b03811115612522576125226143c4565b60405190808252806020026020018201604052801561254b578160200160208202803683370190505b50905060015b81518111612593578082612566600183614d5a565b8151811061257657612576614cea565b60209081029190910101528061258b81614d41565b915050612551565b505b600081516001600160401b038111156125b0576125b06143c4565b6040519080825280602002602001820160405280156125d9578160200160208202803683370190505b50905060005b82518110156126a65760008a602001518b60600151600186858151811061260857612608614cea565b6020026020010151606560ff1661261f9190614cd7565b6126299190614d5a565b60405160200161263b93929190614e84565b60408051808303601f190181529181528151602092830120600081815260029093529120600301548451919250600160201b900463ffffffff169084908490811061268857612688614cea565b6020908102919091010152508061269e81614d41565b9150506125df565b506126b78282878b600701546113ae565b9350505050612909565b600c850154600160281b900460ff1660021480156126eb5750600c850154600160201b900460ff16155b1561284757604080516020810189905290810189905260009060600160408051601f19818403018152919052805160209091012060009950905060015b86600601548111612775576000828152600e6020908152604080832084845290915290206001015415612763578961275f81614d41565b9a50505b8061276d81614d41565b915050612728565b506000896001600160401b03811115612790576127906143c4565b6040519080825280602002602001820160405280156127b9578160200160208202803683370190505b5060009a50905060015b8760060154811161282e576000838152600e602090815260408083208484529091529020600101541561281c5780828c8151811061280357612803614cea565b60209081029190910101528a61281881614d41565b9b50505b8061282681614d41565b9150506127c3565b5061283e81858960070154613f26565b92505050612909565b600c850154600090600160201b900460ff1660011461286a57856006015461286d565b84545b6001600160401b03811115612884576128846143c4565b6040519080825280602002602001820160405280156128ad578160200160208202803683370190505b50905060015b815181116128f55780826128c8600183614d5a565b815181106128d8576128d8614cea565b6020908102919091010152806128ed81614d41565b9150506128b3565b5061290581848860070154613f26565b9150505b979650505050505050565b600b8301541561293657600b8301805490600061293083614ea6565b91905055505b805161294b906008840190602084019061427d565b506000805b82518110156129ea57600e60008789604051602001612979929190918252602082015260400190565b60405160208183030381529060405280519060200120815260200190815260200160002060008483815181106129b1576129b1614cea565b6020026020010151815260200190815260200160002060000154826129d69190614cd7565b9150806129e281614d41565b915050612950565b50600c8401546000196201000090910460ff1601612a1557808360070154612a129190614d5a565b90505b60008581526009602052604081208054839290612a33908490614cd7565b9091555050505050505050565b6000612a706040518060400160405280600d81526020016c5f636865636b436c61696d203160981b8152506103ef565b6008840154600003612a8457506000611763565b612ab26040518060400160405280600d81526020016c2fb1b432b1b5a1b630b4b6901960991b8152506103ef565b600d60008685604051602001612ad2929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935290820160009081206001600160a01b0386168252909152205460ff16612b1b57506000611763565b612b496040518060400160405280600d81526020016c5f636865636b436c61696d203360981b8152506103ef565b6000600660008786604051602001612b6b929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935290820160009081206001600160a01b038716825290915220600281015490915060ff1615612bbe576000915050611763565b50600195945050505050565b604080516020808201899052818301889052825180830384018152606090920183528151918101919091206000818152600683528381206001600160a01b038916825290925291902082612c4257838155600181018590556000888152600a60205260408120805491612c3c83614d41565b91905055505b600201805460ff191692151592909217909155505050505050565b6000858152602081815260408083206001835281842086855283528184208251808401909352601b83527a5f676574436c61696d416d6f756e7457697468576569676874203160281b9383019390935283928392612cba906103ef565b600c82015460031961010090910460ff160161300657612cd86142c8565b60408051602081018d905290810189905260009060600160408051601f1981840301815282825280516020918201206000908152600682528281206001600160a01b038d1682528252829020608084018352805484526001810154918401919091526002015460ff80821615159284019290925261010090048116151560608301526008850154600c8701549294509250600019620100009092041601612ef357612db56040518060400160405280601b81526020017a2fb3b2ba21b630b4b6a0b6b7bab73a2bb4ba342bb2b4b3b43a101960291b8152506103ef565b60005b81811015612eed57836008018181548110612dd557612dd5614cea565b9060005260206000200154836020015103612edb5760008c8c6001876008018581548110612e0557612e05614cea565b600091825260209091200154612e1c906065614cd7565b612e269190614d5a565b604080516020810194909452830191909152606082015260800160408051601f1981840301815291815281516020928301206000818152600290935290822060030154865191935061271091612e829163ffffffff1690614d00565b612e8c9190614d2d565b90508060006001886008018681548110612ea857612ea8614cea565b600091825260209091200154612ebf906065614cd7565b612ec99190614d5a565b99509950995050505050505050613014565b80612ee581614d41565b915050612db8565b50613003565b600c84015462010000900460ff16613003576000805b82811015612f5657846008018181548110612f2657612f26614cea565b9060005260206000200154846020015103612f445760019150612f56565b80612f4e81614d41565b915050612f09565b50806130015760008c8c60018660200151606560ff16612f769190614cd7565b612f809190614d5a565b604080516020810194909452830191909152606082015260800160408051601f1981840301815291815281516020928301206000818152600290935290822060030154865191935061271091612fdc9163ffffffff1690614d00565b612fe69190614d2d565b905080600060018760200151606560ff16612ebf9190614cd7565b505b50505b600080600094509450945050505b955095509592505050565b600083815260208181526040808320600183528184208685529092528220829182916130496142c8565b506040805160208082018b90528183018a9052825180830384018152606083018085528151918301919091206000908152600683528481206001600160a01b038c168252835284812060e08501865280548352600180820154608087015260029091015460ff808216151560a0880152610100918290048116151560c0909701969096528e83529084528582208d8352909352939093206008810154600c87015491939092600219920416016131655760005b8181101561315f5782600801818154811061311957613119614cea565b906000526020600020015484602001510361314d5760008061313c836001614cd7565b9850985098505050505050506133f6565b8061315781614d41565b9150506130fc565b506133e5565b60008060005b838110156131b85784600801818154811061318857613188614cea565b90600052602060002001548660200151036131a657600191506131b8565b806131b081614d41565b91505061316b565b5060005b8381101561325b57600e60008f8f6040516020016131e4929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020600086600801838154811061321f5761321f614cea565b9060005260206000200154815260200190815260200160002060000154836132479190614cd7565b92508061325381614d41565b9150506131bc565b50600c870154600090610100900460ff1661327b575060078601546132c1565b600c88015460001961010090910460ff16016132985750816132c1565b600c88015460011961010090910460ff16016132c1578287600701546132be9190614d5a565b90505b600c88015462010000900460ff161580156132da575081155b15613353578287600701546132ef9190614d5a565b1561331f578287600701546133049190614d5a565b86516133109083614d00565b61331a9190614d2d565b613322565b60005b600c890154610100900460ff161561333b57865161333e565b60005b60009a509a509a5050505050505050506133f6565b600c88015462010000900460ff16600114801561337257506001821515145b156133e157600e60008f8f604051602001613397929190918252602082015260400190565b60408051601f198184030181529181528151602092830120835282820193909352908201600090812089830151825290915220549250821561331f57855183906133109083614d00565b5050505b600080600097509750975050505050505b93509350939050565b600061343660405180604001604052806014815260200173383937b1b2b9b9a832b931b2b73a103132b3b4b760611b8152506103ef565b61343e6142c8565b506000858152600160208181526040808420868552825280842081518084018b90528083018890528251808203840181526060820180855281519186019190912087526006855283872060c08c8101516001600160a01b03168952955283872060e083019094528354815294830154608082015260029092015460ff808216151560a0850152610100909104161515929091019190915290915b60088201548110156136265782602001518260080182815481106134fe576134fe614cea565b906000526020600020015403613614576020870151606088015160009190613527846065614cd7565b60405160200161353993929190614e84565b60408051601f198184030181528282528051602091820120838301835260158452740e0e4dec6cae6e6a0cae4c6cadce840c4e4c2dcc6d605b1b848301526000818152600290925291902060010154909250613598919060ff16611b6d565b6135e96040518060400160405280601981526020017870726f6365737350657263656e742070657263656e7461676560381b8152506002600084815260200190815260200160002060000154611b6d565b600081815260026020526040902054612710906136069089614d00565b6136109190614d2d565b9650505b8061361e81614d41565b9150506134d8565b50939695505050505050565b600c8501546040805160208082018a9052818301869052825180830384018152606090920183528151918101919091206000908152600d82528281206001600160a01b038816825290915290812054909160ff80821692630100000090920481169116156136a55760009250505061222d565b6008870154156136ba5760009250505061222d565b600c880154600160201b900460ff166136e95787600601548411156136e45760009250505061222d565b6136fa565b83156136fa5760009250505061222d565b6137286040518060400160405280600d81526020016c2fb1b432b1b5a4b7383aba101960991b8152506103ef565b60001981016137965784158015613759575087541580159061375957508754600b890154613757906001614cd7565b115b156137695760009250505061222d565b841580159061377b5750848860050154105b1561378b5760009250505061222d565b60019250505061222d565b6137c46040518060400160405280600d81526020016c5f636865636b496e707574203360981b8152506103ef565b8061380e5760028214806137d85750600382145b1561380e57846137e789613c37565b148015611f6d5750600a88015460018089015461380391614cd7565b11159250505061222d565b6122266040518060400160405280600d81526020016c17d8da1958dad25b9c1d5d080d609a1b8152506103ef565b60006138746040518060400160405280601481526020017317dd5c19185d19525b9c1d5d0819dc9bdd5c125960621b81525086611b6d565b82156138d55760058701805490600061388c83614d41565b9091555050600b870180549060006138a383614d41565b90915550506004870154156138bd574260068701556138d5565b6003870154156138d5576138cf613ca9565b60058701555b84600081900361392e57613916604051806040016040528060168152602001755f757064617465496e7075742067726f75704964203160501b8152506103ef565b865487600061392483614d41565b9091555050865490505b60018760010160008282546139439190614cd7565b925050819055508287600701600082825461395e9190614cd7565b90915550506000898152600d602090815260408083206001600160a01b03891684528252808320805460ff191660011790558b8352600e8252808320848452909152812080548592906139b2908490614cd7565b90915550506000898152600e60209081526040808320848452909152812060019081018054919290916139e6908490614cd7565b90915550506000988952600e60209081526040808b20838c5282528a2060028101805460018082018355918d52838d200180546001600160a01b0319166001600160a01b039990991698909817909755600301805496870181558a52909820909301555093949350505050565b6000610f018383614111565b6000610457825490565b60606104576001600160a01b03831660145b60606000613a8a836002614d00565b613a95906002614cd7565b6001600160401b03811115613aac57613aac6143c4565b6040519080825280601f01601f191660200182016040528015613ad6576020820181803683370190505b509050600360fc1b81600081518110613af157613af1614cea565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613b2057613b20614cea565b60200101906001600160f81b031916908160001a9053506000613b44846002614d00565b613b4f906001614cd7565b90505b6001811115613bc7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613b8357613b83614cea565b1a60f81b828281518110613b9957613b99614cea565b60200101906001600160f81b031916908160001a90535060049490941c93613bc081614ea6565b9050613b52565b508315610f015760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104de565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600c810154600090600019630100000090910460ff1601613c5a57506005015490565b600482015415613c8d5760048201546002830154613c789042614d5a565b613c829190614d2d565b610457906001614cd7565b81600301548260010154613c9f613ca9565b613c789190614d5a565b60004661a4b1819003613d1f5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d199190614ebd565b91505090565b4391505090565b613d308282610f08565b6106405760008281526011602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613d683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610f01836001600160a01b03841661413b565b613dcb8282610f08565b156106405760008281526011602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610f01836001600160a01b03841661418a565b601054815160208301516040808501516060860151608087015160a088015160c08901519451631e83fbeb60e31b81526101006004820152600261010482015261060f60f31b6101248201526001600160a01b03978816602482015263ffffffff968716604482015261ffff9485166064820152939092166084840152851660a48301529290921660c4830152821660e4820152600092919091169063f41fdf5890610144016020604051808303816000875af1158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104579190614ebd565b606083518210613f37575082610f01565b6000826001600160401b03811115613f5157613f516143c4565b604051908082528060200260200182016040528015613f7a578160200160208202803683370190505b509050600085516001600160401b03811115613f9857613f986143c4565b604051908082528060200260200182016040528015613fc1578160200160208202803683370190505b50905060005b865181101561401957868181518110613fe257613fe2614cea565b6020026020010151828281518110613ffc57613ffc614cea565b60209081029190910101528061401181614d41565b915050613fc7565b50855160005b858110156141055760006140338389614d6d565b905083818151811061404757614047614cea565b602002602001015185838151811061406157614061614cea565b602090810291909101015283614078600185614d5a565b8151811061408857614088614cea565b60200260200101518482815181106140a2576140a2614cea565b6020908102919091010152826140b781614ea6565b93505087826040516020016140d6929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c97505080806140fd90614d41565b91505061401f565b50919695505050505050565b600082600001828154811061412857614128614cea565b9060005260206000200154905092915050565b600081815260018301602052604081205461418257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610457565b506000610457565b600081815260018301602052604081205480156142735760006141ae600183614d5a565b85549091506000906141c290600190614d5a565b90508181146142275760008660000182815481106141e2576141e2614cea565b906000526020600020015490508087600001848154811061420557614205614cea565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061423857614238614ed6565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610457565b6000915050610457565b8280548282559060005260206000209081019282156142b8579160200282015b828111156142b857825182559160200191906001019061429d565b506142c49291506142f4565b5090565b604051806080016040528060008152602001600081526020016000151581526020016000151581525090565b5b808211156142c457600081556001016142f5565b60006020828403121561431b57600080fd5b81356001600160e01b031981168114610f0157600080fd5b80356001600160a01b0381168114611b5e57600080fd5b60008060006060848603121561435f57600080fd5b8335925061436f60208501614333565b9150604084013590509250925092565b60006020828403121561439157600080fd5b5035919050565b600080604083850312156143ab57600080fd5b823591506143bb60208401614333565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156143fc576143fc6143c4565b60405290565b604051608081016001600160401b03811182821017156143fc576143fc6143c4565b60405161026081016001600160401b03811182821017156143fc576143fc6143c4565b604051601f8201601f191681016001600160401b038111828210171561446f5761446f6143c4565b604052919050565b803560ff81168114611b5e57600080fd5b803563ffffffff81168114611b5e57600080fd5b600080604083850312156144af57600080fd5b823591506020808401356001600160401b03808211156144ce57600080fd5b9085019060a082880312156144e257600080fd5b6144ea6143da565b823581526144f9848401614477565b8482015260408301358281111561450f57600080fd5b8301601f8101891361452057600080fd5b803583811115614532576145326143c4565b614544601f8201601f19168701614447565b9350808452898682840101111561455a57600080fd5b80868301878601376000868286010152505081604082015261457e60608401614488565b606082015261458f60808401614488565b6080820152809450505050509250929050565b60005b838110156145bd5781810151838201526020016145a5565b50506000910152565b600081518084526145de8160208601602086016145a2565b601f01601f19169290920160200192915050565b602081526000610f0160208301846145c6565b6000806040838503121561461857600080fd5b61462183614333565b91506143bb60208401614333565b803561ffff81168114611b5e57600080fd5b600060e0828403121561465357600080fd5b60405160e081018181106001600160401b0382111715614675576146756143c4565b60405290508061468483614333565b815261469260208401614488565b60208201526146a36040840161462f565b60408201526146b46060840161462f565b60608201526146c560808401614333565b60808201526146d660a08401614488565b60a08201526146e760c08401614333565b60c08201525092915050565b600080600080610140858703121561470a57600080fd5b843593506020850135925061472160408601614333565b91506147308660608701614641565b905092959194509250565b6000806000806000610160868803121561475457600080fd5b8535945060208601359350604086013592506060860135915061477a8760808801614641565b90509295509295909350565b600080600080610140858703121561479d57600080fd5b843593506147ad60208601614333565b9250604085013591506147308660608701614641565b600080604083850312156147d657600080fd5b50508035926020909101359150565b60006001600160401b038211156147fe576147fe6143c4565b5060051b60200190565b600082601f83011261481957600080fd5b8135602061482e614829836147e5565b614447565b82815260079290921b8401810191818101908684111561484d57600080fd5b8286015b848110156148ae576080818903121561486a5760008081fd5b614872614402565b61487b82614333565b8152614888858301614488565b818601526040828101359082015260608083013590820152835291830191608001614851565b509695505050505050565b60008060008385036102a08112156148d057600080fd5b8435935061026080601f19830112156148e857600080fd5b6148f0614424565b91506020860135825260408601356020830152606086013560408301526080860135606083015260a0860135608083015260c086013560a083015260e086013560c08301526101008087013560e084015261012080880135828501526101409150818801358185015250610160808801358285015261018091508188013581850152506101a0614981818901614477565b828501526101c09150614995828901614477565b908401526101e06149a7888201614477565b8285015261020091506149bb828901614477565b908401526102206149cd888201614477565b8285015261024091506149e1828901614477565b908401526149f0878301614333565b908301525091506102808401356001600160401b03811115614a1157600080fd5b614a1d86828701614808565b9150509250925092565b600060208284031215614a3957600080fd5b610f0182614333565b600082601f830112614a5357600080fd5b81356020614a63614829836147e5565b82815260059290921b84018101918181019086841115614a8257600080fd5b8286015b848110156148ae5780358352918301918301614a86565b60008060008060808587031215614ab357600080fd5b84356001600160401b0380821115614aca57600080fd5b614ad688838901614a42565b95506020870135915080821115614aec57600080fd5b50614af987828801614a42565b949794965050505060408301359260600135919050565b6020808252825182820181905260009190848201906040850190845b81811015614b4857835183529284019291840191600101614b2c565b50909695505050505050565b600181811c90821680614b6857607f821691505b602082108103614b8857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561052757600081815260208120601f850160051c81016020861015614bb55750805b601f850160051c820191505b81811015614bd457828155600101614bc1565b505050505050565b81516001600160401b03811115614bf557614bf56143c4565b614c0981614c038454614b54565b84614b8e565b602080601f831160018114614c3e5760008415614c265750858301515b600019600386901b1c1916600185901b178555614bd4565b600085815260208120601f198616915b82811015614c6d57888601518255948401946001909101908401614c4e565b5085821015614c8b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600c908201526b696e76616c69642072756c6560a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561045757610457614cc1565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761045757610457614cc1565b634e487b7160e01b600052601260045260246000fd5b600082614d3c57614d3c614d17565b500490565b600060018201614d5357614d53614cc1565b5060010190565b8181038181111561045757610457614cc1565b600082614d7c57614d7c614d17565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614db38160178501602088016145a2565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614de48160288401602088016145a2565b01602801949350505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b604081526000614e5160408301856145c6565b90508260208301529392505050565b604081526000614e7360408301856145c6565b905082151560208301529392505050565b63ffffffff93909316835261ffff919091166020830152604082015260600190565b600081614eb557614eb5614cc1565b506000190190565b600060208284031215614ecf57600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fdfe5297e68f3a27f04914f2c6db0ad63b5e5c8173cebcc1a5341df045cf6dad7adca26469706673582212204385628a696ca284d8b371b0ce7b325b93be17ef86262317b39b384ff0d3858664736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
