{
  "_format": "hh-sol-artifact-1",
  "contractName": "BondManager_Test",
  "sourceName": "contracts/test/BondManager.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BondPosted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "claiment",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BondReclaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "seizer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BondSeized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "disputeProxy",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "enum GameType",
          "name": "gameType",
          "type": "uint8"
        },
        {
          "indexed": true,
          "internalType": "Claim",
          "name": "rootClaim",
          "type": "bytes32"
        }
      ],
      "name": "DisputeGameCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "excludedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifactSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedArtifactSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "targetedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_post_duplicates_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_post_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_post_zeroAddress_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_post_zeroAddress_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_reclaim_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "testFuzz_seizeAndSplit_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_seize_expired_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        }
      ],
      "name": "testFuzz_seize_missingBond_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "testFuzz_seize_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "bondId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minClaimHold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "testFuzz_seize_unauthorized_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506187b4806200003e6000396000f3fe60806040523480156200001157600080fd5b5060043610620001945760003560e01c8063750b6ebe11620000e9578063aa4aec721162000097578063e20c9f71116200006e578063e20c9f71146200030b578063ee8b95361462000315578063fa7626d4146200032c57600080fd5b8063aa4aec7214620002cf578063b5508aa914620002e6578063ba414fa614620002f057600080fd5b8063916a17c611620000cc578063916a17c6146200029757806399ebf22a14620002a15780639dc79f2a14620002b857600080fd5b8063750b6ebe146200026757806385226c81146200027e57600080fd5b80633dbbb96d11620001475780633f7286f4116200012a5780633f7286f4146200022d57806346d37c4e146200023757806366d9a9a0146200024e57600080fd5b80633dbbb96d146200020c5780633e5e3c23146200022357600080fd5b80631515ef6d116200017c5780631515ef6d14620001bc5780631ed7831c14620001d35780632d0f60ca14620001f557600080fd5b8062fe100e14620001995780630a9254e414620001b2575b600080fd5b620001b0620001aa36600462004c8b565b6200033a565b005b620001b062000d05565b620001b0620001cd36600462004d36565b62000e23565b620001dd62001498565b604051620001ec919062004d76565b60405180910390f35b620001b06200020636600462004dd2565b62001509565b620001b06200021d36600462004e0d565b6200178d565b620001dd62001952565b620001dd620019c1565b620001b06200024836600462004d36565b62001a30565b62000258620021dd565b604051620001ec919062004e3a565b620001b06200027836600462004c8b565b620022f2565b6200028862002d6f565b604051620001ec919062004fb3565b6200025862002e49565b620001b0620002b236600462004d36565b62002f55565b620001b0620002c936600462004d36565b62003345565b620001b0620002e036600462004d36565b62003931565b6200028862003edd565b620002fa62003fb7565b6040519015158152602001620001ec565b620001dd62004121565b620001b06200032636600462005037565b62004190565b600054620002fa9060ff1681565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815242840184106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b50506040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200042f57600080fd5b505af115801562000444573d6000803e3d6000fd5b5050601c546040517fa95bd9a900000000000000000000000000000000000000000000000000000000815260048101889052620ba5ed60248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116925063a95bd9a99150670de0b6b3a7640000906064016000604051808303818588803b158015620004ce57600080fd5b505af1158015620004e3573d6000803e3d6000fd5b5050505050600080600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060405190965093945085936200053a9350915062004c619050565b604051809103906000f08015801562000557573d6000803e3d6000fd5b50601b546040517f45583b7a00000000000000000000000000000000000000000000000000000000815291925060029173ffffffffffffffffffffffffffffffffffffffff909116906345583b7a90620005b89084908690600401620050b8565b600060405180830381600087803b158015620005d357600080fd5b505af1158015620005e8573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260006004820181905260016024830181905260448301526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200066857600080fd5b505af11580156200067d573d6000803e3d6000fd5b505050508381600281111562000697576200069762005051565b6040516000907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec908290a4601b546040517f3142e55e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633142e55e906200072090849088908c908c90600401620050ec565b6020604051808303816000875af115801562000740573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000766919062005152565b601b546040517fc49d5271000000000000000000000000000000000000000000000000000000008152919650620008179173ffffffffffffffffffffffffffffffffffffffff9091169063c49d527190620007cc90859089908d908d90600401620050ec565b602060405180830381865afa158015620007ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000810919062005152565b86620042e5565b5050601c546040517f48d3fed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015284918216906348d3fed390602401600060405180830381600087803b1580156200088857600080fd5b505af11580156200089d573d6000803e3d6000fd5b50506040517f3fc71fc40000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff84169250633fc71fc49150602401600060405180830381600087803b1580156200090a57600080fd5b505af11580156200091f573d6000803e3d6000fd5b50506040517fba3fcb9400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416925063ba3fcb949150620009789060019060040162005179565b600060405180830381600087803b1580156200099357600080fd5b505af1158015620009a8573d6000803e3d6000fd5b50506040517f972aff2e000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff8416925063972aff2e9150602401600060405180830381600087803b15801562000a1557600080fd5b505af115801562000a2a573d6000803e3d6000fd5b50506040517f13c4e95700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506313c4e957915062000a829085906004016200518e565b600060405180830381600087803b15801562000a9d57600080fd5b505af115801562000ab2573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562000b3257600080fd5b505af115801562000b47573d6000803e3d6000fd5b5050604080518b8152620ba5ed602082015273ffffffffffffffffffffffffffffffffffffffff851681830152670de0b6b3a7640000606082015290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399350908190036080019150a18073ffffffffffffffffffffffffffffffffffffffff16632810e1d66040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000bff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c259190620051a3565b5062000c518173ffffffffffffffffffffffffffffffffffffffff1631670de0b6b3a764000062004427565b601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018a905260009173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa15801562000cc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce89190620051d3565b505050905062000cfa816000620042e5565b505050505050505050565b3060405162000d149062004c6f565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000d4e573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905560405162000da19062004c7d565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000ddb573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000e9f57600080fd5b505afa15801562000eb4573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000f3d57600080fd5b505afa15801562000f52573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000fd357600080fd5b505afa15801562000fe8573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200107d57600080fd5b505afa15801562001092573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620010fc57600080fd5b505afa15801562001111573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200117d57600080fd5b505afa15801562001192573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200120357600080fd5b505af115801562001218573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200129857600080fd5b505af1158015620012ad573d6000803e3d6000fd5b5050505060008242620012c1919062005244565b6040805187815273ffffffffffffffffffffffffffffffffffffffff87166020820152908101829052606081018490529091507fb3f7ea9789b653f1f16bea488689a6e60a64300aaf9a66ca828aeff75685fb599060800160405180910390a1601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018690529091169063a95bd9a99084906064016000604051808303818588803b1580156200139e57600080fd5b505af1158015620013b3573d6000803e3d6000fd5b5050601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018a905260009450849350839250829173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa1580156200142f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014559190620051d3565b9350935093509350620014698489620042e5565b62001480836200147a894262005244565b62004427565b6200148c828a62004527565b62000cfa818762004427565b6060600d805480602002602001604051908101604052809291908181526020018280548015620014ff57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575b5050505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200158557600080fd5b505afa1580156200159a573d6000803e3d6000fd5b50506040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c88a5e6d90604401600060405180830381600087803b1580156200160e57600080fd5b505af115801562001623573d6000803e3d6000fd5b50506040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f426f6e644d616e616765723a2056616c7565206d757374206265206e6f6e2d7a60448201527f65726f2e000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015b600060405180830381600087803b158015620016e157600080fd5b505af1158015620016f6573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064015b6000604051808303818588803b1580156200177857600080fd5b505af115801562000cfa573d6000803e3d6000fd5b6040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101829052600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620017fd57600080fd5b505af115801562001812573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f426f6e644d616e616765723a204f776e65722063616e6e6f742062652074686560448201527f207a65726f20616464726573732e0000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620018d057600080fd5b505af1158015620018e5573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff858116602483015260448201889052909116925063a95bd9a9915084906064016200175e565b6060600f805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001aac57600080fd5b505afa15801562001ac1573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86163b156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001b4157600080fd5b505afa15801562001b56573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001bc057600080fd5b505afa15801562001bd5573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001c4157600080fd5b505afa15801562001c56573d6000803e3d6000fd5b5050505062001c658362004627565b6040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562001cd257600080fd5b505af115801562001ce7573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018990526000945073ffffffffffffffffffffffffffffffffffffffff909116925063b9ad7ea99150602401608060405180830381865afa15801562001df5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1b9190620051d3565b50509150504281111562002018576040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001ea557600080fd5b505af115801562001eba573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f426f6e644d616e616765723a20426f6e642069736e277420636c61696d61626c60448201527f65207965742e00000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562001f7857600080fd5b505af115801562001f8d573d6000803e3d6000fd5b5050601c546040517f96afb3650000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff90911692506396afb3659150602401600060405180830381600087803b15801562001ffe57600080fd5b505af115801562002013573d6000803e3d6000fd5b505050505b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200207f57600080fd5b505af115801562002094573d6000803e3d6000fd5b50506040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200211457600080fd5b505af115801562002129573d6000803e3d6000fd5b5050601c546040517f96afb3650000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff90911692506396afb3659150602401600060405180830381600087803b1580156200219a57600080fd5b505af1158015620021af573d6000803e3d6000fd5b50505050620021d68473ffffffffffffffffffffffffffffffffffffffff16318362004427565b5050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620022e957600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620022d057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200227c5790505b5050505050815250508152602001906001019062002201565b50505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815242840184106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200235a57600080fd5b505afa1580156200236f573d6000803e3d6000fd5b50506040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015620023e757600080fd5b505af1158015620023fc573d6000803e3d6000fd5b5050601c546040517fa95bd9a900000000000000000000000000000000000000000000000000000000815260048101889052620ba5ed60248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116925063a95bd9a99150670de0b6b3a7640000906064016000604051808303818588803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b5050505050600080600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040519096509394508593620024f29350915062004c619050565b604051809103906000f0801580156200250f573d6000803e3d6000fd5b50601b546040517f45583b7a00000000000000000000000000000000000000000000000000000000815291925060029173ffffffffffffffffffffffffffffffffffffffff909116906345583b7a90620025709084908690600401620050b8565b600060405180830381600087803b1580156200258b57600080fd5b505af1158015620025a0573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260006004820181905260016024830181905260448301526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200262057600080fd5b505af115801562002635573d6000803e3d6000fd5b50505050838160028111156200264f576200264f62005051565b6040516000907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec908290a4601b546040517f3142e55e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633142e55e90620026d890849088908c908c90600401620050ec565b6020604051808303816000875af1158015620026f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200271e919062005152565b601b546040517fc49d5271000000000000000000000000000000000000000000000000000000008152919650620027849173ffffffffffffffffffffffffffffffffffffffff9091169063c49d527190620007cc90859089908d908d90600401620050ec565b5050601c546040517f48d3fed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015284918216906348d3fed390602401600060405180830381600087803b158015620027f557600080fd5b505af11580156200280a573d6000803e3d6000fd5b50506040517f3fc71fc40000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff84169250633fc71fc49150602401600060405180830381600087803b1580156200287757600080fd5b505af11580156200288c573d6000803e3d6000fd5b50506040517fba3fcb9400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416925063ba3fcb949150620028e59060019060040162005179565b600060405180830381600087803b1580156200290057600080fd5b505af115801562002915573d6000803e3d6000fd5b50506040517f972aff2e000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff8416925063972aff2e9150602401600060405180830381600087803b1580156200298257600080fd5b505af115801562002997573d6000803e3d6000fd5b50506040517f13c4e95700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506313c4e9579150620029ef9085906004016200518e565b600060405180830381600087803b15801562002a0a57600080fd5b505af115801562002a1f573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562002a9f57600080fd5b505af115801562002ab4573d6000803e3d6000fd5b5050604080518b8152620ba5ed602082015273ffffffffffffffffffffffffffffffffffffffff851681830152670de0b6b3a7640000606082015290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399350908190036080019150a18073ffffffffffffffffffffffffffffffffffffffff16634637f07b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b6757600080fd5b505af115801562002b7c573d6000803e3d6000fd5b5050505062002ba48173ffffffffffffffffffffffffffffffffffffffff1631600062004427565b60008173ffffffffffffffffffffffffffffffffffffffff1663f4e0c4ed6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262002c3a91908101906200528e565b905060008151670de0b6b3a764000062002c5591906200537f565b905060005b825181101562002cb85762002ca383828151811062002c7d5762002c7d620053bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16318362004427565b8062002caf81620053ea565b91505062002c5a565b50601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018c905260009173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa15801562002d2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d509190620051d3565b505050905062002d62816000620042e5565b5050505050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620022e957838290600052602060002001805462002db59062005425565b80601f016020809104026020016040519081016040528092919081815260200182805462002de39062005425565b801562002e345780601f1062002e085761010080835404028352916020019162002e34565b820191906000526020600020905b81548152906001019060200180831162002e1657829003601f168201915b50505050508152602001906001019062002d93565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620022e957600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562002f3c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002ee85790505b5050505050815250508152602001906001019062002e6d565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002fd157600080fd5b505afa15801562002fe6573d6000803e3d6000fd5b5050505060028162002ff991906200537f565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528115156004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200306257600080fd5b505afa15801562003077573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620030e357600080fd5b505afa158015620030f8573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200316957600080fd5b505af11580156200317e573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b158015620031ff57600080fd5b505af115801562003214573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d935063c88a5e6d92506044019050600060405180830381600087803b1580156200328757600080fd5b505af11580156200329c573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20426f6e64496420616c726561647920706f737460448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401620016c6565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620033c157600080fd5b505afa158015620033d6573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200345f57600080fd5b505afa15801562003474573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620034f557600080fd5b505afa1580156200350a573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200357457600080fd5b505afa15801562003589573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620035f557600080fd5b505afa1580156200360a573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200367b57600080fd5b505af115801562003690573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b1580156200371157600080fd5b505af115801562003726573d6000803e3d6000fd5b505050505060006040516200373b9062004c61565b604051809103906000f08015801562003758573d6000803e3d6000fd5b506040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620037d857600080fd5b505af1158015620037ed573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e0000000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620038ab57600080fd5b505af1158015620038c0573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b1580156200177857600080fd5b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620039ad57600080fd5b505afa158015620039c2573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003a4b57600080fd5b505afa15801562003a60573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003ae157600080fd5b505afa15801562003af6573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003b6057600080fd5b505afa15801562003b75573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850160010185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003be457600080fd5b505afa15801562003bf9573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562003c6a57600080fd5b505af115801562003c7f573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b15801562003d0057600080fd5b505af115801562003d15573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d935063e5d6bf02925062003d4491508590504262005244565b62003d5190600162005244565b6040518263ffffffff1660e01b815260040162003d7091815260200190565b600060405180830381600087803b15801562003d8b57600080fd5b505af115801562003da0573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e0000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b15801562003e3857600080fd5b505af115801562003e4d573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b15801562003ebe57600080fd5b505af115801562003ed3573d6000803e3d6000fd5b5050505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620022e957838290600052602060002001805462003f239062005425565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062005425565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b50505050508152602001906001019062003f01565b60008054610100900460ff161562003fd85750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200411c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162004080917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200547a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620040ba91620054c4565b6000604051808303816000865af19150503d8060008114620040f9576040519150601f19603f3d011682016040523d82523d6000602084013e620040fe565b606091505b5091505080806020019051810190620041189190620054e2565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e0000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200424a57600080fd5b505af11580156200425f573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b158015620042d057600080fd5b505af1158015620021d6573d6000803e3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200439f9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620043d8919062005506565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004411919062005568565b60405180910390a16200442362004634565b5050565b80821462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620044b59060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620044ee9190620055a6565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620044119190620055f2565b80821462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045b59060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620045ee9190620055a6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620044119190620055f2565b46620044238282620047b7565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620047895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200470692916020016200547a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200474091620054c4565b6000604051808303816000865af19150503d80600081146200477f576040519150601f19603f3d011682016040523d82523d6000602084013e62004784565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562600173ffffffffffffffffffffffffffffffffffffffff851610806200480d5750600973ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b81526004016200482e911515815260200190565b60006040518083038186803b1580156200484757600080fd5b505afa1580156200485c573d6000803e3d6000fd5b5050505080600a1480620048715750806101a4145b156200494a57737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56273420000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff85161080620048f3575073420000000000000000000000000000000000080073ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004914911515815260200190565b60006040518083038186803b1580156200492d57600080fd5b505afa15801562004942573d6000803e3d6000fd5b505050505050565b8061a4b114806200495d57508062066eed145b15620049f257737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562606473ffffffffffffffffffffffffffffffffffffffff85161080620048f357506040517fffffffff0000000000000000000000000000000000000000000000000000000060e083901b168152606873ffffffffffffffffffffffffffffffffffffffff861611600482015260240162004914565b8061a86a148062004a0457508061a869145b156200442357737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56273010000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8516108062004a8657507301000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004aa7911515815260200190565b60006040518083038186803b15801562004ac057600080fd5b505afa15801562004ad5573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505073020000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8516108062004b5757507302000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004b78911515815260200190565b60006040518083038186803b15801562004b9157600080fd5b505afa15801562004ba6573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505073030000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff85161080620048f357506040517fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1681527303000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff861611600482015260240162004914565b610bbb806200563183390190565b610d3d80620061ec83390190565b61187f8062006f2983390190565b6000806000806060858703121562004ca257600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111562004cc957600080fd5b818701915087601f83011262004cde57600080fd5b81358181111562004cee57600080fd5b88602082850101111562004d0157600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811462004d3357600080fd5b50565b6000806000806080858703121562004d4d57600080fd5b84359350602085013562004d618162004d10565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b8181101562004dc657835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162004d92565b50909695505050505050565b60008060006060848603121562004de857600080fd5b83359250602084013562004dfc8162004d10565b929592945050506040919091013590565b60008060006060848603121562004e2357600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004f25578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b8083101562004f0f5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004ecb565b50978a0197955050509187019160010162004e62565b50919998505050505050505050565b60005b8381101562004f5157818101518382015260200162004f37565b8381111562004f61576000848401525b50505050565b6000815180845262004f8181602086016020860162004f34565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200502a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200501785835162004f67565b9450928501929085019060010162004fda565b5092979650505050505050565b6000602082840312156200504a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811062004d33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101620050c78462005080565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b620050f78562005080565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b6000602082840312156200516557600080fd5b8151620051728162004d10565b9392505050565b60208101620051888362005080565b91905290565b60208152600062005172602083018462004f67565b600060208284031215620051b657600080fd5b8151600381106200517257600080fd5b80516200411c8162004d10565b60008060008060808587031215620051ea57600080fd5b8451620051f78162004d10565b60208601516040870151606090970151919890975090945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156200525a576200525a62005215565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215620052a257600080fd5b825167ffffffffffffffff80821115620052bb57600080fd5b818501915085601f830112620052d057600080fd5b815181811115620052e557620052e56200525f565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156200532b576200532b6200525f565b6040529182528482019250838101850191888311156200534a57600080fd5b938501935b8285101562005373576200536385620051c6565b845293850193928501926200534f565b98975050505050505050565b600082620053b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200541e576200541e62005215565b5060010190565b600181811c908216806200543a57607f821691505b60208210810362005474577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620054b681600485016020870162004f34565b919091016004019392505050565b60008251620054d881846020870162004f34565b9190910192915050565b600060208284031215620054f557600080fd5b815180151581146200517257600080fd5b6040815260006200554460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200554460408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b604081526000620055e460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620055e460408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe608060405234801561001057600080fd5b50610b9b806100206000396000f3fe6080604052600436106100eb5760003560e01c8063609d333411610084578063bbdc02db11610056578063bbdc02db146102ef578063bcef3b5514610303578063cf09e0d014610321578063f4e0c4ed1461033d57005b8063609d33341461028e5780638129fc1c146102a3578063972aff2e146102af578063ba3fcb94146102cf57005b80633fc71fc4116100bd5780633fc71fc4146101a35780634637f07b146101c357806348d3fed3146101d857806354fd4d501461023f57005b806313c4e957146100f4578063200d2ed2146101145780632810e1d61461013e578063363cc4271461015357005b366100f257005b005b34801561010057600080fd5b506100f261010f3660046106cf565b61035f565b34801561012057600080fd5b5060005460ff165b6040516101359190610807565b60405180910390f35b34801561014a57600080fd5b5061012861036f565b34801561015f57600080fd5b50600054610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b3480156101af57600080fd5b506100f26101be36600461081a565b600155565b3480156101cf57600080fd5b506100f2610407565b3480156101e457600080fd5b506100f26101f3366004610833565b6000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b34801561024b57600080fd5b5060408051808201909152600581527f302e312e3000000000000000000000000000000000000000000000000000000060208201525b60405161013591906108db565b34801561029a57600080fd5b506102816104bc565b3480156100f257600080fd5b3480156102bb57600080fd5b506100f26102ca36600461081a565b600355565b3480156102db57600080fd5b506100f26102ea3660046108ee565b61054e565b3480156102fb57600080fd5b506002610128565b34801561030f57600080fd5b50600154604051908152602001610135565b34801561032d57600080fd5b5060405160008152602001610135565b34801561034957600080fd5b50610352610593565b604051610135919061090f565b600261036b8282610a0b565b5050565b600080546003546040517fdff3dbb2000000000000000000000000000000000000000000000000000000008152600481019190915261010090910473ffffffffffffffffffffffffffffffffffffffff169063dff3dbb290602401600060405180830381600087803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505060005460ff169392505050565b604080518082019091526001815260026020820181905261042a91600491610601565b506000546003546040517f7c523a6800000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff1691637c523a6891610488916004908101610b25565b600060405180830381600087803b1580156104a257600080fd5b505af11580156104b6573d6000803e3d6000fd5b50505050565b6060600280546104cb90610969565b80601f01602080910402602001604051908101604052809291908181526020018280546104f790610969565b80156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b5050505050905090565b600080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561058b5761058b61079e565b021790555050565b6060600480548060200260200160405190810160405280929190818152602001828054801561054457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105cd575050505050905090565b82805482825590600052602060002090810192821561067b579160200282015b8281111561067b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190610621565b5061068792915061068b565b5090565b5b80821115610687576000815560010161068c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156106e157600080fd5b813567ffffffffffffffff808211156106f957600080fd5b818401915084601f83011261070d57600080fd5b81358181111561071f5761071f6106a0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610765576107656106a0565b8160405282815287602084870101111561077e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610804577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b60208101610814836107cd565b91905290565b60006020828403121561082c57600080fd5b5035919050565b60006020828403121561084557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461086957600080fd5b9392505050565b6000815180845260005b818110156108965760208185018101518683018201520161087a565b818111156108a8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108696020830184610870565b60006020828403121561090057600080fd5b81356003811061086957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561095d57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161092b565b50909695505050505050565b600181811c9082168061097d57607f821691505b6020821081036109b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a256106a0565b610a3981610a338454610969565b846109bc565b602080601f831160018114610a8c5760008415610a565750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610a02565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610ad957888601518255948401946001909101908401610aba565b5085821015610b1557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b81811015610b8157845473ffffffffffffffffffffffffffffffffffffffff1683526001948501949284019201610b4f565b509097965050505050505056fea164736f6c634300080f000a608060405234801561001057600080fd5b50604051610d3d380380610d3d83398101604081905261002f91610171565b61003833610047565b61004181610097565b506101a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f610115565b6001600160a01b0381166101095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61011281610047565b50565b6000546001600160a01b0316331461016f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610100565b565b60006020828403121561018357600080fd5b81516001600160a01b038116811461019a57600080fd5b9392505050565b610b8d806101b06000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610194578063c49d5271146101b2578063dfa162d3146101c5578063f2fde38b146101fb57600080fd5b806326daafbe1461008d5780633142e55e1461013f57806345583b7a14610177578063715018a61461018c575b600080fd5b61012c61009b3660046108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61015261014d3660046109d7565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610136565b61018a610185366004610a80565b6104bf565b005b61018a61053f565b60005473ffffffffffffffffffffffffffffffffffffffff16610152565b6101526101c03660046109d7565b610553565b6101526101d3366004610ab7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018a610209366004610ad9565b6105ca565b6000806001600087600281111561022757610227610af6565b600281111561023857610238610af6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff169050806102a357856040517f44265d6f00000000000000000000000000000000000000000000000000000000815260040161029a9190610b25565b60405180910390fd5b60008585856040516020016102ba93929190610b66565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905061030a73ffffffffffffffffffffffffffffffffffffffff831682610681565b92508273ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035457600080fd5b505af1158015610368573d6000803e3d6000fd5b5050505060006103af888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061009b92505050565b60008181526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610411576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161029a565b600081815260026020819052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87161790558790899081111561047357610473610af6565b60405173ffffffffffffffffffffffffffffffffffffffff8716907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec90600090a4505050949350505050565b6104c76107b5565b80600160008460028111156104de576104de610af6565b60028111156104ef576104ef610af6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6105476107b5565b6105516000610836565b565b60006002600061059a878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061009b92505050565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b6105d26107b5565b73ffffffffffffffffffffffffffffffffffffffff8116610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161029a565b61067e81610836565b50565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b6020841061073957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930192602091820191016106fc565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f09450846107a6577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161029a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8035600381106108ba57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561090357600080fd5b61090c846108ab565b925060208401359150604084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b813581811115610956576109566108bf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561099c5761099c6108bf565b816040528281528960208487010111156109b557600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080606085870312156109ed57600080fd5b6109f6856108ab565b935060208501359250604085013567ffffffffffffffff80821115610a1a57600080fd5b818701915087601f830112610a2e57600080fd5b813581811115610a3d57600080fd5b886020828501011115610a4f57600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461067e57600080fd5b60008060408385031215610a9357600080fd5b610a9c836108ab565b91506020830135610aac81610a5e565b809150509250929050565b600060208284031215610ac957600080fd5b610ad2826108ab565b9392505050565b600060208284031215610aeb57600080fd5b8135610ad281610a5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310610b60577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b83815281836020830137600091016020019081529291505056fea164736f6c634300080f000a60a060405234801561001057600080fd5b5060405161187f38038061187f83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516117e761009860003960008181609e015281816103290152610efd01526117e76000f3fe6080604052600436106100655760003560e01c8063a95bd9a911610043578063a95bd9a91461010a578063b9ad7ea91461011d578063dff3dbb2146101ad57600080fd5b80637c523a681461006a57806382ff53a11461008c57806396afb365146100ea575b600080fd5b34801561007657600080fd5b5061008a610085366004611392565b6101cd565b005b34801561009857600080fd5b506100c07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100f657600080fd5b5061008a610105366004611411565b61080e565b61008a61011836600461144f565b610ab8565b34801561012957600080fd5b50610176610138366004611411565b600060208190529081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff90921692909184565b6040805173ffffffffffffffffffffffffffffffffffffffff909516855260208501939093529183015260608201526080016100e1565b3480156101b957600080fd5b5061008a6101c8366004611411565b610da6565b600083815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168082526001830154938201939093526002820154938101939093526003015460608301526102b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b4281602001511015610320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e00000000000060448201526064016102a9565b600033905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c49d527160028473ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190611487565b8573ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261046591908101906114ff565b6040518463ffffffff1660e01b8152600401610483939291906115f9565b602060405180830381865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c4919061168f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b60018173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc91906116b3565b60028111156105ed576105ed6115ca565b14610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426f6e644d616e616765723a2047616d6520696e636f6d706c6574652e00000060448201526064016102a9565b60008681526020818152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810184905560030192909255845160608087015184518b815273ffffffffffffffffffffffffffffffffffffffff90931693830193909352338285015281019190915290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399181900360800190a160608301518490600090610716908390611703565b905060005b8281101561080357600061076189898481811061073a5761073a61173e565b905060200201602081019061074f919061176d565b855a61075b9190611703565b8561137c565b9050806107f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b50806107fb8161178a565b91505061071b565b505050505050505050565b600081815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff1680825260018301549382019390935260028201549381019390935260030154606083015233146108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20556e617574686f72697a656420636c61696d6160448201527f6e742e000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b4281602001511115610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f426f6e644d616e616765723a20426f6e642069736e277420636c61696d61626c60448201527f65207965742e000000000000000000000000000000000000000000000000000060648201526084016102a9565b60008281526020818152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101849055600281018490556003019290925560608381015183518681523393810193909352928201929092527fa9b8d1cb23fc6bfcae1f7ed8ec77868451af44dde191688baa93bb00b7ee4917910160405180910390a16000610a24335a846060015161137c565b905080610ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b505050565b60008381526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1615610b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20426f6e64496420616c726561647920706f737460448201527f65642e000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b73ffffffffffffffffffffffffffffffffffffffff8216610c0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f426f6e644d616e616765723a204f776e65722063616e6e6f742062652074686560448201527f207a65726f20616464726573732e00000000000000000000000000000000000060648201526084016102a9565b60003411610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f426f6e644d616e616765723a2056616c7565206d757374206265206e6f6e2d7a60448201527f65726f2e0000000000000000000000000000000000000000000000000000000060648201526084016102a9565b6000610ca842836117c2565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff808716825260208083018581528385018a8152346060860181815260008d815294859052938790209551865495167fffffffffffffffffffffffff0000000000000000000000000000000000000000909516949094178555905160018501555160028401555160039092019190915590519192507fb3f7ea9789b653f1f16bea488689a6e60a64300aaf9a66ca828aeff75685fb5991610d989187918791869193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b60405180910390a150505050565b600081815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff16808252600183015493820193909352600282015493810193909352600301546060830152610e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e00000000000000000000000000000000000000000000000000000060648201526084016102a9565b4281602001511015610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e00000000000060448201526064016102a9565b600033905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c49d527160028473ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190611487565b8573ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261103991908101906114ff565b6040518463ffffffff1660e01b8152600401611057939291906115f9565b602060405180830381865afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611098919061168f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b60018173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b091906116b3565b60028111156111c1576111c16115ca565b14611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426f6e644d616e616765723a2047616d6520696e636f6d706c6574652e00000060448201526064016102a9565b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810184905560028101849055600301929092558451606080870151845189815273ffffffffffffffffffffffffffffffffffffffff90931693830193909352338285015281019190915290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399181900360800190a160006112e6335a866060015161137c565b905080611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b5050505050565b600080600080600080868989f195945050505050565b6000806000604084860312156113a757600080fd5b83359250602084013567ffffffffffffffff808211156113c657600080fd5b818601915086601f8301126113da57600080fd5b8135818111156113e957600080fd5b8760208260051b85010111156113fe57600080fd5b6020830194508093505050509250925092565b60006020828403121561142357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461144c57600080fd5b50565b60008060006060848603121561146457600080fd5b8335925060208401356114768161142a565b929592945050506040919091013590565b60006020828403121561149957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156114ea5781810151838201526020016114d2565b838111156114f9576000848401525b50505050565b60006020828403121561151157600080fd5b815167ffffffffffffffff8082111561152957600080fd5b818401915084601f83011261153d57600080fd5b81518181111561154f5761154f6114a0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611595576115956114a0565b816040528281528760208487010111156115ae57600080fd5b6115bf8360208301602088016114cf565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038510611632577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b84825283602083015260606040830152825180606084015261165b8160808501602087016114cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b6000602082840312156116a157600080fd5b81516116ac8161142a565b9392505050565b6000602082840312156116c557600080fd5b8151600381106116ac57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611739577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561177f57600080fd5b81356116ac8161142a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117bb576117bb6116d4565b5060010190565b600082198211156117d5576117d56116d4565b50019056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001945760003560e01c8063750b6ebe11620000e9578063aa4aec721162000097578063e20c9f71116200006e578063e20c9f71146200030b578063ee8b95361462000315578063fa7626d4146200032c57600080fd5b8063aa4aec7214620002cf578063b5508aa914620002e6578063ba414fa614620002f057600080fd5b8063916a17c611620000cc578063916a17c6146200029757806399ebf22a14620002a15780639dc79f2a14620002b857600080fd5b8063750b6ebe146200026757806385226c81146200027e57600080fd5b80633dbbb96d11620001475780633f7286f4116200012a5780633f7286f4146200022d57806346d37c4e146200023757806366d9a9a0146200024e57600080fd5b80633dbbb96d146200020c5780633e5e3c23146200022357600080fd5b80631515ef6d116200017c5780631515ef6d14620001bc5780631ed7831c14620001d35780632d0f60ca14620001f557600080fd5b8062fe100e14620001995780630a9254e414620001b2575b600080fd5b620001b0620001aa36600462004c8b565b6200033a565b005b620001b062000d05565b620001b0620001cd36600462004d36565b62000e23565b620001dd62001498565b604051620001ec919062004d76565b60405180910390f35b620001b06200020636600462004dd2565b62001509565b620001b06200021d36600462004e0d565b6200178d565b620001dd62001952565b620001dd620019c1565b620001b06200024836600462004d36565b62001a30565b62000258620021dd565b604051620001ec919062004e3a565b620001b06200027836600462004c8b565b620022f2565b6200028862002d6f565b604051620001ec919062004fb3565b6200025862002e49565b620001b0620002b236600462004d36565b62002f55565b620001b0620002c936600462004d36565b62003345565b620001b0620002e036600462004d36565b62003931565b6200028862003edd565b620002fa62003fb7565b6040519015158152602001620001ec565b620001dd62004121565b620001b06200032636600462005037565b62004190565b600054620002fa9060ff1681565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815242840184106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620003a257600080fd5b505afa158015620003b7573d6000803e3d6000fd5b50506040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200042f57600080fd5b505af115801562000444573d6000803e3d6000fd5b5050601c546040517fa95bd9a900000000000000000000000000000000000000000000000000000000815260048101889052620ba5ed60248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116925063a95bd9a99150670de0b6b3a7640000906064016000604051808303818588803b158015620004ce57600080fd5b505af1158015620004e3573d6000803e3d6000fd5b5050505050600080600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060405190965093945085936200053a9350915062004c619050565b604051809103906000f08015801562000557573d6000803e3d6000fd5b50601b546040517f45583b7a00000000000000000000000000000000000000000000000000000000815291925060029173ffffffffffffffffffffffffffffffffffffffff909116906345583b7a90620005b89084908690600401620050b8565b600060405180830381600087803b158015620005d357600080fd5b505af1158015620005e8573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260006004820181905260016024830181905260448301526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200066857600080fd5b505af11580156200067d573d6000803e3d6000fd5b505050508381600281111562000697576200069762005051565b6040516000907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec908290a4601b546040517f3142e55e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633142e55e906200072090849088908c908c90600401620050ec565b6020604051808303816000875af115801562000740573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000766919062005152565b601b546040517fc49d5271000000000000000000000000000000000000000000000000000000008152919650620008179173ffffffffffffffffffffffffffffffffffffffff9091169063c49d527190620007cc90859089908d908d90600401620050ec565b602060405180830381865afa158015620007ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000810919062005152565b86620042e5565b5050601c546040517f48d3fed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015284918216906348d3fed390602401600060405180830381600087803b1580156200088857600080fd5b505af11580156200089d573d6000803e3d6000fd5b50506040517f3fc71fc40000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff84169250633fc71fc49150602401600060405180830381600087803b1580156200090a57600080fd5b505af11580156200091f573d6000803e3d6000fd5b50506040517fba3fcb9400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416925063ba3fcb949150620009789060019060040162005179565b600060405180830381600087803b1580156200099357600080fd5b505af1158015620009a8573d6000803e3d6000fd5b50506040517f972aff2e000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff8416925063972aff2e9150602401600060405180830381600087803b15801562000a1557600080fd5b505af115801562000a2a573d6000803e3d6000fd5b50506040517f13c4e95700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506313c4e957915062000a829085906004016200518e565b600060405180830381600087803b15801562000a9d57600080fd5b505af115801562000ab2573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562000b3257600080fd5b505af115801562000b47573d6000803e3d6000fd5b5050604080518b8152620ba5ed602082015273ffffffffffffffffffffffffffffffffffffffff851681830152670de0b6b3a7640000606082015290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399350908190036080019150a18073ffffffffffffffffffffffffffffffffffffffff16632810e1d66040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000bff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c259190620051a3565b5062000c518173ffffffffffffffffffffffffffffffffffffffff1631670de0b6b3a764000062004427565b601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018a905260009173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa15801562000cc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce89190620051d3565b505050905062000cfa816000620042e5565b505050505050505050565b3060405162000d149062004c6f565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000d4e573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905560405162000da19062004c7d565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000ddb573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562000e9f57600080fd5b505afa15801562000eb4573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000f3d57600080fd5b505afa15801562000f52573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562000fd357600080fd5b505afa15801562000fe8573d6000803e3d6000fd5b50506040517f4c63e562000000000000000000000000000000000000000000000000000000008152734e59b44847b379578588920ca78fbf26c0b4956c73ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200107d57600080fd5b505afa15801562001092573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620010fc57600080fd5b505afa15801562001111573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200117d57600080fd5b505afa15801562001192573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200120357600080fd5b505af115801562001218573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200129857600080fd5b505af1158015620012ad573d6000803e3d6000fd5b5050505060008242620012c1919062005244565b6040805187815273ffffffffffffffffffffffffffffffffffffffff87166020820152908101829052606081018490529091507fb3f7ea9789b653f1f16bea488689a6e60a64300aaf9a66ca828aeff75685fb599060800160405180910390a1601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018690529091169063a95bd9a99084906064016000604051808303818588803b1580156200139e57600080fd5b505af1158015620013b3573d6000803e3d6000fd5b5050601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018a905260009450849350839250829173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa1580156200142f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014559190620051d3565b9350935093509350620014698489620042e5565b62001480836200147a894262005244565b62004427565b6200148c828a62004527565b62000cfa818762004427565b6060600d805480602002602001604051908101604052809291908181526020018280548015620014ff57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575b5050505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200158557600080fd5b505afa1580156200159a573d6000803e3d6000fd5b50506040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063c88a5e6d90604401600060405180830381600087803b1580156200160e57600080fd5b505af115801562001623573d6000803e3d6000fd5b50506040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f426f6e644d616e616765723a2056616c7565206d757374206265206e6f6e2d7a60448201527f65726f2e000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015b600060405180830381600087803b158015620016e157600080fd5b505af1158015620016f6573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064015b6000604051808303818588803b1580156200177857600080fd5b505af115801562000cfa573d6000803e3d6000fd5b6040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101829052600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620017fd57600080fd5b505af115801562001812573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f426f6e644d616e616765723a204f776e65722063616e6e6f742062652074686560448201527f207a65726f20616464726573732e0000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620018d057600080fd5b505af1158015620018e5573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff858116602483015260448201889052909116925063a95bd9a9915084906064016200175e565b6060600f805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562001aac57600080fd5b505afa15801562001ac1573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86163b156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001b4157600080fd5b505afa15801562001b56573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001bc057600080fd5b505afa15801562001bd5573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562001c4157600080fd5b505afa15801562001c56573d6000803e3d6000fd5b5050505062001c658362004627565b6040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562001cd257600080fd5b505af115801562001ce7573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b5050601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018990526000945073ffffffffffffffffffffffffffffffffffffffff909116925063b9ad7ea99150602401608060405180830381865afa15801562001df5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1b9190620051d3565b50509150504281111562002018576040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001ea557600080fd5b505af115801562001eba573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f426f6e644d616e616765723a20426f6e642069736e277420636c61696d61626c60448201527f65207965742e00000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562001f7857600080fd5b505af115801562001f8d573d6000803e3d6000fd5b5050601c546040517f96afb3650000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff90911692506396afb3659150602401600060405180830381600087803b15801562001ffe57600080fd5b505af115801562002013573d6000803e3d6000fd5b505050505b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200207f57600080fd5b505af115801562002094573d6000803e3d6000fd5b50506040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200211457600080fd5b505af115801562002129573d6000803e3d6000fd5b5050601c546040517f96afb3650000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff90911692506396afb3659150602401600060405180830381600087803b1580156200219a57600080fd5b505af1158015620021af573d6000803e3d6000fd5b50505050620021d68473ffffffffffffffffffffffffffffffffffffffff16318362004427565b5050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620022e957600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015620022d057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200227c5790505b5050505050815250508152602001906001019062002201565b50505050905090565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815242840184106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200235a57600080fd5b505afa1580156200236f573d6000803e3d6000fd5b50506040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015620023e757600080fd5b505af1158015620023fc573d6000803e3d6000fd5b5050601c546040517fa95bd9a900000000000000000000000000000000000000000000000000000000815260048101889052620ba5ed60248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116925063a95bd9a99150670de0b6b3a7640000906064016000604051808303818588803b1580156200248657600080fd5b505af11580156200249b573d6000803e3d6000fd5b5050505050600080600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040519096509394508593620024f29350915062004c619050565b604051809103906000f0801580156200250f573d6000803e3d6000fd5b50601b546040517f45583b7a00000000000000000000000000000000000000000000000000000000815291925060029173ffffffffffffffffffffffffffffffffffffffff909116906345583b7a90620025709084908690600401620050b8565b600060405180830381600087803b1580156200258b57600080fd5b505af1158015620025a0573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260006004820181905260016024830181905260448301526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200262057600080fd5b505af115801562002635573d6000803e3d6000fd5b50505050838160028111156200264f576200264f62005051565b6040516000907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec908290a4601b546040517f3142e55e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633142e55e90620026d890849088908c908c90600401620050ec565b6020604051808303816000875af1158015620026f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200271e919062005152565b601b546040517fc49d5271000000000000000000000000000000000000000000000000000000008152919650620027849173ffffffffffffffffffffffffffffffffffffffff9091169063c49d527190620007cc90859089908d908d90600401620050ec565b5050601c546040517f48d3fed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015284918216906348d3fed390602401600060405180830381600087803b158015620027f557600080fd5b505af11580156200280a573d6000803e3d6000fd5b50506040517f3fc71fc40000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff84169250633fc71fc49150602401600060405180830381600087803b1580156200287757600080fd5b505af11580156200288c573d6000803e3d6000fd5b50506040517fba3fcb9400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416925063ba3fcb949150620028e59060019060040162005179565b600060405180830381600087803b1580156200290057600080fd5b505af115801562002915573d6000803e3d6000fd5b50506040517f972aff2e000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff8416925063972aff2e9150602401600060405180830381600087803b1580156200298257600080fd5b505af115801562002997573d6000803e3d6000fd5b50506040517f13c4e95700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506313c4e9579150620029ef9085906004016200518e565b600060405180830381600087803b15801562002a0a57600080fd5b505af115801562002a1f573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b15801562002a9f57600080fd5b505af115801562002ab4573d6000803e3d6000fd5b5050604080518b8152620ba5ed602082015273ffffffffffffffffffffffffffffffffffffffff851681830152670de0b6b3a7640000606082015290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399350908190036080019150a18073ffffffffffffffffffffffffffffffffffffffff16634637f07b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b6757600080fd5b505af115801562002b7c573d6000803e3d6000fd5b5050505062002ba48173ffffffffffffffffffffffffffffffffffffffff1631600062004427565b60008173ffffffffffffffffffffffffffffffffffffffff1663f4e0c4ed6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262002c3a91908101906200528e565b905060008151670de0b6b3a764000062002c5591906200537f565b905060005b825181101562002cb85762002ca383828151811062002c7d5762002c7d620053bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16318362004427565b8062002caf81620053ea565b91505062002c5a565b50601c546040517fb9ad7ea9000000000000000000000000000000000000000000000000000000008152600481018c905260009173ffffffffffffffffffffffffffffffffffffffff169063b9ad7ea990602401608060405180830381865afa15801562002d2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d509190620051d3565b505050905062002d62816000620042e5565b5050505050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620022e957838290600052602060002001805462002db59062005425565b80601f016020809104026020016040519081016040528092919081815260200182805462002de39062005425565b801562002e345780601f1062002e085761010080835404028352916020019162002e34565b820191906000526020600020905b81548152906001019060200180831162002e1657829003601f168201915b50505050508152602001906001019062002d93565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620022e957600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562002f3c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002ee85790505b5050505050815250508152602001906001019062002e6d565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801562002fd157600080fd5b505afa15801562002fe6573d6000803e3d6000fd5b5050505060028162002ff991906200537f565b6040517f4c63e5620000000000000000000000000000000000000000000000000000000081528115156004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156200306257600080fd5b505afa15801562003077573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620030e357600080fd5b505afa158015620030f8573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200316957600080fd5b505af11580156200317e573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b158015620031ff57600080fd5b505af115801562003214573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d935063c88a5e6d92506044019050600060405180830381600087803b1580156200328757600080fd5b505af11580156200329c573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20426f6e64496420616c726561647920706f737460448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401620016c6565b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620033c157600080fd5b505afa158015620033d6573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200345f57600080fd5b505afa15801562003474573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620034f557600080fd5b505afa1580156200350a573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b1580156200357457600080fd5b505afa15801562003589573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b158015620035f557600080fd5b505afa1580156200360a573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156200367b57600080fd5b505af115801562003690573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b1580156200371157600080fd5b505af115801562003726573d6000803e3d6000fd5b505050505060006040516200373b9062004c61565b604051809103906000f08015801562003758573d6000803e3d6000fd5b506040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620037d857600080fd5b505af1158015620037ed573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e0000000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b158015620038ab57600080fd5b505af1158015620038c0573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b1580156200177857600080fd5b6040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015620039ad57600080fd5b505afa158015620039c2573d6000803e3d6000fd5b5050601c546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003a4b57600080fd5b505afa15801562003a60573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081523073ffffffffffffffffffffffffffffffffffffffff871614156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003ae157600080fd5b505afa15801562003af6573d6000803e3d6000fd5b50506040517f4c63e5620000000000000000000000000000000000000000000000000000000081528315156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003b6057600080fd5b505afa15801562003b75573d6000803e3d6000fd5b50506040517f4c63e56200000000000000000000000000000000000000000000000000000000815242850160010185106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e562915060240160006040518083038186803b15801562003be457600080fd5b505afa15801562003bf9573d6000803e3d6000fd5b50506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562003c6a57600080fd5b505af115801562003c7f573d6000803e3d6000fd5b5050601c546040517fa95bd9a90000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff878116602483015260448201879052909116925063a95bd9a9915083906064016000604051808303818588803b15801562003d0057600080fd5b505af115801562003d15573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d935063e5d6bf02925062003d4491508590504262005244565b62003d5190600162005244565b6040518263ffffffff1660e01b815260040162003d7091815260200190565b600060405180830381600087803b15801562003d8b57600080fd5b505af115801562003da0573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e0000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b15801562003e3857600080fd5b505af115801562003e4d573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b15801562003ebe57600080fd5b505af115801562003ed3573d6000803e3d6000fd5b5050505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620022e957838290600052602060002001805462003f239062005425565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062005425565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b50505050508152602001906001019062003f01565b60008054610100900460ff161562003fd85750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200411c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162004080917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200547a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620040ba91620054c4565b6000604051808303816000865af19150503d8060008114620040f9576040519150601f19603f3d011682016040523d82523d6000602084013e620040fe565b606091505b5091505080806020019051810190620041189190620054e2565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620014ff5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620014d3575050505050905090565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e0000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200424a57600080fd5b505af11580156200425f573d6000803e3d6000fd5b5050601c546040517fdff3dbb20000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116925063dff3dbb29150602401600060405180830381600087803b158015620042d057600080fd5b505af1158015620021d6573d6000803e3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200439f9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620043d8919062005506565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004411919062005568565b60405180910390a16200442362004634565b5050565b80821462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620044b59060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620044ee9190620055a6565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620044119190620055f2565b80821462004423577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045b59060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f657333325d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9981604051620045ee9190620055a6565b60405180910390a17fafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f9982604051620044119190620055f2565b46620044238282620047b7565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620047895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200470692916020016200547a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200474091620054c4565b6000604051808303816000865af19150503d80600081146200477f576040519150601f19603f3d011682016040523d82523d6000602084013e62004784565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562600173ffffffffffffffffffffffffffffffffffffffff851610806200480d5750600973ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b81526004016200482e911515815260200190565b60006040518083038186803b1580156200484757600080fd5b505afa1580156200485c573d6000803e3d6000fd5b5050505080600a1480620048715750806101a4145b156200494a57737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56273420000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff85161080620048f3575073420000000000000000000000000000000000080073ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004914911515815260200190565b60006040518083038186803b1580156200492d57600080fd5b505afa15801562004942573d6000803e3d6000fd5b505050505050565b8061a4b114806200495d57508062066eed145b15620049f257737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562606473ffffffffffffffffffffffffffffffffffffffff85161080620048f357506040517fffffffff0000000000000000000000000000000000000000000000000000000060e083901b168152606873ffffffffffffffffffffffffffffffffffffffff861611600482015260240162004914565b8061a86a148062004a0457508061a869145b156200442357737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56273010000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8516108062004a8657507301000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004aa7911515815260200190565b60006040518083038186803b15801562004ac057600080fd5b505afa15801562004ad5573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505073020000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8516108062004b5757507302000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff8516115b6040518263ffffffff1660e01b815260040162004b78911515815260200190565b60006040518083038186803b15801562004b9157600080fd5b505afa15801562004ba6573d6000803e3d6000fd5b50737109709ecfa91a80626ff3989d68f67f5b1dd12d9250634c63e56291505073030000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff85161080620048f357506040517fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1681527303000000000000000000000000000000000000ff73ffffffffffffffffffffffffffffffffffffffff861611600482015260240162004914565b610bbb806200563183390190565b610d3d80620061ec83390190565b61187f8062006f2983390190565b6000806000806060858703121562004ca257600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111562004cc957600080fd5b818701915087601f83011262004cde57600080fd5b81358181111562004cee57600080fd5b88602082850101111562004d0157600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811462004d3357600080fd5b50565b6000806000806080858703121562004d4d57600080fd5b84359350602085013562004d618162004d10565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b8181101562004dc657835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162004d92565b50909695505050505050565b60008060006060848603121562004de857600080fd5b83359250602084013562004dfc8162004d10565b929592945050506040919091013590565b60008060006060848603121562004e2357600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004f25578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b8083101562004f0f5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004ecb565b50978a0197955050509187019160010162004e62565b50919998505050505050505050565b60005b8381101562004f5157818101518382015260200162004f37565b8381111562004f61576000848401525b50505050565b6000815180845262004f8181602086016020860162004f34565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200502a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200501785835162004f67565b9450928501929085019060010162004fda565b5092979650505050505050565b6000602082840312156200504a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811062004d33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101620050c78462005080565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b620050f78562005080565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b6000602082840312156200516557600080fd5b8151620051728162004d10565b9392505050565b60208101620051888362005080565b91905290565b60208152600062005172602083018462004f67565b600060208284031215620051b657600080fd5b8151600381106200517257600080fd5b80516200411c8162004d10565b60008060008060808587031215620051ea57600080fd5b8451620051f78162004d10565b60208601516040870151606090970151919890975090945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156200525a576200525a62005215565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020808385031215620052a257600080fd5b825167ffffffffffffffff80821115620052bb57600080fd5b818501915085601f830112620052d057600080fd5b815181811115620052e557620052e56200525f565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156200532b576200532b6200525f565b6040529182528482019250838101850191888311156200534a57600080fd5b938501935b8285101562005373576200536385620051c6565b845293850193928501926200534f565b98975050505050505050565b600082620053b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200541e576200541e62005215565b5060010190565b600181811c908216806200543a57607f821691505b60208210810362005474577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620054b681600485016020870162004f34565b919091016004019392505050565b60008251620054d881846020870162004f34565b9190910192915050565b600060208284031215620054f557600080fd5b815180151581146200517257600080fd5b6040815260006200554460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200554460408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b604081526000620055e460408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620055e460408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe608060405234801561001057600080fd5b50610b9b806100206000396000f3fe6080604052600436106100eb5760003560e01c8063609d333411610084578063bbdc02db11610056578063bbdc02db146102ef578063bcef3b5514610303578063cf09e0d014610321578063f4e0c4ed1461033d57005b8063609d33341461028e5780638129fc1c146102a3578063972aff2e146102af578063ba3fcb94146102cf57005b80633fc71fc4116100bd5780633fc71fc4146101a35780634637f07b146101c357806348d3fed3146101d857806354fd4d501461023f57005b806313c4e957146100f4578063200d2ed2146101145780632810e1d61461013e578063363cc4271461015357005b366100f257005b005b34801561010057600080fd5b506100f261010f3660046106cf565b61035f565b34801561012057600080fd5b5060005460ff165b6040516101359190610807565b60405180910390f35b34801561014a57600080fd5b5061012861036f565b34801561015f57600080fd5b50600054610100900473ffffffffffffffffffffffffffffffffffffffff1660405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b3480156101af57600080fd5b506100f26101be36600461081a565b600155565b3480156101cf57600080fd5b506100f2610407565b3480156101e457600080fd5b506100f26101f3366004610833565b6000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b34801561024b57600080fd5b5060408051808201909152600581527f302e312e3000000000000000000000000000000000000000000000000000000060208201525b60405161013591906108db565b34801561029a57600080fd5b506102816104bc565b3480156100f257600080fd5b3480156102bb57600080fd5b506100f26102ca36600461081a565b600355565b3480156102db57600080fd5b506100f26102ea3660046108ee565b61054e565b3480156102fb57600080fd5b506002610128565b34801561030f57600080fd5b50600154604051908152602001610135565b34801561032d57600080fd5b5060405160008152602001610135565b34801561034957600080fd5b50610352610593565b604051610135919061090f565b600261036b8282610a0b565b5050565b600080546003546040517fdff3dbb2000000000000000000000000000000000000000000000000000000008152600481019190915261010090910473ffffffffffffffffffffffffffffffffffffffff169063dff3dbb290602401600060405180830381600087803b1580156103e457600080fd5b505af11580156103f8573d6000803e3d6000fd5b505060005460ff169392505050565b604080518082019091526001815260026020820181905261042a91600491610601565b506000546003546040517f7c523a6800000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff1691637c523a6891610488916004908101610b25565b600060405180830381600087803b1580156104a257600080fd5b505af11580156104b6573d6000803e3d6000fd5b50505050565b6060600280546104cb90610969565b80601f01602080910402602001604051908101604052809291908181526020018280546104f790610969565b80156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b5050505050905090565b600080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561058b5761058b61079e565b021790555050565b6060600480548060200260200160405190810160405280929190818152602001828054801561054457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105cd575050505050905090565b82805482825590600052602060002090810192821561067b579160200282015b8281111561067b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190610621565b5061068792915061068b565b5090565b5b80821115610687576000815560010161068c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156106e157600080fd5b813567ffffffffffffffff808211156106f957600080fd5b818401915084601f83011261070d57600080fd5b81358181111561071f5761071f6106a0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610765576107656106a0565b8160405282815287602084870101111561077e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110610804577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b60208101610814836107cd565b91905290565b60006020828403121561082c57600080fd5b5035919050565b60006020828403121561084557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461086957600080fd5b9392505050565b6000815180845260005b818110156108965760208185018101518683018201520161087a565b818111156108a8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108696020830184610870565b60006020828403121561090057600080fd5b81356003811061086957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561095d57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161092b565b50909695505050505050565b600181811c9082168061097d57607f821691505b6020821081036109b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610a0657600081815260208120601f850160051c810160208610156109e35750805b601f850160051c820191505b81811015610a02578281556001016109ef565b5050505b505050565b815167ffffffffffffffff811115610a2557610a256106a0565b610a3981610a338454610969565b846109bc565b602080601f831160018114610a8c5760008415610a565750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610a02565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610ad957888601518255948401946001909101908401610aba565b5085821015610b1557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b81811015610b8157845473ffffffffffffffffffffffffffffffffffffffff1683526001948501949284019201610b4f565b509097965050505050505056fea164736f6c634300080f000a608060405234801561001057600080fd5b50604051610d3d380380610d3d83398101604081905261002f91610171565b61003833610047565b61004181610097565b506101a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f610115565b6001600160a01b0381166101095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61011281610047565b50565b6000546001600160a01b0316331461016f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610100565b565b60006020828403121561018357600080fd5b81516001600160a01b038116811461019a57600080fd5b9392505050565b610b8d806101b06000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610194578063c49d5271146101b2578063dfa162d3146101c5578063f2fde38b146101fb57600080fd5b806326daafbe1461008d5780633142e55e1461013f57806345583b7a14610177578063715018a61461018c575b600080fd5b61012c61009b3660046108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61015261014d3660046109d7565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610136565b61018a610185366004610a80565b6104bf565b005b61018a61053f565b60005473ffffffffffffffffffffffffffffffffffffffff16610152565b6101526101c03660046109d7565b610553565b6101526101d3366004610ab7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018a610209366004610ad9565b6105ca565b6000806001600087600281111561022757610227610af6565b600281111561023857610238610af6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff169050806102a357856040517f44265d6f00000000000000000000000000000000000000000000000000000000815260040161029a9190610b25565b60405180910390fd5b60008585856040516020016102ba93929190610b66565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905061030a73ffffffffffffffffffffffffffffffffffffffff831682610681565b92508273ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035457600080fd5b505af1158015610368573d6000803e3d6000fd5b5050505060006103af888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061009b92505050565b60008181526002602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610411576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161029a565b600081815260026020819052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87161790558790899081111561047357610473610af6565b60405173ffffffffffffffffffffffffffffffffffffffff8716907ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec90600090a4505050949350505050565b6104c76107b5565b80600160008460028111156104de576104de610af6565b60028111156104ef576104ef610af6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6105476107b5565b6105516000610836565b565b60006002600061059a878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061009b92505050565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b6105d26107b5565b73ffffffffffffffffffffffffffffffffffffffff8116610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161029a565b61067e81610836565b50565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b6020841061073957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930192602091820191016106fc565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f09450846107a6577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161029a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8035600381106108ba57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561090357600080fd5b61090c846108ab565b925060208401359150604084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b813581811115610956576109566108bf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561099c5761099c6108bf565b816040528281528960208487010111156109b557600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080606085870312156109ed57600080fd5b6109f6856108ab565b935060208501359250604085013567ffffffffffffffff80821115610a1a57600080fd5b818701915087601f830112610a2e57600080fd5b813581811115610a3d57600080fd5b886020828501011115610a4f57600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461067e57600080fd5b60008060408385031215610a9357600080fd5b610a9c836108ab565b91506020830135610aac81610a5e565b809150509250929050565b600060208284031215610ac957600080fd5b610ad2826108ab565b9392505050565b600060208284031215610aeb57600080fd5b8135610ad281610a5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310610b60577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b83815281836020830137600091016020019081529291505056fea164736f6c634300080f000a60a060405234801561001057600080fd5b5060405161187f38038061187f83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516117e761009860003960008181609e015281816103290152610efd01526117e76000f3fe6080604052600436106100655760003560e01c8063a95bd9a911610043578063a95bd9a91461010a578063b9ad7ea91461011d578063dff3dbb2146101ad57600080fd5b80637c523a681461006a57806382ff53a11461008c57806396afb365146100ea575b600080fd5b34801561007657600080fd5b5061008a610085366004611392565b6101cd565b005b34801561009857600080fd5b506100c07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100f657600080fd5b5061008a610105366004611411565b61080e565b61008a61011836600461144f565b610ab8565b34801561012957600080fd5b50610176610138366004611411565b600060208190529081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff90921692909184565b6040805173ffffffffffffffffffffffffffffffffffffffff909516855260208501939093529183015260608201526080016100e1565b3480156101b957600080fd5b5061008a6101c8366004611411565b610da6565b600083815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168082526001830154938201939093526002820154938101939093526003015460608301526102b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b4281602001511015610320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e00000000000060448201526064016102a9565b600033905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c49d527160028473ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190611487565b8573ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261046591908101906114ff565b6040518463ffffffff1660e01b8152600401610483939291906115f9565b602060405180830381865afa1580156104a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c4919061168f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b60018173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc91906116b3565b60028111156105ed576105ed6115ca565b14610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426f6e644d616e616765723a2047616d6520696e636f6d706c6574652e00000060448201526064016102a9565b60008681526020818152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810184905560030192909255845160608087015184518b815273ffffffffffffffffffffffffffffffffffffffff90931693830193909352338285015281019190915290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399181900360800190a160608301518490600090610716908390611703565b905060005b8281101561080357600061076189898481811061073a5761073a61173e565b905060200201602081019061074f919061176d565b855a61075b9190611703565b8561137c565b9050806107f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b50806107fb8161178a565b91505061071b565b505050505050505050565b600081815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff1680825260018301549382019390935260028201549381019390935260030154606083015233146108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20556e617574686f72697a656420636c61696d6160448201527f6e742e000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b4281602001511115610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f426f6e644d616e616765723a20426f6e642069736e277420636c61696d61626c60448201527f65207965742e000000000000000000000000000000000000000000000000000060648201526084016102a9565b60008281526020818152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101849055600281018490556003019290925560608381015183518681523393810193909352928201929092527fa9b8d1cb23fc6bfcae1f7ed8ec77868451af44dde191688baa93bb00b7ee4917910160405180910390a16000610a24335a846060015161137c565b905080610ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b505050565b60008381526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1615610b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f426f6e644d616e616765723a20426f6e64496420616c726561647920706f737460448201527f65642e000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b73ffffffffffffffffffffffffffffffffffffffff8216610c0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f426f6e644d616e616765723a204f776e65722063616e6e6f742062652074686560448201527f207a65726f20616464726573732e00000000000000000000000000000000000060648201526084016102a9565b60003411610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f426f6e644d616e616765723a2056616c7565206d757374206265206e6f6e2d7a60448201527f65726f2e0000000000000000000000000000000000000000000000000000000060648201526084016102a9565b6000610ca842836117c2565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff808716825260208083018581528385018a8152346060860181815260008d815294859052938790209551865495167fffffffffffffffffffffffff0000000000000000000000000000000000000000909516949094178555905160018501555160028401555160039092019190915590519192507fb3f7ea9789b653f1f16bea488689a6e60a64300aaf9a66ca828aeff75685fb5991610d989187918791869193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b60405180910390a150505050565b600081815260208181526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff16808252600183015493820193909352600282015493810193909352600301546060830152610e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f426f6e644d616e616765723a2054686520626f6e6420646f6573206e6f74206560448201527f786973742e00000000000000000000000000000000000000000000000000000060648201526084016102a9565b4281602001511015610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426f6e644d616e616765723a20426f6e6420657870697265642e00000000000060448201526064016102a9565b600033905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c49d527160028473ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190611487565b8573ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261103991908101906114ff565b6040518463ffffffff1660e01b8152600401611057939291906115f9565b602060405180830381865afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611098919061168f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a20556e617574686f72697a6564207365697a757260448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b60018173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b091906116b3565b60028111156111c1576111c16115ca565b14611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426f6e644d616e616765723a2047616d6520696e636f6d706c6574652e00000060448201526064016102a9565b60008481526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810184905560028101849055600301929092558451606080870151845189815273ffffffffffffffffffffffffffffffffffffffff90931693830193909352338285015281019190915290517f322ab0b3db5c6bbcf092c78b528fe9456261a542abd1da447140e2f74bde7e399181900360800190a160006112e6335a866060015161137c565b905080611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426f6e644d616e616765723a204661696c656420746f2073656e64204574686560448201527f722e00000000000000000000000000000000000000000000000000000000000060648201526084016102a9565b5050505050565b600080600080600080868989f195945050505050565b6000806000604084860312156113a757600080fd5b83359250602084013567ffffffffffffffff808211156113c657600080fd5b818601915086601f8301126113da57600080fd5b8135818111156113e957600080fd5b8760208260051b85010111156113fe57600080fd5b6020830194508093505050509250925092565b60006020828403121561142357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461144c57600080fd5b50565b60008060006060848603121561146457600080fd5b8335925060208401356114768161142a565b929592945050506040919091013590565b60006020828403121561149957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156114ea5781810151838201526020016114d2565b838111156114f9576000848401525b50505050565b60006020828403121561151157600080fd5b815167ffffffffffffffff8082111561152957600080fd5b818401915084601f83011261153d57600080fd5b81518181111561154f5761154f6114a0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611595576115956114a0565b816040528281528760208487010111156115ae57600080fd5b6115bf8360208301602088016114cf565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038510611632577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b84825283602083015260606040830152825180606084015261165b8160808501602087016114cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b6000602082840312156116a157600080fd5b81516116ac8161142a565b9392505050565b6000602082840312156116c557600080fd5b8151600381106116ac57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611739577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561177f57600080fd5b81356116ac8161142a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117bb576117bb6116d4565b5060010190565b600082198211156117d5576117d56116d4565b50019056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
