{
  "_format": "hh-sol-artifact-1",
  "contractName": "MintManager_Test",
  "sourceName": "contracts/test/MintManager.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "version",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "opaqueData",
          "type": "bytes"
        }
      ],
      "name": "TransactionDeposited",
      "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": "_setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "test_constructor_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint_afterPeriodElapsed_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint_beforePeriodElapsed_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint_fromNotOwner_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint_fromOwner_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_mint_moreThanCap_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgrade_fromNotOwner_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgrade_fromOwner_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgrade_toZeroAddress_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60008054600160ff19909116811782556013805460806001600160a01b03199182168117909255601480546101009083168117909155601580546102009316831790559184905260a092909252606460c05260e09290925261c350909152602061014052600861016052674e4f4e5f5a45524f60c01b610180526060610120527fced1f90d33a6ca7cfbe479a1c2415c4287f559420415e3188c786e36414529be60165560405260226101a0818152906200a0df6101c039601790620000c6908262000180565b50348015620000d457600080fd5b506200024c565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200010657607f821691505b6020821081036200012757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200017b57600081815260208120601f850160051c81016020861015620001565750805b601f850160051c820191505b81811015620001775782815560010162000162565b5050505b505050565b81516001600160401b038111156200019c576200019c620000db565b620001b481620001ad8454620000f1565b846200012d565b602080601f831160018114620001ec5760008415620001d35750858301515b600019600386901b1c1916600185901b17855562000177565b600085815260208120601f198616915b828110156200021d57888601518255948401946001909101908401620001fc565b50858210156200023c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051619e5d620002826000396000505060005050600050506000505060005050619e5d6000f3fe60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806380aee2541162000097578063ba414fa6116200006e578063ba414fa61462000152578063c5883c3e1462000170578063d550114e146200017a578063fa7626d4146200018457600080fd5b806380aee2541462000134578063ae11456f146200013e578063b4f6ba4e146200014857600080fd5b80635ba201e411620000cc5780635ba201e414620001165780635cd82689146200012057806363a9972d146200012a57600080fd5b8063031c666a14620000f65780630a9254e4146200010257806333a16321146200010c575b600080fd5b6200010062000192565b005b620001006200033d565b6200010062000672565b6200010062000b85565b62000100620010c5565b6200010062001504565b6200010062001692565b62000100620017ec565b6200010062001998565b6200015c62001b1f565b604051901515815260200160405180910390f35b6200010062001c89565b6200010062001d6b565b6000546200015c9060ff1681565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620001fa57600080fd5b505af11580156200020f573d6000803e3d6000fd5b5050601a546040517f0900f010000000000000000000000000000000000000000000000000000000008152615678600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f0109150602401600060405180830381600087803b1580156200028157600080fd5b505af115801562000296573d6000803e3d6000fd5b505050506200033b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000332919062002413565b61567862001ffe565b565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620003a557600080fd5b505af1158015620003ba573d6000803e3d6000fd5b50505050604051620003cc90620023c3565b604051809103906000f080158015620003e9573d6000803e3d6000fd5b50601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200049757600080fd5b505af1158015620004ac573d6000803e3d6000fd5b5050601954604051611234935073ffffffffffffffffffffffffffffffffffffffff9091169150620004de90620023d1565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f0801580156200051f573d6000803e3d6000fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620005cd57600080fd5b505af1158015620005e2573d6000803e3d6000fd5b5050601954601a546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063f2fde38b91506024015b600060405180830381600087803b1580156200065757600080fd5b505af11580156200066c573d6000803e3d6000fd5b50505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620006da57600080fd5b505af1158015620006ef573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b1580156200076857600080fd5b505af11580156200077d573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262000826935073ffffffffffffffffffffffffffffffffffffffff90911691506370a08231906024015b602060405180830381865afa158015620007f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081e91906200243a565b606462002140565b601a54604080517f83ea6e970000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e5d6bf029273ffffffffffffffffffffffffffffffffffffffff909116916383ea6e97916004808201926020929091908290030181865afa158015620008b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d991906200243a565b620008e5904262002454565b620008f290600162002454565b6040518263ffffffff1660e01b81526004016200091191815260200190565b600060405180830381600087803b1580156200092c57600080fd5b505af115801562000941573d6000803e3d6000fd5b50506040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620009ad57600080fd5b505af1158015620009c2573d6000803e3d6000fd5b50506040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a206d696e7420616d6f756e74206578636565647360448201527f20636170000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562000a7f57600080fd5b505af115801562000a94573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526003602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f1991506044015b600060405180830381600087803b15801562000b0e57600080fd5b505af115801562000b23573d6000803e3d6000fd5b50506019546040517f70a0823100000000000000000000000000000000000000000000000000000000815261123460048201526200033b935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b6013546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562000c0e57600080fd5b505af115801562000c23573d6000803e3d6000fd5b50506014546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000cb057600080fd5b505af115801562000cc5573d6000803e3d6000fd5b50506015546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000d5257600080fd5b505af115801562000d67573d6000803e3d6000fd5b5050601354604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600560448201527f616c6963650000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000e1e57600080fd5b505af115801562000e33573d6000803e3d6000fd5b5050601454604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600360448201527f626f6200000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b5050601554604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600860448201527f6d756c74697369670000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000fb657600080fd5b505af115801562000fcb573d6000803e3d6000fd5b50506040517f39b37ab0000000000000000000000000000000000000000000000000000000008152633b9aca006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506339b37ab09150602401600060405180830381600087803b1580156200103957600080fd5b505af11580156200104e573d6000803e3d6000fd5b505050506040516200106090620023df565b604051809103906000f0801580156200107d573d6000803e3d6000fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200112d57600080fd5b505af115801562001142573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015620011bb57600080fd5b505af1158015620011d0573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262001232935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b601a54604080517f83ea6e970000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e5d6bf029273ffffffffffffffffffffffffffffffffffffffff909116916383ea6e97916004808201926020929091908290030181865afa158015620012bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e591906200243a565b620012f1904262002454565b620012fe90600162002454565b6040518263ffffffff1660e01b81526004016200131d91815260200190565b600060405180830381600087803b1580156200133857600080fd5b505af11580156200134d573d6000803e3d6000fd5b50506040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620013b957600080fd5b505af1158015620013ce573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526002602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b1580156200144757600080fd5b505af11580156200145c573d6000803e3d6000fd5b50506019546040517f70a0823100000000000000000000000000000000000000000000000000000000815261123460048201526200033b935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401602060405180830381865afa158015620014d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014fc91906200243a565b606662002140565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526156786004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200156c57600080fd5b505af115801562001581573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b1580156200161957600080fd5b505af11580156200162e573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f1991506044016200063c565b601a54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051620017349273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b9160048083019260209291908290030181865afa15801562001705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200172b919062002413565b61123462001ffe565b601a54604080517ff96dae0a00000000000000000000000000000000000000000000000000000000815290516200033b9273ffffffffffffffffffffffffffffffffffffffff169163f96dae0a9160048083019260209291908290030181865afa158015620017a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017cd919062002413565b60195473ffffffffffffffffffffffffffffffffffffffff1662001ffe565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200185457600080fd5b505af115801562001869573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206d696e74206d616e616765722063616e6e6f7460448201527f20626520746865207a65726f20616464726573730000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b1580156200192757600080fd5b505af11580156200193c573d6000803e3d6000fd5b5050601a546040517f0900f0100000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f01091506024016200063c565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526156786004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0057600080fd5b505af115801562001a15573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b15801562001aad57600080fd5b505af115801562001ac2573d6000803e3d6000fd5b5050601a546040517f0900f010000000000000000000000000000000000000000000000000000000008152615678600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f01091506024016200063c565b60008054610100900460ff161562001b405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001c845760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001be8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620024d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001c229162002510565b6000604051808303816000865af19150503d806000811462001c61576040519150601f19603f3d011682016040523d82523d6000602084013e62001c66565b606091505b509150508080602001905181019062001c8091906200251e565b9150505b919050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562001cf257600080fd5b505af115801562001d07573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f19915060440162000af3565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001dd357600080fd5b505af115801562001de8573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b15801562001e6157600080fd5b505af115801562001e76573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262001ed8935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f4057600080fd5b505af115801562001f55573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d696e744d616e616765723a206d696e74696e67206e6f74207065726d69747460448201527f65642079657400000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060840162001cd7565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200213c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620020b89060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620020f1919062002542565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200212a9190620025a4565b60405180910390a16200213c62002240565b5050565b8082146200213c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021ce9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620022079190620025e2565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200212a91906200262e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620023955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620023129291602001620024d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200234c9162002510565b6000604051808303816000865af19150503d80600081146200238b576040519150601f19603f3d011682016040523d82523d6000602084013e62002390565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b612bcd806200266d83390190565b610aa3806200523a83390190565b6141748062005cdd83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146200241057600080fd5b50565b6000602082840312156200242657600080fd5b81516200243381620023ed565b9392505050565b6000602082840312156200244d57600080fd5b5051919050565b600082198211156200248f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b6000815160005b81811015620024b757602081850181015186830152016200249b565b81811115620024c7576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600062002508600483018462002494565b949350505050565b600062002433828462002494565b6000602082840312156200253157600080fd5b815180151581146200243357600080fd5b6040815260006200258060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200258060408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200262060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200262060408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe6101406040523480156200001257600080fd5b50604051806040016040528060088152602001674f7074696d69736d60c01b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060088152602001674f7074696d69736d60c01b8152506040518060400160405280600281526020016104f560f41b81525081600390816200009c919062000247565b506004620000ab828262000247565b5050825160209384012082519284019290922060e08390526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810194909452608080850193909352308483018190528151808603909301835260c09485019091528151919096012090529290925261012052506200014a90503362000150565b62000313565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001cd57607f821691505b602082108103620001ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024257600081815260208120601f850160051c810160208610156200021d5750805b601f850160051c820191505b818110156200023e5782815560010162000229565b5050505b505050565b81516001600160401b03811115620002635762000263620001a2565b6200027b81620002748454620001b8565b84620001f4565b602080601f831160018114620002b357600084156200029a5750858301515b600019600386901b1c1916600185901b1785556200023e565b600085815260208120601f198616915b82811015620002e457888601518255948401946001909101908401620002c3565b5085821015620003035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161286a6200036360003960006113f2015260006114410152600061141c015260006113750152600061139f015260006113c9015261286a6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a457c2d711610097578063d505accf11610071578063d505accf14610416578063dd62ed3e14610429578063f1127ed81461046f578063f2fde38b146104c157600080fd5b8063a457c2d7146103dd578063a9059cbb146103f0578063c3cda5201461040357600080fd5b80638da5cb5b116100d35780638da5cb5b146103915780638e539e8c146103af57806395d89b41146103c25780639ab24eb0146103ca57600080fd5b8063715018a61461036357806379cc67901461036b5780637ecebe001461037e57600080fd5b80633a46b1a811610166578063587cde1e11610140578063587cde1e146102945780635c19a95c146102f25780636fcfff451461030557806370a082311461032d57600080fd5b80633a46b1a81461025957806340c10f191461026c57806342966c681461028157600080fd5b806323b872dd116101a257806323b872dd1461021c578063313ce5671461022f5780633644e5151461023e578063395093511461024657600080fd5b806306fdde03146101c9578063095ea7b3146101e757806318160ddd1461020a575b600080fd5b6101d16104d4565b6040516101de919061249d565b60405180910390f35b6101fa6101f5366004612539565b610566565b60405190151581526020016101de565b6002545b6040519081526020016101de565b6101fa61022a366004612563565b61057e565b604051601281526020016101de565b61020e6105a2565b6101fa610254366004612539565b6105b1565b61020e610267366004612539565b6105fd565b61027f61027a366004612539565b6106a3565b005b61027f61028f36600461259f565b6106b9565b6102cd6102a23660046125b8565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600760205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61027f6103003660046125b8565b6106c6565b6103186103133660046125b8565b6106d0565b60405163ffffffff90911681526020016101de565b61020e61033b3660046125b8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61027f610705565b61027f610379366004612539565b610719565b61020e61038c3660046125b8565b61072e565b600a5473ffffffffffffffffffffffffffffffffffffffff166102cd565b61020e6103bd36600461259f565b610759565b6101d16107cf565b61020e6103d83660046125b8565b6107de565b6101fa6103eb366004612539565b6108a9565b6101fa6103fe366004612539565b61097a565b61027f6104113660046125e4565b610988565b61027f61042436600461263c565b610aff565b61020e6104373660046126a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61048261047d3660046126d9565b610cbe565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692810192909252016101de565b61027f6104cf3660046125b8565b610d64565b6060600380546104e390612719565b80601f016020809104026020016040519081016040528092919081815260200182805461050f90612719565b801561055c5780601f106105315761010080835404028352916020019161055c565b820191906000526020600020905b81548152906001019060200180831161053f57829003601f168201915b5050505050905090565b600033610574818585610e18565b5060019392505050565b60003361058c858285610fcb565b6105978585856110a2565b506001949350505050565b60006105ac61135b565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061057490829086906105f8908790612795565b610e18565b600043821061066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902061069c908361148f565b9392505050565b6106ab611576565b6106b582826115f7565b5050565b6106c33382611601565b50565b6106c3338261160b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260408120546106ff906116a9565b92915050565b61070d611576565b6107176000611743565b565b610724823383610fcb565b6106b58282611601565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120546106ff565b60004382106107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610664565b6106ff60098361148f565b6060600480546104e390612719565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205480156108815773ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902061083a6001836127ad565b8154811061084a5761084a6127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610884565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610664565b6105978286868403610e18565b6000336105748185856110a2565b834211156109f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610664565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff8816918101919091526060810186905260808101859052600090610a7990610a719060a001604051602081830303815290604052805190602001206117ba565b858585611823565b9050610a848161184b565b8614610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610664565b610af6818861160b565b50505050505050565b83421115610b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610664565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610b988c61184b565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610c00826117ba565b90506000610c1082878787611823565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610664565b610cb28a8a8a610e18565b50505050505050505050565b604080518082019091526000808252602082015273ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805463ffffffff8416908110610d0f57610d0f6127c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b610d6c611576565b73ffffffffffffffffffffffffffffffffffffffff8116610e0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610664565b6106c381611743565b73ffffffffffffffffffffffffffffffffffffffff8316610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff8216610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461109c578181101561108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610664565b61109c8484848403610e18565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff82166111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906112e2908490612795565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134891815260200190565b60405180910390a361109c848484611885565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156113c157507f000000000000000000000000000000000000000000000000000000000000000046145b156113eb57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156114f35760006114aa8284611890565b9050848682815481106114bf576114bf6127c4565b60009182526020909120015463ffffffff1611156114df578092506114ed565b6114ea816001612795565b91505b50611496565b811561154c57846115056001846127ad565b81548110611515576115156127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661154f565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695945050505050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6106b582826118ab565b6106b58282611971565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152600760208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461109c828483611989565b600063ffffffff82111561173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610664565b5090565b600a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006106ff6117c761135b565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061183487878787611b2e565b9150915061184181611c46565b5095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b505050565b611880838383611e9a565b600061189f60028484186127f3565b61069c90848416612795565b6118b58282611ed9565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610664565b61109c60096120018361200d565b61197b82826121ef565b61109c60096123e38361200d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119c55750600081115b156118805773ffffffffffffffffffffffffffffffffffffffff831615611a7a5773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081208190611a1a906123e38561200d565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611a6f929190918252602082015260400190565b60405180910390a250505b73ffffffffffffffffffffffffffffffffffffffff8216156118805773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081208190611aca906120018561200d565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b1f929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b655750600090506003611c3d565b8460ff16601b14158015611b7d57508460ff16601c14155b15611b8e5750600090506004611c3d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611be2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611c3657600060019250925050611c3d565b9150600090505b94509492505050565b6000816004811115611c5a57611c5a61282e565b03611c625750565b6001816004811115611c7657611c7661282e565b03611cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610664565b6002816004811115611cf157611cf161282e565b03611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610664565b6003816004811115611d6c57611d6c61282e565b03611df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b6004816004811115611e0d57611e0d61282e565b036106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83811660009081526007602052604080822054858416835291205461188092918216911683611989565b73ffffffffffffffffffffffffffffffffffffffff8216611f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610664565b8060026000828254611f689190612795565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611fa2908490612795565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36106b560008383611885565b600061069c8284612795565b82546000908190801561206d57856120266001836127ad565b81548110612036576120366127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612070565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16925061209e83858763ffffffff16565b91506000811180156120dc575043866120b86001846127ad565b815481106120c8576120c86127c4565b60009182526020909120015463ffffffff16145b15612166576120ea826123ef565b866120f66001846127ad565b81548110612106576121066127c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055506121e6565b85604051806040016040528061217b436116a9565b63ffffffff16815260200161218f856123ef565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b73ffffffffffffffffffffffffffffffffffffffff8216612292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906123849084906127ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361188083600084611885565b600061069c82846127ad565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610664565b600060208083528351808285015260005b818110156124ca578581018301518582016040015282016124ae565b818111156124dc576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461253457600080fd5b919050565b6000806040838503121561254c57600080fd5b61255583612510565b946020939093013593505050565b60008060006060848603121561257857600080fd5b61258184612510565b925061258f60208501612510565b9150604084013590509250925092565b6000602082840312156125b157600080fd5b5035919050565b6000602082840312156125ca57600080fd5b61069c82612510565b803560ff8116811461253457600080fd5b60008060008060008060c087890312156125fd57600080fd5b61260687612510565b95506020870135945060408701359350612622606088016125d3565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561265757600080fd5b61266088612510565b965061266e60208901612510565b9550604088013594506060880135935061268a608089016125d3565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156126b957600080fd5b6126c283612510565b91506126d060208401612510565b90509250929050565b600080604083850312156126ec57600080fd5b6126f583612510565b9150602083013563ffffffff8116811461270e57600080fd5b809150509250929050565b600181811c9082168061272d57607f821691505b60208210810361187a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156127a8576127a8612766565b500190565b6000828210156127bf576127bf612766565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082612829577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a60a060405234801561001057600080fd5b50604051610aa3380380610aa383398101604081905261002f91610199565b61003833610053565b610041826100a3565b6001600160a01b0316608052506101cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100ab610121565b6001600160a01b0381166101155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61011e81610053565b50565b6000546001600160a01b0316331461017b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161010c565b565b80516001600160a01b038116811461019457600080fd5b919050565b600080604083850312156101ac57600080fd5b6101b58361017d565b91506101c36020840161017d565b90509250929050565b6080516108a76101fc6000396000818161018101528181610298015281816103a0015261052c01526108a76000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80638da5cb5b1161007657806398f1312e1161005b57806398f1312e14610161578063f2fde38b14610169578063f96dae0a1461017c57600080fd5b80638da5cb5b14610119578063918f86741461015857600080fd5b806340c10f19116100a757806340c10f19146100f3578063715018a61461010657806383ea6e971461010e57600080fd5b8062f8900c146100c25780630900f010146100de575b600080fd5b6100cb60015481565b6040519081526020015b60405180910390f35b6100f16100ec366004610776565b6101a3565b005b6100f1610101366004610798565b6102f7565b6100f161058c565b6100cb6301e1338081565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d5565b6100cb6103e881565b6100cb601481565b6100f1610177366004610776565b6105a0565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6101ab610657565b73ffffffffffffffffffffffffffffffffffffffff8116610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206d696e74206d616e616765722063616e6e6f7460448201527f20626520746865207a65726f206164647265737300000000000000000000000060648201526084015b60405180910390fd5b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b90602401600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b5050505050565b6102ff610657565b600154156104cf57426001541115610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d696e744d616e616765723a206d696e74696e67206e6f74207065726d69747460448201527f6564207965740000000000000000000000000000000000000000000000000000606482015260840161024a565b6103e860147f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d91906107c2565b610437919061080a565b6104419190610847565b8111156104cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a206d696e7420616d6f756e74206578636565647360448201527f2063617000000000000000000000000000000000000000000000000000000000606482015260840161024a565b6104dd6301e1338042610882565b6001556040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561057057600080fd5b505af1158015610584573d6000803e3d6000fd5b505050505050565b610594610657565b61059e60006106d8565b565b6105a8610657565b73ffffffffffffffffffffffffffffffffffffffff811661064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161024a565b610654816106d8565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161024a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077157600080fd5b919050565b60006020828403121561078857600080fd5b6107918261074d565b9392505050565b600080604083850312156107ab57600080fd5b6107b48361074d565b946020939093013593505050565b6000602082840312156107d457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610842576108426107db565b500290565b60008261087d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610895576108956107db565b50019056fea164736f6c634300080f000a60806040526000805460ff1916600117905534801561001d57600080fd5b506141478061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80637e577a1b11610081578063dcf5edef1161005b578063dcf5edef146101c0578063fa7626d4146101d3578063fc677392146101e057600080fd5b80637e577a1b14610172578063ba414fa614610195578063c21e8865146101ad57600080fd5b806335337aab116100b257806335337aab14610117578063498a3c021461012a578063526dc9551461014a57600080fd5b8062ec31a6146100cd5780631aac97c1146100f3575b600080fd5b6100e06100db3660046136cb565b6101f3565b6040519081526020015b60405180910390f35b610106610101366004613745565b6108dc565b6040516100ea9594939291906138e2565b6100e0610125366004613925565b610fed565b61013d6101383660046136cb565b6117e4565b6040516100ea91906139b1565b61015d6101583660046139c4565b611ec1565b604080519283526020830191909152016100ea565b6101856101803660046139dd565b612179565b6040516100ea9493929190613a26565b61019d6123f8565b60405190151581526020016100ea565b6100e06101bb3660046136cb565b612558565b6100e06101ce366004613a65565b61265f565b60005461019d9060ff1681565b61013d6101ee366004613a97565b6128e6565b6040805160098082526101408201909252600091829190816020015b606081526020019060019003908161020f5790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061026f5761026f613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106102a6576102a6613ad3565b60200260200101819052506040518060400160405280601681526020017f6861736843726f7373446f6d61696e4d65737361676500000000000000000000815250816002815181106102fa576102fa613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561036e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103b49190810190613b32565b816003815181106103c7576103c7613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610450573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104969190810190613b32565b816004815181106104a9576104a9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105789190810190613b32565b8160058151811061058b5761058b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106459190810190613b32565b8160068151811061065857610658613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107129190810190613b32565b8160078151811061072557610725613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906107809086906004016139b1565b600060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107e39190810190613b32565b816008815181106107f6576107f6613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610854908590600401613b7b565b6000604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108b99190810190613c1b565b9050808060200190518101906108cf9190613c50565b9998505050505050505050565b6000808080606081600960405190808252806020026020018201604052801561091957816020015b60608152602001906001900390816109045790505b5090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061096557610965613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061099c5761099c613ad3565b60200260200101819052506040518060600160405280602381526020016140f460239139816002815181106109d3576109d3613ad3565b602090810291909101015286516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a909190810190613b32565b81600381518110610aa357610aa3613ad3565b6020908102919091018101919091528701516040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b7a9190810190613b32565b81600481518110610b8d57610b8d613ad3565b602090810291909101015260408781015190517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c629190810190613b32565b81600581518110610c7557610c75613ad3565b602090810291909101015260608701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d359190810190613b32565b81600681518110610d4857610d48613ad3565b602090810291909101015260808701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e089190810190613b32565b81600781518110610e1b57610e1b613ad3565b602090810291909101015260a08701516040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d916371aad10d91610e7a91906004016139b1565b600060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610edd9190810190613b32565b81600881518110610ef057610ef0613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610f4e908590600401613b7b565b6000604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb39190810190613c1b565b9050600080600080600085806020019051810190610fd19190613d08565b939f50919d509b50995097505050505050505091939590929450565b60408051600b8082526101808201909252600091829190816020015b60608152602001906001900390816110095790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061106957611069613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106110a0576110a0613ad3565b60200260200101819052506040518060400160405280601681526020017f686173684465706f7369745472616e73616374696f6e00000000000000000000815250816002815181106110f4576110f4613ad3565b60200260200101819052506040518060800160405280604281526020016140b2604291398160038151811061112b5761112b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561119f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111e59190810190613b32565b816004815181106111f8576111f8613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112c79190810190613b32565b816005815181106112da576112da613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a99190810190613b32565b816006815181106113bc576113bc613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611430573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114769190810190613b32565b8160078151811061148957611489613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115439190810190613b32565b8160088151811061155657611556613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613b32565b8160098151811061162c5761162c613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906116879087906004016139b1565b600060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ea9190810190613b32565b81600a815181106116fd576116fd613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061175b908590600401613b7b565b6000604051808303816000875af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117c09190810190613c1b565b9050808060200190518101906117d69190613c50565b9a9950505050505050505050565b604080516009808252610140820190925260609160009190816020015b60608152602001906001900390816118015790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061186157611861613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061189857611898613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f646543726f7373446f6d61696e4d6573736167650000000000000000815250816002815181106118ec576118ec613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611960573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119a69190810190613b32565b816003815181106119b9576119b9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611a889190810190613b32565b81600481518110611a9b57611a9b613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6a9190810190613b32565b81600581518110611b7d57611b7d613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c379190810190613b32565b81600681518110611c4a57611c4a613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d049190810190613b32565b81600781518110611d1757611d17613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d90611d729086906004016139b1565b600060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dd59190810190613b32565b81600881518110611de857611de8613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790611e46908590600401613b7b565b6000604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eab9190810190613c1b565b9050808060200190518101906108cf9190613c1b565b60408051600480825260a0820190925260009182918291816020015b6060815260200190600190039081611edd5790505090506040518060400160405280600481526020017f6e6f64650000000000000000000000000000000000000000000000000000000081525081600081518110611f3d57611f3d613ad3565b60200260200101819052506040518060600160405280602481526020016141176024913981600181518110611f7457611f74613ad3565b60200260200101819052506040518060400160405280601481526020017f6465636f646556657273696f6e65644e6f6e636500000000000000000000000081525081600281518110611fc857611fc8613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561203c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120829190810190613b32565b8160038151811061209557612095613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906120f3908590600401613b7b565b6000604051808303816000875af1158015612112573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121589190810190613c1b565b90508080602001905181019061216e9190613d6c565b935093505050915091565b60408051600580825260c08201909252600091606091829182918591816020015b606081526020019060019003908161219a5790505090506040518060400160405280601a81526020017f2e2f746573742d636173652d67656e657261746f722f66757a7a000000000000815250816000815181106121fa576121fa613ad3565b60200260200101819052506040518060400160405280600281526020017f2d6d0000000000000000000000000000000000000000000000000000000000008152508160018151811061224e5761224e613ad3565b60200260200101819052506040518060400160405280600481526020017f7472696500000000000000000000000000000000000000000000000000000000815250816002815181106122a2576122a2613ad3565b60200260200101819052506040518060400160405280600281526020017f2d76000000000000000000000000000000000000000000000000000000000000815250816003815181106122f6576122f6613ad3565b6020026020010181905250858160048151811061231557612315613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612370908490600401613b7b565b6000604051808303816000875af115801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123d59190810190613c1b565b8060200190518101906123e89190613d90565b9450945094509450509193509193565b60008054610100900460ff16156124185750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156125535760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916124bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124f591613e6a565b6000604051808303816000865af19150503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b509150508080602001905181019061254f9190613e97565b9150505b919050565b6040805160098082526101408201909252600091829190816020015b60608152602001906001900390816125745790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106125d4576125d4613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061260b5761260b613ad3565b60200260200101819052506040518060400160405280600e81526020017f686173685769746864726177616c000000000000000000000000000000000000815250816002815181106102fa576102fa613ad3565b6040805160078082526101008201909252600091829190816020015b606081526020019060019003908161267b5790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106126db576126db613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061271257612712613ad3565b60200260200101819052506040518060400160405280601381526020017f686173684f7574707574526f6f7450726f6f66000000000000000000000000008152508160028151811061276657612766613ad3565b602090810291909101015261277a866132a3565b8160038151811061278d5761278d613ad3565b60209081029190910101526127a1856132a3565b816004815181106127b4576127b4613ad3565b60209081029190910101526127c8846132a3565b816005815181106127db576127db613ad3565b60209081029190910101526127ef836132a3565b8160068151811061280257612802613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612860908590600401613b7b565b6000604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128c59190810190613c1b565b9050808060200190518101906128db9190613c50565b979650505050505050565b60408051600c8082526101a0820190925260609160009190816020015b60608152602001906001900390816129035790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061296357612963613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061299a5761299a613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f64654465706f7369745472616e73616374696f6e0000000000000000815250816002815181106129ee576129ee613ad3565b602090810291909101810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90612a2590860186613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612a8e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ad49190810190613b32565b81600381518110612ae757612ae7613ad3565b60200260200101819052507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166356ca623e846020016020810190612b449190613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612bf39190810190613b32565b81600481518110612c0657612c06613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260608401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612c7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612cc39190810190613b32565b81600581518110612cd657612cd6613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260808401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d939190810190613b32565b81600681518110612da657612da6613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d636900a3ae612ddb60c0860160a08701613ecf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612e7e9190810190613b32565b81600781518110612e9157612e91613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371dce7da612ec66060860160408701613eea565b6040518263ffffffff1660e01b8152600401612ee6911515815260200190565b600060405180830381865afa158015612f03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f499190810190613b32565b81600881518110612f5c57612f5c613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371aad10d612f8e60c0860186613f07565b6040518363ffffffff1660e01b8152600401612fab929190613f73565b600060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261300e9190810190613b32565b8160098151811061302157613021613ad3565b60209081029190910101526040517fb11a19e800000000000000000000000000000000000000000000000000000000815260e08401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b11a19e890602401600060405180830381865afa158015613098573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130de9190810190613b32565b81600a815181106130f1576130f1613ad3565b60209081029190910101526040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526101008401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015613169573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526131af9190810190613b32565b81600b815181106131c2576131c2613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790613220908590600401613b7b565b6000604051808303816000875af115801561323f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526132859190810190613c1b565b90508080602001905181019061329b9190613c1b565b949350505050565b6060816000036132e657505060408051808201909152600481527f3078303000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561330957806132fa81613fef565b915050600882901c91506132ea565b61329b84826060600061331d836002614027565b613328906002614064565b67ffffffffffffffff81111561334057613340613580565b6040519080825280601f01601f19166020018201604052801561336a576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133a1576133a1613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061340457613404613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613440846002614027565b61344b906001614064565b90505b60018111156134e8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061348c5761348c613ad3565b1a60f81b8282815181106134a2576134a2613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936134e18161407c565b905061344e565b508315613555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156135d2576135d2613580565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f613580565b604052919050565b600067ffffffffffffffff82111561364157613641613580565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061368061367b84613627565b6135d8565b905082815283838301111561369457600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136bc57600080fd5b6135558383356020850161366d565b60008060008060008060c087890312156136e457600080fd5b863595506136f46020880161355c565b94506137026040880161355c565b9350606087013592506080870135915060a087013567ffffffffffffffff81111561372c57600080fd5b61373889828a016136ab565b9150509295509295509295565b60006020828403121561375757600080fd5b813567ffffffffffffffff8082111561376f57600080fd5b9083019060c0828603121561378357600080fd5b61378b6135af565b8235815261379b6020840161355c565b60208201526137ac6040840161355c565b6040820152606083013560608201526080830135608082015260a0830135828111156137d757600080fd5b6137e3878286016136ab565b60a08301525095945050505050565b60005b8381101561380d5781810151838201526020016137f5565b8381111561381c576000848401525b50505050565b6000815180845261383a8160208601602086016137f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156138d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030189526138c3838351613822565b98840198925090830190600101613889565b5090979650505050505050565b85815284602082015283604082015282606082015260a0608082015260006128db60a083018461386c565b803567ffffffffffffffff8116811461255357600080fd5b600080600080600080600060e0888a03121561394057600080fd5b6139498861355c565b96506139576020890161355c565b955060408801359450606088013593506139736080890161390d565b925060a088013567ffffffffffffffff81111561398f57600080fd5b61399b8a828b016136ab565b92505060c0880135905092959891949750929550565b6020815260006135556020830184613822565b6000602082840312156139d657600080fd5b5035919050565b6000602082840312156139ef57600080fd5b813567ffffffffffffffff811115613a0657600080fd5b8201601f81018413613a1757600080fd5b61329b8482356020840161366d565b848152608060208201526000613a3f6080830186613822565b8281036040840152613a518186613822565b905082810360608401526128db818561386c565b60008060008060808587031215613a7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613aa957600080fd5b813567ffffffffffffffff811115613ac057600080fd5b8201610120818503121561355557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b1061367b84613627565b9050828152838383011115613b2457600080fd5b6135558360208301846137f2565b600060208284031215613b4457600080fd5b815167ffffffffffffffff811115613b5b57600080fd5b8201601f81018413613b6c57600080fd5b61329b84825160208401613b02565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613bee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613bdc858351613822565b94509285019290850190600101613ba2565b5092979650505050505050565b600082601f830112613c0c57600080fd5b61355583835160208501613b02565b600060208284031215613c2d57600080fd5b815167ffffffffffffffff811115613c4457600080fd5b61329b84828501613bfb565b600060208284031215613c6257600080fd5b5051919050565b600082601f830112613c7a57600080fd5b8151602067ffffffffffffffff80831115613c9757613c97613580565b8260051b613ca68382016135d8565b9384528581018301938381019088861115613cc057600080fd5b84880192505b85831015613cfc57825184811115613cde5760008081fd5b613cec8a87838c0101613bfb565b8352509184019190840190613cc6565b98975050505050505050565b600080600080600060a08688031215613d2057600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff811115613d5357600080fd5b613d5f88828901613c69565b9150509295509295909350565b60008060408385031215613d7f57600080fd5b505080516020909101519092909150565b60008060008060808587031215613da657600080fd5b84519350602085015167ffffffffffffffff80821115613dc557600080fd5b613dd188838901613bfb565b94506040870151915080821115613de757600080fd5b613df388838901613bfb565b93506060870151915080821115613e0957600080fd5b50613e1687828801613c69565b91505092959194509250565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613e5c8160048501602087016137f2565b919091016004019392505050565b60008251613e7c8184602087016137f2565b9190910192915050565b8015158114613e9457600080fd5b50565b600060208284031215613ea957600080fd5b815161355581613e86565b600060208284031215613ec657600080fd5b6135558261355c565b600060208284031215613ee157600080fd5b6135558261390d565b600060208284031215613efc57600080fd5b813561355581613e86565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f3c57600080fd5b83018035915067ffffffffffffffff821115613f5757600080fd5b602001915036819003821315613f6c57600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361402057614020613fc0565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405f5761405f613fc0565b500290565b6000821982111561407757614077613fc0565b500190565b60008161408b5761408b613fc0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe30783030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303067657450726f76655769746864726177616c5472616e73616374696f6e496e70757473646973742f736372697074732f646966666572656e7469616c2d74657374696e672e6a73a164736f6c634300080f000aa164736f6c634300080f000a0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806380aee2541162000097578063ba414fa6116200006e578063ba414fa61462000152578063c5883c3e1462000170578063d550114e146200017a578063fa7626d4146200018457600080fd5b806380aee2541462000134578063ae11456f146200013e578063b4f6ba4e146200014857600080fd5b80635ba201e411620000cc5780635ba201e414620001165780635cd82689146200012057806363a9972d146200012a57600080fd5b8063031c666a14620000f65780630a9254e4146200010257806333a16321146200010c575b600080fd5b6200010062000192565b005b620001006200033d565b6200010062000672565b6200010062000b85565b62000100620010c5565b6200010062001504565b6200010062001692565b62000100620017ec565b6200010062001998565b6200015c62001b1f565b604051901515815260200160405180910390f35b6200010062001c89565b6200010062001d6b565b6000546200015c9060ff1681565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620001fa57600080fd5b505af11580156200020f573d6000803e3d6000fd5b5050601a546040517f0900f010000000000000000000000000000000000000000000000000000000008152615678600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f0109150602401600060405180830381600087803b1580156200028157600080fd5b505af115801562000296573d6000803e3d6000fd5b505050506200033b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000332919062002413565b61567862001ffe565b565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620003a557600080fd5b505af1158015620003ba573d6000803e3d6000fd5b50505050604051620003cc90620023c3565b604051809103906000f080158015620003e9573d6000803e3d6000fd5b50601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200049757600080fd5b505af1158015620004ac573d6000803e3d6000fd5b5050601954604051611234935073ffffffffffffffffffffffffffffffffffffffff9091169150620004de90620023d1565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f0801580156200051f573d6000803e3d6000fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620005cd57600080fd5b505af1158015620005e2573d6000803e3d6000fd5b5050601954601a546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063f2fde38b91506024015b600060405180830381600087803b1580156200065757600080fd5b505af11580156200066c573d6000803e3d6000fd5b50505050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620006da57600080fd5b505af1158015620006ef573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b1580156200076857600080fd5b505af11580156200077d573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262000826935073ffffffffffffffffffffffffffffffffffffffff90911691506370a08231906024015b602060405180830381865afa158015620007f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081e91906200243a565b606462002140565b601a54604080517f83ea6e970000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e5d6bf029273ffffffffffffffffffffffffffffffffffffffff909116916383ea6e97916004808201926020929091908290030181865afa158015620008b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d991906200243a565b620008e5904262002454565b620008f290600162002454565b6040518263ffffffff1660e01b81526004016200091191815260200190565b600060405180830381600087803b1580156200092c57600080fd5b505af115801562000941573d6000803e3d6000fd5b50506040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620009ad57600080fd5b505af1158015620009c2573d6000803e3d6000fd5b50506040517ff28dceb3000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a206d696e7420616d6f756e74206578636565647360448201527f20636170000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b15801562000a7f57600080fd5b505af115801562000a94573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526003602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f1991506044015b600060405180830381600087803b15801562000b0e57600080fd5b505af115801562000b23573d6000803e3d6000fd5b50506019546040517f70a0823100000000000000000000000000000000000000000000000000000000815261123460048201526200033b935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b6013546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562000c0e57600080fd5b505af115801562000c23573d6000803e3d6000fd5b50506014546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000cb057600080fd5b505af115801562000cc5573d6000803e3d6000fd5b50506015546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152620100006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000d5257600080fd5b505af115801562000d67573d6000803e3d6000fd5b5050601354604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600560448201527f616c6963650000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000e1e57600080fd5b505af115801562000e33573d6000803e3d6000fd5b5050601454604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600360448201527f626f6200000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000eea57600080fd5b505af115801562000eff573d6000803e3d6000fd5b5050601554604080517fc657c71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152600860448201527f6d756c74697369670000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562000fb657600080fd5b505af115801562000fcb573d6000803e3d6000fd5b50506040517f39b37ab0000000000000000000000000000000000000000000000000000000008152633b9aca006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506339b37ab09150602401600060405180830381600087803b1580156200103957600080fd5b505af11580156200104e573d6000803e3d6000fd5b505050506040516200106090620023df565b604051809103906000f0801580156200107d573d6000803e3d6000fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200112d57600080fd5b505af115801562001142573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015620011bb57600080fd5b505af1158015620011d0573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262001232935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b601a54604080517f83ea6e970000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9263e5d6bf029273ffffffffffffffffffffffffffffffffffffffff909116916383ea6e97916004808201926020929091908290030181865afa158015620012bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e591906200243a565b620012f1904262002454565b620012fe90600162002454565b6040518263ffffffff1660e01b81526004016200131d91815260200190565b600060405180830381600087803b1580156200133857600080fd5b505af11580156200134d573d6000803e3d6000fd5b50506040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620013b957600080fd5b505af1158015620013ce573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526002602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b1580156200144757600080fd5b505af11580156200145c573d6000803e3d6000fd5b50506019546040517f70a0823100000000000000000000000000000000000000000000000000000000815261123460048201526200033b935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401602060405180830381865afa158015620014d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014fc91906200243a565b606662002140565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526156786004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200156c57600080fd5b505af115801562001581573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b1580156200161957600080fd5b505af11580156200162e573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f1991506044016200063c565b601a54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051620017349273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b9160048083019260209291908290030181865afa15801562001705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200172b919062002413565b61123462001ffe565b601a54604080517ff96dae0a00000000000000000000000000000000000000000000000000000000815290516200033b9273ffffffffffffffffffffffffffffffffffffffff169163f96dae0a9160048083019260209291908290030181865afa158015620017a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017cd919062002413565b60195473ffffffffffffffffffffffffffffffffffffffff1662001ffe565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200185457600080fd5b505af115801562001869573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206d696e74206d616e616765722063616e6e6f7460448201527f20626520746865207a65726f20616464726573730000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150608401600060405180830381600087803b1580156200192757600080fd5b505af11580156200193c573d6000803e3d6000fd5b5050601a546040517f0900f0100000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f01091506024016200063c565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526156786004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a0057600080fd5b505af115801562001a15573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b15801562001aad57600080fd5b505af115801562001ac2573d6000803e3d6000fd5b5050601a546040517f0900f010000000000000000000000000000000000000000000000000000000008152615678600482015273ffffffffffffffffffffffffffffffffffffffff9091169250630900f01091506024016200063c565b60008054610100900460ff161562001b405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001c845760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001be8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620024d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001c229162002510565b6000604051808303816000865af19150503d806000811462001c61576040519150601f19603f3d011682016040523d82523d6000602084013e62001c66565b606091505b509150508080602001905181019062001c8091906200251e565b9150505b919050565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562001cf257600080fd5b505af115801562001d07573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f19915060440162000af3565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001dd357600080fd5b505af115801562001de8573d6000803e3d6000fd5b5050601a546040517f40c10f1900000000000000000000000000000000000000000000000000000000815261123460048201526064602482015273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b15801562001e6157600080fd5b505af115801562001e76573d6000803e3d6000fd5b50506019546040517f70a08231000000000000000000000000000000000000000000000000000000008152611234600482015262001ed8935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401620007da565b6040517fca669fa70000000000000000000000000000000000000000000000000000000081526112346004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f4057600080fd5b505af115801562001f55573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d696e744d616e616765723a206d696e74696e67206e6f74207065726d69747460448201527f65642079657400000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915060840162001cd7565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200213c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620020b89060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620020f1919062002542565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516200212a9190620025a4565b60405180910390a16200213c62002240565b5050565b8082146200213c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620021ce9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620022079190620025e2565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8826040516200212a91906200262e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620023955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620023129291602001620024d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200234c9162002510565b6000604051808303816000865af19150503d80600081146200238b576040519150601f19603f3d011682016040523d82523d6000602084013e62002390565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b612bcd806200266d83390190565b610aa3806200523a83390190565b6141748062005cdd83390190565b73ffffffffffffffffffffffffffffffffffffffff811681146200241057600080fd5b50565b6000602082840312156200242657600080fd5b81516200243381620023ed565b9392505050565b6000602082840312156200244d57600080fd5b5051919050565b600082198211156200248f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b6000815160005b81811015620024b757602081850181015186830152016200249b565b81811115620024c7576000828601525b509290920192915050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600062002508600483018462002494565b949350505050565b600062002433828462002494565b6000602082840312156200253157600080fd5b815180151581146200243357600080fd5b6040815260006200258060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b6040815260006200258060408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200262060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b6040815260006200262060408301600a81527f2020202041637475616c0000000000000000000000000000000000000000000060208201526040019056fe6101406040523480156200001257600080fd5b50604051806040016040528060088152602001674f7074696d69736d60c01b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060088152602001674f7074696d69736d60c01b8152506040518060400160405280600281526020016104f560f41b81525081600390816200009c919062000247565b506004620000ab828262000247565b5050825160209384012082519284019290922060e08390526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810194909452608080850193909352308483018190528151808603909301835260c09485019091528151919096012090529290925261012052506200014a90503362000150565b62000313565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001cd57607f821691505b602082108103620001ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024257600081815260208120601f850160051c810160208610156200021d5750805b601f850160051c820191505b818110156200023e5782815560010162000229565b5050505b505050565b81516001600160401b03811115620002635762000263620001a2565b6200027b81620002748454620001b8565b84620001f4565b602080601f831160018114620002b357600084156200029a5750858301515b600019600386901b1c1916600185901b1785556200023e565b600085815260208120601f198616915b82811015620002e457888601518255948401946001909101908401620002c3565b5085821015620003035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161286a6200036360003960006113f2015260006114410152600061141c015260006113750152600061139f015260006113c9015261286a6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a457c2d711610097578063d505accf11610071578063d505accf14610416578063dd62ed3e14610429578063f1127ed81461046f578063f2fde38b146104c157600080fd5b8063a457c2d7146103dd578063a9059cbb146103f0578063c3cda5201461040357600080fd5b80638da5cb5b116100d35780638da5cb5b146103915780638e539e8c146103af57806395d89b41146103c25780639ab24eb0146103ca57600080fd5b8063715018a61461036357806379cc67901461036b5780637ecebe001461037e57600080fd5b80633a46b1a811610166578063587cde1e11610140578063587cde1e146102945780635c19a95c146102f25780636fcfff451461030557806370a082311461032d57600080fd5b80633a46b1a81461025957806340c10f191461026c57806342966c681461028157600080fd5b806323b872dd116101a257806323b872dd1461021c578063313ce5671461022f5780633644e5151461023e578063395093511461024657600080fd5b806306fdde03146101c9578063095ea7b3146101e757806318160ddd1461020a575b600080fd5b6101d16104d4565b6040516101de919061249d565b60405180910390f35b6101fa6101f5366004612539565b610566565b60405190151581526020016101de565b6002545b6040519081526020016101de565b6101fa61022a366004612563565b61057e565b604051601281526020016101de565b61020e6105a2565b6101fa610254366004612539565b6105b1565b61020e610267366004612539565b6105fd565b61027f61027a366004612539565b6106a3565b005b61027f61028f36600461259f565b6106b9565b6102cd6102a23660046125b8565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600760205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61027f6103003660046125b8565b6106c6565b6103186103133660046125b8565b6106d0565b60405163ffffffff90911681526020016101de565b61020e61033b3660046125b8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61027f610705565b61027f610379366004612539565b610719565b61020e61038c3660046125b8565b61072e565b600a5473ffffffffffffffffffffffffffffffffffffffff166102cd565b61020e6103bd36600461259f565b610759565b6101d16107cf565b61020e6103d83660046125b8565b6107de565b6101fa6103eb366004612539565b6108a9565b6101fa6103fe366004612539565b61097a565b61027f6104113660046125e4565b610988565b61027f61042436600461263c565b610aff565b61020e6104373660046126a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61048261047d3660046126d9565b610cbe565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692810192909252016101de565b61027f6104cf3660046125b8565b610d64565b6060600380546104e390612719565b80601f016020809104026020016040519081016040528092919081815260200182805461050f90612719565b801561055c5780601f106105315761010080835404028352916020019161055c565b820191906000526020600020905b81548152906001019060200180831161053f57829003601f168201915b5050505050905090565b600033610574818585610e18565b5060019392505050565b60003361058c858285610fcb565b6105978585856110a2565b506001949350505050565b60006105ac61135b565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061057490829086906105f8908790612795565b610e18565b600043821061066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902061069c908361148f565b9392505050565b6106ab611576565b6106b582826115f7565b5050565b6106c33382611601565b50565b6106c3338261160b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260408120546106ff906116a9565b92915050565b61070d611576565b6107176000611743565b565b610724823383610fcb565b6106b58282611601565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120546106ff565b60004382106107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610664565b6106ff60098361148f565b6060600480546104e390612719565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205480156108815773ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902061083a6001836127ad565b8154811061084a5761084a6127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610884565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610664565b6105978286868403610e18565b6000336105748185856110a2565b834211156109f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610664565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff8816918101919091526060810186905260808101859052600090610a7990610a719060a001604051602081830303815290604052805190602001206117ba565b858585611823565b9050610a848161184b565b8614610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610664565b610af6818861160b565b50505050505050565b83421115610b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610664565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610b988c61184b565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610c00826117ba565b90506000610c1082878787611823565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610664565b610cb28a8a8a610e18565b50505050505050505050565b604080518082019091526000808252602082015273ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805463ffffffff8416908110610d0f57610d0f6127c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b610d6c611576565b73ffffffffffffffffffffffffffffffffffffffff8116610e0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610664565b6106c381611743565b73ffffffffffffffffffffffffffffffffffffffff8316610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff8216610f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461109c578181101561108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610664565b61109c8484848403610e18565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff82166111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906112e2908490612795565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134891815260200190565b60405180910390a361109c848484611885565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480156113c157507f000000000000000000000000000000000000000000000000000000000000000046145b156113eb57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156114f35760006114aa8284611890565b9050848682815481106114bf576114bf6127c4565b60009182526020909120015463ffffffff1611156114df578092506114ed565b6114ea816001612795565b91505b50611496565b811561154c57846115056001846127ad565b81548110611515576115156127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661154f565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695945050505050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610664565b6106b582826118ab565b6106b58282611971565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152600760208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461109c828483611989565b600063ffffffff82111561173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610664565b5090565b600a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006106ff6117c761135b565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061183487878787611b2e565b9150915061184181611c46565b5095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b505050565b611880838383611e9a565b600061189f60028484186127f3565b61069c90848416612795565b6118b58282611ed9565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1015611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610664565b61109c60096120018361200d565b61197b82826121ef565b61109c60096123e38361200d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119c55750600081115b156118805773ffffffffffffffffffffffffffffffffffffffff831615611a7a5773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081208190611a1a906123e38561200d565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611a6f929190918252602082015260400190565b60405180910390a250505b73ffffffffffffffffffffffffffffffffffffffff8216156118805773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081208190611aca906120018561200d565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b1f929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b655750600090506003611c3d565b8460ff16601b14158015611b7d57508460ff16601c14155b15611b8e5750600090506004611c3d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611be2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611c3657600060019250925050611c3d565b9150600090505b94509492505050565b6000816004811115611c5a57611c5a61282e565b03611c625750565b6001816004811115611c7657611c7661282e565b03611cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610664565b6002816004811115611cf157611cf161282e565b03611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610664565b6003816004811115611d6c57611d6c61282e565b03611df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b6004816004811115611e0d57611e0d61282e565b036106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff83811660009081526007602052604080822054858416835291205461188092918216911683611989565b73ffffffffffffffffffffffffffffffffffffffff8216611f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610664565b8060026000828254611f689190612795565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611fa2908490612795565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36106b560008383611885565b600061069c8284612795565b82546000908190801561206d57856120266001836127ad565b81548110612036576120366127c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612070565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16925061209e83858763ffffffff16565b91506000811180156120dc575043866120b86001846127ad565b815481106120c8576120c86127c4565b60009182526020909120015463ffffffff16145b15612166576120ea826123ef565b866120f66001846127ad565b81548110612106576121066127c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055506121e6565b85604051806040016040528061217b436116a9565b63ffffffff16815260200161218f856123ef565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b73ffffffffffffffffffffffffffffffffffffffff8216612292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610664565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906123849084906127ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361188083600084611885565b600061069c82846127ad565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610664565b600060208083528351808285015260005b818110156124ca578581018301518582016040015282016124ae565b818111156124dc576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461253457600080fd5b919050565b6000806040838503121561254c57600080fd5b61255583612510565b946020939093013593505050565b60008060006060848603121561257857600080fd5b61258184612510565b925061258f60208501612510565b9150604084013590509250925092565b6000602082840312156125b157600080fd5b5035919050565b6000602082840312156125ca57600080fd5b61069c82612510565b803560ff8116811461253457600080fd5b60008060008060008060c087890312156125fd57600080fd5b61260687612510565b95506020870135945060408701359350612622606088016125d3565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561265757600080fd5b61266088612510565b965061266e60208901612510565b9550604088013594506060880135935061268a608089016125d3565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156126b957600080fd5b6126c283612510565b91506126d060208401612510565b90509250929050565b600080604083850312156126ec57600080fd5b6126f583612510565b9150602083013563ffffffff8116811461270e57600080fd5b809150509250929050565b600181811c9082168061272d57607f821691505b60208210810361187a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156127a8576127a8612766565b500190565b6000828210156127bf576127bf612766565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082612829577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a60a060405234801561001057600080fd5b50604051610aa3380380610aa383398101604081905261002f91610199565b61003833610053565b610041826100a3565b6001600160a01b0316608052506101cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100ab610121565b6001600160a01b0381166101155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61011e81610053565b50565b6000546001600160a01b0316331461017b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161010c565b565b80516001600160a01b038116811461019457600080fd5b919050565b600080604083850312156101ac57600080fd5b6101b58361017d565b91506101c36020840161017d565b90509250929050565b6080516108a76101fc6000396000818161018101528181610298015281816103a0015261052c01526108a76000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80638da5cb5b1161007657806398f1312e1161005b57806398f1312e14610161578063f2fde38b14610169578063f96dae0a1461017c57600080fd5b80638da5cb5b14610119578063918f86741461015857600080fd5b806340c10f19116100a757806340c10f19146100f3578063715018a61461010657806383ea6e971461010e57600080fd5b8062f8900c146100c25780630900f010146100de575b600080fd5b6100cb60015481565b6040519081526020015b60405180910390f35b6100f16100ec366004610776565b6101a3565b005b6100f1610101366004610798565b6102f7565b6100f161058c565b6100cb6301e1338081565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d5565b6100cb6103e881565b6100cb601481565b6100f1610177366004610776565b6105a0565b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6101ab610657565b73ffffffffffffffffffffffffffffffffffffffff8116610253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4d696e744d616e616765723a206d696e74206d616e616765722063616e6e6f7460448201527f20626520746865207a65726f206164647265737300000000000000000000000060648201526084015b60405180910390fd5b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f2fde38b90602401600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b5050505050565b6102ff610657565b600154156104cf57426001541115610399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d696e744d616e616765723a206d696e74696e67206e6f74207065726d69747460448201527f6564207965740000000000000000000000000000000000000000000000000000606482015260840161024a565b6103e860147f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d91906107c2565b610437919061080a565b6104419190610847565b8111156104cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d696e744d616e616765723a206d696e7420616d6f756e74206578636565647360448201527f2063617000000000000000000000000000000000000000000000000000000000606482015260840161024a565b6104dd6301e1338042610882565b6001556040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561057057600080fd5b505af1158015610584573d6000803e3d6000fd5b505050505050565b610594610657565b61059e60006106d8565b565b6105a8610657565b73ffffffffffffffffffffffffffffffffffffffff811661064b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161024a565b610654816106d8565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161024a565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077157600080fd5b919050565b60006020828403121561078857600080fd5b6107918261074d565b9392505050565b600080604083850312156107ab57600080fd5b6107b48361074d565b946020939093013593505050565b6000602082840312156107d457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610842576108426107db565b500290565b60008261087d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610895576108956107db565b50019056fea164736f6c634300080f000a60806040526000805460ff1916600117905534801561001d57600080fd5b506141478061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80637e577a1b11610081578063dcf5edef1161005b578063dcf5edef146101c0578063fa7626d4146101d3578063fc677392146101e057600080fd5b80637e577a1b14610172578063ba414fa614610195578063c21e8865146101ad57600080fd5b806335337aab116100b257806335337aab14610117578063498a3c021461012a578063526dc9551461014a57600080fd5b8062ec31a6146100cd5780631aac97c1146100f3575b600080fd5b6100e06100db3660046136cb565b6101f3565b6040519081526020015b60405180910390f35b610106610101366004613745565b6108dc565b6040516100ea9594939291906138e2565b6100e0610125366004613925565b610fed565b61013d6101383660046136cb565b6117e4565b6040516100ea91906139b1565b61015d6101583660046139c4565b611ec1565b604080519283526020830191909152016100ea565b6101856101803660046139dd565b612179565b6040516100ea9493929190613a26565b61019d6123f8565b60405190151581526020016100ea565b6100e06101bb3660046136cb565b612558565b6100e06101ce366004613a65565b61265f565b60005461019d9060ff1681565b61013d6101ee366004613a97565b6128e6565b6040805160098082526101408201909252600091829190816020015b606081526020019060019003908161020f5790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061026f5761026f613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106102a6576102a6613ad3565b60200260200101819052506040518060400160405280601681526020017f6861736843726f7373446f6d61696e4d65737361676500000000000000000000815250816002815181106102fa576102fa613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561036e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103b49190810190613b32565b816003815181106103c7576103c7613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610450573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104969190810190613b32565b816004815181106104a9576104a9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105789190810190613b32565b8160058151811061058b5761058b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106459190810190613b32565b8160068151811061065857610658613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107129190810190613b32565b8160078151811061072557610725613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906107809086906004016139b1565b600060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107e39190810190613b32565b816008815181106107f6576107f6613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610854908590600401613b7b565b6000604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108b99190810190613c1b565b9050808060200190518101906108cf9190613c50565b9998505050505050505050565b6000808080606081600960405190808252806020026020018201604052801561091957816020015b60608152602001906001900390816109045790505b5090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061096557610965613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061099c5761099c613ad3565b60200260200101819052506040518060600160405280602381526020016140f460239139816002815181106109d3576109d3613ad3565b602090810291909101015286516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a909190810190613b32565b81600381518110610aa357610aa3613ad3565b6020908102919091018101919091528701516040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b7a9190810190613b32565b81600481518110610b8d57610b8d613ad3565b602090810291909101015260408781015190517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c629190810190613b32565b81600581518110610c7557610c75613ad3565b602090810291909101015260608701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d359190810190613b32565b81600681518110610d4857610d48613ad3565b602090810291909101015260808701516040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e089190810190613b32565b81600781518110610e1b57610e1b613ad3565b602090810291909101015260a08701516040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d916371aad10d91610e7a91906004016139b1565b600060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610edd9190810190613b32565b81600881518110610ef057610ef0613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790610f4e908590600401613b7b565b6000604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb39190810190613c1b565b9050600080600080600085806020019051810190610fd19190613d08565b939f50919d509b50995097505050505050505091939590929450565b60408051600b8082526101808201909252600091829190816020015b60608152602001906001900390816110095790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061106957611069613ad3565b602002602001018190525060405180606001604052806024815260200161411760249139816001815181106110a0576110a0613ad3565b60200260200101819052506040518060400160405280601681526020017f686173684465706f7369745472616e73616374696f6e00000000000000000000815250816002815181106110f4576110f4613ad3565b60200260200101819052506040518060800160405280604281526020016140b2604291398160038151811061112b5761112b613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561119f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111e59190810190613b32565b816004815181106111f8576111f8613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112c79190810190613b32565b816005815181106112da576112da613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113a99190810190613b32565b816006815181106113bc576113bc613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611430573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114769190810190613b32565b8160078151811061148957611489613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115439190810190613b32565b8160088151811061155657611556613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613b32565b8160098151811061162c5761162c613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d906116879087906004016139b1565b600060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ea9190810190613b32565b81600a815181106116fd576116fd613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063891604679061175b908590600401613b7b565b6000604051808303816000875af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117c09190810190613c1b565b9050808060200190518101906117d69190613c50565b9a9950505050505050505050565b604080516009808252610140820190925260609160009190816020015b60608152602001906001900390816118015790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061186157611861613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061189857611898613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f646543726f7373446f6d61696e4d6573736167650000000000000000815250816002815181106118ec576118ec613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611960573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119a69190810190613b32565b816003815181106119b9576119b9613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611a889190810190613b32565b81600481518110611a9b57611a9b613ad3565b60209081029190910101526040517f56ca623e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90602401600060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6a9190810190613b32565b81600581518110611b7d57611b7d613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c379190810190613b32565b81600681518110611c4a57611c4a613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d049190810190613b32565b81600781518110611d1757611d17613ad3565b60209081029190910101526040517f71aad10d000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371aad10d90611d729086906004016139b1565b600060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dd59190810190613b32565b81600881518110611de857611de8613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790611e46908590600401613b7b565b6000604051808303816000875af1158015611e65573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eab9190810190613c1b565b9050808060200190518101906108cf9190613c1b565b60408051600480825260a0820190925260009182918291816020015b6060815260200190600190039081611edd5790505090506040518060400160405280600481526020017f6e6f64650000000000000000000000000000000000000000000000000000000081525081600081518110611f3d57611f3d613ad3565b60200260200101819052506040518060600160405280602481526020016141176024913981600181518110611f7457611f74613ad3565b60200260200101819052506040518060400160405280601481526020017f6465636f646556657273696f6e65644e6f6e636500000000000000000000000081525081600281518110611fc857611fc8613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260048101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801561203c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120829190810190613b32565b8160038151811061209557612095613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906389160467906120f3908590600401613b7b565b6000604051808303816000875af1158015612112573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121589190810190613c1b565b90508080602001905181019061216e9190613d6c565b935093505050915091565b60408051600580825260c08201909252600091606091829182918591816020015b606081526020019060019003908161219a5790505090506040518060400160405280601a81526020017f2e2f746573742d636173652d67656e657261746f722f66757a7a000000000000815250816000815181106121fa576121fa613ad3565b60200260200101819052506040518060400160405280600281526020017f2d6d0000000000000000000000000000000000000000000000000000000000008152508160018151811061224e5761224e613ad3565b60200260200101819052506040518060400160405280600481526020017f7472696500000000000000000000000000000000000000000000000000000000815250816002815181106122a2576122a2613ad3565b60200260200101819052506040518060400160405280600281526020017f2d76000000000000000000000000000000000000000000000000000000000000815250816003815181106122f6576122f6613ad3565b6020026020010181905250858160048151811061231557612315613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612370908490600401613b7b565b6000604051808303816000875af115801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123d59190810190613c1b565b8060200190518101906123e89190613d90565b9450945094509450509193509193565b60008054610100900460ff16156124185750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156125535760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c65640000000000000000000000000000000000000000000000000000828401528251808303840181526060830190935260009290916124bd917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001613e22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124f591613e6a565b6000604051808303816000865af19150503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b509150508080602001905181019061254f9190613e97565b9150505b919050565b6040805160098082526101408201909252600091829190816020015b60608152602001906001900390816125745790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106125d4576125d4613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061260b5761260b613ad3565b60200260200101819052506040518060400160405280600e81526020017f686173685769746864726177616c000000000000000000000000000000000000815250816002815181106102fa576102fa613ad3565b6040805160078082526101008201909252600091829190816020015b606081526020019060019003908161267b5790505090506040518060400160405280600481526020017f6e6f646500000000000000000000000000000000000000000000000000000000815250816000815181106126db576126db613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061271257612712613ad3565b60200260200101819052506040518060400160405280601381526020017f686173684f7574707574526f6f7450726f6f66000000000000000000000000008152508160028151811061276657612766613ad3565b602090810291909101015261277a866132a3565b8160038151811061278d5761278d613ad3565b60209081029190910101526127a1856132a3565b816004815181106127b4576127b4613ad3565b60209081029190910101526127c8846132a3565b816005815181106127db576127db613ad3565b60209081029190910101526127ef836132a3565b8160068151811061280257612802613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790612860908590600401613b7b565b6000604051808303816000875af115801561287f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526128c59190810190613c1b565b9050808060200190518101906128db9190613c50565b979650505050505050565b60408051600c8082526101a0820190925260609160009190816020015b60608152602001906001900390816129035790505090506040518060400160405280600481526020017f6e6f6465000000000000000000000000000000000000000000000000000000008152508160008151811061296357612963613ad3565b6020026020010181905250604051806060016040528060248152602001614117602491398160018151811061299a5761299a613ad3565b60200260200101819052506040518060400160405280601881526020017f656e636f64654465706f7369745472616e73616374696f6e0000000000000000815250816002815181106129ee576129ee613ad3565b602090810291909101810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d906356ca623e90612a2590860186613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612a8e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ad49190810190613b32565b81600381518110612ae757612ae7613ad3565b60200260200101819052507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166356ca623e846020016020810190612b449190613eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612bf39190810190613b32565b81600481518110612c0657612c06613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260608401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612c7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612cc39190810190613b32565b81600581518110612cd657612cd6613ad3565b60209081029190910101526040517f6900a3ae00000000000000000000000000000000000000000000000000000000815260808401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015612d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d939190810190613b32565b81600681518110612da657612da6613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d636900a3ae612ddb60c0860160a08701613ecf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff9091166004820152602401600060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612e7e9190810190613b32565b81600781518110612e9157612e91613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371dce7da612ec66060860160408701613eea565b6040518263ffffffff1660e01b8152600401612ee6911515815260200190565b600060405180830381865afa158015612f03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f499190810190613b32565b81600881518110612f5c57612f5c613ad3565b6020908102919091010152737109709ecfa91a80626ff3989d68f67f5b1dd12d6371aad10d612f8e60c0860186613f07565b6040518363ffffffff1660e01b8152600401612fab929190613f73565b600060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261300e9190810190613b32565b8160098151811061302157613021613ad3565b60209081029190910101526040517fb11a19e800000000000000000000000000000000000000000000000000000000815260e08401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b11a19e890602401600060405180830381865afa158015613098573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130de9190810190613b32565b81600a815181106130f1576130f1613ad3565b60209081029190910101526040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526101008401356004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015613169573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526131af9190810190613b32565b81600b815181106131c2576131c2613ad3565b60209081029190910101526040517f89160467000000000000000000000000000000000000000000000000000000008152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90638916046790613220908590600401613b7b565b6000604051808303816000875af115801561323f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526132859190810190613c1b565b90508080602001905181019061329b9190613c1b565b949350505050565b6060816000036132e657505060408051808201909152600481527f3078303000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561330957806132fa81613fef565b915050600882901c91506132ea565b61329b84826060600061331d836002614027565b613328906002614064565b67ffffffffffffffff81111561334057613340613580565b6040519080825280601f01601f19166020018201604052801561336a576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133a1576133a1613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061340457613404613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613440846002614027565b61344b906001614064565b90505b60018111156134e8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061348c5761348c613ad3565b1a60f81b8282815181106134a2576134a2613ad3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936134e18161407c565b905061344e565b508315613555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640160405180910390fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156135d2576135d2613580565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f613580565b604052919050565b600067ffffffffffffffff82111561364157613641613580565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061368061367b84613627565b6135d8565b905082815283838301111561369457600080fd5b828260208301376000602084830101529392505050565b600082601f8301126136bc57600080fd5b6135558383356020850161366d565b60008060008060008060c087890312156136e457600080fd5b863595506136f46020880161355c565b94506137026040880161355c565b9350606087013592506080870135915060a087013567ffffffffffffffff81111561372c57600080fd5b61373889828a016136ab565b9150509295509295509295565b60006020828403121561375757600080fd5b813567ffffffffffffffff8082111561376f57600080fd5b9083019060c0828603121561378357600080fd5b61378b6135af565b8235815261379b6020840161355c565b60208201526137ac6040840161355c565b6040820152606083013560608201526080830135608082015260a0830135828111156137d757600080fd5b6137e3878286016136ab565b60a08301525095945050505050565b60005b8381101561380d5781810151838201526020016137f5565b8381111561381c576000848401525b50505050565b6000815180845261383a8160208601602086016137f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156138d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08684030189526138c3838351613822565b98840198925090830190600101613889565b5090979650505050505050565b85815284602082015283604082015282606082015260a0608082015260006128db60a083018461386c565b803567ffffffffffffffff8116811461255357600080fd5b600080600080600080600060e0888a03121561394057600080fd5b6139498861355c565b96506139576020890161355c565b955060408801359450606088013593506139736080890161390d565b925060a088013567ffffffffffffffff81111561398f57600080fd5b61399b8a828b016136ab565b92505060c0880135905092959891949750929550565b6020815260006135556020830184613822565b6000602082840312156139d657600080fd5b5035919050565b6000602082840312156139ef57600080fd5b813567ffffffffffffffff811115613a0657600080fd5b8201601f81018413613a1757600080fd5b61329b8482356020840161366d565b848152608060208201526000613a3f6080830186613822565b8281036040840152613a518186613822565b905082810360608401526128db818561386c565b60008060008060808587031215613a7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613aa957600080fd5b813567ffffffffffffffff811115613ac057600080fd5b8201610120818503121561355557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b1061367b84613627565b9050828152838383011115613b2457600080fd5b6135558360208301846137f2565b600060208284031215613b4457600080fd5b815167ffffffffffffffff811115613b5b57600080fd5b8201601f81018413613b6c57600080fd5b61329b84825160208401613b02565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613bee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613bdc858351613822565b94509285019290850190600101613ba2565b5092979650505050505050565b600082601f830112613c0c57600080fd5b61355583835160208501613b02565b600060208284031215613c2d57600080fd5b815167ffffffffffffffff811115613c4457600080fd5b61329b84828501613bfb565b600060208284031215613c6257600080fd5b5051919050565b600082601f830112613c7a57600080fd5b8151602067ffffffffffffffff80831115613c9757613c97613580565b8260051b613ca68382016135d8565b9384528581018301938381019088861115613cc057600080fd5b84880192505b85831015613cfc57825184811115613cde5760008081fd5b613cec8a87838c0101613bfb565b8352509184019190840190613cc6565b98975050505050505050565b600080600080600060a08688031215613d2057600080fd5b85519450602086015193506040860151925060608601519150608086015167ffffffffffffffff811115613d5357600080fd5b613d5f88828901613c69565b9150509295509295909350565b60008060408385031215613d7f57600080fd5b505080516020909101519092909150565b60008060008060808587031215613da657600080fd5b84519350602085015167ffffffffffffffff80821115613dc557600080fd5b613dd188838901613bfb565b94506040870151915080821115613de757600080fd5b613df388838901613bfb565b93506060870151915080821115613e0957600080fd5b50613e1687828801613c69565b91505092959194509250565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251613e5c8160048501602087016137f2565b919091016004019392505050565b60008251613e7c8184602087016137f2565b9190910192915050565b8015158114613e9457600080fd5b50565b600060208284031215613ea957600080fd5b815161355581613e86565b600060208284031215613ec657600080fd5b6135558261355c565b600060208284031215613ee157600080fd5b6135558261390d565b600060208284031215613efc57600080fd5b813561355581613e86565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f3c57600080fd5b83018035915067ffffffffffffffff821115613f5757600080fd5b602001915036819003821315613f6c57600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361402057614020613fc0565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561405f5761405f613fc0565b500290565b6000821982111561407757614077613fc0565b500190565b60008161408b5761408b613fc0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fe30783030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303067657450726f76655769746864726177616c5472616e73616374696f6e496e70757473646973742f736372697074732f646966666572656e7469616c2d74657374696e672e6a73a164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
