0x6080604052600436106101f95760003560e01c806382413eac1161010d578063bc70b354116100a0578063d045a0dc1161006f578063d045a0dc14610668578063d42438851461067b578063f2fde38b1461069b578063fc0c546a146106bb578063ff7bd03d146106ee57600080fd5b8063bc70b354146105f4578063bd815db014610614578063c7c7f5b314610627578063ca5eb5e11461064857600080fd5b80639f68b964116100dc5780639f68b96414610573578063b731ea0a14610587578063b98bd070146105a7578063bb0b6a53146105c757600080fd5b806382413eac146104b5578063857749b0146104d55780638da5cb5b14610513578063963efcaa1461053157600080fd5b80633400288b116101905780635a0dfe4d1161015f5780635a0dfe4d146103ca5780635e280f11146104115780636fc1b31e14610445578063715018a6146104655780637d25a05e1461047a57600080fd5b80633400288b1461033d5780633b6f743b1461035d57806352ae28791461038a5780635535d4611461039d57600080fd5b8063156a0d0f116101cc578063156a0d0f146102ab57806317442b70146102d25780631f5e1334146102f45780632dd310001461030957600080fd5b80630d35b415146101fe578063111ecdad1461023657806313137d651461026e578063134d4f2514610283575b600080fd5b34801561020a57600080fd5b5061021e610219366004611c96565b61070e565b60405161022d93929190611d1a565b60405180910390f35b34801561024257600080fd5b50600454610256906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b61028161027c366004611e22565b6107df565b005b34801561028f57600080fd5b50610298600281565b60405161ffff909116815260200161022d565b3480156102b757600080fd5b506040805162b9270b60e21b8152600160208201520161022d565b3480156102de57600080fd5b506040805160018152600260208201520161022d565b34801561030057600080fd5b50610298600181565b34801561031557600080fd5b506102567f00000000000000000000000069bfc7b0deb166aa4341a2c7437956b13ea74d9f81565b34801561034957600080fd5b50610281610358366004611eda565b61089f565b34801561036957600080fd5b5061037d610378366004611f12565b61091d565b60405161022d9190611f63565b34801561039657600080fd5b5030610256565b3480156103a957600080fd5b506103bd6103b8366004611f8c565b610986565b60405161022d9190611fbf565b3480156103d657600080fd5b506104016103e5366004611eda565b63ffffffff919091166000908152600160205260409020541490565b604051901515815260200161022d565b34801561041d57600080fd5b506102567f0000000000000000000000001a44076050125825900e736c501f859c50fe728c81565b34801561045157600080fd5b50610281610460366004611fd2565b610a2b565b34801561047157600080fd5b50610281610a88565b34801561048657600080fd5b5061049d610495366004611eda565b600092915050565b6040516001600160401b03909116815260200161022d565b3480156104c157600080fd5b506104016104d0366004611fef565b610a9c565b3480156104e157600080fd5b5060405160ff7f000000000000000000000000000000000000000000000000000000000000000616815260200161022d565b34801561051f57600080fd5b506000546001600160a01b0316610256565b34801561053d57600080fd5b506105657f000000000000000000000000000000000000000000000000000000e8d4a5100081565b60405190815260200161022d565b34801561057f57600080fd5b506001610401565b34801561059357600080fd5b50600254610256906001600160a01b031681565b3480156105b357600080fd5b506102816105c2366004612099565b610ab1565b3480156105d357600080fd5b506105656105e23660046120da565b60016020526000908152604090205481565b34801561060057600080fd5b506103bd61060f3660046120f5565b610b12565b610281610622366004612099565b610cba565b61063a610635366004612155565b610e44565b60405161022d9291906121c2565b34801561065457600080fd5b50610281610663366004611fd2565b610f3f565b610281610676366004611e22565b610fc5565b34801561068757600080fd5b50610281610696366004611fd2565b610ff4565b3480156106a757600080fd5b506102816106b6366004611fd2565b61104a565b3480156106c757600080fd5b507f00000000000000000000000032353a6c91143bfd6c7d363b546e62a9a2489a20610256565b3480156106fa57600080fd5b50610401610709366004612214565b611088565b60408051808201909152600080825260208201526060610741604051806040016040528060008152602001600081525090565b60408051808201825260008082526001600160401b0360208084018290528451838152908101909452919550918261079c565b6040805180820190915260008152606060208201528152602001906001900390816107745790505b5093506000806107c1604089013560608a01356107bc60208c018c6120da565b6110be565b60408051808201909152918252602082015296989597505050505050565b7f0000000000000000000000001a44076050125825900e736c501f859c50fe728c6001600160a01b0316331461082f576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b6020870180359061084990610844908a6120da565b611102565b146108875761085b60208801886120da565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610826565b6108968787878787878761113e565b50505050505050565b337f00000000000000000000000069bfc7b0deb166aa4341a2c7437956b13ea74d9f6001600160a01b0316148015906108e357506000546001600160a01b03163314155b1561090f57335b6040516376a2d96160e11b81526001600160a01b039091166004820152602401610826565b61091982826112a5565b5050565b6040805180820190915260008082526020820152600061094d604085013560608601356107bc60208801886120da565b91505060008061095d86846112fa565b909250905061097a61097260208801886120da565b83838861141d565b93505050505b92915050565b6003602090815260009283526040808420909152908252902080546109aa90612246565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612246565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b505050505081565b610a336114fe565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610a906114fe565b610a9a600061152b565b565b6001600160a01b03811630145b949350505050565b337f00000000000000000000000069bfc7b0deb166aa4341a2c7437956b13ea74d9f6001600160a01b031614801590610af557506000546001600160a01b03163314155b15610b0057336108ea565b610919610b0d828461231b565b61157b565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610b4690612246565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290612246565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b505050505090508051600003610c0f5783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610aa99350505050565b6000839003610c1f579050610aa9565b60028310610c9d57610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061168292505050565b80610c748460028188612430565b604051602001610c869392919061245a565b604051602081830303815290604052915050610aa9565b8383604051639a6d49cd60e01b81526004016108269291906124ab565b60005b81811015610dc35736838383818110610cd857610cd86124bf565b9050602002810190610cea91906124d5565b9050610d1d610cfc60208301836120da565b602083013563ffffffff919091166000908152600160205260409020541490565b610d275750610dbb565b3063d045a0dc60c08301358360a0810135610d466101008301836124f6565b610d57610100890160e08a01611fd2565b610d656101208a018a6124f6565b6040518963ffffffff1660e01b8152600401610d879796959493929190612551565b6000604051808303818588803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b5050505050505b600101610cbd565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e2a91908101906125d7565b604051638351eea760e01b81526004016108269190611fbf565b610e4c611c37565b6040805180820190915260008082526020820152600080610e8333604089013560608a0135610e7e60208c018c6120da565b6116ae565b91509150600080610e9489846112fa565b9092509050610ec0610ea960208b018b6120da565b8383610eba368d90038d018d612644565b8b6116ff565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90610f0e908d018d6120da565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b610f476114fe565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000001a44076050125825900e736c501f859c50fe728c169063ca5eb5e190602401600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b5050505050565b333014610fe55760405163029a949d60e31b815260040160405180910390fd5b61089687878787878787610887565b610ffc6114fe565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610a7d565b6110526114fe565b6001600160a01b03811661107c57604051631e4fbdf760e01b815260006004820152602401610826565b6110858161152b565b50565b60006020820180359060019083906110a090866120da565b63ffffffff1681526020810191909152604001600020541492915050565b6000806110ca8561180a565b9150819050838110156110fa576040516371c4efed60e01b81526004810182905260248101859052604401610826565b935093915050565b63ffffffff8116600090815260016020526040812054806109805760405163f6ff4fb760e01b815263ffffffff84166004820152602401610826565b600061115061114d8787611841565b90565b9050600061117c8261116a6111658a8a611860565b611883565b61117760208d018d6120da565b6118b8565b905060288611156112435760006111b961119c60608c0160408d01612676565b6111a960208d018d6120da565b846111b48c8c6118f6565b611941565b604051633e5ac80960e11b81529091506001600160a01b037f0000000000000000000000001a44076050125825900e736c501f859c50fe728c1690637cb590129061120f9086908d906000908790600401612693565b600060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61127c60208d018d6120da565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611357856020013561131086611973565b61131d60a08901896124f6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b909350905060008161136a57600161136d565b60025b905061138d61137f60208801886120da565b8261060f60808a018a6124f6565b6004549093506001600160a01b031680156114135760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906113d090889088906004016126ce565b602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141191906126f3565b505b5050509250929050565b60408051808201909152600080825260208201527f0000000000000000000000001a44076050125825900e736c501f859c50fe728c6001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161148089611102565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016114b5929190612710565b6040805180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f591906127b9565b95945050505050565b6000546001600160a01b03163314610a9a5760405163118cdaa760e01b8152336004820152602401610826565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b8151811015611652576115ad82828151811061159c5761159c6124bf565b602002602001015160400151611682565b8181815181106115bf576115bf6124bf565b602002602001015160400151600360008484815181106115e1576115e16124bf565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061161b5761161b6124bf565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816116499190612825565b5060010161157e565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610a7d91906128e4565b600281015161ffff81166003146109195781604051639a6d49cd60e01b81526004016108269190611fbf565b6000806116bc8585856110be565b90925090506116f66001600160a01b037f00000000000000000000000032353a6c91143bfd6c7d363b546e62a9a2489a2016873085611a19565b94509492505050565b611707611c37565b60006117168460000151611a86565b602085015190915015611730576117308460200151611aae565b7f0000000000000000000000001a44076050125825900e736c501f859c50fe728c6001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016117808c611102565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016117bc929190612710565b60806040518083038185885af11580156117da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ff919061296f565b979650505050505050565b60007f000000000000000000000000000000000000000000000000000000e8d4a5100061183781846129b9565b61098091906129db565b60006118506020828486612430565b61185991612a00565b9392505050565b6000611870602860208486612430565b61187991612a1e565b60c01c9392505050565b60006109807f000000000000000000000000000000000000000000000000000000e8d4a510006001600160401b0384166129db565b60006118ee6001600160a01b037f00000000000000000000000032353a6c91143bfd6c7d363b546e62a9a2489a20168585611b90565b509092915050565b60606119058260288186612430565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b60608484848460405160200161195a9493929190612a4e565b6040516020818303038152906040529050949350505050565b60006109807f000000000000000000000000000000000000000000000000000000e8d4a51000836129b9565b80516060901515806119e85784846040516020016119d492919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611a0f565b848433856040516020016119ff9493929190612a9d565b6040516020818303038152906040525b9150935093915050565b6040516001600160a01b038481166024830152838116604483015260648201839052611a809186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611bc6565b50505050565b6000813414611aaa576040516304fb820960e51b8152346004820152602401610826565b5090565b60007f0000000000000000000000001a44076050125825900e736c501f859c50fe728c6001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b329190612ae0565b90506001600160a01b038116611b5b576040516329b99a9560e11b815260040160405180910390fd5b6109196001600160a01b038216337f0000000000000000000000001a44076050125825900e736c501f859c50fe728c85611a19565b6040516001600160a01b03838116602483015260448201839052611bc191859182169063a9059cbb90606401611a4e565b505050565b600080602060008451602086016000885af180611be9576040513d6000823e3d81fd5b50506000513d91508115611c01578060011415611c0e565b6001600160a01b0384163b155b15611a8057604051635274afe760e01b81526001600160a01b0385166004820152602401610826565b60405180606001604052806000801916815260200160006001600160401b03168152602001611c79604051806040016040528060008152602001600081525090565b905290565b600060e08284031215611c9057600080fd5b50919050565b600060208284031215611ca857600080fd5b81356001600160401b03811115611cbe57600080fd5b610aa984828501611c7e565b60005b83811015611ce5578181015183820152602001611ccd565b50506000910152565b60008151808452611d06816020860160208601611cca565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015611d955788870360bf19018552815180518852830151838801879052611d8287890182611cee565b9750509382019390820190600101611d56565b50508751606088015250505060208501516080850152509050610aa9565b600060608284031215611c9057600080fd5b60008083601f840112611dd757600080fd5b5081356001600160401b03811115611dee57600080fd5b602083019150836020828501011115611e0657600080fd5b9250929050565b6001600160a01b038116811461108557600080fd5b600080600080600080600060e0888a031215611e3d57600080fd5b611e478989611db3565b96506060880135955060808801356001600160401b0380821115611e6a57600080fd5b611e768b838c01611dc5565b909750955060a08a01359150611e8b82611e0d565b90935060c08901359080821115611ea157600080fd5b50611eae8a828b01611dc5565b989b979a50959850939692959293505050565b803563ffffffff81168114611ed557600080fd5b919050565b60008060408385031215611eed57600080fd5b611ef683611ec1565b946020939093013593505050565b801515811461108557600080fd5b60008060408385031215611f2557600080fd5b82356001600160401b03811115611f3b57600080fd5b611f4785828601611c7e565b9250506020830135611f5881611f04565b809150509250929050565b815181526020808301519082015260408101610980565b803561ffff81168114611ed557600080fd5b60008060408385031215611f9f57600080fd5b611fa883611ec1565b9150611fb660208401611f7a565b90509250929050565b6020815260006118596020830184611cee565b600060208284031215611fe457600080fd5b813561185981611e0d565b60008060008060a0858703121561200557600080fd5b61200f8686611db3565b935060608501356001600160401b0381111561202a57600080fd5b61203687828801611dc5565b909450925050608085013561204a81611e0d565b939692955090935050565b60008083601f84011261206757600080fd5b5081356001600160401b0381111561207e57600080fd5b6020830191508360208260051b8501011115611e0657600080fd5b600080602083850312156120ac57600080fd5b82356001600160401b038111156120c257600080fd5b6120ce85828601612055565b90969095509350505050565b6000602082840312156120ec57600080fd5b61185982611ec1565b6000806000806060858703121561210b57600080fd5b61211485611ec1565b935061212260208601611f7a565b925060408501356001600160401b0381111561213d57600080fd5b61214987828801611dc5565b95989497509550505050565b6000806000838503608081121561216b57600080fd5b84356001600160401b0381111561218157600080fd5b61218d87828801611c7e565b9450506040601f19820112156121a257600080fd5b5060208401915060608401356121b781611e0d565b809150509250925092565b600060c082019050835182526001600160401b03602085015116602083015260408401516121fd604084018280518252602090810151910152565b5082516080830152602083015160a0830152611859565b60006060828403121561222657600080fd5b6118598383611db3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061225a57607f821691505b602082108103611c9057634e487b7160e01b600052602260045260246000fd5b604051606081016001600160401b038111828210171561229c5761229c612230565b60405290565b604080519081016001600160401b038111828210171561229c5761229c612230565b604051601f8201601f191681016001600160401b03811182821017156122ec576122ec612230565b604052919050565b60006001600160401b0382111561230d5761230d612230565b50601f01601f191660200190565b60006001600160401b038084111561233557612335612230565b8360051b60206123468183016122c4565b86815291850191818101903684111561235e57600080fd5b865b84811015612424578035868111156123785760008081fd5b8801606036829003121561238c5760008081fd5b61239461227a565b61239d82611ec1565b81526123aa868301611f7a565b86820152604080830135898111156123c25760008081fd5b929092019136601f8401126123d75760008081fd5b82356123ea6123e5826122f4565b6122c4565b81815236898387010111156123ff5760008081fd5b818986018a830137600091810189019190915290820152845250918301918301612360565b50979650505050505050565b6000808585111561244057600080fd5b8386111561244d57600080fd5b5050820193919092039150565b6000845161246c818460208901611cca565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610aa9602083018486612482565b634e487b7160e01b600052603260045260246000fd5b6000823561013e198336030181126124ec57600080fd5b9190910192915050565b6000808335601e1984360301811261250d57600080fd5b8301803591506001600160401b0382111561252757600080fd5b602001915036819003821315611e0657600080fd5b6001600160401b038116811461108557600080fd5b63ffffffff61255f89611ec1565b168152602088013560208201526000604089013561257c8161253c565b6001600160401b03811660408401525087606083015260e060808301526125a760e083018789612482565b6001600160a01b03861660a084015282810360c08401526125c9818587612482565b9a9950505050505050505050565b6000602082840312156125e957600080fd5b81516001600160401b038111156125ff57600080fd5b8201601f8101841361261057600080fd5b805161261e6123e5826122f4565b81815285602083850101111561263357600080fd5b6114f5826020830160208601611cca565b60006040828403121561265657600080fd5b61265e6122a2565b82358152602083013560208201528091505092915050565b60006020828403121561268857600080fd5b81356118598161253c565b60018060a01b038516815283602082015261ffff831660408201526080606082015260006126c46080830184611cee565b9695505050505050565b6040815260006126e16040830185611cee565b82810360208401526114f58185611cee565b60006020828403121561270557600080fd5b815161185981611f04565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261274660e0840182611cee565b90506060850151603f198483030160a08501526127638282611cee565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561279b57600080fd5b6127a36122a2565b9050815181526020820151602082015292915050565b6000604082840312156127cb57600080fd5b6118598383612789565b601f821115611bc1576000816000526020600020601f850160051c810160208610156127fe5750805b601f850160051c820191505b8181101561281d5782815560010161280a565b505050505050565b81516001600160401b0381111561283e5761283e612230565b6128528161284c8454612246565b846127d5565b602080601f831160018114612887576000841561286f5750858301515b600019600386901b1c1916600185901b17855561281d565b600085815260208120601f198616915b828110156128b657888601518255948401946001909101908401612897565b50858210156128d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561296157888303603f190185528151805163ffffffff1684528781015161ffff1688850152860151606087850181905261294d81860183611cee565b96890196945050509086019060010161290d565b509098975050505050505050565b60006080828403121561298157600080fd5b61298961227a565b82518152602083015161299b8161253c565b60208201526129ad8460408501612789565b60408201529392505050565b6000826129d657634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761098057634e487b7160e01b600052601160045260246000fd5b8035602083101561098057600019602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015612a465780818660080360031b1b83161692505b505092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c82015260008251612a8d81602c850160208701611cca565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b16602082015282602882015260008251612ad0816048850160208701611cca565b9190910160480195945050505050565b600060208284031215612af257600080fd5b815161185981611e0d56fea264697066735822122085ac0c316c86b70e566b24b916e8929939ef997b697cf199a6b6ce2cce0e348764736f6c63430008160033
0x6101206040523480156200001257600080fd5b50604051620030ad380380620030ad833981016040819052620000359162000304565b838383826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d919062000361565b8282818181818b6001600160a01b038116620000d357604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000de8162000291565b506001600160a01b0380831660805281166200010d57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156200015557600080fd5b505af11580156200016a573d6000803e3d6000fd5b505050505050505062000182620002e160201b60201c565b60ff168360ff161015620001a9576040516301e9714b60e41b815260040160405180910390fd5b60e051620001b89084620003a3565b620001c590600a620004c2565b60a0525050506001600160a01b0392831660c0525050818116610100526040805163313ce56760e01b8152905160009287169163313ce5679160048083019260209291908290030181865afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000361565b905060ff81166006116200025f57600662000261565b805b60ff1660e0819052620002759082620003a3565b6200028290600a620004c2565b60a05250620004d39350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60e05190565b80516001600160a01b0381168114620002ff57600080fd5b919050565b600080600080608085870312156200031b57600080fd5b6200032685620002e7565b93506200033660208601620002e7565b92506200034660408601620002e7565b91506200035660608601620002e7565b905092959194509250565b6000602082840312156200037457600080fd5b815160ff811681146200038657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003bf57620003bf6200038d565b92915050565b600181815b8085111562000406578160001904821115620003ea57620003ea6200038d565b80851615620003f857918102915b93841c9390800290620003ca565b509250929050565b6000826200041f57506001620003bf565b816200042e57506000620003bf565b8160018114620004475760028114620004525762000472565b6001915050620003bf565b60ff8411156200046657620004666200038d565b50506001821b620003bf565b5060208310610133831016604e8410600b841016171562000497575081810a620003bf565b620004a38383620003c5565b8060001904821115620004ba57620004ba6200038d565b029392505050565b60006200038660ff8416836200040e565b60805160a05160c05160e05161010051612b336200057a6000396000818161031b015281816108a20152610ab4015260006104e90152600081816106ca015281816116ce01526118c70152600081816105430152818161180e0152818161188a015261197a015260008181610423015281816107e101528181610f66015281816111d3015281816114330152818161173201528181611ab20152611b6b0152612b336000f3fe6080604052600436106101f95760003560e01c806382413eac1161010d578063bc70b354116100a0578063d045a0dc1161006f578063d045a0dc14610668578063d42438851461067b578063f2fde38b1461069b578063fc0c546a146106bb578063ff7bd03d146106ee57600080fd5b8063bc70b354146105f4578063bd815db014610614578063c7c7f5b314610627578063ca5eb5e11461064857600080fd5b80639f68b964116100dc5780639f68b96414610573578063b731ea0a14610587578063b98bd070146105a7578063bb0b6a53146105c757600080fd5b806382413eac146104b5578063857749b0146104d55780638da5cb5b14610513578063963efcaa1461053157600080fd5b80633400288b116101905780635a0dfe4d1161015f5780635a0dfe4d146103ca5780635e280f11146104115780636fc1b31e14610445578063715018a6146104655780637d25a05e1461047a57600080fd5b80633400288b1461033d5780633b6f743b1461035d57806352ae28791461038a5780635535d4611461039d57600080fd5b8063156a0d0f116101cc578063156a0d0f146102ab57806317442b70146102d25780631f5e1334146102f45780632dd310001461030957600080fd5b80630d35b415146101fe578063111ecdad1461023657806313137d651461026e578063134d4f2514610283575b600080fd5b34801561020a57600080fd5b5061021e610219366004611c96565b61070e565b60405161022d93929190611d1a565b60405180910390f35b34801561024257600080fd5b50600454610256906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b61028161027c366004611e22565b6107df565b005b34801561028f57600080fd5b50610298600281565b60405161ffff909116815260200161022d565b3480156102b757600080fd5b506040805162b9270b60e21b8152600160208201520161022d565b3480156102de57600080fd5b506040805160018152600260208201520161022d565b34801561030057600080fd5b50610298600181565b34801561031557600080fd5b506102567f000000000000000000000000000000000000000000000000000000000000000081565b34801561034957600080fd5b50610281610358366004611eda565b61089f565b34801561036957600080fd5b5061037d610378366004611f12565b61091d565b60405161022d9190611f63565b34801561039657600080fd5b5030610256565b3480156103a957600080fd5b506103bd6103b8366004611f8c565b610986565b60405161022d9190611fbf565b3480156103d657600080fd5b506104016103e5366004611eda565b63ffffffff919091166000908152600160205260409020541490565b604051901515815260200161022d565b34801561041d57600080fd5b506102567f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b50610281610460366004611fd2565b610a2b565b34801561047157600080fd5b50610281610a88565b34801561048657600080fd5b5061049d610495366004611eda565b600092915050565b6040516001600160401b03909116815260200161022d565b3480156104c157600080fd5b506104016104d0366004611fef565b610a9c565b3480156104e157600080fd5b5060405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161022d565b34801561051f57600080fd5b506000546001600160a01b0316610256565b34801561053d57600080fd5b506105657f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161022d565b34801561057f57600080fd5b506001610401565b34801561059357600080fd5b50600254610256906001600160a01b031681565b3480156105b357600080fd5b506102816105c2366004612099565b610ab1565b3480156105d357600080fd5b506105656105e23660046120da565b60016020526000908152604090205481565b34801561060057600080fd5b506103bd61060f3660046120f5565b610b12565b610281610622366004612099565b610cba565b61063a610635366004612155565b610e44565b60405161022d9291906121c2565b34801561065457600080fd5b50610281610663366004611fd2565b610f3f565b610281610676366004611e22565b610fc5565b34801561068757600080fd5b50610281610696366004611fd2565b610ff4565b3480156106a757600080fd5b506102816106b6366004611fd2565b61104a565b3480156106c757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610256565b3480156106fa57600080fd5b50610401610709366004612214565b611088565b60408051808201909152600080825260208201526060610741604051806040016040528060008152602001600081525090565b60408051808201825260008082526001600160401b0360208084018290528451838152908101909452919550918261079c565b6040805180820190915260008152606060208201528152602001906001900390816107745790505b5093506000806107c1604089013560608a01356107bc60208c018c6120da565b6110be565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461082f576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b6020870180359061084990610844908a6120da565b611102565b146108875761085b60208801886120da565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610826565b6108968787878787878761113e565b50505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148015906108e357506000546001600160a01b03163314155b1561090f57335b6040516376a2d96160e11b81526001600160a01b039091166004820152602401610826565b61091982826112a5565b5050565b6040805180820190915260008082526020820152600061094d604085013560608601356107bc60208801886120da565b91505060008061095d86846112fa565b909250905061097a61097260208801886120da565b83838861141d565b93505050505b92915050565b6003602090815260009283526040808420909152908252902080546109aa90612246565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612246565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b505050505081565b610a336114fe565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610a906114fe565b610a9a600061152b565b565b6001600160a01b03811630145b949350505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614801590610af557506000546001600160a01b03163314155b15610b0057336108ea565b610919610b0d828461231b565b61157b565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610b4690612246565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290612246565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b505050505090508051600003610c0f5783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610aa99350505050565b6000839003610c1f579050610aa9565b60028310610c9d57610c6684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061168292505050565b80610c748460028188612430565b604051602001610c869392919061245a565b604051602081830303815290604052915050610aa9565b8383604051639a6d49cd60e01b81526004016108269291906124ab565b60005b81811015610dc35736838383818110610cd857610cd86124bf565b9050602002810190610cea91906124d5565b9050610d1d610cfc60208301836120da565b602083013563ffffffff919091166000908152600160205260409020541490565b610d275750610dbb565b3063d045a0dc60c08301358360a0810135610d466101008301836124f6565b610d57610100890160e08a01611fd2565b610d656101208a018a6124f6565b6040518963ffffffff1660e01b8152600401610d879796959493929190612551565b6000604051808303818588803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b5050505050505b600101610cbd565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e2a91908101906125d7565b604051638351eea760e01b81526004016108269190611fbf565b610e4c611c37565b6040805180820190915260008082526020820152600080610e8333604089013560608a0135610e7e60208c018c6120da565b6116ae565b91509150600080610e9489846112fa565b9092509050610ec0610ea960208b018b6120da565b8383610eba368d90038d018d612644565b8b6116ff565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90610f0e908d018d6120da565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b610f476114fe565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b5050505050565b333014610fe55760405163029a949d60e31b815260040160405180910390fd5b61089687878787878787610887565b610ffc6114fe565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610a7d565b6110526114fe565b6001600160a01b03811661107c57604051631e4fbdf760e01b815260006004820152602401610826565b6110858161152b565b50565b60006020820180359060019083906110a090866120da565b63ffffffff1681526020810191909152604001600020541492915050565b6000806110ca8561180a565b9150819050838110156110fa576040516371c4efed60e01b81526004810182905260248101859052604401610826565b935093915050565b63ffffffff8116600090815260016020526040812054806109805760405163f6ff4fb760e01b815263ffffffff84166004820152602401610826565b600061115061114d8787611841565b90565b9050600061117c8261116a6111658a8a611860565b611883565b61117760208d018d6120da565b6118b8565b905060288611156112435760006111b961119c60608c0160408d01612676565b6111a960208d018d6120da565b846111b48c8c6118f6565b611941565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061120f9086908d906000908790600401612693565b600060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61127c60208d018d6120da565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611357856020013561131086611973565b61131d60a08901896124f6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061199f92505050565b909350905060008161136a57600161136d565b60025b905061138d61137f60208801886120da565b8261060f60808a018a6124f6565b6004549093506001600160a01b031680156114135760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906113d090889088906004016126ce565b602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141191906126f3565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161148089611102565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016114b5929190612710565b6040805180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f591906127b9565b95945050505050565b6000546001600160a01b03163314610a9a5760405163118cdaa760e01b8152336004820152602401610826565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b8151811015611652576115ad82828151811061159c5761159c6124bf565b602002602001015160400151611682565b8181815181106115bf576115bf6124bf565b602002602001015160400151600360008484815181106115e1576115e16124bf565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061161b5761161b6124bf565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816116499190612825565b5060010161157e565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610a7d91906128e4565b600281015161ffff81166003146109195781604051639a6d49cd60e01b81526004016108269190611fbf565b6000806116bc8585856110be565b90925090506116f66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016873085611a19565b94509492505050565b611707611c37565b60006117168460000151611a86565b602085015190915015611730576117308460200151611aae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016117808c611102565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016117bc929190612710565b60806040518083038185885af11580156117da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ff919061296f565b979650505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000061183781846129b9565b61098091906129db565b60006118506020828486612430565b61185991612a00565b9392505050565b6000611870602860208486612430565b61187991612a1e565b60c01c9392505050565b60006109807f00000000000000000000000000000000000000000000000000000000000000006001600160401b0384166129db565b60006118ee6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611b90565b509092915050565b60606119058260288186612430565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b60608484848460405160200161195a9493929190612a4e565b6040516020818303038152906040529050949350505050565b60006109807f0000000000000000000000000000000000000000000000000000000000000000836129b9565b80516060901515806119e85784846040516020016119d492919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611a0f565b848433856040516020016119ff9493929190612a9d565b6040516020818303038152906040525b9150935093915050565b6040516001600160a01b038481166024830152838116604483015260648201839052611a809186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611bc6565b50505050565b6000813414611aaa576040516304fb820960e51b8152346004820152602401610826565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b329190612ae0565b90506001600160a01b038116611b5b576040516329b99a9560e11b815260040160405180910390fd5b6109196001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085611a19565b6040516001600160a01b03838116602483015260448201839052611bc191859182169063a9059cbb90606401611a4e565b505050565b600080602060008451602086016000885af180611be9576040513d6000823e3d81fd5b50506000513d91508115611c01578060011415611c0e565b6001600160a01b0384163b155b15611a8057604051635274afe760e01b81526001600160a01b0385166004820152602401610826565b60405180606001604052806000801916815260200160006001600160401b03168152602001611c79604051806040016040528060008152602001600081525090565b905290565b600060e08284031215611c9057600080fd5b50919050565b600060208284031215611ca857600080fd5b81356001600160401b03811115611cbe57600080fd5b610aa984828501611c7e565b60005b83811015611ce5578181015183820152602001611ccd565b50506000910152565b60008151808452611d06816020860160208601611cca565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015611d955788870360bf19018552815180518852830151838801879052611d8287890182611cee565b9750509382019390820190600101611d56565b50508751606088015250505060208501516080850152509050610aa9565b600060608284031215611c9057600080fd5b60008083601f840112611dd757600080fd5b5081356001600160401b03811115611dee57600080fd5b602083019150836020828501011115611e0657600080fd5b9250929050565b6001600160a01b038116811461108557600080fd5b600080600080600080600060e0888a031215611e3d57600080fd5b611e478989611db3565b96506060880135955060808801356001600160401b0380821115611e6a57600080fd5b611e768b838c01611dc5565b909750955060a08a01359150611e8b82611e0d565b90935060c08901359080821115611ea157600080fd5b50611eae8a828b01611dc5565b989b979a50959850939692959293505050565b803563ffffffff81168114611ed557600080fd5b919050565b60008060408385031215611eed57600080fd5b611ef683611ec1565b946020939093013593505050565b801515811461108557600080fd5b60008060408385031215611f2557600080fd5b82356001600160401b03811115611f3b57600080fd5b611f4785828601611c7e565b9250506020830135611f5881611f04565b809150509250929050565b815181526020808301519082015260408101610980565b803561ffff81168114611ed557600080fd5b60008060408385031215611f9f57600080fd5b611fa883611ec1565b9150611fb660208401611f7a565b90509250929050565b6020815260006118596020830184611cee565b600060208284031215611fe457600080fd5b813561185981611e0d565b60008060008060a0858703121561200557600080fd5b61200f8686611db3565b935060608501356001600160401b0381111561202a57600080fd5b61203687828801611dc5565b909450925050608085013561204a81611e0d565b939692955090935050565b60008083601f84011261206757600080fd5b5081356001600160401b0381111561207e57600080fd5b6020830191508360208260051b8501011115611e0657600080fd5b600080602083850312156120ac57600080fd5b82356001600160401b038111156120c257600080fd5b6120ce85828601612055565b90969095509350505050565b6000602082840312156120ec57600080fd5b61185982611ec1565b6000806000806060858703121561210b57600080fd5b61211485611ec1565b935061212260208601611f7a565b925060408501356001600160401b0381111561213d57600080fd5b61214987828801611dc5565b95989497509550505050565b6000806000838503608081121561216b57600080fd5b84356001600160401b0381111561218157600080fd5b61218d87828801611c7e565b9450506040601f19820112156121a257600080fd5b5060208401915060608401356121b781611e0d565b809150509250925092565b600060c082019050835182526001600160401b03602085015116602083015260408401516121fd604084018280518252602090810151910152565b5082516080830152602083015160a0830152611859565b60006060828403121561222657600080fd5b6118598383611db3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061225a57607f821691505b602082108103611c9057634e487b7160e01b600052602260045260246000fd5b604051606081016001600160401b038111828210171561229c5761229c612230565b60405290565b604080519081016001600160401b038111828210171561229c5761229c612230565b604051601f8201601f191681016001600160401b03811182821017156122ec576122ec612230565b604052919050565b60006001600160401b0382111561230d5761230d612230565b50601f01601f191660200190565b60006001600160401b038084111561233557612335612230565b8360051b60206123468183016122c4565b86815291850191818101903684111561235e57600080fd5b865b84811015612424578035868111156123785760008081fd5b8801606036829003121561238c5760008081fd5b61239461227a565b61239d82611ec1565b81526123aa868301611f7a565b86820152604080830135898111156123c25760008081fd5b929092019136601f8401126123d75760008081fd5b82356123ea6123e5826122f4565b6122c4565b81815236898387010111156123ff5760008081fd5b818986018a830137600091810189019190915290820152845250918301918301612360565b50979650505050505050565b6000808585111561244057600080fd5b8386111561244d57600080fd5b5050820193919092039150565b6000845161246c818460208901611cca565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610aa9602083018486612482565b634e487b7160e01b600052603260045260246000fd5b6000823561013e198336030181126124ec57600080fd5b9190910192915050565b6000808335601e1984360301811261250d57600080fd5b8301803591506001600160401b0382111561252757600080fd5b602001915036819003821315611e0657600080fd5b6001600160401b038116811461108557600080fd5b63ffffffff61255f89611ec1565b168152602088013560208201526000604089013561257c8161253c565b6001600160401b03811660408401525087606083015260e060808301526125a760e083018789612482565b6001600160a01b03861660a084015282810360c08401526125c9818587612482565b9a9950505050505050505050565b6000602082840312156125e957600080fd5b81516001600160401b038111156125ff57600080fd5b8201601f8101841361261057600080fd5b805161261e6123e5826122f4565b81815285602083850101111561263357600080fd5b6114f5826020830160208601611cca565b60006040828403121561265657600080fd5b61265e6122a2565b82358152602083013560208201528091505092915050565b60006020828403121561268857600080fd5b81356118598161253c565b60018060a01b038516815283602082015261ffff831660408201526080606082015260006126c46080830184611cee565b9695505050505050565b6040815260006126e16040830185611cee565b82810360208401526114f58185611cee565b60006020828403121561270557600080fd5b815161185981611f04565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261274660e0840182611cee565b90506060850151603f198483030160a08501526127638282611cee565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561279b57600080fd5b6127a36122a2565b9050815181526020820151602082015292915050565b6000604082840312156127cb57600080fd5b6118598383612789565b601f821115611bc1576000816000526020600020601f850160051c810160208610156127fe5750805b601f850160051c820191505b8181101561281d5782815560010161280a565b505050505050565b81516001600160401b0381111561283e5761283e612230565b6128528161284c8454612246565b846127d5565b602080601f831160018114612887576000841561286f5750858301515b600019600386901b1c1916600185901b17855561281d565b600085815260208120601f198616915b828110156128b657888601518255948401946001909101908401612897565b50858210156128d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561296157888303603f190185528151805163ffffffff1684528781015161ffff1688850152860151606087850181905261294d81860183611cee565b96890196945050509086019060010161290d565b509098975050505050505050565b60006080828403121561298157600080fd5b61298961227a565b82518152602083015161299b8161253c565b60208201526129ad8460408501612789565b60408201529392505050565b6000826129d657634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761098057634e487b7160e01b600052601160045260246000fd5b8035602083101561098057600019602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015612a465780818660080360031b1b83161692505b505092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c82015260008251612a8d81602c850160208701611cca565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b16602082015282602882015260008251612ad0816048850160208701611cca565b9190910160480195945050505050565b600060208284031215612af257600080fd5b815161185981611e0d56fea264697066735822122085ac0c316c86b70e566b24b916e8929939ef997b697cf199a6b6ce2cce0e348764736f6c6343000816003300000000000000000000000032353a6c91143bfd6c7d363b546e62a9a2489a200000000000000000000000001a44076050125825900e736c501f859c50fe728c0000000000000000000000009f5c0b5adc93001585e4f169dd728ee76094eed900000000000000000000000069bfc7b0deb166aa4341a2c7437956b13ea74d9f