60a06040523480156200001157600080fd5b5060405162003d2838038062003d2883398101604081905262000034916200011f565b6040518060400160405280600381526020016214d31160ea1b8152506040518060400160405280600d81526020016c12185b991cda185ad94814d311609a1b81525081818160009081620000899190620001f6565b506001620000988282620001f6565b505050620000b5620000af620000c960201b60201c565b620000cd565b50506001600160a01b0316608052620002c2565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200013257600080fd5b81516001600160a01b03811681146200014a57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200017c57607f821691505b6020821081036200019d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f157600081815260208120601f850160051c81016020861015620001cc5750805b601f850160051c820191505b81811015620001ed57828155600101620001d8565b5050505b505050565b81516001600160401b0381111562000212576200021262000151565b6200022a8162000223845462000167565b84620001a3565b602080601f831160018114620002625760008415620002495750858301515b600019600386901b1c1916600185901b178555620001ed565b600085815260208120601f198616915b82811015620002935788860151825594840194600190910190840162000272565b5085821015620002b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613a196200030f6000396000818161041901528181610aa901528181610dea015281816110cd0152818161137a01528181611b9001528181611ce50152611e060152613a196000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c80637eda417511610186578063c3d5fdf1116100e3578063e985e9c511610097578063f2fde38b11610071578063f2fde38b1461068b578063f6aea5b71461069e578063f8559dc7146106b157600080fd5b8063e985e9c51461061c578063eae12cb614610658578063f18daeb91461066b57600080fd5b8063c87b56dd116100c8578063c87b56dd146105e3578063d2ec5fca146105f6578063e5187f431461060957600080fd5b8063c3d5fdf1146105bd578063c66485b2146105d057600080fd5b80639a6c67e91161013a578063adaa0acc1161011f578063adaa0acc14610584578063b88d4fde14610597578063be6d17cd146105aa57600080fd5b80639a6c67e914610551578063a22cb4651461057157600080fd5b806384f7d0121161016b57806384f7d0121461050f5780638da5cb5b1461053857806395d89b411461054957600080fd5b80637eda4175146104c8578063828eab0e146104fc57600080fd5b8063430c208111610234578063691f3431116101e857806370a08231116101cd57806370a082311461049a578063715018a6146104ad5780637b831505146104b557600080fd5b8063691f343114610474578063708e83321461048757600080fd5b80634f558e79116102195780634f558e791461043b5780636352211e1461044e57806365d39e0b1461046157600080fd5b8063430c20811461040157806343ee0c011461041457600080fd5b80631896f70a1161028b5780632a55205a116102705780632a55205a146103a9578063392f37e9146103db57806342842e0e146103ee57600080fd5b80631896f70a1461038357806323b872dd1461039657600080fd5b8063081812fc116102bc578063081812fc14610315578063095ea7b3146103405780630dd64ae21461035557600080fd5b806301ffc9a7146102d857806306fdde0314610300575b600080fd5b6102eb6102e6366004612ef2565b6106c4565b60405190151581526020015b60405180910390f35b610308610721565b6040516102f79190612f5f565b610328610323366004612f72565b6107b3565b6040516001600160a01b0390911681526020016102f7565b61035361034e366004612fa0565b6107da565b005b610375610363366004612f72565b600b6020526000908152604090205481565b6040519081526020016102f7565b610353610391366004612fcc565b61092e565b6103536103a4366004612ffc565b610a03565b6103bc6103b736600461303d565b610a64565b604080516001600160a01b0390931683526020830191909152016102f7565b600954610328906001600160a01b031681565b6103536103fc366004612ffc565b610bc6565b6102eb61040f366004612fa0565b610c27565b6103287f000000000000000000000000000000000000000000000000000000000000000081565b6102eb610449366004612f72565b610c3a565b61032861045c366004612f72565b610c5c565b61030861046f366004612f72565b610cbd565b610308610482366004612f72565b610d57565b610353610495366004612f72565b610f2b565b6103756104a836600461305f565b610fe8565b610353611082565b6103536104c336600461303d565b611096565b6103286104d6366004612fcc565b600c6020908152600092835260408084209091529082529020546001600160a01b031681565b600854610328906001600160a01b031681565b61032861051d366004612f72565b6007602052600090815260409020546001600160a01b031681565b6006546001600160a01b0316610328565b610308611222565b61037561055f366004612f72565b600d6020526000908152604090205481565b61035361057f36600461308a565b611231565b61035361059236600461305f565b611240565b6103536105a5366004613140565b611282565b6103086105b8366004612f72565b6112ea565b600e54610328906001600160a01b031681565b6103536105de36600461305f565b6113f1565b6103086105f1366004612f72565b611433565b610375610604366004612f72565b61153e565b61035361061736600461305f565b611608565b6102eb61062a3660046131ef565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61035361066636600461321d565b6116ef565b61067e6106793660046132f2565b6118af565b6040516102f791906133b6565b61035361069936600461305f565b611ac9565b6103536106ac366004612fcc565b611b59565b6103286106bf366004612f72565b611dd4565b60006106cf82611e79565b8061071b57507fffffffff0000000000000000000000000000000000000000000000000000000082167fc87b56dd00000000000000000000000000000000000000000000000000000000145b92915050565b60606000805461073090613469565b80601f016020809104026020016040519081016040528092919081815260200182805461075c90613469565b80156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107be82611f5c565b506000908152600460205260409020546001600160a01b031690565b60006107e582611fc0565b9050806001600160a01b0316836001600160a01b0316036108735760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806108ad57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61091f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161086a565b6109298383612025565b505050565b816109393382610c27565b6109855760405162461bcd60e51b815260206004820152601560248201527f6e6f7420617070726f766564206f72206f776e65720000000000000000000000604482015260640161086a565b60008381526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616908117909155915191825284917f8351f08b866373e36a5512f940b7609da3d55dfef07a9002049549d40c23a14691015b60405180910390a2505050565b610a0c816120ab565b15610a595760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f74207472616e73666572206578706972656420746f6b656e000000604482015260640161086a565b610929838383612197565b6000828152600d60205260408082205490517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052829190819083907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c91906134bc565b6000848152600c602090815260408083206001600160a01b0380861685529252909120549192501615610b73576000838152600c602090815260408083206001600160a01b03808616855292529091205416610b75565b805b6000848152600b602052604090205490955015610bb7576000838152600b6020526040902054606490610ba89088613508565b610bb2919061351f565b610bba565b60005b93505050509250929050565b610bcf816120ab565b15610c1c5760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f74207472616e73666572206578706972656420746f6b656e000000604482015260640161086a565b61092983838361221e565b6000610c338383612239565b9392505050565b6000610c4582612245565b801561071b5750610c55826120ab565b1592915050565b6000610c67826120ab565b15610cb45760405162461bcd60e51b815260206004820152600b60248201527f736c642065787069726564000000000000000000000000000000000000000000604482015260640161086a565b61071b82612264565b600a6020526000908152604090208054610cd690613469565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0290613469565b8015610d4f5780601f10610d2457610100808354040283529160200191610d4f565b820191906000526020600020905b815481529060010190602001808311610d3257829003601f168201915b505050505081565b6000818152600d6020526040812054606091819003610db85760405162461bcd60e51b815260206004820152601560248201527f646f6d61696e20646f6573206e6f742065786973740000000000000000000000604482015260640161086a565b6040517f65d39e0b000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906365d39e0b90602401600060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e61919081019061355a565b6000858152600a6020526040812080549293509091610e7f90613469565b80601f0160208091040260200160405190810160405280929190818152602001828054610eab90613469565b8015610ef85780601f10610ecd57610100808354040283529160200191610ef8565b820191906000526020600020905b815481529060010190602001808311610edb57829003601f168201915b505050505090508082604051602001610f129291906135d1565b6040516020818303038152906040529350505050919050565b600e546001600160a01b03163314610f855760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420617574686f7269736564000000000000000000000000000000000000604482015260640161086a565b610f8e8161226f565b6000818152600a60205260408120610fa591612e76565b6000908152600d602090815260408083208390556007909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006001600160a01b0382166110665760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161086a565b506001600160a01b031660009081526003602052604090205490565b61108a612322565b611094600061237c565b565b6040517f430c20810000000000000000000000000000000000000000000000000000000081523360048201526024810183905282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa15801561111c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111409190613629565b61118c5760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420617574686f7269736564000000000000000000000000000000000000604482015260640161086a565b600a8211156111dd5760405162461bcd60e51b815260206004820152601a60248201527f313025206d6178696d756d20726f79616c7479206f6e20534c44000000000000604482015260640161086a565b6000838152600b6020526040908190208390555183907f5d5032bbdc28085a268053c7d7b778a53655fb6d4d9c98083360bf8eb4968393906109f69085815260200190565b60606001805461073090613469565b61123c3383836123e6565b5050565b611248612322565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61128b826120ab565b156112d85760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f74207472616e73666572206578706972656420746f6b656e000000604482015260640161086a565b6112e4848484846124d2565b50505050565b6000818152600d602052604081205460609181900361134b5760405162461bcd60e51b815260206004820152601560248201527f646f6d61696e20646f6573206e6f742065786973740000000000000000000000604482015260640161086a565b6040517f65d39e0b000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906365d39e0b90602401600060405180830381865afa1580156113c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c33919081019061355a565b6113f9612322565b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6009546060906001600160a01b03166114b45760405162461bcd60e51b815260206004820152602360248201527f4d657461646174612073657276696365206973206e6f7420696d706c656d656e60448201527f7465640000000000000000000000000000000000000000000000000000000000606482015260840161086a565b6009546040517fafbb8d51000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063afbb8d5190602401600060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071b919081019061355a565b600e546040517fc407d6c700000000000000000000000000000000000000000000000000000000815260048101839052600091829182916001600160a01b03169063c407d6c790602401606060405180830381865afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c99190613660565b5069ffffffffffffffffffff1691509150808269ffffffffffffffffffff166115f291906136b8565b6bffffffffffffffffffffffff16949350505050565b611610612322565b6116436001600160a01b0382167fafbb8d510000000000000000000000000000000000000000000000000000000061255a565b6116b55760405162461bcd60e51b815260206004820152602260248201527f646f6573206e6f7420696d706c656d656e7420746f6b656e557269206d65746860448201527f6f64000000000000000000000000000000000000000000000000000000000000606482015260840161086a565b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600e546001600160a01b031633146117495760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420617574686f7269736564000000000000000000000000000000000000604482015260640161086a565b6040517fa4db003f00000000000000000000000000000000000000000000000000000000815260009073115f249bdcc5de16666b56e1b58afdbd6889e6989063a4db003f906117a09087908790879060040161370f565b602060405180830381865af41580156117bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e19190613729565b90506117ec816120ab565b156117fa576117fa8161226f565b6118048582612576565b6000818152600d60209081526040808320879055600a909152902061182a838583613790565b506008805460008381526007602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055925490519116815282917f8351f08b866373e36a5512f940b7609da3d55dfef07a9002049549d40c23a146910160405180910390a25050505050565b606085888118851883146119055760405162461bcd60e51b815260206004820152601b60248201527f6172726179206c656e677468732061726520646966666572656e740000000000604482015260640161086a565b60008167ffffffffffffffff811115611920576119206130b8565b60405190808252806020026020018201604052801561198357816020015b6119706040518060a0016040528060008152602001600081526020016060815260200160008152602001600081525090565b81526020019060019003908161193e5790505b5090508167ffffffffffffffff81111561199f5761199f6130b8565b604051908082528060200260200182016040528015611a0257816020015b6119ef6040518060a0016040528060008152602001600081526020016060815260200160008152602001600081525090565b8152602001906001900390816119bd5790505b50905060005b82811015611aba57611a958c8c83818110611a2557611a2561388d565b9050602002016020810190611a3a919061305f565b8b8b84818110611a4c57611a4c61388d565b905060200201358a8a85818110611a6557611a6561388d565b9050602002810190611a7791906138bc565b8a8a87818110611a8957611a8961388d565b905060200201356126d0565b828281518110611aa757611aa761388d565b6020908102919091010152600101611a08565b509a9950505050505050505050565b611ad1612322565b6001600160a01b038116611b4d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161086a565b611b568161237c565b50565b6040517f430c20810000000000000000000000000000000000000000000000000000000081523360048201526024810183905282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063430c208190604401602060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c039190613629565b611c4f5760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420617574686f7269736564000000000000000000000000000000000000604482015260640161086a565b6001600160a01b038216611ca55760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742073657420746f207a65726f2061646472657373000000000000604482015260640161086a565b6000838152600c602052604080822090517f6352211e000000000000000000000000000000000000000000000000000000008152600481018690528492907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5891906134bc565b6001600160a01b039081168252602080830193909352604091820160002080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169482169490941790935551918416825284917f33a4c2d58716fff2a09d132f60be73bcaefd65302212a57e798693dd510f729091016109f6565b6040517febe0db6e000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ebe0db6e90602401602060405180830381865afa158015611e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b91906134bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611f0c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061071b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461071b565b6000818152600260205260409020546001600160a01b0316611b565760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161086a565b6000818152600260205260408120546001600160a01b03168061071b5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161086a565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061207282611fc0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03161561219257600e546040517fc407d6c70000000000000000000000000000000000000000000000000000000081526004810184905260009182916001600160a01b039091169063c407d6c790602401606060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190613660565b5069ffffffffffffffffffff169150915042818369ffffffffffffffffffff1661217d91906136b8565b6bffffffffffffffffffffffff161115925050505b919050565b6121a1338261289b565b6122135760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f766564000000000000000000000000000000000000606482015260840161086a565b61092983838361293e565b61092983838360405180602001604052806000815250611282565b6000610c33838361289b565b6000818152600260205260408120546001600160a01b0316151561071b565b600061071b82611fc0565b600061227a82611fc0565b9050612287600083612025565b6001600160a01b03811660009081526003602052604081208054600192906122b0908490613921565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6006546001600160a01b031633146110945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086a565b600680546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036124475760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161086a565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6124dc338361289b565b61254e5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f766564000000000000000000000000000000000000606482015260840161086a565b6112e484848484612b23565b600061256583612bac565b8015610c335750610c338383612c05565b6001600160a01b0382166125cc5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086a565b6000818152600260205260409020546001600160a01b0316156126315760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161086a565b6001600160a01b038216600090815260036020526040812080546001929061265a908490613934565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6127026040518060a0016040528060008152602001600081526020016060815260200160008152602001600081525090565b84600061270e82611dd4565b90506000816001600160a01b031663a4ebb10b8a858a8a8a60006040518763ffffffff1660e01b815260040161274996959493929190613947565b602060405180830381865afa158015612766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278a9190613729565b6000848152600b602052604080822054815160a08101928390527fa4db003f000000000000000000000000000000000000000000000000000000009092529293508073115f249bdcc5de16666b56e1b58afdbd6889e69863a4db003f6127f5898e8e60a4870161370f565b602060405180830381865af4158015612812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128369190613729565b60001c81526020018b81526020018a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060208101949094526040909301919091525098975050505050505050565b6000818152600260205260408120546001600160a01b0316156129365760006128c383610c5c565b9050806001600160a01b0316846001600160a01b0316148061290a57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061292e5750836001600160a01b0316612923846107b3565b6001600160a01b0316145b91505061071b565b50600061071b565b826001600160a01b031661295182611fc0565b6001600160a01b0316146129cd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161086a565b6001600160a01b038216612a485760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161086a565b612a53600082612025565b6001600160a01b0383166000908152600360205260408120805460019290612a7c908490613921565b90915550506001600160a01b0382166000908152600360205260408120805460019290612aaa908490613934565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612b2e84848461293e565b612b3a84848484612cd4565b6112e45760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161086a565b6000612bd8827f01ffc9a700000000000000000000000000000000000000000000000000000000612c05565b801561071b5750610c55827fffffffff000000000000000000000000000000000000000000000000000000005b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612cbd575060208210155b8015612cc95750600081115b979650505050505050565b60006001600160a01b0384163b15612e6a576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290612d3190339089908890889060040161398a565b6020604051808303816000875af1925050508015612d6c575060408051601f3d908101601f19168201909252612d69918101906139c6565b60015b612e1f573d808015612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b508051600003612e175760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161086a565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050612e6e565b5060015b949350505050565b508054612e8290613469565b6000825580601f10612e92575050565b601f016020900490600052602060002090810190611b5691905b80821115612ec05760008155600101612eac565b5090565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611b5657600080fd5b600060208284031215612f0457600080fd5b8135610c3381612ec4565b60005b83811015612f2a578181015183820152602001612f12565b50506000910152565b60008151808452612f4b816020860160208601612f0f565b601f01601f19169290920160200192915050565b602081526000610c336020830184612f33565b600060208284031215612f8457600080fd5b5035919050565b6001600160a01b0381168114611b5657600080fd5b60008060408385031215612fb357600080fd5b8235612fbe81612f8b565b946020939093013593505050565b60008060408385031215612fdf57600080fd5b823591506020830135612ff181612f8b565b809150509250929050565b60008060006060848603121561301157600080fd5b833561301c81612f8b565b9250602084013561302c81612f8b565b929592945050506040919091013590565b6000806040838503121561305057600080fd5b50508035926020909101359150565b60006020828403121561307157600080fd5b8135610c3381612f8b565b8015158114611b5657600080fd5b6000806040838503121561309d57600080fd5b82356130a881612f8b565b91506020830135612ff18161307c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613110576131106130b8565b604052919050565b600067ffffffffffffffff821115613132576131326130b8565b50601f01601f191660200190565b6000806000806080858703121561315657600080fd5b843561316181612f8b565b9350602085013561317181612f8b565b925060408501359150606085013567ffffffffffffffff81111561319457600080fd5b8501601f810187136131a557600080fd5b80356131b86131b382613118565b6130e7565b8181528860208385010111156131cd57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561320257600080fd5b823561320d81612f8b565b91506020830135612ff181612f8b565b6000806000806060858703121561323357600080fd5b843561323e81612f8b565b935060208501359250604085013567ffffffffffffffff8082111561326257600080fd5b818701915087601f83011261327657600080fd5b81358181111561328557600080fd5b88602082850101111561329757600080fd5b95989497505060200194505050565b60008083601f8401126132b857600080fd5b50813567ffffffffffffffff8111156132d057600080fd5b6020830191508360208260051b85010111156132eb57600080fd5b9250929050565b6000806000806000806000806080898b03121561330e57600080fd5b883567ffffffffffffffff8082111561332657600080fd5b6133328c838d016132a6565b909a50985060208b013591508082111561334b57600080fd5b6133578c838d016132a6565b909850965060408b013591508082111561337057600080fd5b61337c8c838d016132a6565b909650945060608b013591508082111561339557600080fd5b506133a28b828c016132a6565b999c989b5096995094979396929594505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561345b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815160a081518552888201518986015287820151818987015261343182870182612f33565b606084810151908801526080938401519390960192909252505093860193908601906001016133dd565b509098975050505050505050565b600181811c9082168061347d57607f821691505b6020821081036134b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156134ce57600080fd5b8151610c3381612f8b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761071b5761071b6134d9565b600082613555577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561356c57600080fd5b815167ffffffffffffffff81111561358357600080fd5b8201601f8101841361359457600080fd5b80516135a26131b382613118565b8181528560208385010111156135b757600080fd5b6135c8826020830160208601612f0f565b95945050505050565b600083516135e3818460208801612f0f565b7f2e00000000000000000000000000000000000000000000000000000000000000908301908152835161361d816001840160208801612f0f565b01600101949350505050565b60006020828403121561363b57600080fd5b8151610c338161307c565b805169ffffffffffffffffffff8116811461219257600080fd5b60008060006060848603121561367557600080fd5b61367e84613646565b925061368c60208501613646565b915060408401516bffffffffffffffffffffffff811681146136ad57600080fd5b809150509250925092565b6bffffffffffffffffffffffff8181168382160190808211156136dd576136dd6134d9565b5092915050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b8381526040602082015260006135c86040830184866136e4565b60006020828403121561373b57600080fd5b5051919050565b601f82111561092957600081815260208120601f850160051c810160208610156137695750805b601f850160051c820191505b8181101561378857828155600101613775565b505050505050565b67ffffffffffffffff8311156137a8576137a86130b8565b6137bc836137b68354613469565b83613742565b6000601f84116001811461380e57600085156137d85750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613886565b600083815260209020601f19861690835b8281101561383f578685013582556020948501946001909201910161381f565b508682101561387a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138f157600080fd5b83018035915067ffffffffffffffff82111561390c57600080fd5b6020019150368190038213156132eb57600080fd5b8181038181111561071b5761071b6134d9565b8082018082111561071b5761071b6134d9565b6001600160a01b038716815285602082015260a06040820152600061397060a0830186886136e4565b606083019490945250901515608090910152949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526139bc6080830184612f33565b9695505050505050565b6000602082840312156139d857600080fd5b8151610c3381612ec456fea2646970667358221220d29f52c639a054fd3be457456e61ec17e8813d680bca29b8fd671caa335580e264736f6c63430008110033000000000000000000000000e6027c24e762e9dc41edf1b31f97cb6b06d68ff4