// This file was autogenerated by Hardhat, do not edit it. // prettier-ignore // tslint:disable // eslint-disable // biome-ignore format: see above export interface UniversalResolver$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "UniversalResolver"; readonly sourceName: "contracts/universalResolver/UniversalResolver.sol"; readonly abi: [{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"contract ENS","name":"ens","type":"address"},{"internalType":"contract IGatewayProvider","name":"batchGatewayProvider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"dns","type":"bytes"}],"name":"DNSDecodingFailed","type":"error"},{"inputs":[{"internalType":"string","name":"ens","type":"string"}],"name":"DNSEncodingFailed","type":"error"},{"inputs":[],"name":"EmptyAddress","type":"error"},{"inputs":[{"internalType":"uint16","name":"status","type":"uint16"},{"internalType":"string","name":"message","type":"string"}],"name":"HttpError","type":"error"},{"inputs":[],"name":"InvalidBatchGatewayResponse","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string[]","name":"urls","type":"string[]"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes4","name":"callbackFunction","type":"bytes4"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"OffchainLookup","type":"error"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"OffsetOutOfBoundsError","type":"error"},{"inputs":[{"internalType":"bytes","name":"errorData","type":"bytes"}],"name":"ResolverError","type":"error"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"address","name":"resolver","type":"address"}],"name":"ResolverNotContract","type":"error"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"}],"name":"ResolverNotFound","type":"error"},{"inputs":[{"internalType":"string","name":"primary","type":"string"},{"internalType":"bytes","name":"primaryAddress","type":"bytes"}],"name":"ReverseAddressMismatch","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"UnsupportedResolverProfile","type":"error"},{"inputs":[],"name":"batchGatewayProvider","outputs":[{"internalType":"contract IGatewayProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"call","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"flags","type":"uint256"}],"internalType":"struct CCIPBatcher.Lookup[]","name":"lookups","type":"tuple[]"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"internalType":"struct CCIPBatcher.Batch","name":"batch","type":"tuple"}],"name":"ccipBatch","outputs":[{"components":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"call","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"flags","type":"uint256"}],"internalType":"struct CCIPBatcher.Lookup[]","name":"lookups","type":"tuple[]"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"internalType":"struct CCIPBatcher.Batch","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"ccipBatchCallback","outputs":[{"components":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"call","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"flags","type":"uint256"}],"internalType":"struct CCIPBatcher.Lookup[]","name":"lookups","type":"tuple[]"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"internalType":"struct CCIPBatcher.Batch","name":"batch","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"ccipReadCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"}],"name":"findResolver","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"}],"name":"requireResolver","outputs":[{"components":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"bool","name":"extended","type":"bool"}],"internalType":"struct AbstractUniversalResolver.ResolverInfo","name":"info","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"resolve","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"resolveBatchCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"resolveCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"resolveDirectCallback","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"resolveDirectCallbackError","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"name":"resolveWithGateways","outputs":[{"internalType":"bytes","name":"result","type":"bytes"},{"internalType":"address","name":"resolver","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"resolver","type":"address"},{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"name":"resolveWithResolver","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"lookupAddress","type":"bytes"},{"internalType":"uint256","name":"coinType","type":"uint256"}],"name":"reverse","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"reverseAddressCallback","outputs":[{"internalType":"string","name":"primary","type":"string"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"reverseResolver","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"response","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"reverseNameCallback","outputs":[{"internalType":"string","name":"primary","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"lookupAddress","type":"bytes"},{"internalType":"uint256","name":"coinType","type":"uint256"},{"internalType":"string[]","name":"gateways","type":"string[]"}],"name":"reverseWithGateways","outputs":[{"internalType":"string","name":"primary","type":"string"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"reverseResolver","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]; readonly bytecode: "0x60e060405234801561001057600080fd5b50604051614a78380380614a7883398101604081905261002f9161016c565b61c3506080526001600160a01b0381811660a0526040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004820152839185916000918416906302571be390602401602060405180830381865afa1580156100a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ca91906101b9565b604051630f41a04d60e11b81526001600160a01b03848116600483015291925090821690631e83409a906024016020604051808303816000875af1158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a91906101dd565b5050506001600160a01b0390921660c052506101f6915050565b6001600160a01b038116811461016957600080fd5b50565b60008060006060848603121561018157600080fd5b835161018c81610154565b602085015190935061019d81610154565b60408501519092506101ae81610154565b809150509250925092565b6000602082840312156101cb57600080fd5b81516101d681610154565b9392505050565b6000602082840312156101ef57600080fd5b5051919050565b60805160a05160c05161483e61023a6000396000818161025f015261110901526000818161018301528181610b360152610c0201526000612094015261483e6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80639061b923116100cd578063b4a8580111610081578063b7d6ca6411610066578063b7d6ca6414610353578063c285238a14610366578063ef46c0b81461038657600080fd5b8063b4a858011461032d578063b536af761461034057600080fd5b80639f28e99d116100b25780639f28e99d146102b5578063a1472844146102d5578063a1cbcbaf146102e857600080fd5b80639061b9231461028157806394fbfa87146102a257600080fd5b80634a3e399411610124578063575de75011610109578063575de750146102255780635d78a217146102475780637b1039991461025a57600080fd5b80634a3e3994146101f257806355391bb81461021257600080fd5b806301ffc9a71461015657806302cf25781461017e5780633c6cbda8146101ca578063491fc4f9146101df575b600080fd5b610169610164366004613009565b610399565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d8366004613068565b610432565b005b6101dd6101ed366004613068565b610477565b610205610200366004613338565b61073d565b6040516101759190613457565b6101dd61022036600461346a565b6108a8565b610238610233366004613068565b61095e565b604051610175939291906134d8565b610238610255366004613518565b610b29565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b61029461028f366004613068565b610bf5565b604051610175929190613564565b6102386102b0366004613068565b610cbe565b6102c86102c336600461359c565b610e08565b60405161017591906137d3565b6102946102e33660046138ed565b611024565b6102fb6102f636600461398d565b6110ff565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925290820152606001610175565b61029461033b366004613068565b61113d565b6102c861034e366004613068565b611195565b6102386103613660046139ca565b6114b7565b61037961037436600461398d565b611603565b6040516101759190613a42565b6101dd610394366004613aaa565b61166d565b60007f6cd2d09b000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61047184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061173f92505050565b50505050565b60006104858486018661359c565b519050600080808061049986880188613b21565b9350935093509350606083156105ad576000865167ffffffffffffffff8111156104c5576104c56130fb565b6040519080825280602002602001820160405280156104f857816020015b60608152602001906001900390816104e35790505b50905060005b875181101561058457600088828151811061051b5761051b613b8a565b6020026020010151905060008160400151905088801561054057506060820151600e16155b1561055c57808060200190518101906105599190613c09565b90505b8084848151811061056f5761056f613b8a565b602090810291909101015250506001016104fe565b50806040516020016105969190613c3e565b604051602081830303815290604052915050610697565b6000866000815181106105c2576105c2613b8a565b602002602001015190508060400151915060048160600151166000146105ea57815160208301fd5b606081015160021615610605576106008261173f565b610678565b815160000361067857806020015161061c90613cc1565b6040517f7b1c461b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024015b60405180910390fd5b851561069557818060200190518101906106929190613c09565b91505b505b610731308483856040516024016106af929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526117cf565b50505050505050505050565b6040805160a0810182526060808252600060208301819052928201839052818101839052608082019290925286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f89018190048102820181019092528781526107df918990899081908401838280828437600092018290525092506117f7915050565b604082015273ffffffffffffffffffffffffffffffffffffffff8816606082015261080981611831565b61089d8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805173ffffffffffffffffffffffffffffffffffffffff8f1660208201528993507fb4a85801000000000000000000000000000000000000000000000000000000009250015b60405160208183030381529060405261195f565b509695505050505050565b60008080806108b985870187613d52565b93509350935093508651600003610920576040517f7b1c461b0000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008416600482015260240161066f565b831561093d578680602001905181019061093a9190613c09565b96505b610955308389846040516024016106af929190613d2d565b50505050505050565b60606000808061097085870187613e14565b905061097e8789018961398d565b935083516000036109a957606001516040805160208101909152600080825290945092509050610b1f565b60006109b761037486611de0565b9050610b1c81603c846020015114610a6857826040015184602001516040516024016109ed929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1cb7e0600000000000000000000000000000000000000000000000000000000179052610af6565b8260400151604051602401610a7f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3b3b57de000000000000000000000000000000000000000000000000000000001790525b84604001516394fbfa8760e01b868a876060015160405160200161088993929190613eae565b50505b9450945094915050565b6060600080610be58686867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663093a86d36040518163ffffffff1660e01b8152600401600060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103619190810190613f91565b9250925092505b93509350939050565b60606000610cb1868686867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663093a86d36040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102e39190810190613f91565b9150915094509492505050565b6060600080610d046040518060800160405280606081526020016000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610d1085870187613fc6565b602083015191965094509091506060907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc401610da0576000610d54898b018b614043565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152909150603401604051602081830303815290604052915050610daf565b610dac888a018a61398d565b90505b8151610dbb908261200b565b610df55784816040517fef9c03ce00000000000000000000000000000000000000000000000000000000815260040161066f929190613d2d565b8160600151925050509450945094915050565b604080518082019091526060808252602082015260005b82515181101561101657600083600001518281518110610e4157610e41613b8a565b602002602001015190506040816060015116600014610e60575061100e565b6060810151603016600003610f2b576000610e7e8260000151612030565b610e89576010610e8c565b60205b9050825b855151811015610f2857826000015173ffffffffffffffffffffffffffffffffffffffff1686600001518281518110610ecb57610ecb613b8a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603610f20578186600001518281518110610f0957610f09613b8a565b602002602001015160600181815117915081815250505b600101610e90565b50505b600060208260600151166000149050600080610f51831585600001518660200151612072565b9150915081158015610fac57507f556f183000000000000000000000000000000000000000000000000000000000610f8882613cc1565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b15610fc1576060840180516001179052611002565b6060840180516040179052828015610fd857508051155b610fed5781610fed5760608401805160021790525b80516000036110025760608401805160081790525b60409093019290925250505b600101610e1f565b5061102082612116565b5090565b606060008061106888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061160392505050565b90506110f48187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060608401516040805173ffffffffffffffffffffffffffffffffffffffff909216602083015288917fb4a85801000000000000000000000000000000000000000000000000000000009101610889565b509550959350505050565b60008060006111307f000000000000000000000000000000000000000000000000000000000000000085600061238d565b9250925092509193909250565b60606000858561114f85870187614043565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929c939b50929950505050505050505050565b60408051808201909152606080825260208201526000806111b886880188614060565b9150915080518251146111f7576040517f4a5c31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112038486018661359c565b92506000805b8451518110156114685760008560000151828151811061122b5761122b613b8a565b60200260200101519050604081606001511660000361145f57835183101561145357600084848151811061126157611261613b8a565b6020026020010151905085848151811061127d5761127d613b8a565b60200260200101511561129a57606082018051604417905261144d565b60006112a983604001516124aa565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682606001518484608001516040516024016112e4929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161136d9190614121565b600060405180830381855afa9150503d80600081146113a8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ad565b606091505b5093509050808061140857507f556f1830000000000000000000000000000000000000000000000000000000006113e384613cc1565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b1561144a57606084018051604017905280158061142457508251155b156114355760608401805160021790525b825160000361144a5760608401805160081790525b50505b60408201525b61145c8361416c565b92505b50600101611209565b50815181146114a3576040517f4a5c31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ac84612116565b505050949350505050565b6060600080600061150a6103746115058a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506124ef915050565b611de0565b90506115f881826040015160405160240161152791815260200190565b60405160208183030381529060405263691f343160e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050508763575de75060e01b60405180608001604052808e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060208082018e905260408083018e905260608a81015173ffffffffffffffffffffffffffffffffffffffff1693019290925290516108899291016141a4565b509450945094915050565b6040805160a081018252606080825260006020830181905292820183905281018290526080810191909152611637826110ff565b6020840152604083015273ffffffffffffffffffffffffffffffffffffffff16606082015281815261166881611831565b919050565b60008180602001905181019061168391906141cd565b905061173a816000015182602001518584604001516040516024016116a9929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526060840151608085015160a086015161266d565b505050565b7f7b1c461b0000000000000000000000000000000000000000000000000000000061176982613cc1565b7fffffffff00000000000000000000000000000000000000000000000000000000160361179857805160208201fd5b806040517f95c0c75200000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b50565b6117f38282600060e01b600060e01b6040518060200160405280600081525061266d565b5050565b6000611803838361293e565b92509050801561042c5761182a61181a84846117f7565b8260009182526020526040902090565b9392505050565b606081015173ffffffffffffffffffffffffffffffffffffffff166118855780516040517f77209fe800000000000000000000000000000000000000000000000000000000815261066f9190600401613457565b6118b381606001517f9061b9230000000000000000000000000000000000000000000000000000000061296d565b156118c2576001608082015250565b6020810151156119015780516040517f77209fe800000000000000000000000000000000000000000000000000000000815261066f9190600401613457565b806060015173ffffffffffffffffffffffffffffffffffffffff163b6000036117cc57805160608201516040517f1e9535f200000000000000000000000000000000000000000000000000000000815261066f929190600401613564565b60007fac9650d80000000000000000000000000000000000000000000000000000000061198b86613cc1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161490506119db86606001517f582de3e70000000000000000000000000000000000000000000000000000000061296d565b8015611aaa5750801580611aaa575085608001518015611aaa575060608601516040517f582de3e70000000000000000000000000000000000000000000000000000000081527f96b62db800000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063582de3e790602401602060405180830381865afa158015611a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaa91906142ae565b15611bcc57611bcc86606001518760800151611ac65786611b51565b8751604051611ada91908990602401613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790525b60808901517f55391bb800000000000000000000000000000000000000000000000000000000907f3c6cbda80000000000000000000000000000000000000000000000000000000090611ba38b613cc1565b8989604051602001611bb894939291906142cb565b60405160208183030381529060405261266d565b60608115611c0657611bec866004808951611be79190614340565b612a3c565b806020019051810190611bff9190614353565b9050611c52565b60408051600180825281830190925290816020015b6060815260200190600190039081611c1b5790505090508581600081518110611c4657611c46613b8a565b60200260200101819052505b866080015115611d375760005b8151811015611d35578760000151828281518110611c7f57611c7f613b8a565b6020026020010151604051602401611c98929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790528251839083908110611d2257611d22613b8a565b6020908102919091010152600101611c5f565b505b610955303073ffffffffffffffffffffffffffffffffffffffff16639f28e99d611d668b60600151868b612a92565b604051602401611d7691906137d3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505063491fc4f960e01b600060e01b8b60800151878a8a604051602001611bb894939291906143ff565b80516060906000819003611e0a575050604080518082019091526001815260006020820152919050565b8060020167ffffffffffffffff811115611e2657611e266130fb565b6040519080825280601f01601f191660200182016040528015611e50576020820181803683370190505b509150611e64602183016020850183612bc6565b60008060005b83811015611f7257858181518110611e8457611e84613b8a565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003611f6a5782810391508160001480611ee5575060ff82115b15611f1e57856040517f9a4c3e3b00000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b8160f81b858481518110611f3457611f34613b8a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060010192505b600101611e6a565b505080820382821480611f85575060ff81115b15611fbe57846040517f9a4c3e3b00000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b8060f81b848381518110611fd457611fd4613b8a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050919050565b60008151835114801561182a5750508051602091820120825192909101919091201490565b60003073ffffffffffffffffffffffffffffffffffffffff83160361205757506001919050565b6113885a6000806000808786fa50815a909103109392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16856120b8577f00000000000000000000000000000000000000000000000000000000000000006120ba565b5a5b846040516120c89190614121565b6000604051808303818686fa925050503d8060008114612104576040519150601f19603f3d011682016040523d82523d6000602084013e612109565b606091505b5090969095509350505050565b80515160009067ffffffffffffffff811115612134576121346130fb565b60405190808252806020026020018201604052801561219f57816020015b61218c6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b8152602001906001900390816121525790505b5090506000805b835151811015612263576000846000015182815181106121c8576121c8613b8a565b60200260200101519050604081606001511660000361225a5760006121f082604001516124aa565b90506040518060600160405280826000015173ffffffffffffffffffffffffffffffffffffffff16815260200182602001518152602001826040015181525085858061223b9061416c565b96508151811061224d5761224d613b8a565b6020026020010181905250505b506001016121a6565b50801561173a5780825230836020015183604051602401612284919061444a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa780bab60000000000000000000000000000000000000000000000000000000017905290517fb536af76000000000000000000000000000000000000000000000000000000009161232b918991016137d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f556f183000000000000000000000000000000000000000000000000000000000825261066f9594939291600401614508565b600080600080600061239f878761293e565b9092509050811561249f5760008060006123ba8b8b8661238d565b9250925092506123d4828660009182526020526040902090565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290975073ffffffffffffffffffffffffffffffffffffffff8c1690630178b8bf90602401602060405180830381865afa158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190614591565b975073ffffffffffffffffffffffffffffffffffffffff881661248b5782878261248f565b87878a5b9750975097505050505050610bec565b505093509350939050565b6040805160a081018252600080825260606020830181905292820183905282820152608081019190915261042c6124ea836004808651611be79190614340565b612c4c565b6060825160000361252c576040517f7138356f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61253583612cdd565b7f2e00000000000000000000000000000000000000000000000000000000000000603c84146125b4576380000000841461257957612574846001612d46565b6125eb565b6040518060400160405280600781526020017f64656661756c74000000000000000000000000000000000000000000000000008152506125eb565b6040518060400160405280600481526020017f61646472000000000000000000000000000000000000000000000000000000008152505b7f2e000000000000000000000000000000000000000000000000000000000000006040518060400160405280600781526020017f72657665727365000000000000000000000000000000000000000000000000008152506040516020016126569594939291906145ae565b604051602081830303815290604052905092915050565b60008061268361267c88612030565b8888612072565b91509150811580156126de57507f556f1830000000000000000000000000000000000000000000000000000000006126ba82613cc1565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b156127f45760006126ee826124aa565b90508773ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036127f257308160200151826040015163ef46c0b860e01b6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff16815260200186606001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001866080015181526020018b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018a7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018981525060405160200161232b919061464b565b505b6000826128015784612803565b855b90507fffffffff00000000000000000000000000000000000000000000000000000000811615612928573073ffffffffffffffffffffffffffffffffffffffff16818386604051602401612858929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516128e19190614121565b600060405180830381855afa9150503d806000811461291c576040519150601f19603f3d011682016040523d82523d6000602084013e612921565b606091505b5090935091505b821561293657815160208301f35b815160208301fd5b600080600061294d8585612e1d565b9250905060ff81161561296557806021858701012092505b509250929050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612a25575060208210155b8015612a315750600081115b979650505050505050565b60608167ffffffffffffffff811115612a5757612a576130fb565b6040519080825280601f01601f191660200182016040528015612a81576020820181803683370190505b50905061182a848483600086612ed4565b60408051808201909152606080825260208201526000835167ffffffffffffffff811115612ac257612ac26130fb565b604051908082528060200260200182016040528015612b3457816020015b612b216040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b815260200190600190039081612ae05790505b50905060005b8451811015612ba9576000828281518110612b5757612b57613b8a565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff881681528651909150869083908110612b9257612b92613b8a565b602090810291909101810151910152600101612b3a565b506040805180820190915290815260208101929092525092915050565b5b601f811115612c055781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001612bc7565b801561173a5790518251600160209390930360031b9290921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b6040805160a081018252600080825260606020830181905292820183905282820152608081019190915281806020019051810190612c8a9190614746565b60808601527fffffffff000000000000000000000000000000000000000000000000000000001660608501526040840152602083015273ffffffffffffffffffffffffffffffffffffffff168152919050565b805160609060011b8067ffffffffffffffff811115612cfe57612cfe6130fb565b6040519080825280601f01601f191660200182016040528015612d28576020820181803683370190505b5091506020838101908301612d3e828285612f11565b505050919050565b606082600060805b60088110612d7f576001811b831015612d7257612d6b81836147f5565b9150612d77565b91821c915b60011c612d4e565b50838015612d8d5750601082105b15612da057612d9d6004826147f5565b90505b6000612db1600283901c6040614340565b90508067ffffffffffffffff811115612dcc57612dcc6130fb565b6040519080825280601f01601f191660200182016040528015612df6576020820181803683370190505b509350600086831b600052602085019050612e1360008284612f11565b5050505092915050565b60008083518310612e5c57836040517fba4adc2300000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b838381518110612e6e57612e6e613b8a565b016020015160f81c91505081810160010181612e8e578351811415612e94565b83518110155b15612ecd57836040517fba4adc2300000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b9250929050565b612ee785612ee283876147f5565b612f93565b612ef583612ee283856147f5565b612f0a82602085010185602088010183612bc6565b5050505050565b8181015b808310156104715783516101005b8285108015612f325750600081115b15612f86577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01600f82821c16600a8110612f705780605701612f75565b806030015b905080865350600190940193612f23565b5050602084019350612f15565b81518111156117f35781516040517f8a3c1cfb00000000000000000000000000000000000000000000000000000000815261066f918391600401918252602082015260400190565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117cc57600080fd5b60006020828403121561301b57600080fd5b813561182a81612fdb565b60008083601f84011261303857600080fd5b50813567ffffffffffffffff81111561305057600080fd5b602083019150836020828501011115612ecd57600080fd5b6000806000806040858703121561307e57600080fd5b843567ffffffffffffffff81111561309557600080fd5b6130a187828801613026565b909550935050602085013567ffffffffffffffff8111156130c157600080fd5b6130cd87828801613026565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146117cc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561314d5761314d6130fb565b60405290565b6040516080810167ffffffffffffffff8111828210171561314d5761314d6130fb565b60405160c0810167ffffffffffffffff8111828210171561314d5761314d6130fb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156131e0576131e06130fb565b604052919050565b600067ffffffffffffffff821115613202576132026130fb565b5060051b60200190565b600067ffffffffffffffff821115613226576132266130fb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261326357600080fd5b813560208301600061327c6132778461320c565b613199565b905082815285838301111561329057600080fd5b82826020830137600092810160200192909252509392505050565b600082601f8301126132bc57600080fd5b81356132ca613277826131e8565b8082825260208201915060208360051b8601019250858311156132ec57600080fd5b602085015b8381101561332e57803567ffffffffffffffff81111561331057600080fd5b61331f886020838a0101613252565b845250602092830192016132f1565b5095945050505050565b6000806000806000806080878903121561335157600080fd5b863561335c816130d9565b9550602087013567ffffffffffffffff81111561337857600080fd5b61338489828a01613026565b909650945050604087013567ffffffffffffffff8111156133a457600080fd5b6133b089828a01613026565b909450925050606087013567ffffffffffffffff8111156133d057600080fd5b6133dc89828a016132ab565b9150509295509295509295565b60005b838110156134045781810151838201526020016133ec565b50506000910152565b600081518084526134258160208601602086016133e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061182a602083018461340d565b60008060006040848603121561347f57600080fd5b833567ffffffffffffffff81111561349657600080fd5b6134a286828701613252565b935050602084013567ffffffffffffffff8111156134bf57600080fd5b6134cb86828701613026565b9497909650939450505050565b6060815260006134eb606083018661340d565b73ffffffffffffffffffffffffffffffffffffffff94851660208401529290931660409091015292915050565b60008060006040848603121561352d57600080fd5b833567ffffffffffffffff81111561354457600080fd5b61355086828701613026565b909790965060209590950135949350505050565b604081526000613577604083018561340d565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6000602082840312156135ae57600080fd5b813567ffffffffffffffff8111156135c557600080fd5b8201604081850312156135d757600080fd5b6135df61312a565b813567ffffffffffffffff8111156135f657600080fd5b8201601f8101861361360757600080fd5b8035613615613277826131e8565b8082825260208201915060208360051b85010192508883111561363757600080fd5b602084015b8381101561371f57803567ffffffffffffffff81111561365b57600080fd5b85016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561368f57600080fd5b613697613153565b60208201356136a5816130d9565b8152604082013567ffffffffffffffff8111156136c157600080fd5b6136d08d602083860101613252565b602083015250606082013567ffffffffffffffff8111156136f057600080fd5b6136ff8d602083860101613252565b60408301525060809190910135606082015283526020928301920161363c565b508452505050602082013567ffffffffffffffff81111561373f57600080fd5b61374b868285016132ab565b602083015250949350505050565b600082825180855260208501945060208160051b8301016020850160005b838110156137c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08584030188526137b183835161340d565b6020988901989093509190910190600101613777565b50909695505050505050565b6020815260006060820183516040602085015281815180845260808601915060808160051b870101935060208301925060005b818110156138a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80878603018352835173ffffffffffffffffffffffffffffffffffffffff815116865260208101516080602088015261386a608088018261340d565b905060408201518782036040890152613883828261340d565b60609384015198909301979097525094506020938401939290920191600101613806565b5050505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160408501526138e48282613759565b95945050505050565b60008060008060006060868803121561390557600080fd5b853567ffffffffffffffff81111561391c57600080fd5b61392888828901613026565b909650945050602086013567ffffffffffffffff81111561394857600080fd5b61395488828901613026565b909450925050604086013567ffffffffffffffff81111561397457600080fd5b613980888289016132ab565b9150509295509295909350565b60006020828403121561399f57600080fd5b813567ffffffffffffffff8111156139b657600080fd5b6139c284828501613252565b949350505050565b600080600080606085870312156139e057600080fd5b843567ffffffffffffffff8111156139f757600080fd5b613a0387828801613026565b90955093505060208501359150604085013567ffffffffffffffff811115613a2a57600080fd5b613a36878288016132ab565b91505092959194509250565b602081526000825160a06020840152613a5e60c084018261340d565b9050602084015160408401526040840151606084015273ffffffffffffffffffffffffffffffffffffffff60608501511660808401526080840151151560a08401528091505092915050565b60008060408385031215613abd57600080fd5b823567ffffffffffffffff811115613ad457600080fd5b613ae085828601613252565b925050602083013567ffffffffffffffff811115613afd57600080fd5b613b0985828601613252565b9150509250929050565b80151581146117cc57600080fd5b60008060008060808587031215613b3757600080fd5b8435613b4281613b13565b93506020850135613b5281613b13565b92506040850135613b6281612fdb565b9150606085013567ffffffffffffffff811115613b7e57600080fd5b613a3687828801613252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bc76132778461320c565b9050828152838383011115613bdb57600080fd5b61182a8360208301846133e9565b600082601f830112613bfa57600080fd5b61182a83835160208501613bb9565b600060208284031215613c1b57600080fd5b815167ffffffffffffffff811115613c3257600080fd5b6139c284828501613be9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613cb5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613ca085835161340d565b94506020938401939190910190600101613c66565b50929695505050505050565b805160208201517fffffffff00000000000000000000000000000000000000000000000000000000811691906004821015613d26577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b604081526000613d40604083018561340d565b82810360208401526138e4818561340d565b60008060008060808587031215613d6857600080fd5b8435613d7381613b13565b93506020850135613b5281612fdb565b600060808284031215613d9557600080fd5b613d9d613153565b9050813567ffffffffffffffff811115613db657600080fd5b613dc284828501613252565b82525060208281013590820152604082013567ffffffffffffffff811115613de957600080fd5b613df5848285016132ab565b6040830152506060820135613e09816130d9565b606082015292915050565b600060208284031215613e2657600080fd5b813567ffffffffffffffff811115613e3d57600080fd5b6139c284828501613d83565b6000815160808452613e5e608085018261340d565b90506020830151602085015260408301518482036040860152613e818282613759565b91505073ffffffffffffffffffffffffffffffffffffffff60608401511660608501528091505092915050565b606081526000613ec16060830186613e49565b8281036020840152613ed3818661340d565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600082601f830112613f0b57600080fd5b8151613f19613277826131e8565b8082825260208201915060208360051b860101925085831115613f3b57600080fd5b602085015b8381101561332e57805167ffffffffffffffff811115613f5f57600080fd5b8601603f81018813613f7057600080fd5b613f8288602083015160408401613bb9565b84525060209283019201613f40565b600060208284031215613fa357600080fd5b815167ffffffffffffffff811115613fba57600080fd5b6139c284828501613efa565b600080600060608486031215613fdb57600080fd5b833567ffffffffffffffff811115613ff257600080fd5b613ffe86828701613d83565b935050602084013567ffffffffffffffff81111561401b57600080fd5b61402786828701613252565b9250506040840135614038816130d9565b809150509250925092565b60006020828403121561405557600080fd5b813561182a816130d9565b6000806040838503121561407357600080fd5b823567ffffffffffffffff81111561408a57600080fd5b8301601f8101851361409b57600080fd5b80356140a9613277826131e8565b8082825260208201915060208360051b8501019250878311156140cb57600080fd5b6020840193505b828410156140f65783356140e581613b13565b8252602093840193909101906140d2565b9450505050602083013567ffffffffffffffff81111561411557600080fd5b613b09858286016132ab565b600082516141338184602087016133e9565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361419d5761419d61413d565b5060010190565b60208152600061182a6020830184613e49565b8051611668816130d9565b805161166881612fdb565b6000602082840312156141df57600080fd5b815167ffffffffffffffff8111156141f657600080fd5b820160c0818503121561420857600080fd5b614210613176565b614219826141b7565b8152614227602083016141c2565b6020820152604082015167ffffffffffffffff81111561424657600080fd5b61425286828501613be9565b604083015250614264606083016141c2565b6060820152614275608083016141c2565b608082015260a082015167ffffffffffffffff81111561429457600080fd5b6142a086828501613be9565b60a083015250949350505050565b6000602082840312156142c057600080fd5b815161182a81613b13565b84151581527fffffffff00000000000000000000000000000000000000000000000000000000841660208201527fffffffff0000000000000000000000000000000000000000000000000000000083166040820152608060608201526000614336608083018461340d565b9695505050505050565b8181038181111561042c5761042c61413d565b60006020828403121561436557600080fd5b815167ffffffffffffffff81111561437c57600080fd5b8201601f8101841361438d57600080fd5b805161439b613277826131e8565b8082825260208201915060208360051b8501019250868311156143bd57600080fd5b602084015b8381101561089d57805167ffffffffffffffff8111156143e157600080fd5b6143f089602083890101613be9565b845250602092830192016143c2565b841515815283151560208201527fffffffff0000000000000000000000000000000000000000000000000000000083166040820152608060608201526000614336608083018461340d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613cb5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151606060208801526144d66060880182613759565b90506040820151915086810360408801526144f1818361340d565b965050506020938401939190910190600101614472565b73ffffffffffffffffffffffffffffffffffffffff8616815260a06020820152600061453760a0830187613759565b8281036040840152614549818761340d565b90507fffffffff00000000000000000000000000000000000000000000000000000000851660608401528281036080840152614585818561340d565b98975050505050505050565b6000602082840312156145a357600080fd5b815161182a816130d9565b600086516145c0818460208b016133e9565b7fff00000000000000000000000000000000000000000000000000000000000000871690830190815285516145fc816001840160208a016133e9565b7fff00000000000000000000000000000000000000000000000000000000000000861660019290910191820152835161463c8160028401602088016133e9565b01600201979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201527fffffffff0000000000000000000000000000000000000000000000000000000060208301511660408201526000604083015160c060608401526146b360e084018261340d565b90507fffffffff0000000000000000000000000000000000000000000000000000000060608501511660808401527fffffffff0000000000000000000000000000000000000000000000000000000060808501511660a084015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526138e4828261340d565b600080600080600060a0868803121561475e57600080fd5b8551614769816130d9565b602087015190955067ffffffffffffffff81111561478657600080fd5b61479288828901613efa565b945050604086015167ffffffffffffffff8111156147af57600080fd5b6147bb88828901613be9565b93505060608601516147cc81612fdb565b608087015190925067ffffffffffffffff8111156147e957600080fd5b61398088828901613be9565b8082018082111561042c5761042c61413d56fea26469706673582212208d7b386f1e5a5d2d40286b5f521887689b480e2813187e7bf06b495da9fc439c64736f6c634300081a0033"; readonly deployedBytecode: "0x608060405234801561001057600080fd5b50600436106101515760003560e01c80639061b923116100cd578063b4a8580111610081578063b7d6ca6411610066578063b7d6ca6414610353578063c285238a14610366578063ef46c0b81461038657600080fd5b8063b4a858011461032d578063b536af761461034057600080fd5b80639f28e99d116100b25780639f28e99d146102b5578063a1472844146102d5578063a1cbcbaf146102e857600080fd5b80639061b9231461028157806394fbfa87146102a257600080fd5b80634a3e399411610124578063575de75011610109578063575de750146102255780635d78a217146102475780637b1039991461025a57600080fd5b80634a3e3994146101f257806355391bb81461021257600080fd5b806301ffc9a71461015657806302cf25781461017e5780633c6cbda8146101ca578063491fc4f9146101df575b600080fd5b610169610164366004613009565b610399565b60405190151581526020015b60405180910390f35b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6101dd6101d8366004613068565b610432565b005b6101dd6101ed366004613068565b610477565b610205610200366004613338565b61073d565b6040516101759190613457565b6101dd61022036600461346a565b6108a8565b610238610233366004613068565b61095e565b604051610175939291906134d8565b610238610255366004613518565b610b29565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b61029461028f366004613068565b610bf5565b604051610175929190613564565b6102386102b0366004613068565b610cbe565b6102c86102c336600461359c565b610e08565b60405161017591906137d3565b6102946102e33660046138ed565b611024565b6102fb6102f636600461398d565b6110ff565b6040805173ffffffffffffffffffffffffffffffffffffffff9094168452602084019290925290820152606001610175565b61029461033b366004613068565b61113d565b6102c861034e366004613068565b611195565b6102386103613660046139ca565b6114b7565b61037961037436600461398d565b611603565b6040516101759190613a42565b6101dd610394366004613aaa565b61166d565b60007f6cd2d09b000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b61047184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061173f92505050565b50505050565b60006104858486018661359c565b519050600080808061049986880188613b21565b9350935093509350606083156105ad576000865167ffffffffffffffff8111156104c5576104c56130fb565b6040519080825280602002602001820160405280156104f857816020015b60608152602001906001900390816104e35790505b50905060005b875181101561058457600088828151811061051b5761051b613b8a565b6020026020010151905060008160400151905088801561054057506060820151600e16155b1561055c57808060200190518101906105599190613c09565b90505b8084848151811061056f5761056f613b8a565b602090810291909101015250506001016104fe565b50806040516020016105969190613c3e565b604051602081830303815290604052915050610697565b6000866000815181106105c2576105c2613b8a565b602002602001015190508060400151915060048160600151166000146105ea57815160208301fd5b606081015160021615610605576106008261173f565b610678565b815160000361067857806020015161061c90613cc1565b6040517f7b1c461b0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201526024015b60405180910390fd5b851561069557818060200190518101906106929190613c09565b91505b505b610731308483856040516024016106af929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526117cf565b50505050505050505050565b6040805160a0810182526060808252600060208301819052928201839052818101839052608082019290925286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f89018190048102820181019092528781526107df918990899081908401838280828437600092018290525092506117f7915050565b604082015273ffffffffffffffffffffffffffffffffffffffff8816606082015261080981611831565b61089d8186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805173ffffffffffffffffffffffffffffffffffffffff8f1660208201528993507fb4a85801000000000000000000000000000000000000000000000000000000009250015b60405160208183030381529060405261195f565b509695505050505050565b60008080806108b985870187613d52565b93509350935093508651600003610920576040517f7b1c461b0000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008416600482015260240161066f565b831561093d578680602001905181019061093a9190613c09565b96505b610955308389846040516024016106af929190613d2d565b50505050505050565b60606000808061097085870187613e14565b905061097e8789018961398d565b935083516000036109a957606001516040805160208101909152600080825290945092509050610b1f565b60006109b761037486611de0565b9050610b1c81603c846020015114610a6857826040015184602001516040516024016109ed929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff1cb7e0600000000000000000000000000000000000000000000000000000000179052610af6565b8260400151604051602401610a7f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3b3b57de000000000000000000000000000000000000000000000000000000001790525b84604001516394fbfa8760e01b868a876060015160405160200161088993929190613eae565b50505b9450945094915050565b6060600080610be58686867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663093a86d36040518163ffffffff1660e01b8152600401600060405180830381865afa158015610b9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103619190810190613f91565b9250925092505b93509350939050565b60606000610cb1868686867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663093a86d36040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102e39190810190613f91565b9150915094509492505050565b6060600080610d046040518060800160405280606081526020016000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610d1085870187613fc6565b602083015191965094509091506060907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc401610da0576000610d54898b018b614043565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166020820152909150603401604051602081830303815290604052915050610daf565b610dac888a018a61398d565b90505b8151610dbb908261200b565b610df55784816040517fef9c03ce00000000000000000000000000000000000000000000000000000000815260040161066f929190613d2d565b8160600151925050509450945094915050565b604080518082019091526060808252602082015260005b82515181101561101657600083600001518281518110610e4157610e41613b8a565b602002602001015190506040816060015116600014610e60575061100e565b6060810151603016600003610f2b576000610e7e8260000151612030565b610e89576010610e8c565b60205b9050825b855151811015610f2857826000015173ffffffffffffffffffffffffffffffffffffffff1686600001518281518110610ecb57610ecb613b8a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603610f20578186600001518281518110610f0957610f09613b8a565b602002602001015160600181815117915081815250505b600101610e90565b50505b600060208260600151166000149050600080610f51831585600001518660200151612072565b9150915081158015610fac57507f556f183000000000000000000000000000000000000000000000000000000000610f8882613cc1565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b15610fc1576060840180516001179052611002565b6060840180516040179052828015610fd857508051155b610fed5781610fed5760608401805160021790525b80516000036110025760608401805160081790525b60409093019290925250505b600101610e1f565b5061102082612116565b5090565b606060008061106888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061160392505050565b90506110f48187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060608401516040805173ffffffffffffffffffffffffffffffffffffffff909216602083015288917fb4a85801000000000000000000000000000000000000000000000000000000009101610889565b509550959350505050565b60008060006111307f000000000000000000000000000000000000000000000000000000000000000085600061238d565b9250925092509193909250565b60606000858561114f85870187614043565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929c939b50929950505050505050505050565b60408051808201909152606080825260208201526000806111b886880188614060565b9150915080518251146111f7576040517f4a5c31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112038486018661359c565b92506000805b8451518110156114685760008560000151828151811061122b5761122b613b8a565b60200260200101519050604081606001511660000361145f57835183101561145357600084848151811061126157611261613b8a565b6020026020010151905085848151811061127d5761127d613b8a565b60200260200101511561129a57606082018051604417905261144d565b60006112a983604001516124aa565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682606001518484608001516040516024016112e4929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161136d9190614121565b600060405180830381855afa9150503d80600081146113a8576040519150601f19603f3d011682016040523d82523d6000602084013e6113ad565b606091505b5093509050808061140857507f556f1830000000000000000000000000000000000000000000000000000000006113e384613cc1565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b1561144a57606084018051604017905280158061142457508251155b156114355760608401805160021790525b825160000361144a5760608401805160081790525b50505b60408201525b61145c8361416c565b92505b50600101611209565b50815181146114a3576040517f4a5c31ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ac84612116565b505050949350505050565b6060600080600061150a6103746115058a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506124ef915050565b611de0565b90506115f881826040015160405160240161152791815260200190565b60405160208183030381529060405263691f343160e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050508763575de75060e01b60405180608001604052808e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060208082018e905260408083018e905260608a81015173ffffffffffffffffffffffffffffffffffffffff1693019290925290516108899291016141a4565b509450945094915050565b6040805160a081018252606080825260006020830181905292820183905281018290526080810191909152611637826110ff565b6020840152604083015273ffffffffffffffffffffffffffffffffffffffff16606082015281815261166881611831565b919050565b60008180602001905181019061168391906141cd565b905061173a816000015182602001518584604001516040516024016116a9929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526060840151608085015160a086015161266d565b505050565b7f7b1c461b0000000000000000000000000000000000000000000000000000000061176982613cc1565b7fffffffff00000000000000000000000000000000000000000000000000000000160361179857805160208201fd5b806040517f95c0c75200000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b50565b6117f38282600060e01b600060e01b6040518060200160405280600081525061266d565b5050565b6000611803838361293e565b92509050801561042c5761182a61181a84846117f7565b8260009182526020526040902090565b9392505050565b606081015173ffffffffffffffffffffffffffffffffffffffff166118855780516040517f77209fe800000000000000000000000000000000000000000000000000000000815261066f9190600401613457565b6118b381606001517f9061b9230000000000000000000000000000000000000000000000000000000061296d565b156118c2576001608082015250565b6020810151156119015780516040517f77209fe800000000000000000000000000000000000000000000000000000000815261066f9190600401613457565b806060015173ffffffffffffffffffffffffffffffffffffffff163b6000036117cc57805160608201516040517f1e9535f200000000000000000000000000000000000000000000000000000000815261066f929190600401613564565b60007fac9650d80000000000000000000000000000000000000000000000000000000061198b86613cc1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161490506119db86606001517f582de3e70000000000000000000000000000000000000000000000000000000061296d565b8015611aaa5750801580611aaa575085608001518015611aaa575060608601516040517f582de3e70000000000000000000000000000000000000000000000000000000081527f96b62db800000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063582de3e790602401602060405180830381865afa158015611a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaa91906142ae565b15611bcc57611bcc86606001518760800151611ac65786611b51565b8751604051611ada91908990602401613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790525b60808901517f55391bb800000000000000000000000000000000000000000000000000000000907f3c6cbda80000000000000000000000000000000000000000000000000000000090611ba38b613cc1565b8989604051602001611bb894939291906142cb565b60405160208183030381529060405261266d565b60608115611c0657611bec866004808951611be79190614340565b612a3c565b806020019051810190611bff9190614353565b9050611c52565b60408051600180825281830190925290816020015b6060815260200190600190039081611c1b5790505090508581600081518110611c4657611c46613b8a565b60200260200101819052505b866080015115611d375760005b8151811015611d35578760000151828281518110611c7f57611c7f613b8a565b6020026020010151604051602401611c98929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9061b923000000000000000000000000000000000000000000000000000000001790528251839083908110611d2257611d22613b8a565b6020908102919091010152600101611c5f565b505b610955303073ffffffffffffffffffffffffffffffffffffffff16639f28e99d611d668b60600151868b612a92565b604051602401611d7691906137d3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505063491fc4f960e01b600060e01b8b60800151878a8a604051602001611bb894939291906143ff565b80516060906000819003611e0a575050604080518082019091526001815260006020820152919050565b8060020167ffffffffffffffff811115611e2657611e266130fb565b6040519080825280601f01601f191660200182016040528015611e50576020820181803683370190505b509150611e64602183016020850183612bc6565b60008060005b83811015611f7257858181518110611e8457611e84613b8a565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000003611f6a5782810391508160001480611ee5575060ff82115b15611f1e57856040517f9a4c3e3b00000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b8160f81b858481518110611f3457611f34613b8a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060010192505b600101611e6a565b505080820382821480611f85575060ff81115b15611fbe57846040517f9a4c3e3b00000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b8060f81b848381518110611fd457611fd4613b8a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050919050565b60008151835114801561182a5750508051602091820120825192909101919091201490565b60003073ffffffffffffffffffffffffffffffffffffffff83160361205757506001919050565b6113885a6000806000808786fa50815a909103109392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16856120b8577f00000000000000000000000000000000000000000000000000000000000000006120ba565b5a5b846040516120c89190614121565b6000604051808303818686fa925050503d8060008114612104576040519150601f19603f3d011682016040523d82523d6000602084013e612109565b606091505b5090969095509350505050565b80515160009067ffffffffffffffff811115612134576121346130fb565b60405190808252806020026020018201604052801561219f57816020015b61218c6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b8152602001906001900390816121525790505b5090506000805b835151811015612263576000846000015182815181106121c8576121c8613b8a565b60200260200101519050604081606001511660000361225a5760006121f082604001516124aa565b90506040518060600160405280826000015173ffffffffffffffffffffffffffffffffffffffff16815260200182602001518152602001826040015181525085858061223b9061416c565b96508151811061224d5761224d613b8a565b6020026020010181905250505b506001016121a6565b50801561173a5780825230836020015183604051602401612284919061444a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa780bab60000000000000000000000000000000000000000000000000000000017905290517fb536af76000000000000000000000000000000000000000000000000000000009161232b918991016137d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f556f183000000000000000000000000000000000000000000000000000000000825261066f9594939291600401614508565b600080600080600061239f878761293e565b9092509050811561249f5760008060006123ba8b8b8661238d565b9250925092506123d4828660009182526020526040902090565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290975073ffffffffffffffffffffffffffffffffffffffff8c1690630178b8bf90602401602060405180830381865afa158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190614591565b975073ffffffffffffffffffffffffffffffffffffffff881661248b5782878261248f565b87878a5b9750975097505050505050610bec565b505093509350939050565b6040805160a081018252600080825260606020830181905292820183905282820152608081019190915261042c6124ea836004808651611be79190614340565b612c4c565b6060825160000361252c576040517f7138356f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61253583612cdd565b7f2e00000000000000000000000000000000000000000000000000000000000000603c84146125b4576380000000841461257957612574846001612d46565b6125eb565b6040518060400160405280600781526020017f64656661756c74000000000000000000000000000000000000000000000000008152506125eb565b6040518060400160405280600481526020017f61646472000000000000000000000000000000000000000000000000000000008152505b7f2e000000000000000000000000000000000000000000000000000000000000006040518060400160405280600781526020017f72657665727365000000000000000000000000000000000000000000000000008152506040516020016126569594939291906145ae565b604051602081830303815290604052905092915050565b60008061268361267c88612030565b8888612072565b91509150811580156126de57507f556f1830000000000000000000000000000000000000000000000000000000006126ba82613cc1565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b156127f45760006126ee826124aa565b90508773ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036127f257308160200151826040015163ef46c0b860e01b6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff16815260200186606001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001866080015181526020018b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018a7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018981525060405160200161232b919061464b565b505b6000826128015784612803565b855b90507fffffffff00000000000000000000000000000000000000000000000000000000811615612928573073ffffffffffffffffffffffffffffffffffffffff16818386604051602401612858929190613d2d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516128e19190614121565b600060405180830381855afa9150503d806000811461291c576040519150601f19603f3d011682016040523d82523d6000602084013e612921565b606091505b5090935091505b821561293657815160208301f35b815160208301fd5b600080600061294d8585612e1d565b9250905060ff81161561296557806021858701012092505b509250929050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612a25575060208210155b8015612a315750600081115b979650505050505050565b60608167ffffffffffffffff811115612a5757612a576130fb565b6040519080825280601f01601f191660200182016040528015612a81576020820181803683370190505b50905061182a848483600086612ed4565b60408051808201909152606080825260208201526000835167ffffffffffffffff811115612ac257612ac26130fb565b604051908082528060200260200182016040528015612b3457816020015b612b216040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b815260200190600190039081612ae05790505b50905060005b8451811015612ba9576000828281518110612b5757612b57613b8a565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff881681528651909150869083908110612b9257612b92613b8a565b602090810291909101810151910152600101612b3a565b506040805180820190915290815260208101929092525092915050565b5b601f811115612c055781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001612bc7565b801561173a5790518251600160209390930360031b9290921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b6040805160a081018252600080825260606020830181905292820183905282820152608081019190915281806020019051810190612c8a9190614746565b60808601527fffffffff000000000000000000000000000000000000000000000000000000001660608501526040840152602083015273ffffffffffffffffffffffffffffffffffffffff168152919050565b805160609060011b8067ffffffffffffffff811115612cfe57612cfe6130fb565b6040519080825280601f01601f191660200182016040528015612d28576020820181803683370190505b5091506020838101908301612d3e828285612f11565b505050919050565b606082600060805b60088110612d7f576001811b831015612d7257612d6b81836147f5565b9150612d77565b91821c915b60011c612d4e565b50838015612d8d5750601082105b15612da057612d9d6004826147f5565b90505b6000612db1600283901c6040614340565b90508067ffffffffffffffff811115612dcc57612dcc6130fb565b6040519080825280601f01601f191660200182016040528015612df6576020820181803683370190505b509350600086831b600052602085019050612e1360008284612f11565b5050505092915050565b60008083518310612e5c57836040517fba4adc2300000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b838381518110612e6e57612e6e613b8a565b016020015160f81c91505081810160010181612e8e578351811415612e94565b83518110155b15612ecd57836040517fba4adc2300000000000000000000000000000000000000000000000000000000815260040161066f9190613457565b9250929050565b612ee785612ee283876147f5565b612f93565b612ef583612ee283856147f5565b612f0a82602085010185602088010183612bc6565b5050505050565b8181015b808310156104715783516101005b8285108015612f325750600081115b15612f86577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01600f82821c16600a8110612f705780605701612f75565b806030015b905080865350600190940193612f23565b5050602084019350612f15565b81518111156117f35781516040517f8a3c1cfb00000000000000000000000000000000000000000000000000000000815261066f918391600401918252602082015260400190565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117cc57600080fd5b60006020828403121561301b57600080fd5b813561182a81612fdb565b60008083601f84011261303857600080fd5b50813567ffffffffffffffff81111561305057600080fd5b602083019150836020828501011115612ecd57600080fd5b6000806000806040858703121561307e57600080fd5b843567ffffffffffffffff81111561309557600080fd5b6130a187828801613026565b909550935050602085013567ffffffffffffffff8111156130c157600080fd5b6130cd87828801613026565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146117cc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561314d5761314d6130fb565b60405290565b6040516080810167ffffffffffffffff8111828210171561314d5761314d6130fb565b60405160c0810167ffffffffffffffff8111828210171561314d5761314d6130fb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156131e0576131e06130fb565b604052919050565b600067ffffffffffffffff821115613202576132026130fb565b5060051b60200190565b600067ffffffffffffffff821115613226576132266130fb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261326357600080fd5b813560208301600061327c6132778461320c565b613199565b905082815285838301111561329057600080fd5b82826020830137600092810160200192909252509392505050565b600082601f8301126132bc57600080fd5b81356132ca613277826131e8565b8082825260208201915060208360051b8601019250858311156132ec57600080fd5b602085015b8381101561332e57803567ffffffffffffffff81111561331057600080fd5b61331f886020838a0101613252565b845250602092830192016132f1565b5095945050505050565b6000806000806000806080878903121561335157600080fd5b863561335c816130d9565b9550602087013567ffffffffffffffff81111561337857600080fd5b61338489828a01613026565b909650945050604087013567ffffffffffffffff8111156133a457600080fd5b6133b089828a01613026565b909450925050606087013567ffffffffffffffff8111156133d057600080fd5b6133dc89828a016132ab565b9150509295509295509295565b60005b838110156134045781810151838201526020016133ec565b50506000910152565b600081518084526134258160208601602086016133e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061182a602083018461340d565b60008060006040848603121561347f57600080fd5b833567ffffffffffffffff81111561349657600080fd5b6134a286828701613252565b935050602084013567ffffffffffffffff8111156134bf57600080fd5b6134cb86828701613026565b9497909650939450505050565b6060815260006134eb606083018661340d565b73ffffffffffffffffffffffffffffffffffffffff94851660208401529290931660409091015292915050565b60008060006040848603121561352d57600080fd5b833567ffffffffffffffff81111561354457600080fd5b61355086828701613026565b909790965060209590950135949350505050565b604081526000613577604083018561340d565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6000602082840312156135ae57600080fd5b813567ffffffffffffffff8111156135c557600080fd5b8201604081850312156135d757600080fd5b6135df61312a565b813567ffffffffffffffff8111156135f657600080fd5b8201601f8101861361360757600080fd5b8035613615613277826131e8565b8082825260208201915060208360051b85010192508883111561363757600080fd5b602084015b8381101561371f57803567ffffffffffffffff81111561365b57600080fd5b85016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561368f57600080fd5b613697613153565b60208201356136a5816130d9565b8152604082013567ffffffffffffffff8111156136c157600080fd5b6136d08d602083860101613252565b602083015250606082013567ffffffffffffffff8111156136f057600080fd5b6136ff8d602083860101613252565b60408301525060809190910135606082015283526020928301920161363c565b508452505050602082013567ffffffffffffffff81111561373f57600080fd5b61374b868285016132ab565b602083015250949350505050565b600082825180855260208501945060208160051b8301016020850160005b838110156137c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08584030188526137b183835161340d565b6020988901989093509190910190600101613777565b50909695505050505050565b6020815260006060820183516040602085015281815180845260808601915060808160051b870101935060208301925060005b818110156138a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80878603018352835173ffffffffffffffffffffffffffffffffffffffff815116865260208101516080602088015261386a608088018261340d565b905060408201518782036040890152613883828261340d565b60609384015198909301979097525094506020938401939290920191600101613806565b5050505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160408501526138e48282613759565b95945050505050565b60008060008060006060868803121561390557600080fd5b853567ffffffffffffffff81111561391c57600080fd5b61392888828901613026565b909650945050602086013567ffffffffffffffff81111561394857600080fd5b61395488828901613026565b909450925050604086013567ffffffffffffffff81111561397457600080fd5b613980888289016132ab565b9150509295509295909350565b60006020828403121561399f57600080fd5b813567ffffffffffffffff8111156139b657600080fd5b6139c284828501613252565b949350505050565b600080600080606085870312156139e057600080fd5b843567ffffffffffffffff8111156139f757600080fd5b613a0387828801613026565b90955093505060208501359150604085013567ffffffffffffffff811115613a2a57600080fd5b613a36878288016132ab565b91505092959194509250565b602081526000825160a06020840152613a5e60c084018261340d565b9050602084015160408401526040840151606084015273ffffffffffffffffffffffffffffffffffffffff60608501511660808401526080840151151560a08401528091505092915050565b60008060408385031215613abd57600080fd5b823567ffffffffffffffff811115613ad457600080fd5b613ae085828601613252565b925050602083013567ffffffffffffffff811115613afd57600080fd5b613b0985828601613252565b9150509250929050565b80151581146117cc57600080fd5b60008060008060808587031215613b3757600080fd5b8435613b4281613b13565b93506020850135613b5281613b13565b92506040850135613b6281612fdb565b9150606085013567ffffffffffffffff811115613b7e57600080fd5b613a3687828801613252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bc76132778461320c565b9050828152838383011115613bdb57600080fd5b61182a8360208301846133e9565b600082601f830112613bfa57600080fd5b61182a83835160208501613bb9565b600060208284031215613c1b57600080fd5b815167ffffffffffffffff811115613c3257600080fd5b6139c284828501613be9565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613cb5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613ca085835161340d565b94506020938401939190910190600101613c66565b50929695505050505050565b805160208201517fffffffff00000000000000000000000000000000000000000000000000000000811691906004821015613d26577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b604081526000613d40604083018561340d565b82810360208401526138e4818561340d565b60008060008060808587031215613d6857600080fd5b8435613d7381613b13565b93506020850135613b5281612fdb565b600060808284031215613d9557600080fd5b613d9d613153565b9050813567ffffffffffffffff811115613db657600080fd5b613dc284828501613252565b82525060208281013590820152604082013567ffffffffffffffff811115613de957600080fd5b613df5848285016132ab565b6040830152506060820135613e09816130d9565b606082015292915050565b600060208284031215613e2657600080fd5b813567ffffffffffffffff811115613e3d57600080fd5b6139c284828501613d83565b6000815160808452613e5e608085018261340d565b90506020830151602085015260408301518482036040860152613e818282613759565b91505073ffffffffffffffffffffffffffffffffffffffff60608401511660608501528091505092915050565b606081526000613ec16060830186613e49565b8281036020840152613ed3818661340d565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b600082601f830112613f0b57600080fd5b8151613f19613277826131e8565b8082825260208201915060208360051b860101925085831115613f3b57600080fd5b602085015b8381101561332e57805167ffffffffffffffff811115613f5f57600080fd5b8601603f81018813613f7057600080fd5b613f8288602083015160408401613bb9565b84525060209283019201613f40565b600060208284031215613fa357600080fd5b815167ffffffffffffffff811115613fba57600080fd5b6139c284828501613efa565b600080600060608486031215613fdb57600080fd5b833567ffffffffffffffff811115613ff257600080fd5b613ffe86828701613d83565b935050602084013567ffffffffffffffff81111561401b57600080fd5b61402786828701613252565b9250506040840135614038816130d9565b809150509250925092565b60006020828403121561405557600080fd5b813561182a816130d9565b6000806040838503121561407357600080fd5b823567ffffffffffffffff81111561408a57600080fd5b8301601f8101851361409b57600080fd5b80356140a9613277826131e8565b8082825260208201915060208360051b8501019250878311156140cb57600080fd5b6020840193505b828410156140f65783356140e581613b13565b8252602093840193909101906140d2565b9450505050602083013567ffffffffffffffff81111561411557600080fd5b613b09858286016132ab565b600082516141338184602087016133e9565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361419d5761419d61413d565b5060010190565b60208152600061182a6020830184613e49565b8051611668816130d9565b805161166881612fdb565b6000602082840312156141df57600080fd5b815167ffffffffffffffff8111156141f657600080fd5b820160c0818503121561420857600080fd5b614210613176565b614219826141b7565b8152614227602083016141c2565b6020820152604082015167ffffffffffffffff81111561424657600080fd5b61425286828501613be9565b604083015250614264606083016141c2565b6060820152614275608083016141c2565b608082015260a082015167ffffffffffffffff81111561429457600080fd5b6142a086828501613be9565b60a083015250949350505050565b6000602082840312156142c057600080fd5b815161182a81613b13565b84151581527fffffffff00000000000000000000000000000000000000000000000000000000841660208201527fffffffff0000000000000000000000000000000000000000000000000000000083166040820152608060608201526000614336608083018461340d565b9695505050505050565b8181038181111561042c5761042c61413d565b60006020828403121561436557600080fd5b815167ffffffffffffffff81111561437c57600080fd5b8201601f8101841361438d57600080fd5b805161439b613277826131e8565b8082825260208201915060208360051b8501019250868311156143bd57600080fd5b602084015b8381101561089d57805167ffffffffffffffff8111156143e157600080fd5b6143f089602083890101613be9565b845250602092830192016143c2565b841515815283151560208201527fffffffff0000000000000000000000000000000000000000000000000000000083166040820152608060608201526000614336608083018461340d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613cb5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151606060208801526144d66060880182613759565b90506040820151915086810360408801526144f1818361340d565b965050506020938401939190910190600101614472565b73ffffffffffffffffffffffffffffffffffffffff8616815260a06020820152600061453760a0830187613759565b8281036040840152614549818761340d565b90507fffffffff00000000000000000000000000000000000000000000000000000000851660608401528281036080840152614585818561340d565b98975050505050505050565b6000602082840312156145a357600080fd5b815161182a816130d9565b600086516145c0818460208b016133e9565b7fff00000000000000000000000000000000000000000000000000000000000000871690830190815285516145fc816001840160208a016133e9565b7fff00000000000000000000000000000000000000000000000000000000000000861660019290910191820152835161463c8160028401602088016133e9565b01600201979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201527fffffffff0000000000000000000000000000000000000000000000000000000060208301511660408201526000604083015160c060608401526146b360e084018261340d565b90507fffffffff0000000000000000000000000000000000000000000000000000000060608501511660808401527fffffffff0000000000000000000000000000000000000000000000000000000060808501511660a084015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526138e4828261340d565b600080600080600060a0868803121561475e57600080fd5b8551614769816130d9565b602087015190955067ffffffffffffffff81111561478657600080fd5b61479288828901613efa565b945050604086015167ffffffffffffffff8111156147af57600080fd5b6147bb88828901613be9565b93505060608601516147cc81612fdb565b608087015190925067ffffffffffffffff8111156147e957600080fd5b61398088828901613be9565b8082018082111561042c5761042c61413d56fea26469706673582212208d7b386f1e5a5d2d40286b5f521887689b480e2813187e7bf06b495da9fc439c64736f6c634300081a0033"; readonly linkReferences: {}; readonly deployedLinkReferences: {}; readonly immutableReferences: {"12147":[{"length":32,"start":8340}],"28708":[{"length":32,"start":387},{"length":32,"start":2870},{"length":32,"start":3074}],"30417":[{"length":32,"start":607},{"length":32,"start":4361}]}; readonly inputSourceName: "project/contracts/universalResolver/UniversalResolver.sol"; readonly buildInfoId: "solc-0_8_26-f05bdccb11f2cf6df865fc6a27a95b5ace6017ea"; }; import "hardhat/types/artifacts"; declare module "hardhat/types/artifacts" { interface ArtifactMap { ["UniversalResolver"]: UniversalResolver$Type; ["contracts/universalResolver/UniversalResolver.sol:UniversalResolver"]: UniversalResolver$Type; } }