{
  "_format": "hh-sol-artifact-1",
  "contractName": "MineHandler",
  "sourceName": "contracts/V3/handler/MineHandler.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "claimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "clusterRuleAttenuationCountTimeType",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "clusterRuleTaskAttenuationCountRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "engineClusterTaskOutputAddressRoundClaimedClaimableBeginTimeMap",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "getClusterGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "getClusterRuleAttenuationCountTimeType",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "getClusterRuleTaskAttenuationCountRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string[]",
          "name": "areaNameList",
          "type": "string[]"
        }
      ],
      "name": "getEngineAreaList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "getEngineClusterTaskCallerTokenBranchList",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "getEngineClusterTaskOutputAddressRoundClaimedClaimableBeginTimeMap",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIOBranches",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8[]",
              "name": "inBranch",
              "type": "uint8[]"
            },
            {
              "internalType": "uint8[]",
              "name": "outBranch",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct IHandler.IOBranch[]",
          "name": "branches",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "addr",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "addr",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getRuleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "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": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "cmd",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.StateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterArea",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getTokenBranch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct TokenHandler.TokenBranch",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFee",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "clusterArea",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "lastHandler",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "valueTime",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "taskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "parentTaskId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "clusterId",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "erc",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint32",
                          "name": "attrId",
                          "type": "uint32"
                        },
                        {
                          "internalType": "int40",
                          "name": "attrAmount",
                          "type": "int40"
                        }
                      ],
                      "internalType": "struct Attribute.AttributeIn[]",
                      "name": "attrInList",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Token.Token[]",
                  "name": "inTokenList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Task.Task",
              "name": "task",
              "type": "tuple"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            }
          ],
          "internalType": "struct Handler.Process",
          "name": "param",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "preResult",
          "type": "tuple"
        }
      ],
      "name": "process",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "code",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "msg",
              "type": "string"
            },
            {
              "internalType": "bytes",
              "name": "args",
              "type": "bytes"
            }
          ],
          "internalType": "struct Handler.Result",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "randomGenerator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "components": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "erc",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256[]",
                          "name": "valueList",
                          "type": "uint256[]"
                        }
                      ],
                      "internalType": "struct Token.TokenTemplate",
                      "name": "tokenTemplate",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rule",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address[]",
                      "name": "ioAddressList",
                      "type": "address[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "valueList",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct Rule.TokenSlot[]",
                  "name": "tokenSlotList",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint8",
                  "name": "branch",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "poolToken",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "argsList",
                  "type": "bytes[]"
                }
              ],
              "internalType": "struct Rule.GroupSlot[]",
              "name": "groupSlotList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "ruleSlotBound",
              "type": "uint8[]"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexInput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "ruleSlotIndexOutput",
                  "type": "uint16"
                },
                {
                  "internalType": "uint8",
                  "name": "state",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "totalCount",
                  "type": "uint32"
                },
                {
                  "internalType": "uint8",
                  "name": "durationType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint32",
                  "name": "delayTimestamp",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "delayBlockNumber",
                  "type": "uint32"
                },
                {
                  "internalType": "uint64",
                  "name": "handlerCount",
                  "type": "uint64"
                },
                {
                  "internalType": "address[]",
                  "name": "handlerList",
                  "type": "address[]"
                },
                {
                  "internalType": "bytes[]",
                  "name": "handlerArgsList",
                  "type": "bytes[]"
                },
                {
                  "internalType": "address",
                  "name": "snippet",
                  "type": "address"
                }
              ],
              "internalType": "struct Rule.Rule[]",
              "name": "ruleList",
              "type": "tuple[]"
            },
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "attrId",
                  "type": "uint32"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "level",
                  "type": "uint8"
                }
              ],
              "internalType": "struct Attribute.Attribute[]",
              "name": "attrList",
              "type": "tuple[]"
            },
            {
              "internalType": "uint8[]",
              "name": "attrStateList",
              "type": "uint8[]"
            },
            {
              "internalType": "address[]",
              "name": "deployerList",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "adminList",
              "type": "address[]"
            },
            {
              "internalType": "uint32",
              "name": "delayTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "delayBlockNumber",
              "type": "uint32"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct Cluster.Cluster",
          "name": "cluster",
          "type": "tuple"
        }
      ],
      "name": "regRule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndex",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "regRuleGroupSlotArgs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "ruleGroupSlotArgs",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "engineAreaList",
          "type": "address[]"
        }
      ],
      "name": "setEngineAreaList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "cmd",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        }
      ],
      "name": "updateArgs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50615d7680620000216000396000f3fe608060405234801561001057600080fd5b506004361061017a5760003560e01c806380fed744116100d457806380fed7441461033b5780638129fc1c146103645780638da5cb5b1461036c57806394cbedc11461039157806395edcb08146103ba578063a903620c146103da578063af84b51f146103ed578063b2a0d71a1461040d578063b41bd7891461042d578063b4b7035214610440578063d0d35b5514610453578063dcbad90d14610466578063f2fde38b14610479578063f2fe4fa51461048c578063f8970ff3146104a157600080fd5b806306694f021461017f5780631b202235146101a85780631cc4f041146101e95780631eda6e4f1461020c5780632311c08f1461022c57806334c76b251461026d578063394a73981461028d57806340477c5d146102a05780634b2dbcb8146102c05780634b2e9b41146102c057806354fd4d50146102e75780635790c294146102f857806362329cc51461030d5780636dabaf0414610320578063715018a614610333575b600080fd5b61019261018d366004613a34565b6104c1565b60405161019f9190613aa9565b60405180910390f35b6101d16101b6366004613a34565b6069602052600090815260409020546001600160801b031681565b6040516001600160801b03909116815260200161019f565b6101fc6101f7366004613c80565b610563565b604051901515815260200161019f565b61021f61021a366004613dc5565b6105f3565b60405161019f9190613ec6565b61025561023a366004613a34565b6000908152606b60205260409020546001600160601b031690565b6040516001600160601b03909116815260200161019f565b6040805180820190915260048152634d696e6560e01b6020820152610192565b61019261029b366004613a34565b6106b6565b6102b36102ae366004613a34565b610750565b60405161019f9190613ed9565b6102da6102ce366004613f3b565b60609695505050505050565b60405161019f9190613fc2565b60015b60405190815260200161019f565b61030b61030636600461400f565b61080c565b005b6102da61031b3660046140a2565b6108e1565b6101fc61032e366004614152565b6109be565b61030b610b58565b6101d1610349366004613a34565b6000908152606960205260409020546001600160801b031690565b61030b610b6c565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161019f565b61025561039f366004613a34565b606b602052600090815260409020546001600160601b031681565b6103cd6103c83660046143e9565b610c7d565b60405161019f91906145b9565b61030b6103e8366004614d16565b610ece565b6104006103fb366004614ec9565b610f4b565b60405161019f9190614fe6565b6102ea61041b366004613a34565b606a6020526000908152604090205481565b61030b61043b36600461503b565b610fd9565b6101fc61044e366004613c80565b611149565b61019261046136600461506f565b6112a7565b606754610379906001600160a01b031681565b61030b6104873660046150b6565b611381565b6104946113f7565b60405161019f9190615111565b6102ea6104af366004613a34565b6000908152606a602052604090205490565b60008181526068602052604090208054606091906104de90615196565b80601f016020809104026020016040519081016040528092919081815260200182805461050a90615196565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b50505050509050919050565b604051639ef5e7bb60e01b815260009073__$10c7622a794a4c36e0cba83f19e55bd777$__90639ef5e7bb9061059d90859060040161528f565b60206040518083038186803b1580156105b557600080fd5b505af41580156105c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ed919061529e565b92915050565b60408051602081019091526060815260006106128a898989898e61143e565b6000818152606c6020526040902080549192509061ffff851690811061063a5761063a6152c0565b906000526020600020016040518060200160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81548152602001906001019080831161068a575b50505050508152505091505098975050505050505050565b606860205260009081526040902080546106cf90615196565b80601f01602080910402602001604051908101604052809291908181526020018280546106fb90615196565b80156107485780601f1061071d57610100808354040283529160200191610748565b820191906000526020600020905b81548152906001019060200180831161072b57829003601f168201915b505050505081565b6060606c6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610801576000848152602090819020604080519185018054808502840183018352938301848152929390928492909184918401828280156107e957602002820191906000526020600020905b8154815260200190600101908083116107d5575b50505050508152505081526020019060010190610785565b505050509050919050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b81525060668160405161084491906152d6565b90815260405190819003602001902054336001600160a01b03909116146108865760405162461bcd60e51b815260040161087d906152f2565b60405180910390fd5b60003386868660405160200161089f9493929190615315565b60408051601f1981840301815291815281516020928301206000818152606884529190912085519193506108d892909190860190613898565b50505050505050565b6060600082516001600160401b038111156108fe576108fe613abc565b604051908082528060200260200182016040528015610927578160200160208202803683370190505b50905060005b81518110156109b757606684828151811061094a5761094a6152c0565b602002602001015160405161095f91906152d6565b9081526040519081900360200190205482516001600160a01b039091169083908390811061098f5761098f6152c0565b6001600160a01b03909216602092830291909101909101526109b08161535e565b905061092d565b5092915050565b60006040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b8152506066816040516109ff91906152d6565b90815260405190819003602001902054336001600160a01b0390911614610a385760405162461bcd60e51b815260040161087d906152f2565b60ff84161580610a4b575060ff84166001145b15610b4b57600033888888604051602001610a699493929190615379565b60408051601f1981840301815290829052805160209091012060675463237dc7f360e11b835290925073__$10c7622a794a4c36e0cba83f19e55bd777$__916346fb8fe691610ace916001600160a01b03909116908c908c908c908b906004016153ac565b60206040518083038186803b158015610ae657600080fd5b505af4158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e91906153f9565b60009182526069602052604090912080546001600160801b0319166001600160801b039092169190911790555b5060019695505050505050565b610b60611480565b610b6a60006114da565b565b600054610100900460ff1615808015610b8c5750600054600160ff909116105b80610ba65750303b158015610ba6575060005460ff166001145b610c095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161087d565b6000805460ff191660011790558015610c2c576000805461ff0019166101001790555b610c3461152c565b8015610c7a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610c8561391c565b60405180604001604052806006815260200165456e67696e6560d01b815250606681604051610cb491906152d6565b90815260405190819003602001902054336001600160a01b0390911614610ced5760405162461bcd60e51b815260040161087d906152f2565b308352608084015160ff16610d0d57610d06848461155b565b9250610ec6565b608084015160ff1660011415610ec6576000610d2c8560600151611563565b9050805160001480610d3f575080516001145b15610d5b57610d508585600061156f565b9350839250506109b7565b6060850151600090610d7790610d72908484611a7e565b611ad8565b905060ff8116600a1415610ea657606754606087015160208101516101008201516001600160a01b039093169263063738cb92610db390611b26565b610dc08b60600151611b40565b60208c015160608d015160c001518d516040516001600160e01b031960e08a901b168152610df79796959493929190600401615422565b602060405180830381600087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e49919061529e565b15610e5a57600a6020860152610e9c565b604080518082018252601c81527f6d616b652072616e646f6d20657863656564207374642074696d657300000000602080830191909152918701526001908601525b84935050506109b7565b6060860151610eb6906000611b65565b610ec186868361156f565b945050505b509092915050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606681604051610f0d91906152d6565b90815260405190819003602001902054336001600160a01b0390911614610f465760405162461bcd60e51b815260040161087d906152f2565b505050565b6040516318adc02760e21b815260609073__$e5539aee5e4b7b43b991bb6eb023810f45$__906362b7009c90610f8590859060040161546e565b60006040518083038186803b158015610f9d57600080fd5b505af4158015610fb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105ed9190810190615576565b610fe1611480565b60005b81518110156110e357818181518110610fff57610fff6152c0565b6020026020010151606683838151811061101b5761101b6152c0565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b815260040160006040518083038186803b15801561105b57600080fd5b505afa15801561106f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611097919081019061562e565b6040516110a491906152d6565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556110dc8161535e565b9050610fe4565b50604080518082018252600f81526e2930b73237b6a3b2b732b930ba37b960891b60208201529051606691611117916152d6565b90815260405190819003602001902054606780546001600160a01b0319166001600160a01b0390921691909117905550565b600060405180604001604052806006815260200165456e67696e6560d01b81525060668160405161117a91906152d6565b90815260405190819003602001902054336001600160a01b03909116146111b35760405162461bcd60e51b815260040161087d906152f2565b60006111d73385602001518660600151876040015188608001518960a0015161143e565b90506000606c60008381526020019081526020016000208560e0015161ffff1681548110611207576112076152c0565b90600052602060002001905073__$10c7622a794a4c36e0cba83f19e55bd777$__638d5a6cd586836040518363ffffffff1660e01b815260040161124c929190615676565b60206040518083038186803b15801561126457600080fd5b505af4158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c919061529e565b935050505b50919050565b60606000338585856040516020016112c29493929190615315565b6040516020818303038152906040528051906020012090506068600082815260200190815260200160002080546112f890615196565b80601f016020809104026020016040519081016040528092919081815260200182805461132490615196565b80156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b50505050509150505b9392505050565b611389611480565b6001600160a01b0381166113ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087d565b610c7a816114da565b6040805160008082526020820190925260609190816109b7565b60408051808201909152606080825260208201528152602001906001900390816114115790505092915050565b60008087878787878760405160200161145c96959493929190615693565b60408051808303601f19018152919052805160209091012098975050505050505050565b6033546001600160a01b03163314610b6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166115535760405162461bcd60e51b815260040161087d906156d3565b610b6a611ba6565b6112a161391c565b60606105ed8230611bd6565b61157761391c565b60608401516020808201516101008301518288015160c09094015188516040516000966115ac96339695949193919201615693565b60405160208183030381529060405280519060200120905060008560600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f919061571e565b60608701516101008101519061165490611b26565b6116618960600151611b40565b6040516020016116749493929190615379565b604051602081830303815290604052805190602001209050600160ff1661169e8760600151611c8e565b60ff1614156117d65760006116d833886060015160200151896060015161010001518a602001518b6060015160c001518c6000015161143e565b6000818152606c6020908152604080832081519283019091526060825292935090611701611cb3565b90506117108a60600151611c8e565b60ff168152600060208201526117268282611cfa565b82546001810184556000848152602090819020845180518694929092019261175392849290910190613942565b5050506000858152606960205260408120546001600160801b03169061178482600861177f848261573b565b61228b565b905060ff81161561179c576117976122aa565b61179e565b425b6000898152606b6020526040902080546001600160601b0319166001600160601b039290921691909117905550611a74945050505050565b600060ff166117e88760600151611c8e565b60ff161415611a03576000828152606b602090815260408220546001600160601b0316919061182c90839060089061182190859061573b565b61177f90602061573b565b905060ff81166001141561189d57600160ff168160ff16141561187d604051806060016040528060218152602001615d20602191396118788b6060015160c0015163ffffffff16612336565b612341565b9061189b5760405162461bcd60e51b815260040161087d9190613aa9565b505b60006118b5836001600160601b03166020600061228b565b6000858152606960205260408120549192506001600160801b03909116906118df8260088361228b565b905060006118fc6001600160801b038416600861177f848261573b565b905060006119256001600160801b038516602061191a84600861573b565b61177f90600861573b565b905060ff8b166002141561194c576119408d8685858561236d565b606460208d01526119f7565b60ff8b16600114156119f7576119658d868585856124dc565b60018360ff1614156119f75760ff82166119b1576119a46001600160601b03881661199564010000000042615769565b63ffffffff166020600061287f565b63ffffffff1696506119cf565b6119c6876001600160601b03166119956122aa565b63ffffffff1696505b6000898152606b6020526040902080546001600160601b0319166001600160601b0389161790555b50505050505050611a74565b6000611a546040518060400160405280601b81526020017a135a5b99481a5b9c1d5d109c985b98da081a5cc81a5b1b1959d85b602a1b815250611878611a4c8a60600151611c8e565b60ff16612336565b90611a725760405162461bcd60e51b815260040161087d9190613aa9565b505b5092949350505050565b611a8661397c565b611ab583611a9584600161577d565b60ff1681518110611aa857611aa86152c0565b60200260200101516128a4565b600281518110611ac757611ac76152c0565b602002602001015190509392505050565b805160009015801590611aed57508151602110155b611af657600080fd5b600080611b02846129ad565b815191935091506020821015611b1e5760208290036101000a90045b949350505050565b60006105ed8260a0015160106000600861177f919061573b565b60006105ed8260a00151601060006008611b5a919061573b565b61177f90601061573b565b60a0820151611b9a9060ff83166008611b7f60008261573b565b611b8a90601061573b565b611b9590601061573b565b61287f565b60a09092019190915250565b600054610100900460ff16611bcd5760405162461bcd60e51b815260040161087d906156d3565b610b6a336114da565b60606000611bf0611beb8561016001516129f4565b6128a4565b905060005b8151811015611c83576000611c37611c18848481518110611aa857611aa86152c0565b600081518110611c2a57611c2a6152c0565b6020026020010151612a1a565b9050846001600160a01b0316816001600160a01b03161415611c7257611c68838381518110611aa857611aa86152c0565b93505050506105ed565b50611c7c8161535e565b9050611bf5565b506060949350505050565b60006105ed8260a00151600860006008611ca8919061573b565b611b5a90601061573b565b611cbb613996565b611cc3613996565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60c081015160019015611d155780611d118161535e565b9150505b8160e0015161271014611d305780611d2c8161535e565b9150505b81610100015161271014611d4c5780611d488161535e565b9150505b61014082015151151580611d6557506101608201515115155b80611d7557506101a08201515115155b15611de7576000826101600151518361014001515111611dba57826101a00151518361016001515111611dae57826101a0015151611dc2565b82610160015151611dc2565b826101400151515b9050611dcf8160046157a2565b611dd9908361573b565b60ff90911661012084015290505b806001600160401b03811115611dff57611dff613abc565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5083528151611e38908490612a34565b611e46838360200151612a8c565b611e54838360600151612acd565b611e62838360400151612b1c565b611e7183836101200151612b60565b60008060019050836080015162ffffff1661271014611ea657611e98858560800151612bf1565b611ea36001836157c1565b91505b8360a0015163ffffffff1661271014611ed557611ec7858560a00151612c58565b611ed26002836157c1565b91505b60c084015115611f1b5760c0840151855182611ef08161535e565b935081518110611f0257611f026152c0565b6020908102919091010152611f186004836157c1565b91505b8360e0015161271014611f645760e0840151855182611f398161535e565b935081518110611f4b57611f4b6152c0565b6020908102919091010152611f616008836157c1565b91505b83610100015161271014611faf57610100840151855182611f848161535e565b935081518110611f9657611f966152c0565b6020908102919091010152611fac6010836157c1565b91505b61012084015160ff161561227a5760005b84610120015160ff1681101561226b57600085610140015151118015611feb57508461014001515181105b15612042578461014001518181518110612007576120076152c0565b60200260200101518660000151838061201f9061535e565b945081518110612031576120316152c0565b602002602001018181525050612070565b8551600090836120518161535e565b945081518110612063576120636152c0565b6020026020010181815250505b60008561016001515111801561208b57508461016001515181105b156120e25784610160015181815181106120a7576120a76152c0565b6020026020010151866000015183806120bf9061535e565b9450815181106120d1576120d16152c0565b602002602001018181525050612110565b8551600090836120f18161535e565b945081518110612103576121036152c0565b6020026020010181815250505b60008561018001515111801561212b57508461018001515181105b15612185578461018001518181518110612147576121476152c0565b602002602001015160ff16866000015183806121629061535e565b945081518110612174576121746152c0565b6020026020010181815250506121b2565b85518190836121938161535e565b9450815181106121a5576121a56152c0565b6020026020010181815250505b6000856101a00151511180156121cd5750846101a001515181105b1561222d57846101a0015181815181106121e9576121e96152c0565b60200260200101516001600160a01b03168660000151838061220a9061535e565b94508151811061221c5761221c6152c0565b60200260200101818152505061225b565b85516000908361223c8161535e565b94508151811061224e5761224e6152c0565b6020026020010181815250505b6122648161535e565b9050611fc0565b506122776020836157c1565b91505b6122848583612ccb565b5050505050565b91821c9160008061229f600180861b6157e7565b909416949350505050565b60004661a4b181141561232f5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122f157600080fd5b505afa158015612305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232991906157fe565b91505090565b4391505090565b60606105ed82612d1b565b60608282604051602001612356929190615817565b604051602081830303815290604052905092915050565b600061239e338760600151602001518860600151610100015189602001518a6060015160c001518b6000015161143e565b6000818152606c602052604081208054929350916123e0916001918491906123c8576123c86152c0565b90600052602060002001612db790919063ffffffff16565b6124106001826000815481106123f8576123f86152c0565b90600052602060002001612e0f90919063ffffffff16565b61241d87878787876124dc565b6060870151602080820151610100830151828b015160c0909401518b5160405160009661245296339695949193919201615693565b60408051601f1981840301815291815281516020928301206000818152606b8452918220549093506001600160601b0316916124a591839160019160089161249a919061573b565b611b9590602061573b565b6000928352606b602052604090922080546001600160601b0319166001600160601b03909316929092179091555050505050505050565b60608501516020808201516101008301518289015160c090940151895160405160009661251196339695949193919201615693565b60408051601f1981840301815291815281516020928301206000818152606b8452918220549093506001600160601b03169161255390839061177f848261573b565b60ff16905060018660ff1614156126ed5760ff851615801561258357504261257b8589615853565b63ffffffff16115b156125f25760405162461bcd60e51b815260206004820152603960248201527f4d482074696d6572203a207461736b426567696e54696d65202b20696e746572604482015278076616c54696d65203e20626c6f636b2e74696d657374616d7603c1b606482015260840161087d565b60ff8516600114801561261a57506126086122aa565b6126128589615853565b63ffffffff16115b156126865760405162461bcd60e51b815260206004820152603660248201527f4d482074696d6572203a207461736b426567696e54696d65202b20696e7465726044820152753b30b62a34b6b2901f10313637b1b597373ab6b132b960511b606482015260840161087d565b612691886001612e4a565b6126bc6001600160601b0383166126a9836001615853565b63ffffffff166020611b9560008261573b565b6000848152606b6020526040902080546001600160601b0319166001600160601b03929092169190911790556127d1565b60028660ff1614156127d157600060ff861661272d578463ffffffff168863ffffffff164261271c91906157e7565b6127269190615872565b905061275a565b8463ffffffff168863ffffffff166127436122aa565b61274d91906157e7565b6127579190615872565b90505b8163ffffffff168111156127cf57600061277a63ffffffff8416836157e7565b90506127868a82612e4a565b6127a16001600160601b038516836020611b9560008261573b565b6000868152606b6020526040902080546001600160601b0319166001600160601b0392909216919091179055505b505b606754606089015160208101516101008201516001600160a01b039093169263495fb7ec926127ff90611b26565b61280c8d60600151611b40565b60208e015160608f015160c001518f516040516001600160e01b031960e08a901b1681526128439796959493929190600401615422565b600060405180830381600087803b15801561285d57600080fd5b505af1158015612871573d6000803e3d6000fd5b505050505050505050505050565b600083821b8183612893600180881b6157e7565b901b19969096161795945050505050565b60606128af826132a2565b6128b857600080fd5b60006128c3836132db565b90506000816001600160401b038111156128df576128df613abc565b60405190808252806020026020018201604052801561291857816020015b61290561397c565b8152602001906001900390816128fd5790505b509050600061292a856020015161335e565b8560200151612939919061573b565b90506000805b848110156129a257612950836133d9565b9150604051806040016040528083815260200184815250848281518110612979576129796152c0565b602090810291909101015261298e828461573b565b92508061299a8161535e565b91505061293f565b509195945050505050565b60008060006129bf846020015161335e565b905060008185602001516129d3919061573b565b905060008286600001516129e791906157e7565b9196919550909350505050565b6129fc61397c565b50604080518082019091528151815260209182019181019190915290565b8051600090601514612a2b57600080fd5b6105ed82611ad8565b612a698260000151600081518110612a4e57612a4e6152c0565b60200260200101518260ff16600860ff16600060ff1661287f565b82518051600090612a7c57612a7c6152c0565b6020026020010181815250505050565b612a698260000151600081518110612aa657612aa66152c0565b60200260200101518260ff16600460ff1660006008612ac5919061577d565b60ff1661287f565b612a698260000151600081518110612ae757612ae76152c0565b60200260200101518260ff16600460ff1660006008612b06919061577d565b612b1190600461577d565b612ac590600861577d565b612a698260000151600081518110612b3657612b366152c0565b60200260200101518260ff16600860ff1660006008612b55919061577d565b612ac590600461577d565b612a698260000151600081518110612b7a57612b7a6152c0565b60200260200101518260ff16600860ff1660006008612b99919061577d565b612ba490600461577d565b612baf90600861577d565b612bba90600461577d565b612bc590601061577d565b612bd090601861577d565b612bdb90602061577d565b612be690602061577d565b612ac590602061577d565b612a698260000151600081518110612c0b57612c0b6152c0565b60200260200101518262ffffff16601860ff1660006008612c2c919061577d565b612c3790600461577d565b612c4290600861577d565b612c4d90600461577d565b612ac590601061577d565b612a698260000151600081518110612c7257612c726152c0565b60200260200101518263ffffffff16602060ff1660006008612c94919061577d565b612c9f90600461577d565b612caa90600861577d565b612cb590600461577d565b612cc090601061577d565b612ac590601861577d565b612a698260000151600081518110612ce557612ce56152c0565b60200260200101518261ffff16601060ff1660006008612d05919061577d565b612d1090600461577d565b612b5590600861577d565b60606000612d288361347d565b60010190506000816001600160401b03811115612d4757612d47613abc565b6040519080825280601f01601f191660200182016040528015612d71576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612daa57612daf565b612d7b565b509392505050565b612de982600001600081548110612dd057612dd06152c0565b60009182526020822001549060ff84169060089061287f565b82600001600081548110612dff57612dff6152c0565b6000918252602090912001555050565b612de982600001600081548110612e2857612e286152c0565b90600052602060002001548260ff16600460ff1660006008612ac5919061577d565b6000612e598360600151611563565b90506000600282511115612e7f576060840151612e7c90610d7290846001611a7e565b90505b600160ff821660641415612fb85760008560600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b158015612ed057600080fd5b505afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f08919061571e565b606087015161010081015190612f1d90611b26565b612f2a8960600151611b40565b604051602001612f3d9493929190615379565b60408051601f19818403018152918152815160209283012060008181526069909352908220549092506001600160801b031690612fa1826008612f80848261573b565b612f8b90600861573b565b612f9690602061573b565b611ca890602061573b565b905060ff811660011415612fb457600093505b5050505b801561317b576067546001600160a01b0316635245622763ffffffff86166001600160401b03811115612fed57612fed613abc565b6040519080825280601f01601f191660200182016040528015613017576020820181803683370190505b5060608801516020810151610100820151909161303390611b26565b6130408b60600151611b40565b60208c015160608d015160c001518d516040516001600160e01b031960e08b901b168152613078989796959493929190600401615886565b602060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ca91906157fe565b9050600181141561311d5760405162461bcd60e51b815260206004820181905260248201527f6d696e652072616e646f6d20686173207061737365642032353620626c6f636b604482015260640161087d565b600281141561316c5760405162461bcd60e51b815260206004820152601b60248201527a0dad2dcca40e4c2dcc8deda40c4d8dec6d640dcdee840e4cac2c6d602b1b604482015260640161087d565b61317861271082615769565b90505b60006131ac338760600151602001518860600151610100015189602001518a6060015160c001518b6000015161143e565b6000818152606c602052604080822080549151636d0aa59560e01b815293945092909190819073__$10c7622a794a4c36e0cba83f19e55bd777$__90636d0aa59590613200908d908d908b90600401615b03565b60006040518083038186803b15801561321857600080fd5b505af415801561322c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132549190810190615bca565b855460018101875560008781526020908190208351805195975093955085949201926132869284929190910190613942565b5050506132968a8a85858a613553565b50505050505050505050565b80516000906132b357506000919050565b6020820151805160001a9060c08210156132d1575060009392505050565b5060019392505050565b80516000906132ec57506000919050565b6000806132fc846020015161335e565b846020015161330b919061573b565b9050600084600001518560200151613323919061573b565b90505b8082101561335557613337826133d9565b613341908361573b565b91508261334d8161535e565b935050613326565b50909392505050565b8051600090811a60808110156133775750600092915050565b60b8811080613392575060c08110801590613392575060f881105b156133a05750600192915050565b60c08110156133cd576133b5600160b8615c10565b6133c29060ff16826157e7565b61137a90600161573b565b6133b5600160f8615c10565b80516000908190811a60808110156133f457600191506109b7565b60b881101561341a576134086080826157e7565b61341390600161573b565b91506109b7565b60c08110156134475760b78103600185019450806020036101000a855104600182018101935050506109b7565b60f881101561345b5761340860c0826157e7565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134bc5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106134e6576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061350457662386f26fc10000830492506010015b6305f5e100831061351c576305f5e100830492506008015b612710831061353057612710830492506004015b60648310613542576064830492506002015b600a83106105ed5760010192915050565b60008060008073__$10c7622a794a4c36e0cba83f19e55bd777$__63e81310598a8a6040518363ffffffff1660e01b8152600401613592929190615c33565b60806040518083038186803b1580156135aa57600080fd5b505af41580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190615c5b565b935093509350935060018260ff161415613619576000613602338b613652565b6000908152606a6020526040902082905550613638565b6000613625338b6136e4565b6000908152606a60205260409020829055505b6136478989898989898961377d565b505050505050505050565b60008083836060015160200151846060015161010001516136768660600151611b26565b6136838760600151611b40565b604080516001600160a01b039687166020820152959094169385019390935263ffffffff909116606084015261ffff90811660808401521660a082015260c0015b60408051808303601f190181529190528051602090910120949350505050565b60008083836060015160200151846060015161010001516137088660600151611b26565b6137158760600151611b40565b60208089015160608a015160c001516040516136c4989796959493016001600160a01b039788168152958716602087015263ffffffff948516604087015261ffff9384166060870152919092166080850152931660a08301529190911660c082015260e00190565b60006137ae338960600151602001518a6060015161010001518b602001518c6060015160c001518d6000015161143e565b9050600073__$10c7622a794a4c36e0cba83f19e55bd777$__631f5dbd128a8a8a8a8a8a8a6040518863ffffffff1660e01b81526004016137f59796959493929190615c9a565b60006040518083038186803b15801561380d57600080fd5b505af4158015613821573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138499190810190615ceb565b6000838152606c602052604090208054919250829161ffff8a16908110613872576138726152c0565b906000526020600020016000820151816000019080519060200190612871929190613942565b8280546138a490615196565b90600052602060002090601f0160209004810192826138c6576000855561390c565b82601f106138df57805160ff191683800117855561390c565b8280016001018555821561390c579182015b8281111561390c5782518255916020019190600101906138f1565b50613918929150613a1f565b5090565b604080516080810182526000808252602082015260609181018290528181019190915290565b82805482825590600052602060002090810192821561390c579160200282018281111561390c5782518255916020019190600101906138f1565b604051806040016040528060008152602001600081525090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b808211156139185760008155600101613a20565b600060208284031215613a4657600080fd5b5035919050565b60005b83811015613a68578181015183820152602001613a50565b83811115613a77576000848401525b50505050565b60008151808452613a95816020860160208601613a4d565b601f01601f19169290920160200192915050565b60208152600061137a6020830184613a7d565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613af557613af5613abc565b60405290565b60405160a081016001600160401b0381118282101715613af557613af5613abc565b604080519081016001600160401b0381118282101715613af557613af5613abc565b604051608081016001600160401b0381118282101715613af557613af5613abc565b60405161018081016001600160401b0381118282101715613af557613af5613abc565b604051606081016001600160401b0381118282101715613af557613af5613abc565b60405161016081016001600160401b0381118282101715613af557613af5613abc565b604051602081016001600160401b0381118282101715613af557613af5613abc565b604051601f8201601f191681016001600160401b0381118282101715613c1357613c13613abc565b604052919050565b6001600160a01b0381168114610c7a57600080fd5b8035613c3b81613c1b565b919050565b803563ffffffff81168114613c3b57600080fd5b60ff81168114610c7a57600080fd5b8035613c3b81613c54565b803561ffff81168114613c3b57600080fd5b60006101408284031215613c9357600080fd5b613c9b613ad2565b613ca483613c30565b8152613cb260208401613c30565b6020820152613cc360408401613c30565b6040820152613cd460608401613c40565b6060820152613ce560808401613c40565b6080820152613cf660a08401613c30565b60a0820152613d0760c08401613c63565b60c0820152613d1860e08401613c6e565b60e0820152610100613d2b818501613c63565b90820152610120613d3d848201613c63565b908201529392505050565b60006001600160401b03821115613d6157613d61613abc565b50601f01601f191660200190565b600082601f830112613d8057600080fd5b8135613d93613d8e82613d48565b613beb565b818152846020838601011115613da857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b031215613de257600080fd5b8835613ded81613c1b565b97506020890135613dfd81613c1b565b96506040890135613e0d81613c1b565b9550613e1b60608a01613c40565b94506080890135613e2b81613c1b565b9350613e3960a08a01613c40565b925060c08901356001600160401b03811115613e5457600080fd5b613e608b828c01613d6f565b925050613e6f60e08a01613c6e565b90509295985092959890939650565b805160208084528151848201819052600092820190839060408701905b80831015613ebb5783518252928401926001929092019190840190613e9b565b509695505050505050565b60208152600061137a6020830184613e7e565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613f2e57603f19888603018452613f1c858351613e7e565b94509285019290850190600101613f00565b5092979650505050505050565b60008060008060008060c08789031215613f5457600080fd5b8635613f5f81613c1b565b95506020870135613f6f81613c1b565b9450613f7d60408801613c40565b93506060870135613f8d81613c1b565b9250613f9b60808801613c40565b9150613fa960a08801613c6e565b90509295509295509295565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b818110156140035783516001600160a01b031683529284019291840191600101613fde565b50909695505050505050565b6000806000806080858703121561402557600080fd5b61402e85613c40565b935061403c60208601613c6e565b9250604085013561404c81613c54565b915060608501356001600160401b0381111561406757600080fd5b61407387828801613d6f565b91505092959194509250565b60006001600160401b0382111561409857614098613abc565b5060051b60200190565b600060208083850312156140b557600080fd5b82356001600160401b03808211156140cc57600080fd5b818501915085601f8301126140e057600080fd5b81356140ee613d8e8261407f565b81815260059190911b8301840190848101908883111561410d57600080fd5b8585015b83811015614145578035858111156141295760008081fd5b6141378b89838a0101613d6f565b845250918601918601614111565b5098975050505050505050565b600080600080600060a0868803121561416a57600080fd5b61417386613c40565b945061418160208701613c6e565b935061418f60408701613c6e565b9250606086013561419f81613c54565b915060808601356001600160401b038111156141ba57600080fd5b6141c688828901613d6f565b9150509295509295909350565b600082601f8301126141e457600080fd5b813560206141f4613d8e8361407f565b82815260059290921b8401810191818101908684111561421357600080fd5b8286015b84811015613ebb5780356001600160401b038082111561423657600080fd5b9088019060a0828b03601f1901121561424e57600080fd5b614256613afb565b8683013561426381613c54565b815260408381013561427481613c1b565b828901526060848101358284015260808501359083015260a08401358381111561429e5760008081fd5b8085019450508b603f8501126142b657600092508283fd5b8784013592506142c8613d8e8461407f565b83815260069390931b8401810192888101908d8511156142e85760008081fd5b948201945b8486101561433f5782868f0312156143055760008081fd5b61430d613b1d565b61431687613c40565b81528a8701358060040b811461432c5760008081fd5b818c0152825294820194908901906142ed565b6080840152505085525050918301918301614217565b60006080828403121561436757600080fd5b61436f613b3f565b9050813561437c81613c1b565b8152602082013561438c81613c54565b602082015260408201356001600160401b03808211156143ab57600080fd5b6143b785838601613d6f565b604084015260608401359150808211156143d057600080fd5b506143dd84828501613d6f565b60608301525092915050565b600080604083850312156143fc57600080fd5b82356001600160401b038082111561441357600080fd5b9084019060a0828703121561442757600080fd5b61442f613afb565b823561443a81613c1b565b8152602083013561444a81613c1b565b6020820152604083013561445d81613c1b565b604082015260608301358281111561447457600080fd5b8301610180818903121561448757600080fd5b61448f613b61565b61449882613c30565b81526144a660208301613c30565b60208201526144b760408301613c30565b60408201526144c860608301613c30565b60608201526080820135608082015260a082013560a08201526144ed60c08301613c40565b60c08201526144fe60e08301613c40565b60e0820152610100614511818401613c40565b90820152610120614523838201613c63565b90820152610140828101358581111561453b57600080fd5b6145478b8286016141d3565b828401525050610160808301358581111561456157600080fd5b61456d8b828601613d6f565b828401525050806060840152505061458760808401613c63565b6080820152935060208501359150808211156145a257600080fd5b506145af85828601614355565b9150509250929050565b6020815260018060a01b03825116602082015260ff602083015116604082015260006040830151608060608401526145f460a0840182613a7d565b90506060840151601f198483030160808501526146118282613a7d565b95945050505050565b600082601f83011261462b57600080fd5b8135602061463b613d8e8361407f565b82815260059290921b8401810191818101908684111561465a57600080fd5b8286015b84811015613ebb578035835291830191830161465e565b600082601f83011261468657600080fd5b81356020614696613d8e8361407f565b82815260059290921b840181019181810190868411156146b557600080fd5b8286015b84811015613ebb5780356146cc81613c1b565b83529183019183016146b9565b600082601f8301126146ea57600080fd5b813560206146fa613d8e8361407f565b82815260059290921b8401810191818101908684111561471957600080fd5b8286015b84811015613ebb5780356001600160401b038082111561473c57600080fd5b90880190601f196080838c038201121561475557600080fd5b61475d613b3f565b878401358381111561476e57600080fd5b84016060818e038401121561478257600080fd5b61478a613b84565b92508881013561479981613c54565b83526040818101356147aa81613c1b565b848b01526060820135858111156147c057600080fd5b6147ce8f8c8386010161461a565b82860152508383526147e1818701613c63565b8a84015260608601359350848411156147f957600080fd5b6148078e8b86890101614675565b9083015250608084013591508282111561482057600080fd5b61482e8c898487010161461a565b6060820152865250505091830191830161471d565b600082601f83011261485457600080fd5b81356020614864613d8e8361407f565b82815260059290921b8401810191818101908684111561488357600080fd5b8286015b84811015613ebb5780356001600160401b038111156148a65760008081fd5b6148b48986838b0101613d6f565b845250918301918301614887565b600082601f8301126148d357600080fd5b813560206148e3613d8e8361407f565b82815260059290921b8401810191818101908684111561490257600080fd5b8286015b84811015613ebb5780356001600160401b03808211156149265760008081fd5b9088019060a0828b03601f19018113156149405760008081fd5b614948613afb565b878401358381111561495a5760008081fd5b6149688d8a838801016146d9565b8252506040614978818601613c63565b898301526060614989818701613c30565b828401526080915081860135858111156149a35760008081fd5b6149b18f8c838a0101614675565b828501525050828501359250838311156149cb5760008081fd5b6149d98d8a85880101614843565b908201528652505050918301918301614906565b600082601f8301126149fe57600080fd5b81356020614a0e613d8e8361407f565b82815260059290921b84018101918181019086841115614a2d57600080fd5b8286015b84811015613ebb578035614a4481613c54565b8352918301918301614a31565b80356001600160401b0381168114613c3b57600080fd5b600082601f830112614a7957600080fd5b81356020614a89613d8e8361407f565b82815260059290921b84018101918181019086841115614aa857600080fd5b8286015b84811015613ebb5780356001600160401b0380821115614acc5760008081fd5b90880190610160828b03601f1901811315614ae75760008081fd5b614aef613ba6565b614afa888501613c6e565b81526040614b09818601613c6e565b898301526060614b1a818701613c63565b8284015260809150614b2d828701613c40565b9083015260a0614b3e868201613c63565b8284015260c09150614b51828701613c40565b9083015260e0614b62868201613c40565b828401526101009150614b76828701614a51565b908301526101208581013585811115614b8f5760008081fd5b614b9d8f8c838a0101614675565b838501525061014091508186013585811115614bb95760008081fd5b614bc78f8c838a0101614843565b828501525050614bd8838601613c30565b908201528652505050918301918301614aac565b600082601f830112614bfd57600080fd5b81356020614c0d613d8e8361407f565b82815260059290921b84018101918181019086841115614c2c57600080fd5b8286015b84811015613ebb5780356001600160401b0380821115614c505760008081fd5b9088019060a0828b03601f1901811315614c6a5760008081fd5b614c72613afb565b614c7d888501613c40565b815260408085013584811115614c935760008081fd5b614ca18e8b83890101613d6f565b8a8401525060608086013585811115614cba5760008081fd5b614cc88f8c838a0101613d6f565b8385015250608091508186013585811115614ce35760008081fd5b614cf18f8c838a0101613d6f565b828501525050614d02838601613c63565b908201528652505050918301918301614c30565b60008060408385031215614d2957600080fd5b614d3283613c40565b915060208301356001600160401b0380821115614d4e57600080fd5b908401906101608287031215614d6357600080fd5b614d6b613ba6565b823582811115614d7a57600080fd5b614d86888286016148c2565b825250602083013582811115614d9b57600080fd5b614da7888286016149ed565b602083015250604083013582811115614dbf57600080fd5b614dcb88828601614a68565b604083015250606083013582811115614de357600080fd5b614def88828601614bec565b606083015250608083013582811115614e0757600080fd5b614e13888286016149ed565b60808301525060a083013582811115614e2b57600080fd5b614e3788828601614675565b60a08301525060c083013582811115614e4f57600080fd5b614e5b88828601614675565b60c083015250614e6d60e08401613c40565b60e0820152610100614e80818501613c40565b90820152610120614e92848201613c63565b908201526101408381013583811115614eaa57600080fd5b614eb689828701613d6f565b8284015250508093505050509250929050565b600060208284031215614edb57600080fd5b81356001600160401b0380821115614ef257600080fd5b908301906101608286031215614f0757600080fd5b614f0f613ba6565b614f1883613c30565b8152614f2660208401613c30565b6020820152614f3760408401613c40565b6040820152614f4860608401613c6e565b6060820152614f5960808401613c6e565b6080820152614f6a60a08401613c63565b60a0820152614f7b60c08401613c30565b60c0820152614f8c60e08401613c40565b60e0820152610100614f9f818501613c30565b90820152610120614fb1848201613c63565b908201526101408381013583811115614fc957600080fd5b614fd588828701613d6f565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613f2e57603f19888603018452615029858351613a7d565b9450928501929085019060010161500d565b60006020828403121561504d57600080fd5b81356001600160401b0381111561506357600080fd5b611b1e84828501614675565b60008060006060848603121561508457600080fd5b61508d84613c40565b925061509b60208501613c6e565b915060408401356150ab81613c54565b809150509250925092565b6000602082840312156150c857600080fd5b813561137a81613c1b565b600081518084526020808501945080840160005b8381101561510657815160ff16875295820195908201906001016150e7565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561518857888303603f190185528151805187855261515c888601826150d3565b91890151858303868b015291905061517481836150d3565b968901969450505090860190600101615138565b509098975050505050505050565b600181811c908216806151aa57607f821691505b602082108114156112a157634e487b7160e01b600052602260045260246000fd5b6151d6828251613fb5565b60208101516151e86020840182613fb5565b5060408101516151fb6040840182613fb5565b506060810151615213606084018263ffffffff169052565b50608081015161522b608084018263ffffffff169052565b5060a081015161523e60a0840182613fb5565b5060c081015161525360c084018260ff169052565b5060e081015161526960e084018261ffff169052565b506101008181015160ff81168483015250506101208181015160ff811684830152613a77565b61014081016105ed82846151cb565b6000602082840312156152b057600080fd5b8151801515811461137a57600080fd5b634e487b7160e01b600052603260045260246000fd5b600082516152e8818460208701613a4d565b9190910192915050565b6020808252600990820152680dcdee840dac2e8c6d60bb1b604082015260600190565b6001600160a01b0394909416845263ffffffff92909216602084015261ffff16604083015260ff16606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561537257615372615348565b5060010190565b6001600160a01b0394909416845263ffffffff92909216602084015261ffff908116604084015216606082015260800190565b6001600160a01b038616815263ffffffff8516602082015261ffff84811660408301528316606082015260a0608082018190526000906153ee90830184613a7d565b979650505050505050565b60006020828403121561540b57600080fd5b81516001600160801b038116811461137a57600080fd5b6001600160a01b03978816815263ffffffff968716602082015261ffff9586166040820152939094166060840152908516608083015290921660a083015290911660c082015260e00190565b60208152615480602082018351613fb5565b600060208301516154946040840182613fb5565b50604083015163ffffffff8116606084015250606083015161ffff8116608084015250608083015161ffff811660a08401525060a083015160ff811660c08401525060c08301516154e860e0840182613fb5565b5060e08301516101006155028185018363ffffffff169052565b840151905061012061551684820183613fb5565b840151905061014061552c8482018360ff169052565b840151610160848101529050611b1e610180840182613a7d565b6000615554613d8e84613d48565b905082815283838301111561556857600080fd5b61137a836020830184613a4d565b6000602080838503121561558957600080fd5b82516001600160401b03808211156155a057600080fd5b818501915085601f8301126155b457600080fd5b81516155c2613d8e8261407f565b81815260059190911b830184019084810190888311156155e157600080fd5b8585015b83811015614145578051858111156155fd5760008081fd5b8601603f81018b1361560f5760008081fd5b6156208b8983015160408401615546565b8452509186019186016155e5565b60006020828403121561564057600080fd5b81516001600160401b0381111561565657600080fd5b8201601f8101841361566757600080fd5b611b1e84825160208401615546565b610160810161568582856151cb565b826101408301529392505050565b6001600160a01b039687168152948616602086015263ffffffff93841660408601529185166060850152909116608083015290911660a082015260c00190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561573057600080fd5b815161137a81613c1b565b6000821982111561574e5761574e615348565b500190565b634e487b7160e01b600052601260045260246000fd5b60008261577857615778615753565b500690565b600060ff821660ff84168060ff0382111561579a5761579a615348565b019392505050565b60008160001904831182151516156157bc576157bc615348565b500290565b600061ffff8083168185168083038211156157de576157de615348565b01949350505050565b6000828210156157f9576157f9615348565b500390565b60006020828403121561581057600080fd5b5051919050565b60008351615829818460208801613a4d565b600b60fa1b9083019081528351615847816001840160208801613a4d565b01600101949350505050565b600063ffffffff8083168185168083038211156157de576157de615348565b60008261588157615881615753565b500490565b600061010080835261589a8184018c613a7d565b6001600160a01b039a8b16602085015263ffffffff998a16604085015261ffff98891660608501529690971660808301525092871660a0840152941660c08201529290931660e09092019190915250919050565b600081518084526020808501808196508360051b810191508286016000805b868110156159b1578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b8083101561599b578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191615969565b5050509a87019a9550509185019160010161590d565b509298975050505050505050565b600060018060a01b0380835116845280602084015116602085015280604084015116604085015250606082015160a06060850152615a0160a085018251613fb5565b6020810151615a1360c0860182613fb5565b506040810151615a2660e0860182613fb5565b506060810151610100615a3b81870183613fb5565b60808301519150610120828188015260a08401519250610140838189015260c08501519350610160615a74818a018663ffffffff169052565b60e08601519450610180615a8f818b018763ffffffff169052565b8487015163ffffffff166101a08b01528387015160ff166101c08b0152828701516101e08b01919091529450615ac96102208a01866158ee565b950151888603609f19016102008a0152949350615aec9250839150849050613a7d565b9150506080830151612daf608086018260ff169052565b606081526000615b1660608301866159bf565b63ffffffff9490941660208301525060400152919050565b60006020808385031215615b4157600080fd5b615b49613bc9565b915082516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80613d8e8261407f565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bbd57835182529284019290840190615ba4565b8552509295945050505050565b60008060408385031215615bdd57600080fd5b8251615be881613c54565b60208401519092506001600160401b03811115615c0457600080fd5b6145af85828601615b2e565b600060ff821660ff841680821015615c2a57615c2a615348565b90039392505050565b604081526000615c4660408301856159bf565b905063ffffffff831660208301529392505050565b60008060008060808587031215615c7157600080fd5b84519350602085015192506040850151615c8a81613c54565b6060959095015193969295505050565b60e081526000615cad60e083018a6159bf565b63ffffffff9890981660208301525061ffff95909516604086015260ff939093166060850152608084019190915260a083015260c090910152919050565b600060208284031215615cfd57600080fd5b81516001600160401b03811115615d1357600080fd5b611b1e84828501615b2e56fe4d696e652048616e646c6572206861732066696e69736865642c207461736b4964a2646970667358221220b4e68b294fe5131c034197aa349e9a8d014c11e8d29195587b06e16305c0a3a564736f6c63430008080033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061017a5760003560e01c806380fed744116100d457806380fed7441461033b5780638129fc1c146103645780638da5cb5b1461036c57806394cbedc11461039157806395edcb08146103ba578063a903620c146103da578063af84b51f146103ed578063b2a0d71a1461040d578063b41bd7891461042d578063b4b7035214610440578063d0d35b5514610453578063dcbad90d14610466578063f2fde38b14610479578063f2fe4fa51461048c578063f8970ff3146104a157600080fd5b806306694f021461017f5780631b202235146101a85780631cc4f041146101e95780631eda6e4f1461020c5780632311c08f1461022c57806334c76b251461026d578063394a73981461028d57806340477c5d146102a05780634b2dbcb8146102c05780634b2e9b41146102c057806354fd4d50146102e75780635790c294146102f857806362329cc51461030d5780636dabaf0414610320578063715018a614610333575b600080fd5b61019261018d366004613a34565b6104c1565b60405161019f9190613aa9565b60405180910390f35b6101d16101b6366004613a34565b6069602052600090815260409020546001600160801b031681565b6040516001600160801b03909116815260200161019f565b6101fc6101f7366004613c80565b610563565b604051901515815260200161019f565b61021f61021a366004613dc5565b6105f3565b60405161019f9190613ec6565b61025561023a366004613a34565b6000908152606b60205260409020546001600160601b031690565b6040516001600160601b03909116815260200161019f565b6040805180820190915260048152634d696e6560e01b6020820152610192565b61019261029b366004613a34565b6106b6565b6102b36102ae366004613a34565b610750565b60405161019f9190613ed9565b6102da6102ce366004613f3b565b60609695505050505050565b60405161019f9190613fc2565b60015b60405190815260200161019f565b61030b61030636600461400f565b61080c565b005b6102da61031b3660046140a2565b6108e1565b6101fc61032e366004614152565b6109be565b61030b610b58565b6101d1610349366004613a34565b6000908152606960205260409020546001600160801b031690565b61030b610b6c565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161019f565b61025561039f366004613a34565b606b602052600090815260409020546001600160601b031681565b6103cd6103c83660046143e9565b610c7d565b60405161019f91906145b9565b61030b6103e8366004614d16565b610ece565b6104006103fb366004614ec9565b610f4b565b60405161019f9190614fe6565b6102ea61041b366004613a34565b606a6020526000908152604090205481565b61030b61043b36600461503b565b610fd9565b6101fc61044e366004613c80565b611149565b61019261046136600461506f565b6112a7565b606754610379906001600160a01b031681565b61030b6104873660046150b6565b611381565b6104946113f7565b60405161019f9190615111565b6102ea6104af366004613a34565b6000908152606a602052604090205490565b60008181526068602052604090208054606091906104de90615196565b80601f016020809104026020016040519081016040528092919081815260200182805461050a90615196565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b50505050509050919050565b604051639ef5e7bb60e01b815260009073__$10c7622a794a4c36e0cba83f19e55bd777$__90639ef5e7bb9061059d90859060040161528f565b60206040518083038186803b1580156105b557600080fd5b505af41580156105c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ed919061529e565b92915050565b60408051602081019091526060815260006106128a898989898e61143e565b6000818152606c6020526040902080549192509061ffff851690811061063a5761063a6152c0565b906000526020600020016040518060200160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81548152602001906001019080831161068a575b50505050508152505091505098975050505050505050565b606860205260009081526040902080546106cf90615196565b80601f01602080910402602001604051908101604052809291908181526020018280546106fb90615196565b80156107485780601f1061071d57610100808354040283529160200191610748565b820191906000526020600020905b81548152906001019060200180831161072b57829003601f168201915b505050505081565b6060606c6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610801576000848152602090819020604080519185018054808502840183018352938301848152929390928492909184918401828280156107e957602002820191906000526020600020905b8154815260200190600101908083116107d5575b50505050508152505081526020019060010190610785565b505050509050919050565b6040518060400160405280600f81526020016e436c757374657252756c654172656160881b81525060668160405161084491906152d6565b90815260405190819003602001902054336001600160a01b03909116146108865760405162461bcd60e51b815260040161087d906152f2565b60405180910390fd5b60003386868660405160200161089f9493929190615315565b60408051601f1981840301815291815281516020928301206000818152606884529190912085519193506108d892909190860190613898565b50505050505050565b6060600082516001600160401b038111156108fe576108fe613abc565b604051908082528060200260200182016040528015610927578160200160208202803683370190505b50905060005b81518110156109b757606684828151811061094a5761094a6152c0565b602002602001015160405161095f91906152d6565b9081526040519081900360200190205482516001600160a01b039091169083908390811061098f5761098f6152c0565b6001600160a01b03909216602092830291909101909101526109b08161535e565b905061092d565b5092915050565b60006040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b8152506066816040516109ff91906152d6565b90815260405190819003602001902054336001600160a01b0390911614610a385760405162461bcd60e51b815260040161087d906152f2565b60ff84161580610a4b575060ff84166001145b15610b4b57600033888888604051602001610a699493929190615379565b60408051601f1981840301815290829052805160209091012060675463237dc7f360e11b835290925073__$10c7622a794a4c36e0cba83f19e55bd777$__916346fb8fe691610ace916001600160a01b03909116908c908c908c908b906004016153ac565b60206040518083038186803b158015610ae657600080fd5b505af4158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e91906153f9565b60009182526069602052604090912080546001600160801b0319166001600160801b039092169190911790555b5060019695505050505050565b610b60611480565b610b6a60006114da565b565b600054610100900460ff1615808015610b8c5750600054600160ff909116105b80610ba65750303b158015610ba6575060005460ff166001145b610c095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161087d565b6000805460ff191660011790558015610c2c576000805461ff0019166101001790555b610c3461152c565b8015610c7a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610c8561391c565b60405180604001604052806006815260200165456e67696e6560d01b815250606681604051610cb491906152d6565b90815260405190819003602001902054336001600160a01b0390911614610ced5760405162461bcd60e51b815260040161087d906152f2565b308352608084015160ff16610d0d57610d06848461155b565b9250610ec6565b608084015160ff1660011415610ec6576000610d2c8560600151611563565b9050805160001480610d3f575080516001145b15610d5b57610d508585600061156f565b9350839250506109b7565b6060850151600090610d7790610d72908484611a7e565b611ad8565b905060ff8116600a1415610ea657606754606087015160208101516101008201516001600160a01b039093169263063738cb92610db390611b26565b610dc08b60600151611b40565b60208c015160608d015160c001518d516040516001600160e01b031960e08a901b168152610df79796959493929190600401615422565b602060405180830381600087803b158015610e1157600080fd5b505af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e49919061529e565b15610e5a57600a6020860152610e9c565b604080518082018252601c81527f6d616b652072616e646f6d20657863656564207374642074696d657300000000602080830191909152918701526001908601525b84935050506109b7565b6060860151610eb6906000611b65565b610ec186868361156f565b945050505b509092915050565b6040518060400160405280601681526020017521b63ab9ba32b9293ab632a0b932b0a430b7323632b960511b815250606681604051610f0d91906152d6565b90815260405190819003602001902054336001600160a01b0390911614610f465760405162461bcd60e51b815260040161087d906152f2565b505050565b6040516318adc02760e21b815260609073__$e5539aee5e4b7b43b991bb6eb023810f45$__906362b7009c90610f8590859060040161546e565b60006040518083038186803b158015610f9d57600080fd5b505af4158015610fb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105ed9190810190615576565b610fe1611480565b60005b81518110156110e357818181518110610fff57610fff6152c0565b6020026020010151606683838151811061101b5761101b6152c0565b60200260200101516001600160a01b03166334c76b256040518163ffffffff1660e01b815260040160006040518083038186803b15801561105b57600080fd5b505afa15801561106f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611097919081019061562e565b6040516110a491906152d6565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556110dc8161535e565b9050610fe4565b50604080518082018252600f81526e2930b73237b6a3b2b732b930ba37b960891b60208201529051606691611117916152d6565b90815260405190819003602001902054606780546001600160a01b0319166001600160a01b0390921691909117905550565b600060405180604001604052806006815260200165456e67696e6560d01b81525060668160405161117a91906152d6565b90815260405190819003602001902054336001600160a01b03909116146111b35760405162461bcd60e51b815260040161087d906152f2565b60006111d73385602001518660600151876040015188608001518960a0015161143e565b90506000606c60008381526020019081526020016000208560e0015161ffff1681548110611207576112076152c0565b90600052602060002001905073__$10c7622a794a4c36e0cba83f19e55bd777$__638d5a6cd586836040518363ffffffff1660e01b815260040161124c929190615676565b60206040518083038186803b15801561126457600080fd5b505af4158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c919061529e565b935050505b50919050565b60606000338585856040516020016112c29493929190615315565b6040516020818303038152906040528051906020012090506068600082815260200190815260200160002080546112f890615196565b80601f016020809104026020016040519081016040528092919081815260200182805461132490615196565b80156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b50505050509150505b9392505050565b611389611480565b6001600160a01b0381166113ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087d565b610c7a816114da565b6040805160008082526020820190925260609190816109b7565b60408051808201909152606080825260208201528152602001906001900390816114115790505092915050565b60008087878787878760405160200161145c96959493929190615693565b60408051808303601f19018152919052805160209091012098975050505050505050565b6033546001600160a01b03163314610b6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161087d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166115535760405162461bcd60e51b815260040161087d906156d3565b610b6a611ba6565b6112a161391c565b60606105ed8230611bd6565b61157761391c565b60608401516020808201516101008301518288015160c09094015188516040516000966115ac96339695949193919201615693565b60405160208183030381529060405280519060200120905060008560600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f919061571e565b60608701516101008101519061165490611b26565b6116618960600151611b40565b6040516020016116749493929190615379565b604051602081830303815290604052805190602001209050600160ff1661169e8760600151611c8e565b60ff1614156117d65760006116d833886060015160200151896060015161010001518a602001518b6060015160c001518c6000015161143e565b6000818152606c6020908152604080832081519283019091526060825292935090611701611cb3565b90506117108a60600151611c8e565b60ff168152600060208201526117268282611cfa565b82546001810184556000848152602090819020845180518694929092019261175392849290910190613942565b5050506000858152606960205260408120546001600160801b03169061178482600861177f848261573b565b61228b565b905060ff81161561179c576117976122aa565b61179e565b425b6000898152606b6020526040902080546001600160601b0319166001600160601b039290921691909117905550611a74945050505050565b600060ff166117e88760600151611c8e565b60ff161415611a03576000828152606b602090815260408220546001600160601b0316919061182c90839060089061182190859061573b565b61177f90602061573b565b905060ff81166001141561189d57600160ff168160ff16141561187d604051806060016040528060218152602001615d20602191396118788b6060015160c0015163ffffffff16612336565b612341565b9061189b5760405162461bcd60e51b815260040161087d9190613aa9565b505b60006118b5836001600160601b03166020600061228b565b6000858152606960205260408120549192506001600160801b03909116906118df8260088361228b565b905060006118fc6001600160801b038416600861177f848261573b565b905060006119256001600160801b038516602061191a84600861573b565b61177f90600861573b565b905060ff8b166002141561194c576119408d8685858561236d565b606460208d01526119f7565b60ff8b16600114156119f7576119658d868585856124dc565b60018360ff1614156119f75760ff82166119b1576119a46001600160601b03881661199564010000000042615769565b63ffffffff166020600061287f565b63ffffffff1696506119cf565b6119c6876001600160601b03166119956122aa565b63ffffffff1696505b6000898152606b6020526040902080546001600160601b0319166001600160601b0389161790555b50505050505050611a74565b6000611a546040518060400160405280601b81526020017a135a5b99481a5b9c1d5d109c985b98da081a5cc81a5b1b1959d85b602a1b815250611878611a4c8a60600151611c8e565b60ff16612336565b90611a725760405162461bcd60e51b815260040161087d9190613aa9565b505b5092949350505050565b611a8661397c565b611ab583611a9584600161577d565b60ff1681518110611aa857611aa86152c0565b60200260200101516128a4565b600281518110611ac757611ac76152c0565b602002602001015190509392505050565b805160009015801590611aed57508151602110155b611af657600080fd5b600080611b02846129ad565b815191935091506020821015611b1e5760208290036101000a90045b949350505050565b60006105ed8260a0015160106000600861177f919061573b565b60006105ed8260a00151601060006008611b5a919061573b565b61177f90601061573b565b60a0820151611b9a9060ff83166008611b7f60008261573b565b611b8a90601061573b565b611b9590601061573b565b61287f565b60a09092019190915250565b600054610100900460ff16611bcd5760405162461bcd60e51b815260040161087d906156d3565b610b6a336114da565b60606000611bf0611beb8561016001516129f4565b6128a4565b905060005b8151811015611c83576000611c37611c18848481518110611aa857611aa86152c0565b600081518110611c2a57611c2a6152c0565b6020026020010151612a1a565b9050846001600160a01b0316816001600160a01b03161415611c7257611c68838381518110611aa857611aa86152c0565b93505050506105ed565b50611c7c8161535e565b9050611bf5565b506060949350505050565b60006105ed8260a00151600860006008611ca8919061573b565b611b5a90601061573b565b611cbb613996565b611cc3613996565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60c081015160019015611d155780611d118161535e565b9150505b8160e0015161271014611d305780611d2c8161535e565b9150505b81610100015161271014611d4c5780611d488161535e565b9150505b61014082015151151580611d6557506101608201515115155b80611d7557506101a08201515115155b15611de7576000826101600151518361014001515111611dba57826101a00151518361016001515111611dae57826101a0015151611dc2565b82610160015151611dc2565b826101400151515b9050611dcf8160046157a2565b611dd9908361573b565b60ff90911661012084015290505b806001600160401b03811115611dff57611dff613abc565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5083528151611e38908490612a34565b611e46838360200151612a8c565b611e54838360600151612acd565b611e62838360400151612b1c565b611e7183836101200151612b60565b60008060019050836080015162ffffff1661271014611ea657611e98858560800151612bf1565b611ea36001836157c1565b91505b8360a0015163ffffffff1661271014611ed557611ec7858560a00151612c58565b611ed26002836157c1565b91505b60c084015115611f1b5760c0840151855182611ef08161535e565b935081518110611f0257611f026152c0565b6020908102919091010152611f186004836157c1565b91505b8360e0015161271014611f645760e0840151855182611f398161535e565b935081518110611f4b57611f4b6152c0565b6020908102919091010152611f616008836157c1565b91505b83610100015161271014611faf57610100840151855182611f848161535e565b935081518110611f9657611f966152c0565b6020908102919091010152611fac6010836157c1565b91505b61012084015160ff161561227a5760005b84610120015160ff1681101561226b57600085610140015151118015611feb57508461014001515181105b15612042578461014001518181518110612007576120076152c0565b60200260200101518660000151838061201f9061535e565b945081518110612031576120316152c0565b602002602001018181525050612070565b8551600090836120518161535e565b945081518110612063576120636152c0565b6020026020010181815250505b60008561016001515111801561208b57508461016001515181105b156120e25784610160015181815181106120a7576120a76152c0565b6020026020010151866000015183806120bf9061535e565b9450815181106120d1576120d16152c0565b602002602001018181525050612110565b8551600090836120f18161535e565b945081518110612103576121036152c0565b6020026020010181815250505b60008561018001515111801561212b57508461018001515181105b15612185578461018001518181518110612147576121476152c0565b602002602001015160ff16866000015183806121629061535e565b945081518110612174576121746152c0565b6020026020010181815250506121b2565b85518190836121938161535e565b9450815181106121a5576121a56152c0565b6020026020010181815250505b6000856101a00151511180156121cd5750846101a001515181105b1561222d57846101a0015181815181106121e9576121e96152c0565b60200260200101516001600160a01b03168660000151838061220a9061535e565b94508151811061221c5761221c6152c0565b60200260200101818152505061225b565b85516000908361223c8161535e565b94508151811061224e5761224e6152c0565b6020026020010181815250505b6122648161535e565b9050611fc0565b506122776020836157c1565b91505b6122848583612ccb565b5050505050565b91821c9160008061229f600180861b6157e7565b909416949350505050565b60004661a4b181141561232f5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122f157600080fd5b505afa158015612305573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232991906157fe565b91505090565b4391505090565b60606105ed82612d1b565b60608282604051602001612356929190615817565b604051602081830303815290604052905092915050565b600061239e338760600151602001518860600151610100015189602001518a6060015160c001518b6000015161143e565b6000818152606c602052604081208054929350916123e0916001918491906123c8576123c86152c0565b90600052602060002001612db790919063ffffffff16565b6124106001826000815481106123f8576123f86152c0565b90600052602060002001612e0f90919063ffffffff16565b61241d87878787876124dc565b6060870151602080820151610100830151828b015160c0909401518b5160405160009661245296339695949193919201615693565b60408051601f1981840301815291815281516020928301206000818152606b8452918220549093506001600160601b0316916124a591839160019160089161249a919061573b565b611b9590602061573b565b6000928352606b602052604090922080546001600160601b0319166001600160601b03909316929092179091555050505050505050565b60608501516020808201516101008301518289015160c090940151895160405160009661251196339695949193919201615693565b60408051601f1981840301815291815281516020928301206000818152606b8452918220549093506001600160601b03169161255390839061177f848261573b565b60ff16905060018660ff1614156126ed5760ff851615801561258357504261257b8589615853565b63ffffffff16115b156125f25760405162461bcd60e51b815260206004820152603960248201527f4d482074696d6572203a207461736b426567696e54696d65202b20696e746572604482015278076616c54696d65203e20626c6f636b2e74696d657374616d7603c1b606482015260840161087d565b60ff8516600114801561261a57506126086122aa565b6126128589615853565b63ffffffff16115b156126865760405162461bcd60e51b815260206004820152603660248201527f4d482074696d6572203a207461736b426567696e54696d65202b20696e7465726044820152753b30b62a34b6b2901f10313637b1b597373ab6b132b960511b606482015260840161087d565b612691886001612e4a565b6126bc6001600160601b0383166126a9836001615853565b63ffffffff166020611b9560008261573b565b6000848152606b6020526040902080546001600160601b0319166001600160601b03929092169190911790556127d1565b60028660ff1614156127d157600060ff861661272d578463ffffffff168863ffffffff164261271c91906157e7565b6127269190615872565b905061275a565b8463ffffffff168863ffffffff166127436122aa565b61274d91906157e7565b6127579190615872565b90505b8163ffffffff168111156127cf57600061277a63ffffffff8416836157e7565b90506127868a82612e4a565b6127a16001600160601b038516836020611b9560008261573b565b6000868152606b6020526040902080546001600160601b0319166001600160601b0392909216919091179055505b505b606754606089015160208101516101008201516001600160a01b039093169263495fb7ec926127ff90611b26565b61280c8d60600151611b40565b60208e015160608f015160c001518f516040516001600160e01b031960e08a901b1681526128439796959493929190600401615422565b600060405180830381600087803b15801561285d57600080fd5b505af1158015612871573d6000803e3d6000fd5b505050505050505050505050565b600083821b8183612893600180881b6157e7565b901b19969096161795945050505050565b60606128af826132a2565b6128b857600080fd5b60006128c3836132db565b90506000816001600160401b038111156128df576128df613abc565b60405190808252806020026020018201604052801561291857816020015b61290561397c565b8152602001906001900390816128fd5790505b509050600061292a856020015161335e565b8560200151612939919061573b565b90506000805b848110156129a257612950836133d9565b9150604051806040016040528083815260200184815250848281518110612979576129796152c0565b602090810291909101015261298e828461573b565b92508061299a8161535e565b91505061293f565b509195945050505050565b60008060006129bf846020015161335e565b905060008185602001516129d3919061573b565b905060008286600001516129e791906157e7565b9196919550909350505050565b6129fc61397c565b50604080518082019091528151815260209182019181019190915290565b8051600090601514612a2b57600080fd5b6105ed82611ad8565b612a698260000151600081518110612a4e57612a4e6152c0565b60200260200101518260ff16600860ff16600060ff1661287f565b82518051600090612a7c57612a7c6152c0565b6020026020010181815250505050565b612a698260000151600081518110612aa657612aa66152c0565b60200260200101518260ff16600460ff1660006008612ac5919061577d565b60ff1661287f565b612a698260000151600081518110612ae757612ae76152c0565b60200260200101518260ff16600460ff1660006008612b06919061577d565b612b1190600461577d565b612ac590600861577d565b612a698260000151600081518110612b3657612b366152c0565b60200260200101518260ff16600860ff1660006008612b55919061577d565b612ac590600461577d565b612a698260000151600081518110612b7a57612b7a6152c0565b60200260200101518260ff16600860ff1660006008612b99919061577d565b612ba490600461577d565b612baf90600861577d565b612bba90600461577d565b612bc590601061577d565b612bd090601861577d565b612bdb90602061577d565b612be690602061577d565b612ac590602061577d565b612a698260000151600081518110612c0b57612c0b6152c0565b60200260200101518262ffffff16601860ff1660006008612c2c919061577d565b612c3790600461577d565b612c4290600861577d565b612c4d90600461577d565b612ac590601061577d565b612a698260000151600081518110612c7257612c726152c0565b60200260200101518263ffffffff16602060ff1660006008612c94919061577d565b612c9f90600461577d565b612caa90600861577d565b612cb590600461577d565b612cc090601061577d565b612ac590601861577d565b612a698260000151600081518110612ce557612ce56152c0565b60200260200101518261ffff16601060ff1660006008612d05919061577d565b612d1090600461577d565b612b5590600861577d565b60606000612d288361347d565b60010190506000816001600160401b03811115612d4757612d47613abc565b6040519080825280601f01601f191660200182016040528015612d71576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612daa57612daf565b612d7b565b509392505050565b612de982600001600081548110612dd057612dd06152c0565b60009182526020822001549060ff84169060089061287f565b82600001600081548110612dff57612dff6152c0565b6000918252602090912001555050565b612de982600001600081548110612e2857612e286152c0565b90600052602060002001548260ff16600460ff1660006008612ac5919061577d565b6000612e598360600151611563565b90506000600282511115612e7f576060840151612e7c90610d7290846001611a7e565b90505b600160ff821660641415612fb85760008560600151602001516001600160a01b031663fe8c4aa36040518163ffffffff1660e01b815260040160206040518083038186803b158015612ed057600080fd5b505afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f08919061571e565b606087015161010081015190612f1d90611b26565b612f2a8960600151611b40565b604051602001612f3d9493929190615379565b60408051601f19818403018152918152815160209283012060008181526069909352908220549092506001600160801b031690612fa1826008612f80848261573b565b612f8b90600861573b565b612f9690602061573b565b611ca890602061573b565b905060ff811660011415612fb457600093505b5050505b801561317b576067546001600160a01b0316635245622763ffffffff86166001600160401b03811115612fed57612fed613abc565b6040519080825280601f01601f191660200182016040528015613017576020820181803683370190505b5060608801516020810151610100820151909161303390611b26565b6130408b60600151611b40565b60208c015160608d015160c001518d516040516001600160e01b031960e08b901b168152613078989796959493929190600401615886565b602060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ca91906157fe565b9050600181141561311d5760405162461bcd60e51b815260206004820181905260248201527f6d696e652072616e646f6d20686173207061737365642032353620626c6f636b604482015260640161087d565b600281141561316c5760405162461bcd60e51b815260206004820152601b60248201527a0dad2dcca40e4c2dcc8deda40c4d8dec6d640dcdee840e4cac2c6d602b1b604482015260640161087d565b61317861271082615769565b90505b60006131ac338760600151602001518860600151610100015189602001518a6060015160c001518b6000015161143e565b6000818152606c602052604080822080549151636d0aa59560e01b815293945092909190819073__$10c7622a794a4c36e0cba83f19e55bd777$__90636d0aa59590613200908d908d908b90600401615b03565b60006040518083038186803b15801561321857600080fd5b505af415801561322c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132549190810190615bca565b855460018101875560008781526020908190208351805195975093955085949201926132869284929190910190613942565b5050506132968a8a85858a613553565b50505050505050505050565b80516000906132b357506000919050565b6020820151805160001a9060c08210156132d1575060009392505050565b5060019392505050565b80516000906132ec57506000919050565b6000806132fc846020015161335e565b846020015161330b919061573b565b9050600084600001518560200151613323919061573b565b90505b8082101561335557613337826133d9565b613341908361573b565b91508261334d8161535e565b935050613326565b50909392505050565b8051600090811a60808110156133775750600092915050565b60b8811080613392575060c08110801590613392575060f881105b156133a05750600192915050565b60c08110156133cd576133b5600160b8615c10565b6133c29060ff16826157e7565b61137a90600161573b565b6133b5600160f8615c10565b80516000908190811a60808110156133f457600191506109b7565b60b881101561341a576134086080826157e7565b61341390600161573b565b91506109b7565b60c08110156134475760b78103600185019450806020036101000a855104600182018101935050506109b7565b60f881101561345b5761340860c0826157e7565b60019390930151602084900360f7016101000a900490920160f5190192915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134bc5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106134e6576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061350457662386f26fc10000830492506010015b6305f5e100831061351c576305f5e100830492506008015b612710831061353057612710830492506004015b60648310613542576064830492506002015b600a83106105ed5760010192915050565b60008060008073__$10c7622a794a4c36e0cba83f19e55bd777$__63e81310598a8a6040518363ffffffff1660e01b8152600401613592929190615c33565b60806040518083038186803b1580156135aa57600080fd5b505af41580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e29190615c5b565b935093509350935060018260ff161415613619576000613602338b613652565b6000908152606a6020526040902082905550613638565b6000613625338b6136e4565b6000908152606a60205260409020829055505b6136478989898989898961377d565b505050505050505050565b60008083836060015160200151846060015161010001516136768660600151611b26565b6136838760600151611b40565b604080516001600160a01b039687166020820152959094169385019390935263ffffffff909116606084015261ffff90811660808401521660a082015260c0015b60408051808303601f190181529190528051602090910120949350505050565b60008083836060015160200151846060015161010001516137088660600151611b26565b6137158760600151611b40565b60208089015160608a015160c001516040516136c4989796959493016001600160a01b039788168152958716602087015263ffffffff948516604087015261ffff9384166060870152919092166080850152931660a08301529190911660c082015260e00190565b60006137ae338960600151602001518a6060015161010001518b602001518c6060015160c001518d6000015161143e565b9050600073__$10c7622a794a4c36e0cba83f19e55bd777$__631f5dbd128a8a8a8a8a8a8a6040518863ffffffff1660e01b81526004016137f59796959493929190615c9a565b60006040518083038186803b15801561380d57600080fd5b505af4158015613821573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138499190810190615ceb565b6000838152606c602052604090208054919250829161ffff8a16908110613872576138726152c0565b906000526020600020016000820151816000019080519060200190612871929190613942565b8280546138a490615196565b90600052602060002090601f0160209004810192826138c6576000855561390c565b82601f106138df57805160ff191683800117855561390c565b8280016001018555821561390c579182015b8281111561390c5782518255916020019190600101906138f1565b50613918929150613a1f565b5090565b604080516080810182526000808252602082015260609181018290528181019190915290565b82805482825590600052602060002090810192821561390c579160200282018281111561390c5782518255916020019190600101906138f1565b604051806040016040528060008152602001600081525090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b5b808211156139185760008155600101613a20565b600060208284031215613a4657600080fd5b5035919050565b60005b83811015613a68578181015183820152602001613a50565b83811115613a77576000848401525b50505050565b60008151808452613a95816020860160208601613a4d565b601f01601f19169290920160200192915050565b60208152600061137a6020830184613a7d565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613af557613af5613abc565b60405290565b60405160a081016001600160401b0381118282101715613af557613af5613abc565b604080519081016001600160401b0381118282101715613af557613af5613abc565b604051608081016001600160401b0381118282101715613af557613af5613abc565b60405161018081016001600160401b0381118282101715613af557613af5613abc565b604051606081016001600160401b0381118282101715613af557613af5613abc565b60405161016081016001600160401b0381118282101715613af557613af5613abc565b604051602081016001600160401b0381118282101715613af557613af5613abc565b604051601f8201601f191681016001600160401b0381118282101715613c1357613c13613abc565b604052919050565b6001600160a01b0381168114610c7a57600080fd5b8035613c3b81613c1b565b919050565b803563ffffffff81168114613c3b57600080fd5b60ff81168114610c7a57600080fd5b8035613c3b81613c54565b803561ffff81168114613c3b57600080fd5b60006101408284031215613c9357600080fd5b613c9b613ad2565b613ca483613c30565b8152613cb260208401613c30565b6020820152613cc360408401613c30565b6040820152613cd460608401613c40565b6060820152613ce560808401613c40565b6080820152613cf660a08401613c30565b60a0820152613d0760c08401613c63565b60c0820152613d1860e08401613c6e565b60e0820152610100613d2b818501613c63565b90820152610120613d3d848201613c63565b908201529392505050565b60006001600160401b03821115613d6157613d61613abc565b50601f01601f191660200190565b600082601f830112613d8057600080fd5b8135613d93613d8e82613d48565b613beb565b818152846020838601011115613da857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b031215613de257600080fd5b8835613ded81613c1b565b97506020890135613dfd81613c1b565b96506040890135613e0d81613c1b565b9550613e1b60608a01613c40565b94506080890135613e2b81613c1b565b9350613e3960a08a01613c40565b925060c08901356001600160401b03811115613e5457600080fd5b613e608b828c01613d6f565b925050613e6f60e08a01613c6e565b90509295985092959890939650565b805160208084528151848201819052600092820190839060408701905b80831015613ebb5783518252928401926001929092019190840190613e9b565b509695505050505050565b60208152600061137a6020830184613e7e565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613f2e57603f19888603018452613f1c858351613e7e565b94509285019290850190600101613f00565b5092979650505050505050565b60008060008060008060c08789031215613f5457600080fd5b8635613f5f81613c1b565b95506020870135613f6f81613c1b565b9450613f7d60408801613c40565b93506060870135613f8d81613c1b565b9250613f9b60808801613c40565b9150613fa960a08801613c6e565b90509295509295509295565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b818110156140035783516001600160a01b031683529284019291840191600101613fde565b50909695505050505050565b6000806000806080858703121561402557600080fd5b61402e85613c40565b935061403c60208601613c6e565b9250604085013561404c81613c54565b915060608501356001600160401b0381111561406757600080fd5b61407387828801613d6f565b91505092959194509250565b60006001600160401b0382111561409857614098613abc565b5060051b60200190565b600060208083850312156140b557600080fd5b82356001600160401b03808211156140cc57600080fd5b818501915085601f8301126140e057600080fd5b81356140ee613d8e8261407f565b81815260059190911b8301840190848101908883111561410d57600080fd5b8585015b83811015614145578035858111156141295760008081fd5b6141378b89838a0101613d6f565b845250918601918601614111565b5098975050505050505050565b600080600080600060a0868803121561416a57600080fd5b61417386613c40565b945061418160208701613c6e565b935061418f60408701613c6e565b9250606086013561419f81613c54565b915060808601356001600160401b038111156141ba57600080fd5b6141c688828901613d6f565b9150509295509295909350565b600082601f8301126141e457600080fd5b813560206141f4613d8e8361407f565b82815260059290921b8401810191818101908684111561421357600080fd5b8286015b84811015613ebb5780356001600160401b038082111561423657600080fd5b9088019060a0828b03601f1901121561424e57600080fd5b614256613afb565b8683013561426381613c54565b815260408381013561427481613c1b565b828901526060848101358284015260808501359083015260a08401358381111561429e5760008081fd5b8085019450508b603f8501126142b657600092508283fd5b8784013592506142c8613d8e8461407f565b83815260069390931b8401810192888101908d8511156142e85760008081fd5b948201945b8486101561433f5782868f0312156143055760008081fd5b61430d613b1d565b61431687613c40565b81528a8701358060040b811461432c5760008081fd5b818c0152825294820194908901906142ed565b6080840152505085525050918301918301614217565b60006080828403121561436757600080fd5b61436f613b3f565b9050813561437c81613c1b565b8152602082013561438c81613c54565b602082015260408201356001600160401b03808211156143ab57600080fd5b6143b785838601613d6f565b604084015260608401359150808211156143d057600080fd5b506143dd84828501613d6f565b60608301525092915050565b600080604083850312156143fc57600080fd5b82356001600160401b038082111561441357600080fd5b9084019060a0828703121561442757600080fd5b61442f613afb565b823561443a81613c1b565b8152602083013561444a81613c1b565b6020820152604083013561445d81613c1b565b604082015260608301358281111561447457600080fd5b8301610180818903121561448757600080fd5b61448f613b61565b61449882613c30565b81526144a660208301613c30565b60208201526144b760408301613c30565b60408201526144c860608301613c30565b60608201526080820135608082015260a082013560a08201526144ed60c08301613c40565b60c08201526144fe60e08301613c40565b60e0820152610100614511818401613c40565b90820152610120614523838201613c63565b90820152610140828101358581111561453b57600080fd5b6145478b8286016141d3565b828401525050610160808301358581111561456157600080fd5b61456d8b828601613d6f565b828401525050806060840152505061458760808401613c63565b6080820152935060208501359150808211156145a257600080fd5b506145af85828601614355565b9150509250929050565b6020815260018060a01b03825116602082015260ff602083015116604082015260006040830151608060608401526145f460a0840182613a7d565b90506060840151601f198483030160808501526146118282613a7d565b95945050505050565b600082601f83011261462b57600080fd5b8135602061463b613d8e8361407f565b82815260059290921b8401810191818101908684111561465a57600080fd5b8286015b84811015613ebb578035835291830191830161465e565b600082601f83011261468657600080fd5b81356020614696613d8e8361407f565b82815260059290921b840181019181810190868411156146b557600080fd5b8286015b84811015613ebb5780356146cc81613c1b565b83529183019183016146b9565b600082601f8301126146ea57600080fd5b813560206146fa613d8e8361407f565b82815260059290921b8401810191818101908684111561471957600080fd5b8286015b84811015613ebb5780356001600160401b038082111561473c57600080fd5b90880190601f196080838c038201121561475557600080fd5b61475d613b3f565b878401358381111561476e57600080fd5b84016060818e038401121561478257600080fd5b61478a613b84565b92508881013561479981613c54565b83526040818101356147aa81613c1b565b848b01526060820135858111156147c057600080fd5b6147ce8f8c8386010161461a565b82860152508383526147e1818701613c63565b8a84015260608601359350848411156147f957600080fd5b6148078e8b86890101614675565b9083015250608084013591508282111561482057600080fd5b61482e8c898487010161461a565b6060820152865250505091830191830161471d565b600082601f83011261485457600080fd5b81356020614864613d8e8361407f565b82815260059290921b8401810191818101908684111561488357600080fd5b8286015b84811015613ebb5780356001600160401b038111156148a65760008081fd5b6148b48986838b0101613d6f565b845250918301918301614887565b600082601f8301126148d357600080fd5b813560206148e3613d8e8361407f565b82815260059290921b8401810191818101908684111561490257600080fd5b8286015b84811015613ebb5780356001600160401b03808211156149265760008081fd5b9088019060a0828b03601f19018113156149405760008081fd5b614948613afb565b878401358381111561495a5760008081fd5b6149688d8a838801016146d9565b8252506040614978818601613c63565b898301526060614989818701613c30565b828401526080915081860135858111156149a35760008081fd5b6149b18f8c838a0101614675565b828501525050828501359250838311156149cb5760008081fd5b6149d98d8a85880101614843565b908201528652505050918301918301614906565b600082601f8301126149fe57600080fd5b81356020614a0e613d8e8361407f565b82815260059290921b84018101918181019086841115614a2d57600080fd5b8286015b84811015613ebb578035614a4481613c54565b8352918301918301614a31565b80356001600160401b0381168114613c3b57600080fd5b600082601f830112614a7957600080fd5b81356020614a89613d8e8361407f565b82815260059290921b84018101918181019086841115614aa857600080fd5b8286015b84811015613ebb5780356001600160401b0380821115614acc5760008081fd5b90880190610160828b03601f1901811315614ae75760008081fd5b614aef613ba6565b614afa888501613c6e565b81526040614b09818601613c6e565b898301526060614b1a818701613c63565b8284015260809150614b2d828701613c40565b9083015260a0614b3e868201613c63565b8284015260c09150614b51828701613c40565b9083015260e0614b62868201613c40565b828401526101009150614b76828701614a51565b908301526101208581013585811115614b8f5760008081fd5b614b9d8f8c838a0101614675565b838501525061014091508186013585811115614bb95760008081fd5b614bc78f8c838a0101614843565b828501525050614bd8838601613c30565b908201528652505050918301918301614aac565b600082601f830112614bfd57600080fd5b81356020614c0d613d8e8361407f565b82815260059290921b84018101918181019086841115614c2c57600080fd5b8286015b84811015613ebb5780356001600160401b0380821115614c505760008081fd5b9088019060a0828b03601f1901811315614c6a5760008081fd5b614c72613afb565b614c7d888501613c40565b815260408085013584811115614c935760008081fd5b614ca18e8b83890101613d6f565b8a8401525060608086013585811115614cba5760008081fd5b614cc88f8c838a0101613d6f565b8385015250608091508186013585811115614ce35760008081fd5b614cf18f8c838a0101613d6f565b828501525050614d02838601613c63565b908201528652505050918301918301614c30565b60008060408385031215614d2957600080fd5b614d3283613c40565b915060208301356001600160401b0380821115614d4e57600080fd5b908401906101608287031215614d6357600080fd5b614d6b613ba6565b823582811115614d7a57600080fd5b614d86888286016148c2565b825250602083013582811115614d9b57600080fd5b614da7888286016149ed565b602083015250604083013582811115614dbf57600080fd5b614dcb88828601614a68565b604083015250606083013582811115614de357600080fd5b614def88828601614bec565b606083015250608083013582811115614e0757600080fd5b614e13888286016149ed565b60808301525060a083013582811115614e2b57600080fd5b614e3788828601614675565b60a08301525060c083013582811115614e4f57600080fd5b614e5b88828601614675565b60c083015250614e6d60e08401613c40565b60e0820152610100614e80818501613c40565b90820152610120614e92848201613c63565b908201526101408381013583811115614eaa57600080fd5b614eb689828701613d6f565b8284015250508093505050509250929050565b600060208284031215614edb57600080fd5b81356001600160401b0380821115614ef257600080fd5b908301906101608286031215614f0757600080fd5b614f0f613ba6565b614f1883613c30565b8152614f2660208401613c30565b6020820152614f3760408401613c40565b6040820152614f4860608401613c6e565b6060820152614f5960808401613c6e565b6080820152614f6a60a08401613c63565b60a0820152614f7b60c08401613c30565b60c0820152614f8c60e08401613c40565b60e0820152610100614f9f818501613c30565b90820152610120614fb1848201613c63565b908201526101408381013583811115614fc957600080fd5b614fd588828701613d6f565b918301919091525095945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613f2e57603f19888603018452615029858351613a7d565b9450928501929085019060010161500d565b60006020828403121561504d57600080fd5b81356001600160401b0381111561506357600080fd5b611b1e84828501614675565b60008060006060848603121561508457600080fd5b61508d84613c40565b925061509b60208501613c6e565b915060408401356150ab81613c54565b809150509250925092565b6000602082840312156150c857600080fd5b813561137a81613c1b565b600081518084526020808501945080840160005b8381101561510657815160ff16875295820195908201906001016150e7565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561518857888303603f190185528151805187855261515c888601826150d3565b91890151858303868b015291905061517481836150d3565b968901969450505090860190600101615138565b509098975050505050505050565b600181811c908216806151aa57607f821691505b602082108114156112a157634e487b7160e01b600052602260045260246000fd5b6151d6828251613fb5565b60208101516151e86020840182613fb5565b5060408101516151fb6040840182613fb5565b506060810151615213606084018263ffffffff169052565b50608081015161522b608084018263ffffffff169052565b5060a081015161523e60a0840182613fb5565b5060c081015161525360c084018260ff169052565b5060e081015161526960e084018261ffff169052565b506101008181015160ff81168483015250506101208181015160ff811684830152613a77565b61014081016105ed82846151cb565b6000602082840312156152b057600080fd5b8151801515811461137a57600080fd5b634e487b7160e01b600052603260045260246000fd5b600082516152e8818460208701613a4d565b9190910192915050565b6020808252600990820152680dcdee840dac2e8c6d60bb1b604082015260600190565b6001600160a01b0394909416845263ffffffff92909216602084015261ffff16604083015260ff16606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561537257615372615348565b5060010190565b6001600160a01b0394909416845263ffffffff92909216602084015261ffff908116604084015216606082015260800190565b6001600160a01b038616815263ffffffff8516602082015261ffff84811660408301528316606082015260a0608082018190526000906153ee90830184613a7d565b979650505050505050565b60006020828403121561540b57600080fd5b81516001600160801b038116811461137a57600080fd5b6001600160a01b03978816815263ffffffff968716602082015261ffff9586166040820152939094166060840152908516608083015290921660a083015290911660c082015260e00190565b60208152615480602082018351613fb5565b600060208301516154946040840182613fb5565b50604083015163ffffffff8116606084015250606083015161ffff8116608084015250608083015161ffff811660a08401525060a083015160ff811660c08401525060c08301516154e860e0840182613fb5565b5060e08301516101006155028185018363ffffffff169052565b840151905061012061551684820183613fb5565b840151905061014061552c8482018360ff169052565b840151610160848101529050611b1e610180840182613a7d565b6000615554613d8e84613d48565b905082815283838301111561556857600080fd5b61137a836020830184613a4d565b6000602080838503121561558957600080fd5b82516001600160401b03808211156155a057600080fd5b818501915085601f8301126155b457600080fd5b81516155c2613d8e8261407f565b81815260059190911b830184019084810190888311156155e157600080fd5b8585015b83811015614145578051858111156155fd5760008081fd5b8601603f81018b1361560f5760008081fd5b6156208b8983015160408401615546565b8452509186019186016155e5565b60006020828403121561564057600080fd5b81516001600160401b0381111561565657600080fd5b8201601f8101841361566757600080fd5b611b1e84825160208401615546565b610160810161568582856151cb565b826101408301529392505050565b6001600160a01b039687168152948616602086015263ffffffff93841660408601529185166060850152909116608083015290911660a082015260c00190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561573057600080fd5b815161137a81613c1b565b6000821982111561574e5761574e615348565b500190565b634e487b7160e01b600052601260045260246000fd5b60008261577857615778615753565b500690565b600060ff821660ff84168060ff0382111561579a5761579a615348565b019392505050565b60008160001904831182151516156157bc576157bc615348565b500290565b600061ffff8083168185168083038211156157de576157de615348565b01949350505050565b6000828210156157f9576157f9615348565b500390565b60006020828403121561581057600080fd5b5051919050565b60008351615829818460208801613a4d565b600b60fa1b9083019081528351615847816001840160208801613a4d565b01600101949350505050565b600063ffffffff8083168185168083038211156157de576157de615348565b60008261588157615881615753565b500490565b600061010080835261589a8184018c613a7d565b6001600160a01b039a8b16602085015263ffffffff998a16604085015261ffff98891660608501529690971660808301525092871660a0840152941660c08201529290931660e09092019190915250919050565b600081518084526020808501808196508360051b810191508286016000805b868110156159b1578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b8083101561599b578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191615969565b5050509a87019a9550509185019160010161590d565b509298975050505050505050565b600060018060a01b0380835116845280602084015116602085015280604084015116604085015250606082015160a06060850152615a0160a085018251613fb5565b6020810151615a1360c0860182613fb5565b506040810151615a2660e0860182613fb5565b506060810151610100615a3b81870183613fb5565b60808301519150610120828188015260a08401519250610140838189015260c08501519350610160615a74818a018663ffffffff169052565b60e08601519450610180615a8f818b018763ffffffff169052565b8487015163ffffffff166101a08b01528387015160ff166101c08b0152828701516101e08b01919091529450615ac96102208a01866158ee565b950151888603609f19016102008a0152949350615aec9250839150849050613a7d565b9150506080830151612daf608086018260ff169052565b606081526000615b1660608301866159bf565b63ffffffff9490941660208301525060400152919050565b60006020808385031215615b4157600080fd5b615b49613bc9565b915082516001600160401b03811115615b6157600080fd5b8301601f81018513615b7257600080fd5b8051615b80613d8e8261407f565b81815260059190911b82018301908381019087831115615b9f57600080fd5b928401925b82841015615bbd57835182529284019290840190615ba4565b8552509295945050505050565b60008060408385031215615bdd57600080fd5b8251615be881613c54565b60208401519092506001600160401b03811115615c0457600080fd5b6145af85828601615b2e565b600060ff821660ff841680821015615c2a57615c2a615348565b90039392505050565b604081526000615c4660408301856159bf565b905063ffffffff831660208301529392505050565b60008060008060808587031215615c7157600080fd5b84519350602085015192506040850151615c8a81613c54565b6060959095015193969295505050565b60e081526000615cad60e083018a6159bf565b63ffffffff9890981660208301525061ffff95909516604086015260ff939093166060850152608084019190915260a083015260c090910152919050565b600060208284031215615cfd57600080fd5b81516001600160401b03811115615d1357600080fd5b611b1e84828501615b2e56fe4d696e652048616e646c6572206861732066696e69736865642c207461736b4964a2646970667358221220b4e68b294fe5131c034197aa349e9a8d014c11e8d29195587b06e16305c0a3a564736f6c63430008080033",
  "linkReferences": {
    "contracts/V3/handler/MineHandlerLib.sol": {
      "MineHandlerLib": [
        {
          "length": 20,
          "start": 1430
        },
        {
          "length": 20,
          "start": 2741
        },
        {
          "length": 20,
          "start": 4662
        },
        {
          "length": 20,
          "start": 12789
        },
        {
          "length": 20,
          "start": 13692
        },
        {
          "length": 20,
          "start": 14293
        }
      ]
    },
    "contracts/V3/handler/MineHandlerLibState.sol": {
      "MineHandlerLibState": [
        {
          "length": 20,
          "start": 3966
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/V3/handler/MineHandlerLib.sol": {
      "MineHandlerLib": [
        {
          "length": 20,
          "start": 1397
        },
        {
          "length": 20,
          "start": 2708
        },
        {
          "length": 20,
          "start": 4629
        },
        {
          "length": 20,
          "start": 12756
        },
        {
          "length": 20,
          "start": 13659
        },
        {
          "length": 20,
          "start": 14260
        }
      ]
    },
    "contracts/V3/handler/MineHandlerLibState.sol": {
      "MineHandlerLibState": [
        {
          "length": 20,
          "start": 3933
        }
      ]
    }
  }
}
