UNPKG

randomness-js

Version:

A library for consuming, verifying and using randomness from the dcipher network

638 lines (636 loc) 164 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Contract, ContractFactory, ContractTransactionResponse, Interface, } from "ethers"; import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; import type { NonPayableOverrides } from "../../common"; import type { RandomnessTest, RandomnessTestInterface, } from "../../Randomness.t.sol/RandomnessTest"; const _abi = [ { type: "function", name: "IS_TEST", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "excludeArtifacts", inputs: [], outputs: [ { name: "excludedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeContracts", inputs: [], outputs: [ { name: "excludedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeSelectors", inputs: [], outputs: [ { name: "excludedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "excludeSenders", inputs: [], outputs: [ { name: "excludedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "failed", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "setUp", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "targetArtifactSelectors", inputs: [], outputs: [ { name: "targetedArtifactSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzArtifactSelector[]", components: [ { name: "artifact", type: "string", internalType: "string", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetArtifacts", inputs: [], outputs: [ { name: "targetedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "targetContracts", inputs: [], outputs: [ { name: "targetedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "targetInterfaces", inputs: [], outputs: [ { name: "targetedInterfaces_", type: "tuple[]", internalType: "struct StdInvariant.FuzzInterface[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "artifacts", type: "string[]", internalType: "string[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSelectors", inputs: [], outputs: [ { name: "targetedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSenders", inputs: [], outputs: [ { name: "targetedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "test_Deployment_Configurations", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_Randomness_SignatureVerification", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_SelectArrayIndices_One_returnsAll", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_SelectArrayIndices_Zero_returnsEmpty", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_Update_SignatureScheme", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_selectArrayIndices_ReturnsCorrectCount", inputs: [], outputs: [], stateMutability: "pure", }, { type: "event", name: "log", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_address", inputs: [ { name: "", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_bytes", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_bytes32", inputs: [ { name: "", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_int", inputs: [ { name: "", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_address", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes32", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_string", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_named_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_string", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_uint", inputs: [ { name: "", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "logs", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, ] as const; const _bytecode = "0x600c8054600160ff199182168117909255601f805490911690911790556101206040526080808052806201254260a03960229061003c908261012a565b506040518060600160405280604081526020016201250260409139602390610064908261012a565b5060408051602081019091525f8152602490610080908261012a565b5034801561008c575f5ffd5b506101e4565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100ba57607f821691505b6020821081036100d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012557805f5260205f20601f840160051c810160208510156101035750805b601f840160051c820191505b81811015610122575f815560010161010f565b50505b505050565b81516001600160401b0381111561014357610143610092565b6101578161015184546100a6565b846100de565b6020601f821160018114610189575f83156101725750848201515b5f19600385901b1c1916600184901b178455610122565b5f84815260208120601f198516915b828110156101b85787850151825560209485019460019092019101610198565b50848210156101d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6201230f80620001f35f395ff3fe608060405234801561000f575f5ffd5b5060043610610149575f3560e01c806385226c81116100c7578063c426f8dd1161007d578063e20c9f7111610063578063e20c9f7114610229578063edf06c3814610231578063fa7626d414610239575f5ffd5b8063c426f8dd14610219578063dca0425114610221575f5ffd5b8063b0464fdc116100ad578063b0464fdc146101f1578063b5508aa9146101f9578063ba414fa614610201575f5ffd5b806385226c81146101c7578063916a17c6146101dc575f5ffd5b80632ade38801161011c5780633f7286f4116101025780633f7286f4146101a2578063658e1726146101aa57806366d9a9a0146101b2575f5ffd5b80632ade3880146101855780633e5e3c231461019a575f5ffd5b80630a9254e41461014d5780631245431f14610157578063179c209b1461015f5780631ed7831c14610167575b5f5ffd5b610155610246565b005b61015561031e565b610155610431565b61016f610541565b60405161017c9190612ead565b60405180910390f35b61018d6105ae565b60405161017c9190612f33565b61016f6106f7565b61016f610762565b6101556107cd565b6101ba610bc2565b60405161017c91906130a1565b6101cf610d3b565b60405161017c919061313d565b6101e4610e06565b60405161017c91906131b2565b6101e4610f09565b6101cf61100c565b6102096110d7565b604051901515815260200161017c565b6101556111a7565b6101556112e7565b61016f611424565b61015561148f565b601f546102099060ff1681565b61024e611e46565b610256611e4e565b602780547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161790915560288054821693831693841790556026805482169483169490941790935560258054909316938116939093179091556020546102d7921690612468565b602980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b604080515f808252602082019092526040517f298f239c0000000000000000000000000000000000000000000000000000000081525f60048201819052600160248301527fdeadbeef00000000000000000000000000000000000000000000000000000000604483015291925073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c906064015f60405180830381865af41580156103c4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103eb91908101906132db565b905061042d82826040518060400160405280601381526020017f617272617920776173206e6f7420656d7074790000000000000000000000000081525061254b565b5050565b6040517f298f239c000000000000000000000000000000000000000000000000000000008152606460048201819052600a602483018190527fdeadbeef000000000000000000000000000000000000000000000000000000006044840152915f9073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c9084015f60405180830381865af41580156104ca573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104f191908101906132db565b9050610518815184604051806060016040528060288152602001620121b8602891396125d0565b5f5b815181101561053b578281111561053357610533613387565b60010161051a565b50505050565b606060168054806020026020016040519081016040528092919081815260200182805480156105a457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610579575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156106ee575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106d7578382905f5260205f2001805461064c906133b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610678906133b4565b80156106c35780601f1061069a576101008083540402835291602001916106c3565b820191905f5260205f20905b8154815290600101906020018083116106a657829003601f168201915b50505050508152602001906001019061062f565b5050505081525050815260200190600101906105d1565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156105a457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610579575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156105a457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610579575050505050905090565b602854601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775600482015261010090910473ffffffffffffffffffffffffffffffffffffffff90811660248301526108969216906391d14854906044015b602060405180830381865afa15801561086d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108919190613405565b612624565b602754601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775600482015261010090910473ffffffffffffffffffffffffffffffffffffffff908116602483015261091f9216906391d1485490604401610852565b60255473ffffffffffffffffffffffffffffffffffffffff1661094457610944613387565b60265473ffffffffffffffffffffffffffffffffffffffff1661096957610969613387565b60275473ffffffffffffffffffffffffffffffffffffffff1661098e5761098e613387565b60285473ffffffffffffffffffffffffffffffffffffffff166109b3576109b3613387565b60295473ffffffffffffffffffffffffffffffffffffffff166109d8576109d8613387565b602754604080517fe6b3ca7100000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff169163e6b3ca719160048083019260209291908290030181865afa158015610a45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a69919061344c565b73ffffffffffffffffffffffffffffffffffffffff1603610a8c57610a8c613387565b602654604080517f5f7c75220000000000000000000000000000000000000000000000000000000081529051610b269273ffffffffffffffffffffffffffffffffffffffff1691635f7c7522916004808301925f9291908290030181865afa158015610afa573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b219190810190613467565b6126a0565b602654604080517f5f7c75220000000000000000000000000000000000000000000000000000000081529051610bc09273ffffffffffffffffffffffffffffffffffffffff1691635f7c7522916004808301925f9291908290030181865afa158015610b94573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bbb9190810190613467565b612714565b565b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156106ee578382905f5260205f2090600202016040518060400160405290815f82018054610c15906133b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c41906133b4565b8015610c8c5780601f10610c6357610100808354040283529160200191610c8c565b820191905f5260205f20905b815481529060010190602001808311610c6f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d2357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610cd05790505b50505050508152505081526020019060010190610be5565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156106ee578382905f5260205f20018054610d7b906133b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610da7906133b4565b8015610df25780601f10610dc957610100808354040283529160200191610df2565b820191905f5260205f20905b815481529060010190602001808311610dd557829003601f168201915b505050505081526020019060010190610d5e565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156106ee575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015610ef157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610e9e5790505b50505050508152505081526020019060010190610e29565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156106ee575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015610ff457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610fa15790505b50505050508152505081526020019060010190610f2c565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156106ee578382905f5260205f2001805461104c906133b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611078906133b4565b80156110c35780601f1061109a576101008083540402835291602001916110c3565b820191905f5260205f20905b8154815290600101906020018083116110a657829003601f168201915b50505050508152602001906001019061102f565b6008545f9060ff16156110ee575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561117c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a091906134fb565b1415905090565b602854602754604080518082018252600581527f424e323534000000000000000000000000000000000000000000000000000000602082015290517f317e6e73000000000000000000000000000000000000000000000000000000008152600a936001935f9373__$485e63c703b57fb39db2d057ed0b990874$__9363317e6e73936112599373ffffffffffffffffffffffffffffffffffffffff9182169391169160239189918b9190600401613512565b602060405180830381865af4158015611274573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112989190613405565b90506112d9816040518060400160405280601d81526020017f5369676e617475726520766572696669636174696f6e206661696c6564000000815250612785565b6112e2816127ff565b505050565b6040805160018082528183019092525f91602080830190803683370190505090505f815f8151811061131b5761131b61366b565b60209081029190910101526040517f298f239c00000000000000000000000000000000000000000000000000000000815260016004820181905260248201527fdeadbeef0000000000000000000000000000000000000000000000000000000060448201525f9073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c906064015f60405180830381865af41580156113bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113e291908101906132db565b905061042d82826040518060400160405280601a81526020017f66756c6c206172726179207761736e27742072657475726e656400000000000081525061254b565b606060158054806020026020016040519081016040528092919081815260200182805480156105a457602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610579575050505050905090565b60408051808201909152600581527f424e32353500000000000000000000000000000000000000000000000000000060208201525f6114cd8261286e565b90506115215f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602581526020016201220360259139612785565b61155d8173ffffffffffffffffffffffffffffffffffffffff163b5f14604051806060016040528060238152602001620121e060239139612785565b601f546040517fca669fa700000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156115dd575f5ffd5b505af11580156115ef573d5f5f3e3d5ffd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f722073636860448201527f656d6541646472657373000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015f604051808303815f87803b1580156116a9575f5ffd5b505af11580156116bb573d5f5f3e3d5ffd5b50506025546040517fbab867da00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063bab867da91506117179085908590600401613698565b5f604051808303815f87803b15801561172e575f5ffd5b505af1158015611740573d5f5f3e3d5ffd5b50506026546040805160608101909152602d80825273ffffffffffffffffffffffffffffffffffffffff90921694506117889350841515925090620122806020830139612785565b6117c45f8273ffffffffffffffffffffffffffffffffffffffff163b116040518060600160405280602381526020016201222860239139612785565b601f546040517fca669fa700000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611844575f5ffd5b505af1158015611856573d5f5f3e3d5ffd5b50506025546040517fbab867da00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063bab867da91506118b29085908590600401613698565b5f604051808303815f87803b1580156118c9575f5ffd5b505af11580156118db573d5f5f3e3d5ffd5b50506025546040517f5bb09cf8000000000000000000000000000000000000000000000000000000008152611998935073ffffffffffffffffffffffffffffffffffffffff858116935090911690635bb09cf89061193d9087906004016136cf565b602060405180830381865afa158015611958573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197c919061344c565b73ffffffffffffffffffffffffffffffffffffffff1614612624565b50602854601f546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090920482166004820152911690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611a20575f5ffd5b505af1158015611a32573d5f5f3e3d5ffd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536368656d6520616c726561647920616464656420666f7220736368656d654960448201527f44000000000000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015f604051808303815f87803b158015611aec575f5ffd5b505af1158015611afe573d5f5f3e3d5ffd5b50506025546040517fbab867da00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063bab867da9150611b5a9085908590600401613698565b5f604051808303815f87803b158015611b71575f5ffd5b505af1158015611b83573d5f5f3e3d5ffd5b50506025546040517f5bb09cf8000000000000000000000000000000000000000000000000000000008152611c5b935073ffffffffffffffffffffffffffffffffffffffff858116935090911690635bb09cf890611be59087906004016136cf565b602060405180830381865afa158015611c00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c24919061344c565b73ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280603581526020016201224b60359139612785565b601f546040517fca669fa700000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611cdb575f5ffd5b505af1158015611ced573d5f5f3e3d5ffd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f722073636860448201527f656d6541646472657373000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015f604051808303815f87803b158015611da7575f5ffd5b505af1158015611db9573d5f5f3e3d5ffd5b50506025546040517fbab867da00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063bab867da9150611e159085905f90600401613698565b5f604051808303815f87803b158015611e2c575f5ffd5b505af1158015611e3e573d5f5f3e3d5ffd5b505050505050565b610bc061287f565b601f546040517f06447d5600000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1660048201525f90819081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611ed6575f5ffd5b505af1158015611ee8573d5f5f3e3d5ffd5b505050505f60228054611efa906133b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f26906133b4565b8015611f715780601f10611f4857610100808354040283529160200191611f71565b820191905f5260205f20905b815481529060010190602001808311611f5457829003601f168201915b5050505050806020019051810190611f899190613723565b90505f604051611f9890612e59565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015611fce573d5f5f3e3d5ffd5b5094506040518060400160405280825f0151600160028110611ff257611ff261366b565b60200201518152602001825f01515f600281106120115761201161366b565b60200201518152506040518060400160405280836020015160016002811061203b5761203b61366b565b6020020151815260200183602001515f6002811061205b5761205b61366b565b6020020151905260405161206e90612e67565b612079929190613784565b604051809103905ff080158015612092573d5f5f3e3d5ffd5b50604080518082018252600581527f424e323534000000000000000000000000000000000000000000000000000000602082015290517fbab867da00000000000000000000000000000000000000000000000000000000815291955073ffffffffffffffffffffffffffffffffffffffff87169163bab867da9161211a918890600401613698565b5f604051808303815f87803b158015612131575f5ffd5b505af1158015612143573d5f5f3e3d5ffd5b505050505f60405161215490612e75565b604051809103905ff08015801561216d573d5f5f3e3d5ffd5b5090505f60405161217d90612e83565b604051809103905ff080158015612196573d5f5f3e3d5ffd5b5090505f826040516121a790612e91565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156121eb573d5f5f3e3d5ffd5b5090506122116040518060600160405280602d8152602001620122ad602d913982612bc6565b5f8260405161221f90612e91565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff080158015612263573d5f5f3e3d5ffd5b5090506122896040518060600160405280602e81526020016201218a602e913982612bc6565b601f546040517f485cc95500000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff90811660048301528a811660248301529197509195508591879183169063485cc955906044015f604051808303815f87803b15801561230a575f5ffd5b505af115801561231c573d5f5f3e3d5ffd5b5050601f546040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015261010090920482166024820152908a16925063485cc95591506044015f604051808303815f87803b158015612397575f5ffd5b505af11580156123a9573d5f5f3e3d5ffd5b506207a120925062061a809150620f42409050622dc6c0620c3500600a6113886123d98e88888888888888612c39565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612440575f5ffd5b505af1158015612452573d5f5f3e3d5ffd5b5050505050505050505050505050505090919293565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156124e2575f5ffd5b505af11580156124f4573d5f5f3e3d5ffd5b50505050818360405161250690612e9f565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103905ff080158015612543573d5f5f3e3d5ffd5b509392505050565b6040517f5d18c73a000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90635d18c73a9061259f908690869086906004016137cf565b5f6040518083038186803b1580156125b5575f5ffd5b505afa1580156125c7573d5f5f3e3d5ffd5b50505050505050565b6040517f88b44c85000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061259f90869086908690600401613811565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024015f6040518083038186803b158015612687575f5ffd5b505afa158015612699573d5f5f3e3d5ffd5b5050505050565b612711816040516024016126b491906136cf565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612cf4565b50565b6127118160405160240161272891906136cf565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052612cf4565b6040517fa34edc03000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a34edc03906127d79085908590600401613838565b5f6040518083038186803b1580156127ed575f5ffd5b505afa158015611e3e573d5f5f3e3d5ffd5b60405181151560248201526127119060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed00000000000000000000000000000000000000000000000000000000179052612cf4565b5f61287882612cfd565b5092915050565b6128bd6040518060400160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525061286e565b601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061293b6040518060400160405280600581526020017f616c69636500000000000000000000000000000000000000000000000000000081525061286e565b60205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506129b86040518060400160405280600381526020017f626f62000000000000000000000000000000000000000000000000000000000081525061286e565b602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601f546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526101009091049091166004820152678ac7230489e800006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b158015612a74575f5ffd5b505af1158015612a86573d5f5f3e3d5ffd5b50506020546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152678ac7230489e800006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b158015612b14575f5ffd5b505af1158015612b26573d5f5f3e3d5ffd5b50506021546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152678ac7230489e800006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b158015612bb4575f5ffd5b505af115801561053b573d5f5f3e3d5ffd5b61042d8282604051602401612bdc929190613698565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052612cf4565b6040517f45fa435400000000000000000000000000000000000000000000000000000000815263ffffffff8089166004830152808816602483015280871660448301528086166064830152808516608483015260ff841660a4830152821660c482015273ffffffffffffffffffffffffffffffffffffffff8916906345fa43549060e4015f604051808303815f87803b158015612cd4575f5ffd5b505af1158015612ce6573d5f5f3e3d5ffd5b505050505050505050505050565b61271181612e3a565b5f5f82604051602001612d10919061385a565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015612d8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db3919061344c565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890612e089085908790600401613870565b5f604051808303815f87803b158015612e1f575f5ffd5b505af1158015612e31573d5f5f3e3d5ffd5b50505050915091565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b610cb6806200389f83390190565b612d52806200455583390190565b613bca80620072a783390190565b615a68806200ae7183390190565b61044680620108d983390190565b61146b8062010d1f83390190565b602080825282518282018190525f918401906040840190835b81811015612efa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612ec6565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613039577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b8181101561301f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352613009848651612f05565b6020958601959094509290920191600101612fcf565b509197505050602094850194929092019150600101612f59565b50929695505050505050565b5f8151808452602084019350602083015f5b828110156130975781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101613057565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613039577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261310b6040880182612f05565b90506020820151915086810360208801526131268183613045565b9650505060209384019391909101906001016130c7565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613039577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261319d858351612f05565b94506020938401939190910190600101613163565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613039577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff8151168652602081015190506040602087015261323e6040870182613045565b95505060209384019391909101906001016131d8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156132a4576132a4613254565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156132d3576132d3613254565b604052919050565b5f602082840312156132eb575f5ffd5b815167ffffffffffffffff811115613301575f5ffd5b8201601f81018413613311575f5ffd5b805167ffffffffffffffff81111561332b5761332b613254565b8060051b61333b602082016132aa565b91825260208184018101929081019087841115613356575f5ffd5b6020850194505b8385101561337c5784518083526020958601959093509091019061335d565b979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b600181811c908216806133c857607f821691505b6020821081036133ff577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215613415575f5ffd5b81518015158114613424575f5ffd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612711575f5ffd5b5f6020828403121561345c575f5ffd5b81516134248161342b565b5f60208284031215613477575f5ffd5b815167ffffffffffffffff81111561348d575f5ffd5b8201601f8101841361349d575f5ffd5b805167ffffffffffffffff8111156134b7576134b7613254565b6134ca6020601f19601f840116016132aa565b8181528560208385010111156134de575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561350b575f5ffd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260c060408201525f5f86545f8160011c9050600182168061356957607f821691505b6020821081036135a0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b60c0860182905260e086018180156135bf57600181146135f35761361f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516825283151560051b8201955061361f565b5f8c8152602090205f5b85811015613619578154848201526001909101906020016135fd565b83019650505b505050505085606084015261364c608084018673ffffffffffffffffffffffffffffffffffffffff169052565b82810360a084015261365e8185612f05565b9998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604081525f6136aa6040830185612f05565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b602081525f6134246020830184612f05565b5f82601f8301126136f0575f5ffd5b6136f8613281565b806040840185811115613709575f5ffd5b845b81811015612efa57805184526020938401930161370b565b5f6080828403128015613734575f5ffd5b5061373d613281565b61374784846136e1565b815261375684604085016136e1565b60208201529392505050565b805f5b600281101561053b578151845260209384019390910190600101613765565b608081016137928285613762565b6134246040830184613762565b5f8151808452602084019350602083015f5b828110156130975781518652602095860195909101906001016137b1565b606081525f6137e1606083018661379f565b82810360208401526137f3818661379f565b905082810360408401526138078185612f05565b9695505050505050565b838152826020820152606060408201525f61382f6060830184612f05565b95945050505050565b8215158152604060208201525f6138526040830184612f05565b949350505050565b5f82518060208501845e5f920191825250919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6138526040830184612f0556fe608060405234801561000f575f5ffd5b50604051610cb6380380610cb683398101604081905261002e916101a7565b6001600160a01b03811661003f5750335b6100495f826100fe565b61008e5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b6100b87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775826100fe565b6100f85760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b6044820152606401610085565b506101d4565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661019e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101563390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101a1565b505f5b92915050565b5f602082840312156101b7575f5ffd5b81516001600160a01b03811681146101cd575f5ffd5b9392505050565b610ad5806101e15f395ff3fe608060405234801561000f575f5ffd5b50600436106100c4575f3560e01c80635bb09cf81161007d578063a217fddf11610058578063a217fddf146101fd578063bab867da14610204578063d547741f14610217575f5ffd5b80635bb09cf81461015b57806375b238fc1461019357806391d14854146101ba575f5ffd5b80632f2ff15d116100ad5780632f2ff15d146101205780632fc9fa331461013557806336568abe14610148575f5ffd5b806301ffc9a7146100c8578063248a9ca3146100f0575b5f5ffd5b6100db6100d636600461090d565b61022a565b60405190151581526020015b60405180910390f35b6101126100fe366004610953565b5f9081526020819052604090206001015490565b6040519081526020016100e7565b61013361012e366004610992565b6102c2565b005b6100db610143366004610a01565b6102ec565b610133610156366004610992565b610346565b61016e610169366004610a01565b6103a4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e7565b6101127fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6100db6101c8366004610992565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101125f81565b610133610212366004610a40565b6103e5565b610133610225366004610992565b6106a1565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f828152602081905260409020600101546102dc816106c5565b6102e683836106d2565b50505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff1660018484604051610316929190610a90565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff161415905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610395576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61039f82826107cb565b505050565b5f600183836040516103b7929190610a90565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16905092915050565b61040e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756106c5565b73ffffffffffffffffffffffffffffffffffffffff811615801590610449575073ffffffffffffffffffffffffffffffffffffffff81163b15155b6104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f722073636860448201527f656d65416464726573730000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660018484604051610503929190610a90565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536368656d6520616c726561647920616464656420666f7220736368656d654960448201527f440000000000000000000000000000000000000000000000000000000000000060648201526084016104d1565b80600184846040516105c9929190610a90565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915560019061062e9085908590610a90565b9081526040519081900360200181205473ffffffffffffffffffffffffffffffffffffffff16906106629085908590610a90565b604051908190038120428252907f0a1cd6a1e0a7b200d28ead555f3cee96e0d2def049535fbcfdc2926bc4cec5049060200160405180910390a3505050565b5f828152602081905260409020600101546106bb816106c5565b6102e683836107cb565b6106cf8133610884565b50565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166107c4575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107623390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102bc565b505f6102bc565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156107c4575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102bc565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610909576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016104d1565b5050565b5f6020828403121561091d575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461094c575f5ffd5b9392505050565b5f60208284031215610963575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461098d575f5ffd5b919050565b5f5f604083850312156109a3575f5ffd5b823591506109b36020840161096a565b90509250929050565b5f5f83601f8401126109cc575f5ffd5b50813567ffffffffffffffff8111156109e3575f5ffd5b6020830191508360208285010111156109fa575f5ffd5b9250929050565b5f5f60208385031215610a12575f5ffd5b823567ffffffffffffffff811115610a28575f5ffd5b610a34858286016109bc565b90969095509350505050565b5f5f5f60408486031215610a52575f5ffd5b833567ffffffffffffffff811115610a68575f5ffd5b610a74868287016109bc565b9094509250610a8790506020850161096a565b90509250925092565b818382375f910190815291905056fea2646970667358221220ca302fb545070edc7e5af4ff6b457ca6189d38ca32f67d40fd6a12877221163564736f6c634300081c00335f60c081815260e0829052608081815261014060405261010083815261012084905260a052919061003390829060026102cd565b50602082015161004990600280840191906102cd565b505050348015610057575f5ffd5b50604051612d52380380612d528339810160408190526100769161039f565b6040805180820190915282815260208101829052829082905f61009b818560026102cd565b5060208201516100b190600280840191906102cd565b5090505050506100cd6100c861010260201b60201c565b610106565b6040516020016100dd91906103d2565b604051602081830303815290604052600490816100fa91906104c4565b5050506105d6565b4690565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015281516042808252608082019093526060925f9190602082018180368337019050509050600360fc1b815f815181106101665761016661057e565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106101945761019461057e565b60200101906001600160f81b03191690815f1a9053505f5b60208110156102c5578260048683602081106101ca576101ca61057e565b1a60f81b6001600160f81b031916901c60f81c60ff16815181106101f0576101f061057e565b01602001516001600160f81b0319168261020b8360026105a6565b6102169060026105c3565b815181106102265761022661057e565b60200101906001600160f81b03191690815f1a9053508285826020811061024f5761024f61057e565b825191901a600f169081106102665761026661057e565b01602001516001600160f81b031916826102818360026105a6565b61028c9060026105c3565b6102979060016105c3565b815181106102a7576102a761057e565b60200101906001600160f81b03191690815f1a9053506001016101ac565b509392505050565b82600281019282156102fb579160200282015b828111156102fb5782518255916020019190600101906102e0565b5061030792915061030b565b5090565b5b80821115610307575f815560010161030c565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610342575f5ffd5b604080519081016001600160