0 txs
3 calls
constructor
constructor(address _LinearAlgorithm, address _ExponentialAlgorithm, address _CPAlgorithm, address _feeRecipient)
functions
checkInitParams
purefunction checkInitParams(uint128 _multiplier, uint128 _startPrice, address _recipient, uint128 _fee, address _Algorithm, uint8 _poolType) pure
getFactoryInfo
viewfunction getFactoryInfo() view returns (uint128, uint128, address)
isAlgorithmAllowed
viewfunction isAlgorithmAllowed(address _algorithm) view returns (bool isAllowed)
isMSAlgorithm
viewfunction isMSAlgorithm(address) view returns (bool)
isMSRouter
viewfunction isMSRouter(address) view returns (bool)
isRouterAllowed
viewfunction isRouterAllowed(address _router) view returns (bool isAllowed)
MAX_FEE_PERCENTAGE
viewfunction MAX_FEE_PERCENTAGE() view returns (uint128)
owner
viewfunction owner() view returns (address)
poolEnumTemplate
viewfunction poolEnumTemplate() view returns (address)
poolNotEnumTemplate
viewfunction poolNotEnumTemplate() view returns (address)
PROTOCOL_FEE_RECIPIENT
viewfunction PROTOCOL_FEE_RECIPIENT() view returns (address)
PROTOCOL_FEE
viewfunction PROTOCOL_FEE() view returns (uint128)
createPool
payablefunction createPool(address _nft, uint256[] _nftIds, uint128 _multiplier, uint128 _startPrice, address _recipient, uint128 _fee, address _Algorithm, uint8 _poolType) payable returns (address pool)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256 id, bytes) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setAlgorithmApproval
nonpayablefunction setAlgorithmApproval(address _algorithm, bool _approval)
setProtocolFee
nonpayablefunction setProtocolFee(uint128 _newProtocolFee)
setProtocolFeeRecipient
nonpayablefunction setProtocolFeeRecipient(address _newRecipient)
setRouterApproval
nonpayablefunction setRouterApproval(address _router, bool _approval)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawETH
nonpayablefunction withdrawETH()
withdrawNFTs
nonpayablefunction withdrawNFTs(address _nft, uint256[] _nftIds)
events
AlgorithmApproval
event AlgorithmApproval(address indexed algorithm, bool approval)
NewFeeRecipient
event NewFeeRecipient(address newRecipient)
NewPool
event NewPool(address pool, address indexed owner)
NewProtocolFee
event NewProtocolFee(uint128 newFee)
NFTDeposit
event NFTDeposit(address indexed collectionNFT, uint256 tokenID)
NFTWithdrawal
event NFTWithdrawal(address indexed owner, uint256 AmountOfNFTs)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RouterApproval
event RouterApproval(address indexed router, bool approval)
TokenDeposit
event TokenDeposit(address indexed from, uint256 amount)
TokenWithdrawal
event TokenWithdrawal(address indexed owner, uint256 withdrawAmount)
errors
No errors.
creation bytecode
0x60806040526608e1bc9bf04000600160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503480156200005157600080fd5b506040516200e1433803806200e143833981810160405281019062000077919062000414565b620000976200008b620002c260201b60201c565b620002ca60201b60201c565b6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620001ee906200038e565b604051809103906000f0801580156200020b573d6000803e3d6000fd5b50600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040516200025a906200039c565b604051809103906000f08015801562000277573d6000803e3d6000fd5b50600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000486565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b615556806200324c83390190565b6159a180620087a283390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003dc82620003af565b9050919050565b620003ee81620003cf565b8114620003fa57600080fd5b50565b6000815190506200040e81620003e3565b92915050565b60008060008060808587031215620004315762000430620003aa565b5b60006200044187828801620003fd565b94505060206200045487828801620003fd565b93505060406200046787828801620003fd565b92505060606200047a87828801620003fd565b91505092959194509250565b612db680620004966000396000f3fe6080604052600436106101395760003560e01c8063782be8dd116100ab578063c1eaaf551161006f578063c1eaaf5514610464578063d4cd8b011461048d578063e086e5ec146104ca578063e521cb92146104e1578063f2fde38b1461050a578063f4e6bf26146105335761018e565b8063782be8dd1461037b5780637bffb781146103a85780638da5cb5b146103d3578063ac587bc7146103fe578063be89a919146104275761018e565b8063558e44d3116100fd578063558e44d31461027657806360c6467f146102a157806361771e49146102cc5780636ad5e42a14610309578063715018a614610339578063730143c6146103505761018e565b80630b4501fd14610193578063150b7a02146101be578063201e7e9e146101fb578063341ffda01461022457806347c1a9be1461024d5761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff167f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f346040516101849190611a34565b60405180910390a2005b600080fd5b34801561019f57600080fd5b506101a8610570565b6040516101b59190611a7a565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190611b98565b610592565b6040516101f29190611c5b565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d9190611d05565b6105f5565b005b34801561023057600080fd5b5061024b60048036038101906102469190611d92565b6108cd565b005b34801561025957600080fd5b50610274600480360381019061026f9190611df7565b610a3a565b005b34801561028257600080fd5b5061028b610b7d565b6040516102989190611a7a565b60405180910390f35b3480156102ad57600080fd5b506102b6610b89565b6040516102c39190611e96565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190611eb1565b610baf565b6040516103009190611eed565b60405180910390f35b610323600480360381019061031e9190611f5e565b610c05565b6040516103309190612055565b60405180910390f35b34801561034557600080fd5b5061034e610f59565b005b34801561035c57600080fd5b50610365610f6d565b604051610372919061207f565b60405180910390f35b34801561038757600080fd5b50610390610f93565b60405161039f9392919061209a565b60405180910390f35b3480156103b457600080fd5b506103bd610fee565b6040516103ca91906120f2565b60405180910390f35b3480156103df57600080fd5b506103e8611014565b6040516103f5919061207f565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190611df7565b61103d565b005b34801561043357600080fd5b5061044e60048036038101906104499190611eb1565b611180565b60405161045b9190611eed565b60405180910390f35b34801561047057600080fd5b5061048b6004803603810190610486919061229a565b6111d6565b005b34801561049957600080fd5b506104b460048036038101906104af9190611eb1565b6113a5565b6040516104c19190611eed565b60405180910390f35b3480156104d657600080fd5b506104df6113c5565b005b3480156104ed57600080fd5b5061050860048036038101906105039190611eb1565b611521565b005b34801561051657600080fd5b50610531600480360381019061052c9190611eb1565b611634565b005b34801561053f57600080fd5b5061055a60048036038101906105559190611eb1565b6116b7565b6040516105679190611eed565b60405180910390f35b600160009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff167f8d41742ac3564b1eb1e8470ae8b62d1dbe59ead009fd546a27c6bfedaa5d9c5e856040516105da9190611a34565b60405180910390a263150b7a0260e01b905095945050505050565b60006002811115610609576106086122f6565b5b81600281111561061c5761061b6122f6565b5b148061064c575060016002811115610637576106366122f6565b5b81600281111561064a576106496122f6565b5b145b156106ab576000836fffffffffffffffffffffffffffffffff16146106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d906123a8565b60405180910390fd5b61078a565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461071a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107119061243a565b60405180910390fd5b670c7d713b49da00006fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161115610789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610780906124a6565b60405180910390fd5b5b8173ffffffffffffffffffffffffffffffffffffffff1663f0147a83866040518263ffffffff1660e01b81526004016107c391906124f7565b602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190612527565b801561088657508173ffffffffffffffffffffffffffffffffffffffff1663806e7225876040518263ffffffff1660e01b815260040161084491906124f7565b602060405180830381865afa158015610861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108859190612527565b5b6108c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bc906125c6565b60405180910390fd5b505050505050565b6108d56116d7565b670c7d713b49da00006fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90612632565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16600160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16036109c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109be906126c4565b60405180910390fd5b80600160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fcbbd64ac6ecce7d47cd60b1167905f395b2f4d35409011020953f37a12c4cd7381604051610a2f9190611a7a565b60405180910390a150565b610a426116d7565b801515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90612756565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fc0f798d210b2499788857cf350af0f270c83bf310e9f48c4c37a92d6ad025d7a82604051610b719190611eed565b60405180910390a25050565b670c7d713b49da000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a906127c2565b60405180910390fd5b610ca18787878787876105f5565b610caa8a611755565b90508073ffffffffffffffffffffffffffffffffffffffff16636d31181b888888338f8a8a8a6040518963ffffffff1660e01b8152600401610cf398979695949392919061285d565b600060405180830381600087803b158015610d0d57600080fd5b505af1158015610d21573d6000803e3d6000fd5b50505050600280811115610d3857610d376122f6565b5b826002811115610d4b57610d4a6122f6565b5b1480610d7b575060006002811115610d6657610d656122f6565b5b826002811115610d7957610d786122f6565b5b145b15610df85760008173ffffffffffffffffffffffffffffffffffffffff1634604051610da69061290c565b60006040518083038185875af1925050503d8060008114610de3576040519150601f19603f3d011682016040523d82523d6000602084013e610de8565b606091505b5050905080610df657600080fd5b505b600280811115610e0b57610e0a6122f6565b5b826002811115610e1e57610e1d6122f6565b5b1480610e4e575060016002811115610e3957610e386122f6565b5b826002811115610e4c57610e4b6122f6565b5b145b15610efe5760005b89899050811015610efc578a73ffffffffffffffffffffffffffffffffffffffff166342842e0e33848d8d86818110610e9257610e91612921565b5b905060200201356040518463ffffffff1660e01b8152600401610eb793929190612950565b600060405180830381600087803b158015610ed157600080fd5b505af1158015610ee5573d6000803e3d6000fd5b505050508080610ef4906129b6565b915050610e56565b505b3373ffffffffffffffffffffffffffffffffffffffff167f77948cb83ef3caff9ac13dfab1ea1f8a6875c98370287ce587f5dbc74cc5b6b082604051610f44919061207f565b60405180910390a29998505050505050505050565b610f616116d7565b610f6b6000611895565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000670c7d713b49da0000600160009054906101000a90046fffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925092509250909192565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110456116d7565b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90612756565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa9f2ddb1280739a792ad2857ddccd608260fef1d09642dc99525e6149e34dcd2826040516111749190611eed565b60405180910390a25050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111de6116d7565b80518273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611219919061207f565b602060405180830381865afa158015611236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125a9190612a13565b101561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290612a8c565b60405180910390fd5b60005b815181101561134a578273ffffffffffffffffffffffffffffffffffffffff166342842e0e306112cc611014565b8585815181106112df576112de612921565b5b60200260200101516040518463ffffffff1660e01b815260040161130593929190612950565b600060405180830381600087803b15801561131f57600080fd5b505af1158015611333573d6000803e3d6000fd5b505050508080611342906129b6565b91505061129e565b50611353611014565b73ffffffffffffffffffffffffffffffffffffffff167f0fad010bb612e87452fce7176925c641e9b8d06a8c98013c3e5f33838c619d7782516040516113999190611a34565b60405180910390a25050565b60056020528060005260406000206000915054906101000a900460ff1681565b6113cd6116d7565b600047905060008111611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612af8565b60405180910390fd5b600061141f611014565b73ffffffffffffffffffffffffffffffffffffffff16826040516114429061290c565b60006040518083038185875af1925050503d806000811461147f576040519150601f19603f3d011682016040523d82523d6000602084013e611484565b606091505b50509050806114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90612b64565b60405180910390fd5b6114d0611014565b73ffffffffffffffffffffffffffffffffffffffff167feddb53e10e60b3a2396b4222b3db092137bdbf7a6fecceaf2b0b438ff0ddc66e836040516115159190611a34565b60405180910390a25050565b6115296116d7565b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090612bf6565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f412871529f3cedd6ca6f10784258f4965a5d6e254127593fe354e7a62f6d0a2381604051611629919061207f565b60405180910390a150565b61163c6116d7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290612c88565b60405180910390fd5b6116b481611895565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b6116df611959565b73ffffffffffffffffffffffffffffffffffffffff166116fd611014565b73ffffffffffffffffffffffffffffffffffffffff1614611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90612cf4565b60405180910390fd5b565b6000808273ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f780e9d63000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016117b19190611c5b565b602060405180830381865afa9250505080156117eb57506040513d601f19601f820116820180604052508101906117e89190612527565b60015b61181957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061186e565b8061184657600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661186a565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9150505b61188d8173ffffffffffffffffffffffffffffffffffffffff16611961565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f09050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90612d60565b60405180910390fd5b919050565b6000819050919050565b611a2e81611a1b565b82525050565b6000602082019050611a496000830184611a25565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b611a7481611a4f565b82525050565b6000602082019050611a8f6000830184611a6b565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ad482611aa9565b9050919050565b611ae481611ac9565b8114611aef57600080fd5b50565b600081359050611b0181611adb565b92915050565b611b1081611a1b565b8114611b1b57600080fd5b50565b600081359050611b2d81611b07565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611b5857611b57611b33565b5b8235905067ffffffffffffffff811115611b7557611b74611b38565b5b602083019150836001820283011115611b9157611b90611b3d565b5b9250929050565b600080600080600060808688031215611bb457611bb3611a9f565b5b6000611bc288828901611af2565b9550506020611bd388828901611af2565b9450506040611be488828901611b1e565b935050606086013567ffffffffffffffff811115611c0557611c04611aa4565b5b611c1188828901611b42565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c5581611c20565b82525050565b6000602082019050611c706000830184611c4c565b92915050565b611c7f81611a4f565b8114611c8a57600080fd5b50565b600081359050611c9c81611c76565b92915050565b6000611cad82611ac9565b9050919050565b611cbd81611ca2565b8114611cc857600080fd5b50565b600081359050611cda81611cb4565b92915050565b60038110611ced57600080fd5b50565b600081359050611cff81611ce0565b92915050565b60008060008060008060c08789031215611d2257611d21611a9f565b5b6000611d3089828a01611c8d565b9650506020611d4189828a01611c8d565b9550506040611d5289828a01611af2565b9450506060611d6389828a01611c8d565b9350506080611d7489828a01611ccb565b92505060a0611d8589828a01611cf0565b9150509295509295509295565b600060208284031215611da857611da7611a9f565b5b6000611db684828501611c8d565b91505092915050565b60008115159050919050565b611dd481611dbf565b8114611ddf57600080fd5b50565b600081359050611df181611dcb565b92915050565b60008060408385031215611e0e57611e0d611a9f565b5b6000611e1c85828601611af2565b9250506020611e2d85828601611de2565b9150509250929050565b6000819050919050565b6000611e5c611e57611e5284611aa9565b611e37565b611aa9565b9050919050565b6000611e6e82611e41565b9050919050565b6000611e8082611e63565b9050919050565b611e9081611e75565b82525050565b6000602082019050611eab6000830184611e87565b92915050565b600060208284031215611ec757611ec6611a9f565b5b6000611ed584828501611af2565b91505092915050565b611ee781611dbf565b82525050565b6000602082019050611f026000830184611ede565b92915050565b60008083601f840112611f1e57611f1d611b33565b5b8235905067ffffffffffffffff811115611f3b57611f3a611b38565b5b602083019150836020820283011115611f5757611f56611b3d565b5b9250929050565b60008060008060008060008060006101008a8c031215611f8157611f80611a9f565b5b6000611f8f8c828d01611af2565b99505060208a013567ffffffffffffffff811115611fb057611faf611aa4565b5b611fbc8c828d01611f08565b98509850506040611fcf8c828d01611c8d565b9650506060611fe08c828d01611c8d565b9550506080611ff18c828d01611af2565b94505060a06120028c828d01611c8d565b93505060c06120138c828d01611ccb565b92505060e06120248c828d01611cf0565b9150509295985092959850929598565b600061203f82611e63565b9050919050565b61204f81612034565b82525050565b600060208201905061206a6000830184612046565b92915050565b61207981611ac9565b82525050565b60006020820190506120946000830184612070565b92915050565b60006060820190506120af6000830186611a6b565b6120bc6020830185611a6b565b6120c96040830184612070565b949350505050565b60006120dc82611e63565b9050919050565b6120ec816120d1565b82525050565b600060208201905061210760008301846120e3565b92915050565b600061211882611ac9565b9050919050565b6121288161210d565b811461213357600080fd5b50565b6000813590506121458161211f565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6121948261214b565b810181811067ffffffffffffffff821117156121b3576121b261215c565b5b80604052505050565b60006121c6611a95565b90506121d2828261218b565b919050565b600067ffffffffffffffff8211156121f2576121f161215c565b5b602082029050602081019050919050565b6000612216612211846121d7565b6121bc565b9050808382526020820190506020840283018581111561223957612238611b3d565b5b835b81811015612262578061224e8882611b1e565b84526020840193505060208101905061223b565b5050509392505050565b600082601f83011261228157612280611b33565b5b8135612291848260208601612203565b91505092915050565b600080604083850312156122b1576122b0611a9f565b5b60006122bf85828601612136565b925050602083013567ffffffffffffffff8111156122e0576122df611aa4565b5b6122ec8582860161226c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f46656520617661696c61626c65206f6e6c79206f6e20747261646520706f6f6c60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612392602183612325565b915061239d82612336565b604082019050919050565b600060208201905081810360008301526123c181612385565b9050919050565b7f526563697069656e74206e6f7420617661696c61626c65206f6e20747261646560008201527f20706f6f6c000000000000000000000000000000000000000000000000000000602082015250565b6000612424602583612325565b915061242f826123c8565b604082019050919050565b6000602082019050818103600083015261245381612417565b9050919050565b7f506f6f6c20466565206578636565647320746865206d6178696d756d00000000600082015250565b6000612490601c83612325565b915061249b8261245a565b602082019050919050565b600060208201905081810360008301526124bf81612483565b9050919050565b60006124e16124dc6124d784611a4f565b611e37565b611a1b565b9050919050565b6124f1816124c6565b82525050565b600060208201905061250c60008301846124e8565b92915050565b60008151905061252181611dcb565b92915050565b60006020828403121561253d5761253c611a9f565b5b600061254b84828501612512565b91505092915050565b7f496e76616c6964206d756c7469706c696572206f72207374617274207072696360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b60006125b0602183612325565b91506125bb82612554565b604082019050919050565b600060208201905081810360008301526125df816125a3565b9050919050565b7f4e6577204665652065786365656473206c696d69740000000000000000000000600082015250565b600061261c601583612325565b9150612627826125e6565b602082019050919050565b6000602082019050818103600083015261264b8161260f565b9050919050565b7f4e6577206665652063616e6e6f74206265207468652073616d6520617320746860008201527f652070726576696f7573206f6e65000000000000000000000000000000000000602082015250565b60006126ae602e83612325565b91506126b982612652565b604082019050919050565b600060208201905081810360008301526126dd816126a1565b9050919050565b7f417070726f76616c206973207468652073616d65207468616e2070726576696f60008201527f7573000000000000000000000000000000000000000000000000000000000000602082015250565b6000612740602283612325565b915061274b826126e4565b604082019050919050565b6000602082019050818103600083015261276f81612733565b9050919050565b7f416c676f726974686d206973206e6f7420417070726f76656400000000000000600082015250565b60006127ac601983612325565b91506127b782612776565b602082019050919050565b600060208201905081810360008301526127db8161279f565b9050919050565b60006127ed82611e41565b9050919050565b60006127ff826127e2565b9050919050565b61280f816127f4565b82525050565b60038110612826576128256122f6565b5b50565b600081905061283782612815565b919050565b600061284782612829565b9050919050565b6128578161283c565b82525050565b600061010082019050612873600083018b611a6b565b612880602083018a611a6b565b61288d6040830189612070565b61289a6060830188612070565b6128a76080830187612070565b6128b460a0830186611a6b565b6128c160c0830185612806565b6128ce60e083018461284e565b9998505050505050505050565b600081905092915050565b50565b60006128f66000836128db565b9150612901826128e6565b600082019050919050565b6000612917826128e9565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006060820190506129656000830186612070565b6129726020830185612070565b61297f6040830184611a25565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129c182611a1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129f3576129f2612987565b5b600182019050919050565b600081519050612a0d81611b07565b92915050565b600060208284031215612a2957612a28611a9f565b5b6000612a37848285016129fe565b91505092915050565b7f496e73756666696369656e74204e46542042616c616e63650000000000000000600082015250565b6000612a76601883612325565b9150612a8182612a40565b602082019050919050565b60006020820190508181036000830152612aa581612a69565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612ae2601483612325565b9150612aed82612aac565b602082019050919050565b60006020820190508181036000830152612b1181612ad5565b9050919050565b7f5472616e73616374696f6e206e6f742073656e74000000000000000000000000600082015250565b6000612b4e601483612325565b9150612b5982612b18565b602082019050919050565b60006020820190508181036000830152612b7d81612b41565b9050919050565b7f4e65772066656520726563697069656e742063616e6e6f74206265207468652060008201527f73616d65206173207468652070726576696f7573206f6e650000000000000000602082015250565b6000612be0603883612325565b9150612beb82612b84565b604082019050919050565b60006020820190508181036000830152612c0f81612bd3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c72602683612325565b9150612c7d82612c16565b604082019050919050565b60006020820190508181036000830152612ca181612c65565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cde602083612325565b9150612ce982612ca8565b602082019050919050565b60006020820190508181036000830152612d0d81612cd1565b9050919050565b7f455243313136373a20637265617465206661696c656400000000000000000000600082015250565b6000612d4a601683612325565b9150612d5582612d14565b602082019050919050565b60006020820190508181036000830152612d7981612d3d565b905091905056fea264697066735822122071a6a3bdcc37ed1569313424ab7d2f943e66338d369bb581749305bded0e046f64736f6c6343000811003360806040523480156200001157600080fd5b5060016000819055506200003a6200002e6200004060201b60201c565b6200004860201b60201c565b6200010e565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b615438806200011e6000396000f3fe6080604052600436106101c65760003560e01c806378afd6db116100f7578063bba95d0711610095578063d9e1e25c11610064578063d9e1e25c14610660578063f1a9af891461068b578063f2fde38b146106b6578063fea72227146106df57610204565b8063bba95d071461058e578063c1eaaf55146105cb578063c45a0155146105f4578063d8711d041461061f57610204565b80638d8f2adb116100d15780638d8f2adb146104e05780638da5cb5b146104f75780639cdd0de014610522578063b0a7d9341461056357610204565b806378afd6db1461045c5780637a0ace6d146104855780637c0b8de2146104b557610204565b80634d272a311161016457806367b8c52c1161013e57806367b8c52c146103d05780636d31181b146103f95780636e13b58014610415578063715018a61461044557610204565b80634d272a311461034957806360246c881461037257806366d003ac146103a557610204565b80631b3ed722116101a05780631b3ed7221461029c57806324bcdfbd146102c757806335824b86146102f25780633ceafece1461031e57610204565b80630a2e0f84146102095780630a87f14814610234578063150b7a021461025f57610204565b36610204577ff1b3be8dace0fecfbdb6fb0fa1cc014c612bcb1b46db027c1ece5fc11fff09d6346040516101fa91906137cc565b60405180910390a1005b600080fd5b34801561021557600080fd5b5061021e610708565b60405161022b91906138a5565b60405180910390f35b34801561024057600080fd5b506102496108ec565b60405161025691906138f2565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190613a10565b6108f8565b6040516102939190613ad3565b60405180910390f35b3480156102a857600080fd5b506102b1610946565b6040516102be91906138f2565b60405180910390f35b3480156102d357600080fd5b506102dc610968565b6040516102e991906138f2565b60405180910390f35b3480156102fe57600080fd5b5061030761098a565b604051610315929190613bdd565b60405180910390f35b34801561032a57600080fd5b50610333610a4f565b6040516103409190613c1c565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613c63565b610ad7565b005b34801561037e57600080fd5b50610387610cb1565b60405161039c99989796959493929190613d07565b60405180910390f35b3480156103b157600080fd5b506103ba610d89565b6040516103c79190613c1c565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190613c63565b610daf565b005b610413600480360381019061040e9190613e05565b610f92565b005b61042f600480360381019061042a9190613ebb565b611294565b60405161043c91906137cc565b60405180910390f35b34801561045157600080fd5b5061045a6114e5565b005b34801561046857600080fd5b50610483600480360381019061047e9190613f0e565b6114f9565b005b61049f600480360381019061049a9190614079565b611681565b6040516104ac91906137cc565b60405180910390f35b3480156104c157600080fd5b506104ca6118d5565b6040516104d79190613c1c565b60405180910390f35b3480156104ec57600080fd5b506104f56118fb565b005b34801561050357600080fd5b5061050c611a57565b6040516105199190613c1c565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906140e8565b611a81565b60405161055a959493929190614130565b60405180910390f35b34801561056f57600080fd5b50610578611c34565b6040516105859190614183565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190614079565b611c47565b6040516105c291906137cc565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed91906141dc565b611df6565b005b34801561060057600080fd5b50610609611fc5565b6040516106169190614259565b60405180910390f35b34801561062b57600080fd5b50610646600480360381019061064191906140e8565b611feb565b604051610657959493929190614130565b60405180910390f35b34801561066c57600080fd5b5061067561219e565b6040516106829190614274565b60405180910390f35b34801561069757600080fd5b506106a06121c4565b6040516106ad91906138f2565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190613f0e565b6121e6565b005b3480156106eb57600080fd5b5061070660048036038101906107019190613c63565b612269565b005b60606000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161076c9190613c1c565b602060405180830381865afa158015610789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ad91906142a4565b9050600081036107be5750506108e9565b60006001826107cd9190614300565b905060006001826107de9190614334565b67ffffffffffffffff8111156107f7576107f6613f3b565b5b6040519080825280602002602001820160405280156108255781602001602082028036833780820191505090505b50905060005b8281116108e0578473ffffffffffffffffffffffffffffffffffffffff16632f745c5930836040518363ffffffff1660e01b815260040161086d929190614368565b602060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae91906142a4565b8282815181106108c1576108c0614391565b5b60200260200101818152505080806108d8906143c0565b91505061082b565b50809450505050505b90565b670c7d713b49da000081565b60007f8d41742ac3564b1eb1e8470ae8b62d1dbe59ead009fd546a27c6bfedaa5d9c5e338560405161092b929190614368565b60405180910390a163150b7a0260e01b905095945050505050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b600360009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60006060600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a4991906144ae565b90509091565b60008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610aae57309050610ad4565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b610adf612443565b806fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1603610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90614569565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0147a83826040518263ffffffff1660e01b8152600401610bbe91906145ba565b602060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190614601565b610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c359061467a565b60405180910390fd5b80600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f44b74ff1342b2d873c1e31fad9132996b29727c3ee8b08f3159481ce8e3467d681604051610ca691906138f2565b60405180910390a150565b600080600080606060006060600080600260009054906101000a90046fffffffffffffffffffffffffffffffff169850600260109054906101000a90046fffffffffffffffffffffffffffffffff169750600360009054906101000a90046fffffffffffffffffffffffffffffffff169650600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550610d50610708565b9450610d5a61098a565b8094508195505050600660149054906101000a900460ff169150610d7c610a4f565b9050909192939495969798565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610db7612443565b600280811115610dca57610dc9613c90565b5b600660149054906101000a900460ff166002811115610dec57610deb613c90565b5b14610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061470c565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16670c7d713b49da00006fffffffffffffffffffffffffffffffff161015610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614778565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16600360009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1603610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906147e4565b60405180910390fd5b80600360006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fd23551c2af1a097e196af72b4e757c4de46eaa35d565b2a362770c769bb8b16f81604051610f8791906145ba565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff16610fb2611a57565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90614850565b60405180910390fd5b611011856124c1565b8573ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a85785600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b826fffffffffffffffffffffffffffffffff16600360009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161461112b5782600360006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555086600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660146101000a81548160ff0219169083600281111561124457611243613c90565b5b021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050565b600061129e612587565b600160028111156112b2576112b1613c90565b5b600660149054906101000a900460ff1660028111156112d4576112d3613c90565b5b148061131257506002808111156112ee576112ed613c90565b5b600660149054906101000a900460ff1660028111156113105761130f613c90565b5b145b611351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611348906148bc565b60405180910390fd5b83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113ad9190613c1c565b602060405180830381865afa1580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee91906142a4565b101561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690614928565b60405180910390fd5b600061143a836125d6565b9050600080600061144b888861268a565b8094508195508296508398505050505061146585846128c1565b61146f8489612a0a565b6114798282612c36565b61148285612dae565b8373ffffffffffffffffffffffffffffffffffffffff167f06b1dfbaca5074fbd53d1b5ffb48d2749c4f5943e10f2975598e48f6e7000d14868a6040516114ca929190614948565b60405180910390a2505050506114de612e72565b9392505050565b6114ed612443565b6114f760006124c1565b565b611501612443565b60028081111561151457611513613c90565b5b600660149054906101000a900460ff16600281111561153657611535613c90565b5b03611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d906149e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90614a75565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f37069114dc4447a7abc5cb9d8896d53638294236089c935044628dda808c9f06816040516116769190613c1c565b60405180910390a150565b600061168b612587565b6001600281111561169f5761169e613c90565b5b600660149054906101000a900460ff1660028111156116c1576116c0613c90565b5b14806116ff57506002808111156116db576116da613c90565b5b600660149054906101000a900460ff1660028111156116fd576116fc613c90565b5b145b61173e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611735906148bc565b60405180910390fd5b8351600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161179b9190613c1c565b602060405180830381865afa1580156117b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117dc91906142a4565b101561181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490614928565b60405180910390fd5b6000611828836125d6565b9050600080600061183a88518861268a565b8094508195508296508398505050505061185485846128c1565b61185e8489612e7c565b6118688282612c36565b61187185612dae565b8373ffffffffffffffffffffffffffffffffffffffff167f06b1dfbaca5074fbd53d1b5ffb48d2749c4f5943e10f2975598e48f6e7000d14868a516040516118ba929190614948565b60405180910390a2505050506118ce612e72565b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611903612443565b60004790506000811161194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290614ae1565b60405180910390fd5b6000611955611a57565b73ffffffffffffffffffffffffffffffffffffffff168260405161197890614b32565b60006040518083038185875af1925050503d80600081146119b5576040519150601f19603f3d011682016040523d82523d6000602084013e6119ba565b606091505b50509050806119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590614b93565b60405180910390fd5b611a06611a57565b73ffffffffffffffffffffffffffffffffffffffff167feddb53e10e60b3a2396b4222b3db092137bdbf7a6fecceaf2b0b438ff0ddc66e83604051611a4b91906137cc565b60405180910390a25050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663737142aa600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff1689600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190614bc8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401611bd6959493929190614bf5565b60a060405180830381865afa158015611bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c179190614c48565b809550819650829750839850849950505050505091939590929450565b600660149054906101000a900460ff1681565b6000611c51612587565b60006002811115611c6557611c64613c90565b5b600660149054906101000a900460ff166002811115611c8757611c86613c90565b5b1480611cc55750600280811115611ca157611ca0613c90565b5b600660149054906101000a900460ff166002811115611cc357611cc2613c90565b5b145b611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90614d0f565b60405180910390fd5b82471015611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90614d7b565b60405180910390fd5b6000611d52836125d6565b90506000806000611d6488518861309d565b80945081955082965083985050505050611d7e84896132d4565b611d89838686613502565b611d938282612c36565b8373ffffffffffffffffffffffffffffffffffffffff167ecf6f77b65ea0ac901747b80e8becba7db1c3a04b9bda970ef1b4dc53c54a32895187604051611ddb929190614948565b60405180910390a250505050611def612e72565b9392505050565b611dfe612443565b80518273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e399190613c1c565b602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a91906142a4565b1015611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290614928565b60405180910390fd5b60005b8151811015611f6a578273ffffffffffffffffffffffffffffffffffffffff166342842e0e30611eec611a57565b858581518110611eff57611efe614391565b5b60200260200101516040518463ffffffff1660e01b8152600401611f2593929190614d9b565b600060405180830381600087803b158015611f3f57600080fd5b505af1158015611f53573d6000803e3d6000fd5b505050508080611f62906143c0565b915050611ebe565b50611f73611a57565b73ffffffffffffffffffffffffffffffffffffffff167f0fad010bb612e87452fce7176925c641e9b8d06a8c98013c3e5f33838c619d778251604051611fb991906137cc565b60405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6649054600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff1689600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121019190614bc8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401612140959493929190614bf5565b60a060405180830381865afa15801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190614c48565b809550819650829750839850849950505050505091939590929450565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6121ee612443565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490614e44565b60405180910390fd5b612266816124c1565b50565b612271612443565b806fffffffffffffffffffffffffffffffff16600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16036122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90614eb0565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663806e7225826040518263ffffffff1660e01b815260040161235091906145ba565b602060405180830381865afa15801561236d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123919190614601565b6123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c790614f1c565b60405180910390fd5b80600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fc75ea82b4452774a557ab43d8f84b03688cdde824aeaef6a639d686bd53144018160405161243891906138f2565b60405180910390a150565b61244b613645565b73ffffffffffffffffffffffffffffffffffffffff16612469611a57565b73ffffffffffffffffffffffffffffffffffffffff16146124bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b690614f88565b60405180910390fd5b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6002600054036125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c390614ff4565b60405180910390fd5b6002600081905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361771e49336040518263ffffffff1660e01b81526004016126339190613c1c565b602060405180830381865afa158015612650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126749190614601565b1561268157819050612685565b3390505b919050565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6649054600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff168a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a09190614bc8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016127df959493929190614bf5565b60a060405180830381865afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190614c48565b809850819950829650839750849550505050505080612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90615060565b60405180910390fd5b858511156128b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ae906150f2565b60405180910390fd5b5092959194509250565b81341015612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb9061515e565b60405180910390fd5b600061290e610a4f565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146129fc5760008173ffffffffffffffffffffffffffffffffffffffff1683856129689190614300565b60405161297490614b32565b60006040518083038185875af1925050503d80600081146129b1576040519150601f19603f3d011682016040523d82523d6000602084013e6129b6565b606091505b50509050806129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f1906151ca565b60405180910390fd5b505b612a058261364d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612a3b610708565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401612a789190613c1c565b602060405180830381865afa158015612a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab991906142a4565b905060005b84811015612b62578373ffffffffffffffffffffffffffffffffffffffff166342842e0e3088868581518110612af757612af6614391565b5b60200260200101516040518463ffffffff1660e01b8152600401612b1d93929190614d9b565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b505050508080612b5a906143c0565b915050612abe565b5060008373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401612b9e9190613c1c565b602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf91906142a4565b9050808583612bee9190614334565b14612c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2590615236565b60405180910390fd5b505050505050565b816fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614612cf05781600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f44b74ff1342b2d873c1e31fad9132996b29727c3ee8b08f3159481ce8e3467d682604051612ce791906138f2565b60405180910390a15b806fffffffffffffffffffffffffffffffff16600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614612daa5780600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fc75ea82b4452774a557ab43d8f84b03688cdde824aeaef6a639d686bd531440181604051612da191906138f2565b60405180910390a15b5050565b80341115612e6f5760003373ffffffffffffffffffffffffffffffffffffffff168234612ddb9190614300565b604051612de790614b32565b60006040518083038185875af1925050503d8060008114612e24576040519150601f19603f3d011682016040523d82523d6000602084013e612e29565b606091505b5050905080612e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e64906151ca565b60405180910390fd5b505b50565b6001600081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401612ede9190613c1c565b602060405180830381865afa158015612efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1f91906142a4565b905060005b8351811015612fc9578273ffffffffffffffffffffffffffffffffffffffff166342842e0e3087878581518110612f5e57612f5d614391565b5b60200260200101516040518463ffffffff1660e01b8152600401612f8493929190614d9b565b600060405180830381600087803b158015612f9e57600080fd5b505af1158015612fb2573d6000803e3d6000fd5b505050508080612fc1906143c0565b915050612f24565b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016130059190613c1c565b602060405180830381865afa158015613022573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304691906142a4565b9050808451836130569190614334565b14613096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308d90615236565b60405180910390fd5b5050505050565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663737142aa600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff168a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b39190614bc8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016131f2959493929190614bf5565b60a060405180830381865afa15801561320f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132339190614c48565b809850819950829650839750849550505050505080613287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327e90615060565b60405180910390fd5b858510156132ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c1906152c8565b60405180910390fd5b5092959194509250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000613305610a4f565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016133429190613c1c565b602060405180830381865afa15801561335f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338391906142a4565b905060005b845181101561342d578373ffffffffffffffffffffffffffffffffffffffff166342842e0e87858885815181106133c2576133c1614391565b5b60200260200101516040518463ffffffff1660e01b81526004016133e893929190614d9b565b600060405180830381600087803b15801561340257600080fd5b505af1158015613416573d6000803e3d6000fd5b505050508080613425906143c0565b915050613388565b5060008373ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016134699190613c1c565b602060405180830381865afa158015613486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134aa91906142a4565b9050808551836134ba9190614334565b146134fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f190615334565b60405180910390fd5b505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1631905060008273ffffffffffffffffffffffffffffffffffffffff168460405161354490614b32565b60006040518083038185875af1925050503d8060008114613581576040519150601f19603f3d011682016040523d82523d6000602084013e613586565b606091505b50509050806135ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c1906151ca565b60405180910390fd5b6135d38561364d565b60008373ffffffffffffffffffffffffffffffffffffffff1631905084836135fb9190614334565b81101561363d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613634906153a0565b60405180910390fd5b505050505050565b600033905090565b60008111156137b0576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663730143c66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e991906153d5565b9050478211156136f7574791505b60008211156137ae5760008173ffffffffffffffffffffffffffffffffffffffff168360405161372690614b32565b60006040518083038185875af1925050503d8060008114613763576040519150601f19603f3d011682016040523d82523d6000602084013e613768565b606091505b50509050806137ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a3906151ca565b60405180910390fd5b505b505b50565b6000819050919050565b6137c6816137b3565b82525050565b60006020820190506137e160008301846137bd565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61381c816137b3565b82525050565b600061382e8383613813565b60208301905092915050565b6000602082019050919050565b6000613852826137e7565b61385c81856137f2565b935061386783613803565b8060005b8381101561389857815161387f8882613822565b975061388a8361383a565b92505060018101905061386b565b5085935050505092915050565b600060208201905081810360008301526138bf8184613847565b905092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6138ec816138c7565b82525050565b600060208201905061390760008301846138e3565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061394c82613921565b9050919050565b61395c81613941565b811461396757600080fd5b50565b60008135905061397981613953565b92915050565b613988816137b3565b811461399357600080fd5b50565b6000813590506139a58161397f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126139d0576139cf6139ab565b5b8235905067ffffffffffffffff8111156139ed576139ec6139b0565b5b602083019150836001820283011115613a0957613a086139b5565b5b9250929050565b600080600080600060808688031215613a2c57613a2b613917565b5b6000613a3a8882890161396a565b9550506020613a4b8882890161396a565b9450506040613a5c88828901613996565b935050606086013567ffffffffffffffff811115613a7d57613a7c61391c565b5b613a89888289016139ba565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613acd81613a98565b82525050565b6000602082019050613ae86000830184613ac4565b92915050565b6000819050919050565b6000613b13613b0e613b0984613921565b613aee565b613921565b9050919050565b6000613b2582613af8565b9050919050565b6000613b3782613b1a565b9050919050565b613b4781613b2c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b87578082015181840152602081019050613b6c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613baf82613b4d565b613bb98185613b58565b9350613bc9818560208601613b69565b613bd281613b93565b840191505092915050565b6000604082019050613bf26000830185613b3e565b8181036020830152613c048184613ba4565b90509392505050565b613c1681613941565b82525050565b6000602082019050613c316000830184613c0d565b92915050565b613c40816138c7565b8114613c4b57600080fd5b50565b600081359050613c5d81613c37565b92915050565b600060208284031215613c7957613c78613917565b5b6000613c8784828501613c4e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613cd057613ccf613c90565b5b50565b6000819050613ce182613cbf565b919050565b6000613cf182613cd3565b9050919050565b613d0181613ce6565b82525050565b600061012082019050613d1d600083018c6138e3565b613d2a602083018b6138e3565b613d37604083018a6138e3565b613d446060830189613c0d565b8181036080830152613d568188613847565b9050613d6560a0830187613b3e565b81810360c0830152613d778186613ba4565b9050613d8660e0830185613cf8565b613d94610100830184613c0d565b9a9950505050505050505050565b6000613dad82613941565b9050919050565b613dbd81613da2565b8114613dc857600080fd5b50565b600081359050613dda81613db4565b92915050565b60038110613ded57600080fd5b50565b600081359050613dff81613de0565b92915050565b600080600080600080600080610100898b031215613e2657613e25613917565b5b6000613e348b828c01613c4e565b9850506020613e458b828c01613c4e565b9750506040613e568b828c0161396a565b9650506060613e678b828c0161396a565b9550506080613e788b828c0161396a565b94505060a0613e898b828c01613c4e565b93505060c0613e9a8b828c01613dcb565b92505060e0613eab8b828c01613df0565b9150509295985092959890939650565b600080600060608486031215613ed457613ed3613917565b5b6000613ee286828701613996565b9350506020613ef386828701613996565b9250506040613f048682870161396a565b9150509250925092565b600060208284031215613f2457613f23613917565b5b6000613f328482850161396a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f7382613b93565b810181811067ffffffffffffffff82111715613f9257613f91613f3b565b5b80604052505050565b6000613fa561390d565b9050613fb18282613f6a565b919050565b600067ffffffffffffffff821115613fd157613fd0613f3b565b5b602082029050602081019050919050565b6000613ff5613ff084613fb6565b613f9b565b90508083825260208201905060208402830185811115614018576140176139b5565b5b835b81811015614041578061402d8882613996565b84526020840193505060208101905061401a565b5050509392505050565b600082601f8301126140605761405f6139ab565b5b8135614070848260208601613fe2565b91505092915050565b60008060006060848603121561409257614091613917565b5b600084013567ffffffffffffffff8111156140b0576140af61391c565b5b6140bc8682870161404b565b93505060206140cd86828701613996565b92505060406140de8682870161396a565b9150509250925092565b6000602082840312156140fe576140fd613917565b5b600061410c84828501613996565b91505092915050565b60008115159050919050565b61412a81614115565b82525050565b600060a0820190506141456000830188614121565b61415260208301876138e3565b61415f60408301866138e3565b61416c60608301856137bd565b61417960808301846137bd565b9695505050505050565b60006020820190506141986000830184613cf8565b92915050565b60006141a982613941565b9050919050565b6141b98161419e565b81146141c457600080fd5b50565b6000813590506141d6816141b0565b92915050565b600080604083850312156141f3576141f2613917565b5b6000614201858286016141c7565b925050602083013567ffffffffffffffff8111156142225761422161391c565b5b61422e8582860161404b565b9150509250929050565b600061424382613b1a565b9050919050565b61425381614238565b82525050565b600060208201905061426e600083018461424a565b92915050565b60006020820190506142896000830184613b3e565b92915050565b60008151905061429e8161397f565b92915050565b6000602082840312156142ba576142b9613917565b5b60006142c88482850161428f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061430b826137b3565b9150614316836137b3565b925082820390508181111561432e5761432d6142d1565b5b92915050565b600061433f826137b3565b915061434a836137b3565b9250828201905080821115614362576143616142d1565b5b92915050565b600060408201905061437d6000830185613c0d565b61438a60208301846137bd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006143cb826137b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143fd576143fc6142d1565b5b600182019050919050565b600080fd5b600067ffffffffffffffff82111561442857614427613f3b565b5b61443182613b93565b9050602081019050919050565b600061445161444c8461440d565b613f9b565b90508281526020810184848401111561446d5761446c614408565b5b614478848285613b69565b509392505050565b600082601f830112614495576144946139ab565b5b81516144a584826020860161443e565b91505092915050565b6000602082840312156144c4576144c3613917565b5b600082015167ffffffffffffffff8111156144e2576144e161391c565b5b6144ee84828501614480565b91505092915050565b7f4e657720737461727420707269636520697320657175616c207468616e20637560008201527f7272656e74000000000000000000000000000000000000000000000000000000602082015250565b6000614553602583613b58565b915061455e826144f7565b604082019050919050565b6000602082019050818103600083015261458281614546565b9050919050565b60006145a461459f61459a846138c7565b613aee565b6137b3565b9050919050565b6145b481614589565b82525050565b60006020820190506145cf60008301846145ab565b92915050565b6145de81614115565b81146145e957600080fd5b50565b6000815190506145fb816145d5565b92915050565b60006020828403121561461757614616613917565b5b6000614625848285016145ec565b91505092915050565b7f496e76616c696420537461727420507269636500000000000000000000000000600082015250565b6000614664601383613b58565b915061466f8261462e565b602082019050919050565b6000602082019050818103600083015261469381614657565b9050919050565b7f46656520617661696c61626c65206f6e6c79206f6e20747261646520706f6f6c60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006146f6602183613b58565b91506147018261469a565b604082019050919050565b60006020820190508181036000830152614725816146e9565b9050919050565b7f546865206d6178696d756d207472616465206665652069732039302500000000600082015250565b6000614762601c83613b58565b915061476d8261472c565b602082019050919050565b6000602082019050818103600083015261479181614755565b9050919050565b7f4e65772066656520697320657175616c207468616e2063757272656e74000000600082015250565b60006147ce601d83613b58565b91506147d982614798565b602082019050919050565b600060208201905081810360008301526147fd816147c1565b9050919050565b7f506f6f6c206974277320616c726561647920696e697469616c697a6564000000600082015250565b600061483a601d83613b58565b915061484582614804565b602082019050919050565b600060208201905081810360008301526148698161482d565b9050919050565b7f43616e6e6f742073656c6c206f6e2073656c6c2d7479706520706f6f6c000000600082015250565b60006148a6601d83613b58565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b7f496e73756666696369656e74204e46542062616c616e63650000000000000000600082015250565b6000614912601883613b58565b915061491d826148dc565b602082019050919050565b6000602082019050818103600083015261494181614905565b9050919050565b600060408201905061495d60008301856137bd565b61496a60208301846137bd565b9392505050565b7f526563697069656e74206e6f7420737570706f7274656420696e20747261646560008201527f20706f6f6c730000000000000000000000000000000000000000000000000000602082015250565b60006149cd602683613b58565b91506149d882614971565b604082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f4e657720726563697069656e7420697320657175616c207468616e206375727260008201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b6000614a5f602383613b58565b9150614a6a82614a03565b604082019050919050565b60006020820190508181036000830152614a8e81614a52565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614acb601483613b58565b9150614ad682614a95565b602082019050919050565b60006020820190508181036000830152614afa81614abe565b9050919050565b600081905092915050565b50565b6000614b1c600083614b01565b9150614b2782614b0c565b600082019050919050565b6000614b3d82614b0f565b9150819050919050565b7f416d6f756e74206e6f742073656e740000000000000000000000000000000000600082015250565b6000614b7d600f83613b58565b9150614b8882614b47565b602082019050919050565b60006020820190508181036000830152614bac81614b70565b9050919050565b600081519050614bc281613c37565b92915050565b600060208284031215614bde57614bdd613917565b5b6000614bec84828501614bb3565b91505092915050565b600060a082019050614c0a60008301886138e3565b614c1760208301876138e3565b614c2460408301866137bd565b614c3160608301856138e3565b614c3e60808301846138e3565b9695505050505050565b600080600080600060a08688031215614c6457614c63613917565b5b6000614c72888289016145ec565b9550506020614c8388828901614bb3565b9450506040614c9488828901614bb3565b9350506060614ca58882890161428f565b9250506080614cb68882890161428f565b9150509295509295909350565b7f43616e6e6f742073656c6c206f6e206275792d7479706520706f6f6c00000000600082015250565b6000614cf9601c83613b58565b9150614d0482614cc3565b602082019050919050565b60006020820190508181036000830152614d2881614cec565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000600082015250565b6000614d65601a83613b58565b9150614d7082614d2f565b602082019050919050565b60006020820190508181036000830152614d9481614d58565b9050919050565b6000606082019050614db06000830186613c0d565b614dbd6020830185613c0d565b614dca60408301846137bd565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e2e602683613b58565b9150614e3982614dd2565b604082019050919050565b60006020820190508181036000830152614e5d81614e21565b9050919050565b7f4d756c7469706c69657220697320657175616c207468616e2063757272656e74600082015250565b6000614e9a602083613b58565b9150614ea582614e64565b602082019050919050565b60006020820190508181036000830152614ec981614e8d565b9050919050565b7f496e76616c6964206d756c7469706c6965720000000000000000000000000000600082015250565b6000614f06601283613b58565b9150614f1182614ed0565b602082019050919050565b60006020820190508181036000830152614f3581614ef9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614f72602083613b58565b9150614f7d82614f3c565b602082019050919050565b60006020820190508181036000830152614fa181614f65565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614fde601f83613b58565b9150614fe982614fa8565b602082019050919050565b6000602082019050818103600083015261500d81614fd1565b9050919050565b7f537761702063616e6e6f74206265207472616465640000000000000000000000600082015250565b600061504a601583613b58565b915061505582615014565b602082019050919050565b600060208201905081810360008301526150798161503d565b9050919050565b7f496e70757420616d6f756e742069732067726561746572207468616e206d617860008201527f2065787065637465640000000000000000000000000000000000000000000000602082015250565b60006150dc602983613b58565b91506150e782615080565b604082019050919050565b6000602082019050818103600083015261510b816150cf565b9050919050565b7f496e73756666696369656e7420616d6f756e74206f6620455448000000000000600082015250565b6000615148601a83613b58565b915061515382615112565b602082019050919050565b600060208201905081810360008301526151778161513b565b9050919050565b7f5478206572726f72000000000000000000000000000000000000000000000000600082015250565b60006151b4600883613b58565b91506151bf8261517e565b602082019050919050565b600060208201905081810360008301526151e3816151a7565b9050919050565b7f4f7574707574204e465473206e6f742073656e74000000000000000000000000600082015250565b6000615220601483613b58565b915061522b826151ea565b602082019050919050565b6000602082019050818103600083015261524f81615213565b9050919050565b7f4f757470757420616d6f756e74206973206c657373207468616e206d696e696d60008201527f756d206578706563746564000000000000000000000000000000000000000000602082015250565b60006152b2602b83613b58565b91506152bd82615256565b604082019050919050565b600060208201905081810360008301526152e1816152a5565b9050919050565b7f4e6f204e46547320726563656976656400000000000000000000000000000000600082015250565b600061531e601083613b58565b9150615329826152e8565b602082019050919050565b6000602082019050818103600083015261534d81615311565b9050919050565b7f4f757470757420746f6b656e73206e6f742053656e7400000000000000000000600082015250565b600061538a601683613b58565b915061539582615354565b602082019050919050565b600060208201905081810360008301526153b98161537d565b9050919050565b6000815190506153cf81613953565b92915050565b6000602082840312156153eb576153ea613917565b5b60006153f9848285016153c0565b9150509291505056fea2646970667358221220a4d0fd9cefcdaaaeb0ae06f684547d2754288aff4402833aa3078d74bdb3084f64736f6c6343000811003360806040523480156200001157600080fd5b5060016000819055506200003a6200002e6200004060201b60201c565b6200004860201b60201c565b6200010e565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b615883806200011e6000396000f3fe6080604052600436106101c65760003560e01c806378afd6db116100f7578063bba95d0711610095578063d9e1e25c11610064578063d9e1e25c14610660578063f1a9af891461068b578063f2fde38b146106b6578063fea72227146106df57610204565b8063bba95d071461058e578063c1eaaf55146105cb578063c45a0155146105f4578063d8711d041461061f57610204565b80638d8f2adb116100d15780638d8f2adb146104e05780638da5cb5b146104f75780639cdd0de014610522578063b0a7d9341461056357610204565b806378afd6db1461045c5780637a0ace6d146104855780637c0b8de2146104b557610204565b80634d272a311161016457806367b8c52c1161013e57806367b8c52c146103d05780636d31181b146103f95780636e13b58014610415578063715018a61461044557610204565b80634d272a311461034957806360246c881461037257806366d003ac146103a557610204565b80631b3ed722116101a05780631b3ed7221461029c57806324bcdfbd146102c757806335824b86146102f25780633ceafece1461031e57610204565b80630a2e0f84146102095780630a87f14814610234578063150b7a021461025f57610204565b36610204577ff1b3be8dace0fecfbdb6fb0fa1cc014c612bcb1b46db027c1ece5fc11fff09d6346040516101fa9190613aea565b60405180910390a1005b600080fd5b34801561021557600080fd5b5061021e610708565b60405161022b9190613bc3565b60405180910390f35b34801561024057600080fd5b50610249610760565b6040516102569190613c10565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190613d2e565b61076c565b6040516102939190613df1565b60405180910390f35b3480156102a857600080fd5b506102b1610839565b6040516102be9190613c10565b60405180910390f35b3480156102d357600080fd5b506102dc61085b565b6040516102e99190613c10565b60405180910390f35b3480156102fe57600080fd5b5061030761087d565b604051610315929190613efb565b60405180910390f35b34801561032a57600080fd5b50610333610942565b6040516103409190613f3a565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613f81565b6109ca565b005b34801561037e57600080fd5b50610387610ba4565b60405161039c99989796959493929190614025565b60405180910390f35b3480156103b157600080fd5b506103ba610c7c565b6040516103c79190613f3a565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190613f81565b610ca2565b005b610413600480360381019061040e9190614123565b610e85565b005b61042f600480360381019061042a91906141d9565b611187565b60405161043c9190613aea565b60405180910390f35b34801561045157600080fd5b5061045a6113d8565b005b34801561046857600080fd5b50610483600480360381019061047e919061422c565b6113ec565b005b61049f600480360381019061049a9190614397565b611574565b6040516104ac9190613aea565b60405180910390f35b3480156104c157600080fd5b506104ca6117c8565b6040516104d79190613f3a565b60405180910390f35b3480156104ec57600080fd5b506104f56117ee565b005b34801561050357600080fd5b5061050c61194a565b6040516105199190613f3a565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190614406565b611974565b60405161055a95949392919061444e565b60405180910390f35b34801561056f57600080fd5b50610578611b27565b60405161058591906144a1565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190614397565b611b3a565b6040516105c29190613aea565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed91906144fa565b611ce9565b005b34801561060057600080fd5b50610609612053565b6040516106169190614577565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614406565b612079565b60405161065795949392919061444e565b60405180910390f35b34801561066c57600080fd5b5061067561222c565b6040516106829190614592565b60405180910390f35b34801561069757600080fd5b506106a0612252565b6040516106ad9190613c10565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d8919061422c565b612274565b005b3480156106eb57600080fd5b5061070660048036038101906107019190613f81565b6122f7565b005b6060600880548060200260200160405190810160405280929190818152602001828054801561075657602002820191906000526020600020905b815481526020019060010190808311610742575b5050505050905090565b670c7d713b49da000081565b60003373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107ed5760088490806001815401808255809150506001900390600052602060002001600090919091909150555b7f8d41742ac3564b1eb1e8470ae8b62d1dbe59ead009fd546a27c6bfedaa5d9c5e338560405161081e9291906145ad565b60405180910390a163150b7a0260e01b905095945050505050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b600360009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60006060600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061093c919061467c565b90509091565b60008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036109a1573090506109c7565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b6109d26124d1565b806fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1603610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d90614737565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0147a83826040518263ffffffff1660e01b8152600401610ab19190614788565b602060405180830381865afa158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af291906147cf565b610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890614848565b60405180910390fd5b80600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f44b74ff1342b2d873c1e31fad9132996b29727c3ee8b08f3159481ce8e3467d681604051610b999190613c10565b60405180910390a150565b600080600080606060006060600080600260009054906101000a90046fffffffffffffffffffffffffffffffff169850600260109054906101000a90046fffffffffffffffffffffffffffffffff169750600360009054906101000a90046fffffffffffffffffffffffffffffffff169650600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550610c43610708565b9450610c4d61087d565b8094508195505050600660149054906101000a900460ff169150610c6f610942565b9050909192939495969798565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610caa6124d1565b600280811115610cbd57610cbc613fae565b5b600660149054906101000a900460ff166002811115610cdf57610cde613fae565b5b14610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d16906148da565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16670c7d713b49da00006fffffffffffffffffffffffffffffffff161015610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590614946565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16600360009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1603610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e09906149b2565b60405180910390fd5b80600360006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fd23551c2af1a097e196af72b4e757c4de46eaa35d565b2a362770c769bb8b16f81604051610e7a9190614788565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff16610ea561194a565b73ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290614a1e565b60405180910390fd5b610f048561254f565b8573ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9b5785600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b826fffffffffffffffffffffffffffffffff16600360009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161461101e5782600360006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555086600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660146101000a81548160ff0219169083600281111561113757611136613fae565b5b021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050565b6000611191612615565b600160028111156111a5576111a4613fae565b5b600660149054906101000a900460ff1660028111156111c7576111c6613fae565b5b148061120557506002808111156111e1576111e0613fae565b5b600660149054906101000a900460ff16600281111561120357611202613fae565b5b145b611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90614a8a565b60405180910390fd5b83600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112a09190613f3a565b602060405180830381865afa1580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e19190614abf565b1015611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614b38565b60405180910390fd5b600061132d83612664565b9050600080600061133e8888612718565b80945081955082965083985050505050611358858461294f565b6113628489612a98565b61136c8282612d5a565b61137585612ed2565b8373ffffffffffffffffffffffffffffffffffffffff167f06b1dfbaca5074fbd53d1b5ffb48d2749c4f5943e10f2975598e48f6e7000d14868a6040516113bd929190614b58565b60405180910390a2505050506113d1612f96565b9392505050565b6113e06124d1565b6113ea600061254f565b565b6113f46124d1565b60028081111561140757611406613fae565b5b600660149054906101000a900460ff16600281111561142957611428613fae565b5b03611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614bf3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f090614c85565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f37069114dc4447a7abc5cb9d8896d53638294236089c935044628dda808c9f06816040516115699190613f3a565b60405180910390a150565b600061157e612615565b6001600281111561159257611591613fae565b5b600660149054906101000a900460ff1660028111156115b4576115b3613fae565b5b14806115f257506002808111156115ce576115cd613fae565b5b600660149054906101000a900460ff1660028111156115f0576115ef613fae565b5b145b611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890614a8a565b60405180910390fd5b8351600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161168e9190613f3a565b602060405180830381865afa1580156116ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cf9190614abf565b1015611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170790614b38565b60405180910390fd5b600061171b83612664565b9050600080600061172d885188612718565b80945081955082965083985050505050611747858461294f565b6117518489612fa0565b61175b8282612d5a565b61176485612ed2565b8373ffffffffffffffffffffffffffffffffffffffff167f06b1dfbaca5074fbd53d1b5ffb48d2749c4f5943e10f2975598e48f6e7000d14868a516040516117ad929190614b58565b60405180910390a2505050506117c1612f96565b9392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117f66124d1565b60004790506000811161183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590614cf1565b60405180910390fd5b600061184861194a565b73ffffffffffffffffffffffffffffffffffffffff168260405161186b90614d42565b60006040518083038185875af1925050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b50509050806118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890614da3565b60405180910390fd5b6118f961194a565b73ffffffffffffffffffffffffffffffffffffffff167feddb53e10e60b3a2396b4222b3db092137bdbf7a6fecceaf2b0b438ff0ddc66e8360405161193e9190613aea565b60405180910390a25050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663737142aa600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff1689600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a9190614dd8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401611ac9959493929190614e05565b60a060405180830381865afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a9190614e58565b809550819650829750839850849950505050505091939590929450565b600660149054906101000a900460ff1681565b6000611b44612615565b60006002811115611b5857611b57613fae565b5b600660149054906101000a900460ff166002811115611b7a57611b79613fae565b5b1480611bb85750600280811115611b9457611b93613fae565b5b600660149054906101000a900460ff166002811115611bb657611bb5613fae565b5b145b611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90614f1f565b60405180910390fd5b82471015611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614f8b565b60405180910390fd5b6000611c4583612664565b90506000806000611c57885188613257565b80945081955082965083985050505050611c71848961348e565b611c7c8386866136bc565b611c868282612d5a565b8373ffffffffffffffffffffffffffffffffffffffff167ecf6f77b65ea0ac901747b80e8becba7db1c3a04b9bda970ef1b4dc53c54a32895187604051611cce929190614b58565b60405180910390a250505050611ce2612f96565b9392505050565b611cf16124d1565b80518273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d2c9190613f3a565b602060405180830381865afa158015611d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6d9190614abf565b1015611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da590614b38565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f485760005b8151811015611f42578273ffffffffffffffffffffffffffffffffffffffff166342842e0e30611e3461194a565b858581518110611e4757611e46614fab565b5b60200260200101516040518463ffffffff1660e01b8152600401611e6d93929190614fda565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50505050611f2f611f1f838381518110611eb857611eb7614fab565b5b60200260200101516008805480602002602001604051908101604052809291908181526020018280548015611f0c57602002820191906000526020600020905b815481526020019060010190808311611ef8575b50505050506137ff90919063ffffffff16565b600861389690919063ffffffff16565b8080611f3a90615040565b915050611e06565b50611ff9565b60005b8151811015611ff7578273ffffffffffffffffffffffffffffffffffffffff166342842e0e30611f7961194a565b858581518110611f8c57611f8b614fab565b5b60200260200101516040518463ffffffff1660e01b8152600401611fb293929190614fda565b600060405180830381600087803b158015611fcc57600080fd5b505af1158015611fe0573d6000803e3d6000fd5b505050508080611fef90615040565b915050611f4b565b505b61200161194a565b73ffffffffffffffffffffffffffffffffffffffff167f0fad010bb612e87452fce7176925c641e9b8d06a8c98013c3e5f33838c619d7782516040516120479190613aea565b60405180910390a25050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6649054600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff1689600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f9190614dd8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016121ce959493929190614e05565b60a060405180830381865afa1580156121eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220f9190614e58565b809550819650829750839850849950505050505091939590929450565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b61227c6124d1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e2906150fa565b60405180910390fd5b6122f48161254f565b50565b6122ff6124d1565b806fffffffffffffffffffffffffffffffff16600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1603612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237a90615166565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663806e7225826040518263ffffffff1660e01b81526004016123de9190614788565b602060405180830381865afa1580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241f91906147cf565b61245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906151d2565b60405180910390fd5b80600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fc75ea82b4452774a557ab43d8f84b03688cdde824aeaef6a639d686bd5314401816040516124c69190613c10565b60405180910390a150565b6124d9613963565b73ffffffffffffffffffffffffffffffffffffffff166124f761194a565b73ffffffffffffffffffffffffffffffffffffffff161461254d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125449061523e565b60405180910390fd5b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60026000540361265a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612651906152aa565b60405180910390fd5b6002600081905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361771e49336040518263ffffffff1660e01b81526004016126c19190613f3a565b602060405180830381865afa1580156126de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270291906147cf565b1561270f57819050612713565b3390505b919050565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6649054600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff168a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282e9190614dd8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b815260040161286d959493929190614e05565b60a060405180830381865afa15801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae9190614e58565b809850819950829650839750849550505050505080612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990615316565b60405180910390fd5b85851115612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c906153a8565b60405180910390fd5b5092959194509250565b81341015612992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298990615414565b60405180910390fd5b600061299c610942565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612a8a5760008173ffffffffffffffffffffffffffffffffffffffff1683856129f69190615434565b604051612a0290614d42565b60006040518083038185875af1925050503d8060008114612a3f576040519150601f19603f3d011682016040523d82523d6000602084013e612a44565b606091505b5050905080612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f906154b4565b60405180910390fd5b505b612a938261396b565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612ac9610708565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401612b069190613f3a565b602060405180830381865afa158015612b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b479190614abf565b905060005b84811015612c86578373ffffffffffffffffffffffffffffffffffffffff166342842e0e3088868581518110612b8557612b84614fab565b5b60200260200101516040518463ffffffff1660e01b8152600401612bab93929190614fda565b600060405180830381600087803b158015612bc557600080fd5b505af1158015612bd9573d6000803e3d6000fd5b505050506000612c5c848381518110612bf557612bf4614fab565b5b60200260200101516008805480602002602001604051908101604052809291908181526020018280548015612c4957602002820191906000526020600020905b815481526020019060010190808311612c35575b50505050506137ff90919063ffffffff16565b9050612c7281600861389690919063ffffffff16565b508080612c7e90615040565b915050612b4c565b5060008373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401612cc29190613f3a565b602060405180830381865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d039190614abf565b9050808583612d1291906154d4565b14612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4990615554565b60405180910390fd5b505050505050565b816fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614612e145781600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f44b74ff1342b2d873c1e31fad9132996b29727c3ee8b08f3159481ce8e3467d682604051612e0b9190613c10565b60405180910390a15b806fffffffffffffffffffffffffffffffff16600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614612ece5780600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fc75ea82b4452774a557ab43d8f84b03688cdde824aeaef6a639d686bd531440181604051612ec59190613c10565b60405180910390a15b5050565b80341115612f935760003373ffffffffffffffffffffffffffffffffffffffff168234612eff9190615434565b604051612f0b90614d42565b60006040518083038185875af1925050503d8060008114612f48576040519150601f19603f3d011682016040523d82523d6000602084013e612f4d565b606091505b5050905080612f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f88906154b4565b60405180910390fd5b505b50565b6001600081905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016130029190613f3a565b602060405180830381865afa15801561301f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130439190614abf565b905060005b8351811015613183578273ffffffffffffffffffffffffffffffffffffffff166342842e0e308787858151811061308257613081614fab565b5b60200260200101516040518463ffffffff1660e01b81526004016130a893929190614fda565b600060405180830381600087803b1580156130c257600080fd5b505af11580156130d6573d6000803e3d6000fd5b5050505060006131598583815181106130f2576130f1614fab565b5b6020026020010151600880548060200260200160405190810160405280929190818152602001828054801561314657602002820191906000526020600020905b815481526020019060010190808311613132575b50505050506137ff90919063ffffffff16565b905061316f81600861389690919063ffffffff16565b50808061317b90615040565b915050613048565b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016131bf9190613f3a565b602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132009190614abf565b90508084518361321091906154d4565b14613250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324790615554565b60405180910390fd5b5050505050565b6000806000806000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663737142aa600260009054906101000a90046fffffffffffffffffffffffffffffffff16600260109054906101000a90046fffffffffffffffffffffffffffffffff168a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b4501fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336d9190614dd8565b600360009054906101000a90046fffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b81526004016133ac959493929190614e05565b60a060405180830381865afa1580156133c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ed9190614e58565b809850819950829650839750849550505050505080613441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343890615316565b60405180910390fd5b85851015613484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347b906155e6565b60405180910390fd5b5092959194509250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134bf610942565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016134fc9190613f3a565b602060405180830381865afa158015613519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353d9190614abf565b905060005b84518110156135e7578373ffffffffffffffffffffffffffffffffffffffff166342842e0e878588858151811061357c5761357b614fab565b5b60200260200101516040518463ffffffff1660e01b81526004016135a293929190614fda565b600060405180830381600087803b1580156135bc57600080fd5b505af11580156135d0573d6000803e3d6000fd5b5050505080806135df90615040565b915050613542565b5060008373ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016136239190613f3a565b602060405180830381865afa158015613640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136649190614abf565b90508085518361367491906154d4565b146136b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ab90615652565b60405180910390fd5b505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1631905060008273ffffffffffffffffffffffffffffffffffffffff16846040516136fe90614d42565b60006040518083038185875af1925050503d806000811461373b576040519150601f19603f3d011682016040523d82523d6000602084013e613740565b606091505b5050905080613784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377b906154b4565b60405180910390fd5b61378d8561396b565b60008373ffffffffffffffffffffffffffffffffffffffff1631905084836137b591906154d4565b8110156137f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ee906156be565b60405180910390fd5b505050505050565b600080600090505b835181101561384d578284828151811061382457613823614fab565b5b60200260200101510361383a5780915050613890565b808061384590615040565b915050613807565b50600061388f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138869061572a565b60405180910390fd5b5b92915050565b600182805490506138a79190615434565b8111156138e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138e0906157bc565b60405180910390fd5b81600183805490506138fb9190615434565b8154811061390c5761390b614fab565b5b906000526020600020015482828154811061392a57613929614fab565b5b906000526020600020018190555081805480613949576139486157dc565b5b600190038181906000526020600020016000905590555050565b600033905090565b6000811115613ace576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663730143c66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a079190615820565b905047821115613a15574791505b6000821115613acc5760008173ffffffffffffffffffffffffffffffffffffffff1683604051613a4490614d42565b60006040518083038185875af1925050503d8060008114613a81576040519150601f19603f3d011682016040523d82523d6000602084013e613a86565b606091505b5050905080613aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ac1906154b4565b60405180910390fd5b505b505b50565b6000819050919050565b613ae481613ad1565b82525050565b6000602082019050613aff6000830184613adb565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b3a81613ad1565b82525050565b6000613b4c8383613b31565b60208301905092915050565b6000602082019050919050565b6000613b7082613b05565b613b7a8185613b10565b9350613b8583613b21565b8060005b83811015613bb6578151613b9d8882613b40565b9750613ba883613b58565b925050600181019050613b89565b5085935050505092915050565b60006020820190508181036000830152613bdd8184613b65565b905092915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b613c0a81613be5565b82525050565b6000602082019050613c256000830184613c01565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6a82613c3f565b9050919050565b613c7a81613c5f565b8114613c8557600080fd5b50565b600081359050613c9781613c71565b92915050565b613ca681613ad1565b8114613cb157600080fd5b50565b600081359050613cc381613c9d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613cee57613ced613cc9565b5b8235905067ffffffffffffffff811115613d0b57613d0a613cce565b5b602083019150836001820283011115613d2757613d26613cd3565b5b9250929050565b600080600080600060808688031215613d4a57613d49613c35565b5b6000613d5888828901613c88565b9550506020613d6988828901613c88565b9450506040613d7a88828901613cb4565b935050606086013567ffffffffffffffff811115613d9b57613d9a613c3a565b5b613da788828901613cd8565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613deb81613db6565b82525050565b6000602082019050613e066000830184613de2565b92915050565b6000819050919050565b6000613e31613e2c613e2784613c3f565b613e0c565b613c3f565b9050919050565b6000613e4382613e16565b9050919050565b6000613e5582613e38565b9050919050565b613e6581613e4a565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ea5578082015181840152602081019050613e8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000613ecd82613e6b565b613ed78185613e76565b9350613ee7818560208601613e87565b613ef081613eb1565b840191505092915050565b6000604082019050613f106000830185613e5c565b8181036020830152613f228184613ec2565b90509392505050565b613f3481613c5f565b82525050565b6000602082019050613f4f6000830184613f2b565b92915050565b613f5e81613be5565b8114613f6957600080fd5b50565b600081359050613f7b81613f55565b92915050565b600060208284031215613f9757613f96613c35565b5b6000613fa584828501613f6c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613fee57613fed613fae565b5b50565b6000819050613fff82613fdd565b919050565b600061400f82613ff1565b9050919050565b61401f81614004565b82525050565b60006101208201905061403b600083018c613c01565b614048602083018b613c01565b614055604083018a613c01565b6140626060830189613f2b565b81810360808301526140748188613b65565b905061408360a0830187613e5c565b81810360c08301526140958186613ec2565b90506140a460e0830185614016565b6140b2610100830184613f2b565b9a9950505050505050505050565b60006140cb82613c5f565b9050919050565b6140db816140c0565b81146140e657600080fd5b50565b6000813590506140f8816140d2565b92915050565b6003811061410b57600080fd5b50565b60008135905061411d816140fe565b92915050565b600080600080600080600080610100898b03121561414457614143613c35565b5b60006141528b828c01613f6c565b98505060206141638b828c01613f6c565b97505060406141748b828c01613c88565b96505060606141858b828c01613c88565b95505060806141968b828c01613c88565b94505060a06141a78b828c01613f6c565b93505060c06141b88b828c016140e9565b92505060e06141c98b828c0161410e565b9150509295985092959890939650565b6000806000606084860312156141f2576141f1613c35565b5b600061420086828701613cb4565b935050602061421186828701613cb4565b925050604061422286828701613c88565b9150509250925092565b60006020828403121561424257614241613c35565b5b600061425084828501613c88565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61429182613eb1565b810181811067ffffffffffffffff821117156142b0576142af614259565b5b80604052505050565b60006142c3613c2b565b90506142cf8282614288565b919050565b600067ffffffffffffffff8211156142ef576142ee614259565b5b602082029050602081019050919050565b600061431361430e846142d4565b6142b9565b9050808382526020820190506020840283018581111561433657614335613cd3565b5b835b8181101561435f578061434b8882613cb4565b845260208401935050602081019050614338565b5050509392505050565b600082601f83011261437e5761437d613cc9565b5b813561438e848260208601614300565b91505092915050565b6000806000606084860312156143b0576143af613c35565b5b600084013567ffffffffffffffff8111156143ce576143cd613c3a565b5b6143da86828701614369565b93505060206143eb86828701613cb4565b92505060406143fc86828701613c88565b9150509250925092565b60006020828403121561441c5761441b613c35565b5b600061442a84828501613cb4565b91505092915050565b60008115159050919050565b61444881614433565b82525050565b600060a082019050614463600083018861443f565b6144706020830187613c01565b61447d6040830186613c01565b61448a6060830185613adb565b6144976080830184613adb565b9695505050505050565b60006020820190506144b66000830184614016565b92915050565b60006144c782613c5f565b9050919050565b6144d7816144bc565b81146144e257600080fd5b50565b6000813590506144f4816144ce565b92915050565b6000806040838503121561451157614510613c35565b5b600061451f858286016144e5565b925050602083013567ffffffffffffffff8111156145405761453f613c3a565b5b61454c85828601614369565b9150509250929050565b600061456182613e38565b9050919050565b61457181614556565b82525050565b600060208201905061458c6000830184614568565b92915050565b60006020820190506145a76000830184613e5c565b92915050565b60006040820190506145c26000830185613f2b565b6145cf6020830184613adb565b9392505050565b600080fd5b600067ffffffffffffffff8211156145f6576145f5614259565b5b6145ff82613eb1565b9050602081019050919050565b600061461f61461a846145db565b6142b9565b90508281526020810184848401111561463b5761463a6145d6565b5b614646848285613e87565b509392505050565b600082601f83011261466357614662613cc9565b5b815161467384826020860161460c565b91505092915050565b60006020828403121561469257614691613c35565b5b600082015167ffffffffffffffff8111156146b0576146af613c3a565b5b6146bc8482850161464e565b91505092915050565b7f4e657720737461727420707269636520697320657175616c207468616e20637560008201527f7272656e74000000000000000000000000000000000000000000000000000000602082015250565b6000614721602583613e76565b915061472c826146c5565b604082019050919050565b6000602082019050818103600083015261475081614714565b9050919050565b600061477261476d61476884613be5565b613e0c565b613ad1565b9050919050565b61478281614757565b82525050565b600060208201905061479d6000830184614779565b92915050565b6147ac81614433565b81146147b757600080fd5b50565b6000815190506147c9816147a3565b92915050565b6000602082840312156147e5576147e4613c35565b5b60006147f3848285016147ba565b91505092915050565b7f496e76616c696420537461727420507269636500000000000000000000000000600082015250565b6000614832601383613e76565b915061483d826147fc565b602082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b7f46656520617661696c61626c65206f6e6c79206f6e20747261646520706f6f6c60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006148c4602183613e76565b91506148cf82614868565b604082019050919050565b600060208201905081810360008301526148f3816148b7565b9050919050565b7f546865206d6178696d756d207472616465206665652069732039302500000000600082015250565b6000614930601c83613e76565b915061493b826148fa565b602082019050919050565b6000602082019050818103600083015261495f81614923565b9050919050565b7f4e65772066656520697320657175616c207468616e2063757272656e74000000600082015250565b600061499c601d83613e76565b91506149a782614966565b602082019050919050565b600060208201905081810360008301526149cb8161498f565b9050919050565b7f506f6f6c206974277320616c726561647920696e697469616c697a6564000000600082015250565b6000614a08601d83613e76565b9150614a13826149d2565b602082019050919050565b60006020820190508181036000830152614a37816149fb565b9050919050565b7f43616e6e6f742073656c6c206f6e2073656c6c2d7479706520706f6f6c000000600082015250565b6000614a74601d83613e76565b9150614a7f82614a3e565b602082019050919050565b60006020820190508181036000830152614aa381614a67565b9050919050565b600081519050614ab981613c9d565b92915050565b600060208284031215614ad557614ad4613c35565b5b6000614ae384828501614aaa565b91505092915050565b7f496e73756666696369656e74204e46542062616c616e63650000000000000000600082015250565b6000614b22601883613e76565b9150614b2d82614aec565b602082019050919050565b60006020820190508181036000830152614b5181614b15565b9050919050565b6000604082019050614b6d6000830185613adb565b614b7a6020830184613adb565b9392505050565b7f526563697069656e74206e6f7420737570706f7274656420696e20747261646560008201527f20706f6f6c730000000000000000000000000000000000000000000000000000602082015250565b6000614bdd602683613e76565b9150614be882614b81565b604082019050919050565b60006020820190508181036000830152614c0c81614bd0565b9050919050565b7f4e657720726563697069656e7420697320657175616c207468616e206375727260008201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b6000614c6f602383613e76565b9150614c7a82614c13565b604082019050919050565b60006020820190508181036000830152614c9e81614c62565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614cdb601483613e76565b9150614ce682614ca5565b602082019050919050565b60006020820190508181036000830152614d0a81614cce565b9050919050565b600081905092915050565b50565b6000614d2c600083614d11565b9150614d3782614d1c565b600082019050919050565b6000614d4d82614d1f565b9150819050919050565b7f416d6f756e74206e6f742073656e740000000000000000000000000000000000600082015250565b6000614d8d600f83613e76565b9150614d9882614d57565b602082019050919050565b60006020820190508181036000830152614dbc81614d80565b9050919050565b600081519050614dd281613f55565b92915050565b600060208284031215614dee57614ded613c35565b5b6000614dfc84828501614dc3565b91505092915050565b600060a082019050614e1a6000830188613c01565b614e276020830187613c01565b614e346040830186613adb565b614e416060830185613c01565b614e4e6080830184613c01565b9695505050505050565b600080600080600060a08688031215614e7457614e73613c35565b5b6000614e82888289016147ba565b9550506020614e9388828901614dc3565b9450506040614ea488828901614dc3565b9350506060614eb588828901614aaa565b9250506080614ec688828901614aaa565b9150509295509295909350565b7f43616e6e6f742073656c6c206f6e206275792d7479706520706f6f6c00000000600082015250565b6000614f09601c83613e76565b9150614f1482614ed3565b602082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000600082015250565b6000614f75601a83613e76565b9150614f8082614f3f565b602082019050919050565b60006020820190508181036000830152614fa481614f68565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000606082019050614fef6000830186613f2b565b614ffc6020830185613f2b565b6150096040830184613adb565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061504b82613ad1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361507d5761507c615011565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150e4602683613e76565b91506150ef82615088565b604082019050919050565b60006020820190508181036000830152615113816150d7565b9050919050565b7f4d756c7469706c69657220697320657175616c207468616e2063757272656e74600082015250565b6000615150602083613e76565b915061515b8261511a565b602082019050919050565b6000602082019050818103600083015261517f81615143565b9050919050565b7f496e76616c6964206d756c7469706c6965720000000000000000000000000000600082015250565b60006151bc601283613e76565b91506151c782615186565b602082019050919050565b600060208201905081810360008301526151eb816151af565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615228602083613e76565b9150615233826151f2565b602082019050919050565b600060208201905081810360008301526152578161521b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000615294601f83613e76565b915061529f8261525e565b602082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b7f537761702063616e6e6f74206265207472616465640000000000000000000000600082015250565b6000615300601583613e76565b915061530b826152ca565b602082019050919050565b6000602082019050818103600083015261532f816152f3565b9050919050565b7f496e70757420616d6f756e742069732067726561746572207468616e206d617860008201527f2065787065637465640000000000000000000000000000000000000000000000602082015250565b6000615392602983613e76565b915061539d82615336565b604082019050919050565b600060208201905081810360008301526153c181615385565b9050919050565b7f496e73756666696369656e7420616d6f756e74206f6620455448000000000000600082015250565b60006153fe601a83613e76565b9150615409826153c8565b602082019050919050565b6000602082019050818103600083015261542d816153f1565b9050919050565b600061543f82613ad1565b915061544a83613ad1565b925082820390508181111561546257615461615011565b5b92915050565b7f5478206572726f72000000000000000000000000000000000000000000000000600082015250565b600061549e600883613e76565b91506154a982615468565b602082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b60006154df82613ad1565b91506154ea83613ad1565b925082820190508082111561550257615501615011565b5b92915050565b7f4f7574707574204e465473206e6f742073656e74000000000000000000000000600082015250565b600061553e601483613e76565b915061554982615508565b602082019050919050565b6000602082019050818103600083015261556d81615531565b9050919050565b7f4f757470757420616d6f756e74206973206c657373207468616e206d696e696d60008201527f756d206578706563746564000000000000000000000000000000000000000000602082015250565b60006155d0602b83613e76565b91506155db82615574565b604082019050919050565b600060208201905081810360008301526155ff816155c3565b9050919050565b7f4e6f204e46547320726563656976656400000000000000000000000000000000600082015250565b600061563c601083613e76565b915061564782615606565b602082019050919050565b6000602082019050818103600083015261566b8161562f565b9050919050565b7f4f757470757420746f6b656e73206e6f742053656e7400000000000000000000600082015250565b60006156a8601683613e76565b91506156b382615672565b602082019050919050565b600060208201905081810360008301526156d78161569b565b9050919050565b7f54686520656c656d656e7420646f65736e277420657869737400000000000000600082015250565b6000615714601983613e76565b915061571f826156de565b602082019050919050565b6000602082019050818103600083015261574381615707565b9050919050565b7f43616e27742064656c6574652061206e6f6e2d6578697374656e7420656c656d60008201527f656e740000000000000000000000000000000000000000000000000000000000602082015250565b60006157a6602383613e76565b91506157b18261574a565b604082019050919050565b600060208201905081810360008301526157d581615799565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008151905061581a81613c71565b92915050565b60006020828403121561583657615835613c35565b5b60006158448482850161580b565b9150509291505056fea26469706673582212208b4a7699cd71933cb81a00b98201bb36be5c9b236620532e5093592a08f4505e64736f6c634300081100330000000000000000000000004d885cb1345f69c95d634cb9d6502a1d043908060000000000000000000000003be295db519d281d9cd4c6edd9e1e68fab9e607800000000000000000000000077d42adc81c187e80efa904e39c78a0e7a7741bc000000000000000000000000ed41c898a7b7837afd421cf081f6a558decbce5f