60806040819052600019600a556064600c557008da60679c709053c5f9bfb6fb1eb71ca0600d556017805460ff1916905562002865388190039081908339810160408190526200004f91620002aa565b60066200005d8b826200040d565b5060076200006c8a826200040d565b5060088890556200007f88600a620005ee565b600b81905562000090908862000603565b600e819055600a54620000a491906200061d565b600a54620000b3919062000640565b600f55620000c386606462000603565b601355620000d385606462000603565b601455620000e384606462000603565b6015819055601354601855601454601955601a55600980546001600160a01b038086166001600160a01b03199283161790925560008054858416921682178155600f5491815260016020526040808220929092559051918316913480156108fc0292909190818181858888f1935050505015801562000166573d6000803e3d6000fd5b50816001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620001b091815260200190565b60405180910390a35050505050505050505062000656565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b80516001600160a01b0381168114620002a557600080fd5b919050565b6000806000806000806000806000806101408b8d031215620002cb57600080fd5b8a516001600160401b0380821115620002e357600080fd5b620002f18e838f01620001de565b9b5060208d01519150808211156200030857600080fd5b50620003178d828e01620001de565b99505060408b0151975060608b0151965060808b0151955060a08b0151945060c08b015193506200034b60e08c016200028d565b92506200035c6101008c016200028d565b91506200036d6101208c016200028d565b90509295989b9194979a5092959850565b600181811c908216806200039357607f821691505b602082108103620003b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200040857600081815260208120601f850160051c81016020861015620003e35750805b601f850160051c820191505b818110156200040457828155600101620003ef565b5050505b505050565b81516001600160401b03811115620004295762000429620001c8565b62000441816200043a84546200037e565b84620003ba565b602080601f831160018114620004795760008415620004605750858301515b600019600386901b1c1916600185901b17855562000404565b600085815260208120601f198616915b82811015620004aa5788860151825594840194600190910190840162000489565b5085821015620004c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000530578160001904821115620005145762000514620004d9565b808516156200052257918102915b93841c9390800290620004f4565b509250929050565b6000826200054957506001620005e8565b816200055857506000620005e8565b81600181146200057157600281146200057c576200059c565b6001915050620005e8565b60ff841115620005905762000590620004d9565b50506001821b620005e8565b5060208310610133831016604e8410600b8410161715620005c1575081810a620005e8565b620005cd8383620004ef565b8060001904821115620005e457620005e4620004d9565b0290505b92915050565b6000620005fc838362000538565b9392505050565b8082028115828204841417620005e857620005e8620004d9565b6000826200063b57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620005e857620005e8620004d9565b6121ff80620006666000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637b7e8bac11610125578063b5862428116100ad578063dd62ed3e1161007c578063dd62ed3e1461044c578063f2cc0c1814610485578063f2fde38b14610498578063f84354f1146104ab578063fc061a4f146104be57600080fd5b8063b5862428146103fc578063bedb86fb14610405578063cba0e99614610418578063d608b3b21461044457600080fd5b8063a457c2d7116100f4578063a457c2d714610397578063a9059cbb146103aa578063aa797dbc146103bd578063ae9dd5e0146103e0578063b2bdfa7b146103e957600080fd5b80637b7e8bac14610340578063869236111461036b5780638da5cb5b1461037e57806395d89b411461038f57600080fd5b806339509351116101a8578063457bdf6c11610177578063457bdf6c146102fc5780636985a0221461030f57806370a082311461031c578063715018a61461032f57806377ef79931461033757600080fd5b806339509351146102b95780633bd5d173146102cc5780633c9f861d146102e15780634549b039146102e957600080fd5b806318160ddd116101e457806318160ddd1461027657806323b872dd1461027e5780632d83811914610291578063313ce567146102a457600080fd5b806306fdde0314610216578063095ea7b31461023457806310c8aeac1461025757806313114a9d1461026e575b600080fd5b61021e6104d1565b60405161022b9190611ea4565b60405180910390f35b610247610242366004611f0e565b610563565b604051901515815260200161022b565b610260600d5481565b60405190815260200161022b565b601054610260565b600e54610260565b61024761028c366004611f38565b61057a565b61026061029f366004611f74565b6105e3565b60085460405160ff909116815260200161022b565b6102476102c7366004611f0e565b61066c565b6102df6102da366004611f74565b6106a2565b005b601154610260565b6102606102f7366004611f9d565b61078e565b6102df61030a366004611fc9565b61081d565b6017546102479060ff1681565b61026061032a366004611fc9565b610869565b6102df6108c8565b61026060145481565b600954610353906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b6102df610379366004611fe4565b61093c565b6000546001600160a01b0316610353565b61021e610991565b6102476103a5366004611f0e565b6109a0565b6102476103b8366004611f0e565b610a1d565b6102476103cb366004611fc9565b60166020526000908152604090205460ff1681565b61026060155481565b600054610353906001600160a01b031681565b61026060135481565b6102df61041336600461200e565b610a2a565b610247610426366004611fc9565b6001600160a01b031660009081526004602052604090205460ff1690565b601254610260565b61026061045a366004612029565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6102df610493366004611fc9565b610a67565b6102df6104a6366004611fc9565b610bba565b6102df6104b9366004611fc9565b610ca4565b6102df6104cc366004612053565b610e5a565b6060600680546104e09061207f565b80601f016020809104026020016040519081016040528092919081815260200182805461050c9061207f565b80156105595780601f1061052e57610100808354040283529160200191610559565b820191906000526020600020905b81548152906001019060200180831161053c57829003601f168201915b5050505050905090565b6000610570338484610ee9565b5060015b92915050565b6000610587848484610ff6565b6105d984336105d4856040518060600160405280602181526020016121a9602191396001600160a01b038a16600090815260036020908152604080832033845290915290205491906113bb565b610ee9565b5060019392505050565b6000600f5482111561064f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006106596113f5565b90506106658382611418565b9392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916105709185906105d4908661145a565b3360008181526004602052604090205460ff16156107175760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610646565b6000610722836114b9565b5050506001600160a01b0386166000908152600160205260409020549394506107509392508491505061153d565b6001600160a01b038316600090815260016020526040902055600f54610776908261153d565b600f55601054610786908461145a565b601055505050565b6000600e548311156107e25760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610646565b816108025760006107f2846114b9565b5094965061057495505050505050565b600061080d846114b9565b5093965061057495505050505050565b6000546001600160a01b031632146108475760405162461bcd60e51b8152600401610646906120b9565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526004602052604081205460ff16156108a657506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610574906105e3565b6000546001600160a01b031632146108f25760405162461bcd60e51b8152600401610646906120b9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031632146109665760405162461bcd60e51b8152600401610646906120b9565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6060600780546104e09061207f565b600061057033846105d4856040518060400160405280601e81526020017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000815250600360006109ec3390565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906113bb565b6000610570338484610ff6565b6000546001600160a01b03163214610a545760405162461bcd60e51b8152600401610646906120b9565b6017805460ff1916911515919091179055565b6000546001600160a01b03163214610a915760405162461bcd60e51b8152600401610646906120b9565b6001600160a01b03811660009081526004602052604090205460ff1615610afa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610646565b6001600160a01b03811660009081526001602052604090205415610b54576001600160a01b038116600090815260016020526040902054610b3a906105e3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b6000546001600160a01b03163214610be45760405162461bcd60e51b8152600401610646906120b9565b6001600160a01b038116610c495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610646565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163214610cce5760405162461bcd60e51b8152600401610646906120b9565b6001600160a01b03811660009081526004602052604090205460ff16610d365760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610646565b60005b600554811015610e5657816001600160a01b031660058281548110610d6057610d606120ee565b6000918252602090912001546001600160a01b031603610e445760058054610d8a9060019061211a565b81548110610d9a57610d9a6120ee565b600091825260209091200154600580546001600160a01b039092169183908110610dc657610dc66120ee565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610e1e57610e1e61212d565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e4e81612143565b915050610d39565b5050565b6000546001600160a01b03163214610e845760405162461bcd60e51b8152600401610646906120b9565b606483108015610e945750606482105b8015610ea05750606481105b610ea957600080fd5b610eb483606461215c565b601355610ec282606461215c565b601455610ed081606461215c565b6015819055601354601855601454601955601a55505050565b6001600160a01b038316610f3f5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610646565b6001600160a01b038216610f955760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610646565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661104c5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610646565b6001600160a01b0382166110a25760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610646565b600081116111045760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610646565b6001600160a01b03831660009081526016602052604090205460ff1615801561114657506001600160a01b03821660009081526016602052604090205460ff16155b6111825760405162461bcd60e51b815260206004820152600d60248201526c456e656d79206164647265737360981b6044820152606401610646565b60175460ff16156111bd5760405162461bcd60e51b8152602060048201526005602482015264506175736560d81b6044820152606401610646565b6009546001906001600160a01b03858116911614806111e957506009546001600160a01b038481169116145b8061120c57506001600160a01b03841660009081526004602052604090205460ff165b8061122f57506001600160a01b03831660009081526004602052604090205460ff165b15611238575060005b806112455761124561157f565b6001600160a01b03841660009081526004602052604090205460ff16801561128657506001600160a01b03831660009081526004602052604090205460ff16155b1561129b576112968484846115c4565b611399565b6001600160a01b03841660009081526004602052604090205460ff161580156112dc57506001600160a01b03831660009081526004602052604090205460ff165b156112ec57611296848484611688565b6001600160a01b03841660009081526004602052604090205460ff1615801561132e57506001600160a01b03831660009081526004602052604090205460ff16155b1561133e576112968484846116da565b6001600160a01b03841660009081526004602052604090205460ff16801561137e57506001600160a01b03831660009081526004602052604090205460ff165b1561138e5761129684848461172b565b6113998484846116da565b806113b5576113b5601854601355601954601455601a54601555565b50505050565b600081848411156113df5760405162461bcd60e51b81526004016106469190611ea4565b5060006113ec848661211a565b95945050505050565b600080600061140261177e565b90925090506114118282611418565b9250505090565b600061066583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611900565b6000806114678385612173565b9050838110156106655760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610646565b6000806000806000806000806000806114da8b60135460145460155461192e565b92509250925060006114ee8c8585856119ad565b905060006114fa6113f5565b905060008061150a8f88856119c5565b91509150600061151d83838989886119ef565b929e50919c509a5091985093965091945092505050919395979092949650565b600061066583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113bb565b60135415801561158f5750601454155b801561159b5750601554155b156115a257565b601380546018556014805460195560158054601a556000928390559082905555565b60006115ce6113f5565b905060008060008060008060006115e4896114b9565b965096509650965096509650965060006116078984611a2b90919063ffffffff16565b90506116168c8c8c8b8b611aad565b611620828d611b51565b61162d8682868686611c32565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161167291815260200190565b60405180910390a3505050505050505050505050565b60006116926113f5565b905060008060008060008060006116a8896114b9565b965096509650965096509650965060006116cb8984611a2b90919063ffffffff16565b90506116168c8c878b8b611ccd565b60006116e46113f5565b905060008060008060008060006116fa896114b9565b9650965096509650965096509650600061171d8984611a2b90919063ffffffff16565b90506116168c8c8a8a611d55565b60006117356113f5565b9050600080600080600080600061174b896114b9565b9650965096509650965096509650600061176e8984611a2b90919063ffffffff16565b90506116168c8c8c8b898c611dc9565b600f54600e546000918291825b6005548110156118d0578260016000600584815481106117ad576117ad6120ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061181857508160026000600584815481106117f1576117f16120ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561182e57600f54600e54945094505050509091565b6118746001600060058481548110611848576118486120ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061153d565b92506118bc6002600060058481548110611890576118906120ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061153d565b9150806118c881612143565b91505061178b565b50600e54600f546118e091611418565b8210156118f757600f54600e549350935050509091565b90939092509050565b600081836119215760405162461bcd60e51b81526004016106469190611ea4565b5060006113ec8486612186565b6000806000806119586064611952600c546119528b8d611a2b90919063ffffffff16565b90611418565b9050600061197a6064611952600c546119528b8e611a2b90919063ffffffff16565b9050600061199c6064611952600c546119528b8f611a2b90919063ffffffff16565b929a91995091975095505050505050565b60006113ec826119bf8581898961153d565b9061153d565b600080806119d38685611a2b565b905060006119e18686611a2b565b919791965090945050505050565b6000806119fc8584611a2b565b90506000611a0a8585611a2b565b90506000611a1e826119bf85818d8d61153d565b9998505050505050505050565b600082600003611a3d57506000610574565b6000611a49838561215c565b905082611a568583612186565b146106655760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610646565b6001600160a01b038516600090815260026020526040902054611ad0908461153d565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611aff908361153d565b6001600160a01b038087166000908152600160205260408082209390935590861681522054611b2e908261145a565b6001600160a01b0390941660009081526001602052604090209390935550505050565b6000611b5b6113f5565b90506000611b698483611a2b565b6009546001600160a01b0316600090815260016020526040902054909150611b91908261145a565b600980546001600160a01b039081166000908152600160209081526040808320959095559254909116815260029091522054611bcd908561145a565b600980546001600160a01b03908116600090815260026020908152604091829020949094559154915187815291811692908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b611c4b846119bf87600f5461153d90919063ffffffff16565b600f55601054611c5b908461145a565b601055601154611c6b908361145a565b601155601254611c7b908261145a565b601255600e54611c8b908361153d565b600e5560405182815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6001600160a01b038516600090815260016020526040902054611cf0908361153d565b6001600160a01b03808716600090815260016020908152604080832094909455918716815260029091522054611d26908461145a565b6001600160a01b038516600090815260026020908152604080832093909355600190522054611b2e908261145a565b6001600160a01b038416600090815260016020526040902054611d78908361153d565b6001600160a01b038086166000908152600160205260408082209390935590851681522054611da7908261145a565b6001600160a01b03909316600090815260016020526040902092909255505050565b6001600160a01b038616600090815260026020526040902054611dec908561153d565b6001600160a01b038716600090815260026020908152604080832093909355600190522054611e1b908461153d565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054611e51908361145a565b6001600160a01b038616600090815260026020908152604080832093909355600190522054611e80908261145a565b6001600160a01b039095166000908152600160205260409020949094555050505050565b600060208083528351808285015260005b81811015611ed157858101830151858201604001528201611eb5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f0957600080fd5b919050565b60008060408385031215611f2157600080fd5b611f2a83611ef2565b946020939093013593505050565b600080600060608486031215611f4d57600080fd5b611f5684611ef2565b9250611f6460208501611ef2565b9150604084013590509250925092565b600060208284031215611f8657600080fd5b5035919050565b80358015158114611f0957600080fd5b60008060408385031215611fb057600080fd5b82359150611fc060208401611f8d565b90509250929050565b600060208284031215611fdb57600080fd5b61066582611ef2565b60008060408385031215611ff757600080fd5b61200083611ef2565b9150611fc060208401611f8d565b60006020828403121561202057600080fd5b61066582611f8d565b6000806040838503121561203c57600080fd5b61204583611ef2565b9150611fc060208401611ef2565b60008060006060848603121561206857600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061209357607f821691505b6020821081036120b357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561057457610574612104565b634e487b7160e01b600052603160045260246000fd5b60006001820161215557612155612104565b5060010190565b808202811582820484141761057457610574612104565b8082018082111561057457610574612104565b6000826121a357634e487b7160e01b600052601260045260246000fd5b50049056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220749ba205029bdc9252e08a5bd26879e3f6a3e433f9668950d71781b4122f147864736f6c63430008110033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000d18c2e28000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000040000000000000000000000004b296ae58041826b0d94bc176d22793b63f780160000000000000000000000004b296ae58041826b0d94bc176d22793b63f7801600000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a000000000000000000000000000000000000000000000000000000000000000c466c61736865722d55534454000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000