60806040523480156200001157600080fd5b50604051620018e1380380620018e18339810160408190526200003491620002d5565b8181600362000044838262000490565b50600462000053828262000490565b5050506000845111620000ad5760405162461bcd60e51b815260206004820152601d60248201527f56616c696461746f7273206d757374206e6f7420626520656d7074792100000060448201526064015b60405180910390fd5b60008361ffff16118015620000c7575083518361ffff1611155b6200010a5760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964207468726573686f6c642160701b6044820152606401620000a4565b60005b845181101562000164576200014e8582815181106200013057620001306200055c565b602002602001015160066200017560201b620004521790919060201c565b50806200015b8162000572565b9150506200010d565b50505061ffff16600555506200059a565b60006200018c836001600160a01b03841662000195565b90505b92915050565b6000818152600183016020526040812054620001de575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200018f565b5060006200018f565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620002285762000228620001e7565b604052919050565b805161ffff811681146200024357600080fd5b919050565b600082601f8301126200025a57600080fd5b81516001600160401b03811115620002765762000276620001e7565b60206200028c601f8301601f19168201620001fd565b8281528582848701011115620002a157600080fd5b60005b83811015620002c1578581018301518282018401528201620002a4565b506000928101909101919091529392505050565b60008060008060808587031215620002ec57600080fd5b84516001600160401b03808211156200030457600080fd5b818701915087601f8301126200031957600080fd5b8151602082821115620003305762000330620001e7565b8160051b62000341828201620001fd565b928352848101820192828101908c8511156200035c57600080fd5b958301955b848710156200039657865192506001600160a01b0383168314620003855760008081fd5b828252958301959083019062000361565b9950620003a891505089820162000230565b965050506040870151915080821115620003c157600080fd5b620003cf8883890162000248565b93506060870151915080821115620003e657600080fd5b50620003f58782880162000248565b91505092959194509250565b600181811c908216806200041657607f821691505b6020821081036200043757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048b57600081815260208120601f850160051c81016020861015620004665750805b601f850160051c820191505b81811015620004875782815560010162000472565b5050505b505050565b81516001600160401b03811115620004ac57620004ac620001e7565b620004c481620004bd845462000401565b846200043d565b602080601f831160018114620004fc5760008415620004e35750858301515b600019600386901b1c1916600185901b17855562000487565b600085815260208120601f198616915b828110156200052d578886015182559484019460019091019084016200050c565b50858210156200054c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200059357634e487b7160e01b600052601160045260246000fd5b5060010190565b61133780620005aa6000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806306fdde03146100b4578063095ea7b3146100d257806318160ddd146100f55780631ff02f241461010757806323b872dd1461011c578063313ce5671461012f578063395093511461013e57806370a08231146101515780637641e6f31461017a57806395d89b411461018d578063a457c2d714610195578063a9059cbb146101a8578063dd62ed3e146101bb575b600080fd5b6100bc6101ce565b6040516100c99190610f26565b60405180910390f35b6100e56100e0366004610f90565b610260565b60405190151581526020016100c9565b6002545b6040519081526020016100c9565b61011a610115366004610fba565b61027a565b005b6100e561012a366004611004565b6102f0565b604051601281526020016100c9565b6100e561014c366004610f90565b610314565b6100f961015f366004611022565b6001600160a01b031660009081526020819052604090205490565b61011a61018836600461103d565b610336565b6100bc61038a565b6100e56101a3366004610f90565b610399565b6100e56101b6366004610f90565b610419565b6100f96101c93660046110b8565b610427565b6060600380546101dd906110eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610209906110eb565b80156102565780601f1061022b57610100808354040283529160200191610256565b820191906000526020600020905b81548152906001019060200180831161023957829003601f168201915b5050505050905090565b60003361026e81858561046e565b60019150505b92915050565b6040805180820182526001600160a01b03841680825260209182018481528351928301919091525181830152815180820383018152606090910190915260006102c4858284610593565b905060008160018111156102da576102da611125565b036102e9576102e984846109c5565b5050505050565b6000336102fe858285610a16565b610309858585610a90565b506001949350505050565b60003361026e8185856103278383610427565b610331919061113b565b61046e565b6103403384610c22565b336001600160a01b03167f18630b77337bb606be401bb60ccb46c3a7c0cfb07a8d0539b7a4f8442c9b7d9683838660405161037d9392919061115c565b60405180910390a2505050565b6060600480546101dd906110eb565b600033816103a78286610427565b90508381101561040c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610309828686840361046e565b60003361026e818585610a90565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610467836001600160a01b038416610d3f565b9392505050565b6001600160a01b0383166104d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610403565b6001600160a01b0382166105315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610403565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006105a0600633610d89565b6105df5760405162461bcd60e51b815260206004820152601060248201526f4e6f7420612076616c696461746f722160801b6044820152606401610403565b6001600160801b03841660009081526008602052604081206002015490036106a657604051806080016040528084600081111561061e5761061e611125565b815260208082018590526001604080840182905260609093018190526001600160801b038816600090815260089092529190208251815491929091839160ff199091169083801561067157610671611125565b02179055506020820151600182019061068a90826111f9565b50604082015160028201556060909101516003909101556108a3565b6001600160801b0384166000908152600960209081526040808320338452909152902054600260ff909116106107155760405162461bcd60e51b81526020600482015260146024820152734475706c69636174652056616c696461746f722160601b6044820152606401610403565b6001600160801b038416600090815260086020526040812060030180546001929061074190849061113b565b90915550839050801561075657610756611125565b6001600160801b03851660009081526008602052604090205460ff16801561078057610780611125565b1461079d5760405162461bcd60e51b8152600401610403906112b8565b6001600160801b038416600090815260086020526040902060010180546108559184916107c9906110eb565b80601f01602080910402602001604051908101604052809291908181526020018280546107f5906110eb565b80156108425780601f1061081757610100808354040283529160200191610842565b820191906000526020600020905b81548152906001019060200180831161082557829003601f168201915b5050505050610d9e90919063ffffffff16565b6108715760405162461bcd60e51b8152600401610403906112b8565b6001600160801b038416600090815260086020526040812060020180546001929061089d90849061113b565b90915550505b6001600160801b03841660008181526009602090815260408083203384528252808320805460ff191660029081179091556005549484526008909252909120015460019190036108f1575060005b6108fb6006610e01565b6001600160801b038616600090815260086020526040902060030154036109bd576001600160801b0385166000908152600860205260408120805460ff191681559061094a6001830182610ed0565b506000600282810182905560039092018190556005546001600160801b0388168252600860205260409091209091015410156109bd576040516001600160801b03861681527fc0393932a21124b79a899f61056a29f8f4148fbaeafec8208195cfe3735d25769060200160405180910390a15b949350505050565b6109cf8282610e0b565b816001600160a01b03167fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a882604051610a0a91815260200190565b60405180910390a25050565b6000610a228484610427565b90506000198114610a8a5781811015610a7d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610403565b610a8a848484840361046e565b50505050565b6001600160a01b038316610af45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610403565b6001600160a01b038216610b565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610403565b6001600160a01b03831660009081526020819052604090205481811015610bce5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610403565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290926000805160206112e2833981519152910160405180910390a3610a8a565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610403565b6001600160a01b03821660009081526020819052604090205481811015610cf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610403565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206112e28339815191529101610586565b505050565b6000610d4b8383610eb8565b610d8157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610274565b506000610274565b6000610467836001600160a01b038416610eb8565b815181516000916001918114808314610dba5760009250610df7565b600160208701838101602088015b6002848385100103610df2578051835114610de65760009650600093505b60209283019201610dc8565b505050505b5090949350505050565b6000610274825490565b6001600160a01b038216610e615760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610403565b8060026000828254610e73919061113b565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481526000805160206112e2833981519152910160405180910390a35050565b60009081526001919091016020526040902054151590565b508054610edc906110eb565b6000825580601f10610eec575050565b601f016020900490600052602060002090810190610f0a9190610f0d565b50565b5b80821115610f225760008155600101610f0e565b5090565b600060208083528351808285015260005b81811015610f5357858101830151858201604001528201610f37565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f8b57600080fd5b919050565b60008060408385031215610fa357600080fd5b610fac83610f74565b946020939093013593505050565b600080600060608486031215610fcf57600080fd5b83356001600160801b0381168114610fe657600080fd5b9250610ff460208501610f74565b9150604084013590509250925092565b60008060006060848603121561101957600080fd5b610fe684610f74565b60006020828403121561103457600080fd5b61046782610f74565b60008060006040848603121561105257600080fd5b8335925060208401356001600160401b038082111561107057600080fd5b818601915086601f83011261108457600080fd5b81358181111561109357600080fd5b8760208285010111156110a557600080fd5b6020830194508093505050509250925092565b600080604083850312156110cb57600080fd5b6110d483610f74565b91506110e260208401610f74565b90509250929050565b600181811c908216806110ff57607f821691505b60208210810361111f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b8082018082111561027457634e487b7160e01b600052601160045260246000fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b601f821115610d3a57600081815260208120601f850160051c810160208610156111d25750805b601f850160051c820191505b818110156111f1578281556001016111de565b505050505050565b81516001600160401b0381111561121257611212611195565b6112268161122084546110eb565b846111ab565b602080601f83116001811461125b57600084156112435750858301515b600019600386901b1c1916600185901b1785556111f1565b600085815260208120601f198616915b8281101561128a5788860151825594840194600190910190840161126b565b50858210156112a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600f908201526e082c6e8d2dedc409ad2e6dac2e8c6d608b1b60408201526060019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013d03c7e5eb2a0e5308dc86a95bd6dc1d4b302ac25fcfc817c52d1c9d9dae6f164736f6c634300081200330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000dfa406a08031a1fd993dcf9159b1f0f8409bc41b00000000000000000000000051560ec8255a713b3c2d421c103b720db6897305000000000000000000000000283b92a21a96d982a1b30b54744429f19fed6bd90000000000000000000000007b95b3534a0f3dc7d43a05142d0b0ca72573a9a4000000000000000000000000ec96a1e77c047908d9daebf08b586e2e09f6ba67000000000000000000000000ee29e5eb590e6d65139778df4def3c1b4aa4e6b600000000000000000000000023d5f4088f737934716fdc91289d1828ef6a4c92000000000000000000000000971d65ba0194d4591286e1376c0141824fa8e635000000000000000000000000e57b40b095691d9a27bcf25c6ea6f80d740b7f9a000000000000000000000000b8840b9e6033d9d1d105be2486b3ff1caf880d30000000000000000000000000e01b9d3936d510393282708119a849288439320b0000000000000000000000002091aeece28f2f9e981b092958d5a76d4c7e6ca4000000000000000000000000b583c06533d8a509ba90b88ba9aafdcbe736581e000000000000000000000000000000000000000000000000000000000000001345717569746f205772617070656420414c474f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557414c474f000000000000000000000000000000000000000000000000000000