0x6080604052600436106103015760003560e01c80635bbb4e271161018f578063c04b8d59116100e1578063f28c04981161008a578063f693f8cf11610064578063f693f8cf14610830578063fa465a8114610843578063fdf269e11461086357600080fd5b8063f28c0498146107ea578063f2fde38b146107fd578063f65417ef1461081d57600080fd5b8063db3e2198116100bb578063db3e2198146107b1578063db996019146107c4578063f10020e2146107d757600080fd5b8063c04b8d591461076b578063d06ca61f1461077e578063d99a15391461079e57600080fd5b806395c89bc9116101435780639e7343fd1161011d5780639e7343fd146106e2578063aa59cb3614610702578063ad3cb1cc1461071557600080fd5b806395c89bc914610682578063979fb5ae146106a25780639b89d49b146106c257600080fd5b806385f8c2591161017457806385f8c259146105f85780638803dbee146106185780638da5cb5b1461063857600080fd5b80635bbb4e27146105d0578063715018a6146105e357600080fd5b8063414bf389116102535780634f1ef286116101fc57806355da7dca116101d657806355da7dca1461058a5780635624e6051461059d5780635aec26c9146105b057600080fd5b80634f1ef2861461054e57806352d1902d1461056157806354fd4d501461057657600080fd5b8063481099351161022d57806348109935146104ec578063485cc9551461050c578063495fe4741461052e57600080fd5b8063414bf38914610467578063418766471461047a57806347b503491461049a57600080fd5b8063217fce28116102b557806338ed17391161028f57806338ed1739146104215780633cabe617146104415780633cb99b281461045457600080fd5b8063217fce28146103ce5780632855038d146103ee578063325639751461040157600080fd5b806316086906116102e657806316086906146103605780631848ed8c146103805780631f00ca74146103ae57600080fd5b8063054d50d41461030d57806306fd4ac51461034057600080fd5b3661030857005b600080fd5b34801561031957600080fd5b5061032d610328366004617890565b610883565b6040519081526020015b60405180910390f35b61035361034e366004617935565b6108cf565b604051610337919061799c565b34801561036c57600080fd5b5061035361037b3660046179e0565b610ba3565b61039361038e366004617a65565b610e9c565b60408051938452602084019290925290820152606001610337565b3480156103ba57600080fd5b506103536103c9366004617b88565b6111c8565b3480156103da57600080fd5b506103536103e93660046179e0565b611317565b6103536103fc366004617c33565b6114a7565b34801561040d57600080fd5b5061035361041c366004617c33565b61153e565b34801561042d57600080fd5b5061035361043c3660046179e0565b6115c1565b61035361044f366004617935565b611775565b610353610462366004617935565b611905565b61032d610475366004617c92565b611ab4565b34801561048657600080fd5b506103536104953660046179e0565b611c98565b3480156104a657600080fd5b506001546104c79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610337565b3480156104f857600080fd5b506103536105073660046179e0565b611df8565b34801561051857600080fd5b5061052c610527366004617caf565b611f9b565b005b34801561053a57600080fd5b5061032d610549366004617890565b6120d1565b61052c61055c366004617d76565b612114565b34801561056d57600080fd5b5061032d612133565b34801561058257600080fd5b50603261032d565b61032d610598366004617e18565b612162565b61032d6105ab366004617e5f565b6121e7565b3480156105bc57600080fd5b5061052c6105cb366004617e7b565b612238565b61052c6105de366004617efb565b6123ff565b3480156105ef57600080fd5b5061052c6124b1565b34801561060457600080fd5b5061032d610613366004617890565b6124c5565b34801561062457600080fd5b506103536106333660046179e0565b6124f3565b34801561064457600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff166104c7565b34801561068e57600080fd5b5061035361069d3660046179e0565b612679565b3480156106ae57600080fd5b506103536106bd366004617c33565b6127ff565b3480156106ce57600080fd5b506103536106dd3660046179e0565b612c0d565b3480156106ee57600080fd5b506103536106fd366004617c33565b612d93565b610353610710366004617c33565b612e55565b34801561072157600080fd5b5061075e6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516103379190617f95565b61032d610779366004617fa8565b612ea6565b34801561078a57600080fd5b50610353610799366004617c33565b613023565b61052c6107ac366004617efb565b613429565b61032d6107bf366004617c92565b6135ad565b61032d6107d2366004617e5f565b6137b8565b6103936107e5366004617a65565b61382d565b61032d6107f836600461804c565b614433565b34801561080957600080fd5b5061052c610818366004618087565b61458b565b61032d61082b3660046180a4565b6145ef565b61035361083e366004617935565b614646565b34801561084f57600080fd5b5061035361085e366004617b88565b6147a9565b34801561086f57600080fd5b5061032d61087e366004617890565b6148f1565b6000610891846126f761810e565b61089d8461271061810e565b6108a79190618125565b6108b1838661810e565b6108bd906126f761810e565b6108c79190618138565b949350505050565b606042821015610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61094b348686613023565b905085816001835161095d9190618173565b8151811061096d5761096d618186565b602002602001015110156109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f464f414d00000000000000000000000000000000000000000000000000000000604082015260600190565b610a5a610a3a868660008181106109f8576109f8618186565b9050602002016020810190610a0d9190618087565b87876001818110610a2057610a20618186565b9050602002016020810190610a359190618087565b61492b565b82600081518110610a4d57610a4d618186565b60200260200101516123ff565b610a9981868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614a52915050565b73ffffffffffffffffffffffffffffffffffffffff8316337fd894b0a16e17c64506874f2532d1f3c95d243430af62889188956db96a2ba6d38787600081610ae357610ae3618186565b9050602002016020810190610af89190618087565b8888610b05600182618173565b818110610b1457610b14618186565b9050602002016020810190610b299190618087565b348660018851610b399190618173565b81518110610b4957610b49618186565b6020026020010151604051610b92949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a395945050505050565b606042821015610c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b610c1a8786866127ff565b9050858160018351610c2c9190618173565b81518110610c3c57610c3c618186565b60200260200101511015610cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f45414f4d00000000000000000000000000000000000000000000000000000000604082015260600190565b610d5285856000818110610cc457610cc4618186565b9050602002016020810190610cd99190618087565b33610d3288886000818110610cf057610cf0618186565b9050602002016020810190610d059190618087565b89896001818110610d1857610d18618186565b9050602002016020810190610d2d9190618087565b614c0f565b84600081518110610d4557610d45618186565b6020026020010151614cfb565b610d9181868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614e6d915050565b73ffffffffffffffffffffffffffffffffffffffff8316337fd894b0a16e17c64506874f2532d1f3c95d243430af62889188956db96a2ba6d38787600081610ddb57610ddb618186565b9050602002016020810190610df09190618087565b8888610dfd600182618173565b818110610e0c57610e0c618186565b9050602002016020810190610e219190618087565b8b8660018851610e319190618173565b81518110610e4157610e41618186565b6020026020010151604051610e8a949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a39695505050505050565b6040517f3371bfff000000000000000000000000000000000000000000000000000000008152336004820181905260009182918291734cce5db75a359b76d36084ebbe2cb4e3fa1e847890633371bfff90602401602060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3191906181b5565b15610f9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4e49444c00000000000000000000000000000000000000000000000000000000604082015260600190565b4285604001351015611008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b60005b61101860a08701876181d7565b905081101561105a5761102e60a08701876181d7565b8281811061103e5761103e618186565b90506020020135856110509190618125565b945060010161100b565b5061107461106e6080870160608801618087565b85615024565b61107d85615108565b5093505060c08501358310156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f45414f4d00000000000000000000000000000000000000000000000000000000604082015260600190565b61111a61110460a0870160808801618087565b6111146040880160208901618087565b8561523b565b61112a6040860160208701618087565b73ffffffffffffffffffffffffffffffffffffffff16337f10682b2c1b1f1625c5ce5d44ffde459732c1f25facbd9ee714e5b93083efda446111726080890160608a01618087565b61118260a08a0160808b01618087565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015281018890526060810187905260800160405180910390a3509193909250565b6060815167ffffffffffffffff8111156111e4576111e4617a9a565b60405190808252806020026020018201604052801561120d578160200160208202803683370190505b509050828160018351038151811061122757611227618186565b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156113105760008061129f85600185038151811061127857611278618186565b602002602001015186858151811061129257611292618186565b6020026020010151615435565b915091506112c78484815181106112b8576112b8618186565b602002602001015183836124c5565b8460018503815181106112dc576112dc618186565b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611257565b5092915050565b606042821015611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b61138e8786866127ff565b90508581600183516113a09190618173565b815181106113b0576113b0618186565b60200260200101511015611422576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f464f414d00000000000000000000000000000000000000000000000000000000604082015260600190565b61143885856000818110610cc457610cc4618186565b61147781868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614e6d915050565b610d9183826001845161148a9190618173565b8151811061149a5761149a618186565b6020026020010151613429565b60606114b4848484613023565b90506114f8838360008181106114cc576114cc618186565b90506020020160208101906114e19190618087565b30610d32868660008181106109f8576109f8618186565b61153781848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614a52915050565b9392505050565b606061157d848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111c892505050565b90506114f88383600081811061159557611595618186565b90506020020160208101906115aa9190618087565b33610d32868660008181106109f8576109f8618186565b60604282101561162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b611638878686613023565b905085816001835161164a9190618173565b8151811061165a5761165a618186565b602002602001015110156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f45414f4d00000000000000000000000000000000000000000000000000000000604082015260600190565b611736858560008181106116e2576116e2618186565b90506020020160208101906116f79190618087565b33610d328888600081811061170e5761170e618186565b90506020020160208101906117239190618087565b89896001818110610a2057610a20618186565b610d9181868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614a52915050565b6060428210156117e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b61181e868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111c892505050565b9050348160008151811061183457611834618186565b602002602001015111156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45494100000000000000000000000000000000000000000000000000000000006044820152606401610937565b6118bd610a3a868660008181106109f8576109f8618186565b6118fc81868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614a52915050565b95945050505050565b606042821015611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b6119ae868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506147a992505050565b905034816000815181106119c4576119c4618186565b60200260200101511115611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45494100000000000000000000000000000000000000000000000000000000006044820152606401610937565b611a75610a3a86866000818110611a4d57611a4d618186565b9050602002016020810190611a629190618087565b87876001818110610d1857610d18618186565b6118fc81868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614e6d915050565b60004282608001351015611b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b611c2160a0830135611b3c6080850160608601618087565b611b4d610100860160e08701618087565b6040805180820190915280611b656020890189618087565b611b7560608a0160408b01618252565b611b8560408b0160208c01618087565b604051606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602083015260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166034820152921b166037820152604b0160405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250615516565b90508160c00135811015611c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f45414f4d00000000000000000000000000000000000000000000000000000000604082015260600190565b919050565b606042821015611d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b611d0f878686613023565b9050858160018351611d219190618173565b81518110611d3157611d31618186565b60200260200101511015611da3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f464f414d00000000000000000000000000000000000000000000000000000000604082015260600190565b611db9858560008181106116e2576116e2618186565b61147781868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614a52915050565b606042821015611e64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b611ea1878686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506147a992505050565b90508581600081518110611eb757611eb7618186565b60200260200101511115611f29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4541494d00000000000000000000000000000000000000000000000000000000604082015260600190565b611f3f85856000818110610cc457610cc4618186565b611f7e81868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614e6d915050565b611f9183826001845161148a9190618173565b9695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546032919068010000000000000000900460ff1680611fea5750805467ffffffffffffffff808416911610155b15612021576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001667ffffffffffffffff831617680100000000000000001781556120688484615680565b80547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b60006120dd8483618173565b6120e9906103e561810e565b6120f3858561810e565b6120ff906103e861810e565b6121099190618138565b6108c7906001618125565b61211c6156a2565b612125826157a6565b61212f82826157ae565b5050565b600061213d6158e7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000305b6121ad836000015130600060405180604001604052806121898960200151615956565b81526020018673ffffffffffffffffffffffffffffffffffffffff16815250615516565b835260208301516121bd9061597c565b156121dc573090506121d283602001516159b6565b6020840152612166565b825191505b50919050565b6000612232826000013530600060405180604001604052808760200160208101906122129190618087565b61222260808a0160608b01618252565b611b8560608b0160408c01618087565b92915050565b60008413806122475750600083135b61225057600080fd5b600061225e8284018461826d565b9050600080600061227284600001516159df565b925092509250612283838383615a1b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4e56434200000000000000000000000000000000000000000000000000000000604082015260600190565b60008060008a13612359578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16108961238a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b9150915081156123a9576123a48587602001513384614cfb565b6123f3565b85516123b49061597c565b156123d95785516123c4906159b6565b86526123d38133600089615b3e565b506123f3565b806000819055508394506123f38587602001513384614cfb565b50505050505050505050565b737d72b22a74a216af4a002a1095c8c707d6ec1c5f73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245b57600080fd5b505af115801561246f573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff83163014905061212f5761212f737d72b22a74a216af4a002a1095c8c707d6ec1c5f8383615d46565b6124b9615dc7565b6124c36000615e55565b565b60006124d18483618173565b6124dd906126f761810e565b6124e7858561810e565b6120ff9061271061810e565b60604282101561255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b61259c878686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111c892505050565b905085816000815181106125b2576125b2618186565b60200260200101511115612624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4549414d00000000000000000000000000000000000000000000000000000000604082015260600190565b61263a858560008181106116e2576116e2618186565b611f9181868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614a52915050565b6060428210156126e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b612722878686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111c892505050565b9050858160008151811061273857612738618186565b602002602001015111156127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4541494d00000000000000000000000000000000000000000000000000000000604082015260600190565b6127c0858560008181106116e2576116e2618186565b611f7e81868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614a52915050565b60608167ffffffffffffffff81111561281a5761281a617a9a565b604051908082528060200260200182016040528015612843578160200160208202803683370190505b50905083602082015260005b61285a600184618173565b811015612c0557602081810285013590600183010285013573ffffffffffffffffffffffffffffffffffffffff8082169083161015612a495760408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527f454a49fa38f3ef5ab3c70f52899a17410226e7b40000000000000000000000006069830152607d8201527fddb31e73777ad2f4a8e79e7f62da232c95f8268402e366c88edda5360dfe5522609d820152600090819060bd016040516020818303038152906040528051906020012060001c73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156129ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f2919061830f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150602085026020870101516103e581026103e88402016103e5838302020460206001880102602089010152505050612bfb565b60408051606083811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529186901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527f454a49fa38f3ef5ab3c70f52899a17410226e7b40000000000000000000000006069830152607d8201527fddb31e73777ad2f4a8e79e7f62da232c95f8268402e366c88edda5360dfe5522609d820152600090819060bd016040516020818303038152906040528051906020012060001c73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba8919061830f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150602085026020870101516103e581026103e88302016103e58483020204602060018801026020890101525050505b505060010161284f565b509392505050565b606042821015612c79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b612cb6878686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506147a992505050565b90508581600081518110612ccc57612ccc618186565b60200260200101511115612d3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4549414d00000000000000000000000000000000000000000000000000000000604082015260600190565b612d5485856000818110610cc457610cc4618186565b611f9181868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614e6d915050565b6060612dd2848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506147a992505050565b9050612e1683836000818110612dea57612dea618186565b9050602002016020810190612dff9190618087565b33610d3286866000818110611a4d57611a4d618186565b61153781848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614e6d915050565b6060612e628484846127ff565b9050612e1683836000818110612e7a57612e7a618186565b9050602002016020810190612e8f9190618087565b30610d3286866000818110611a4d57611a4d618186565b60004282604001511015612f16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b335b6000612f27846000015161597c565b9050612f80846060015182612f40578560200151612f42565b305b60006040518060400160405280612f5c8a60000151615956565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250615516565b60608501528015612fa0578351309250612f99906159b6565b8452612fad565b8360600151925050612fb3565b50612f18565b82608001518210156121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f464f414d00000000000000000000000000000000000000000000000000000000604082015260600190565b60608167ffffffffffffffff81111561303e5761303e617a9a565b604051908082528060200260200182016040528015613067578160200160208202803683370190505b50905083602082015260005b61307e600184618173565b811015612c0557602081810285013590600183010285013573ffffffffffffffffffffffffffffffffffffffff808216908316101561326d5760408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527fe1f36c7b919c9f893e2cd30b471434aa2494664a0000000000000000000000006069830152607d8201527f537d8d504e4ada480625c407dbcb60ccf75ce650821f0c58561d19e3be6f64ce609d820152600090819060bd016040516020818303038152906040528051906020012060001c73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156131f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613216919061830f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150602085026020870101516126f781026127108402016126f783830202046020600188010260208901015250505061341f565b60408051606083811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529186901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527fe1f36c7b919c9f893e2cd30b471434aa2494664a0000000000000000000000006069830152607d8201527f537d8d504e4ada480625c407dbcb60ccf75ce650821f0c58561d19e3be6f64ce609d820152600090819060bd016040516020818303038152906040528051906020012060001c73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156133a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133cc919061830f565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150602085026020870101516126f781026127108302016126f78483020204602060018801026020890101525050505b5050600101613073565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101829052737d72b22a74a216af4a002a1095c8c707d6ec1c5f90632e1a7d4d90602401600060405180830381600087803b15801561348f57600080fd5b505af11580156134a3573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8216301461212f576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516134fb919061835f565b60006040518083038185875af1925050503d8060008114613538576040519150601f19603f3d011682016040523d82523d6000602084013e61353d565b606091505b50509050806135a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f46535700000000000000000000000000000000000000000000000000000000006044820152606401610937565b505050565b6000428260800135101561361d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b61371d60a08301356136356080850160608601618087565b613646610100860160e08701618087565b60405180604001604052808760200160208101906136649190618087565b61367460608a0160408b01618252565b61368160208b018b618087565b604051606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602083015260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166034820152921b166037820152604b0160405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250615b3e565b90508160c0013581111561378f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4541494d00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b6000613803826000013530600060405180604001604052808760400160208101906137e39190618087565b6137f360808a0160608b01618252565b61368160408b0160208c01618087565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005592915050565b6040517f3371bfff000000000000000000000000000000000000000000000000000000008152336004820181905260009182918291734cce5db75a359b76d36084ebbe2cb4e3fa1e847890633371bfff90602401602060405180830381865afa15801561389e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c291906181b5565b1561392b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4e49444c00000000000000000000000000000000000000000000000000000000604082015260600190565b4285604001351015613999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b6001546040517f10b9ed1f00000000000000000000000000000000000000000000000000000000815260609173ffffffffffffffffffffffffffffffffffffffff16906310b9ed1f906139f0908990600401618476565b6000604051808303816000875af1158015613a0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613a559190810190618710565b50925060009150505b8151811015613ac757818181518110613a7957613a79618186565b602002602001015186613a8c9190618125565b9550613a9b60a08801886181d7565b82818110613aab57613aab618186565b9050602002013585613abd9190618125565b9450600101613a5e565b50613ae1613adb6080880160608901618087565b86615024565b6000613aed87806181d7565b9050905060008167ffffffffffffffff811115613b0c57613b0c617a9a565b604051908082528060200260200182016040528015613b3f57816020015b6060815260200190600190039081613b2a5790505b50905060005b8281101561420057366000613b5a8b806181d7565b84818110613b6a57613b6a618186565b9050602002810190613b7c91906181d7565b909250905060008167ffffffffffffffff811115613b9c57613b9c617a9a565b604051908082528060200260200182016040528015613bcf57816020015b6060815260200190600190039081613bba5790505b50905060005b828110156141d357366000858584818110613bf257613bf2618186565b9050602002810190613c049190618768565b90925090506000613c1860048284866187cd565b613c21916187f7565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f325639750000000000000000000000000000000000000000000000000000000003613d61576000613c7b83600481876187cd565b810190613c889190617b88565b915050600085600003613cb2578c8a81518110613ca757613ca7618186565b602002602001015190505b8082604051602401613cc592919061883f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2855038d000000000000000000000000000000000000000000000000000000001790528751889088908110613d4f57613d4f618186565b602002602001018190525050506141c5565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f9e7343fd0000000000000000000000000000000000000000000000000000000003613e8d576000613db983600481876187cd565b810190613dc69190617b88565b915050600085600003613df0578c8a81518110613de557613de5618186565b602002602001015190505b8082604051602401613e0392919061883f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167faa59cb36000000000000000000000000000000000000000000000000000000001790528751889088908110613d4f57613d4f618186565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb996019000000000000000000000000000000000000000000000000000000000361401b576000613ee583600481876187cd565b810190613ef29190618922565b9050600085600003613f1b578c8a81518110613f1057613f10618186565b602002602001015190505b604080516080810182528281528382015173ffffffffffffffffffffffffffffffffffffffff9081166020808401918252860151821683850190815260608088015162ffffff90811691909501908152945160248101879052915183166044830152519091166064820152915116608482015260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5624e605000000000000000000000000000000000000000000000000000000001790528751889088908110613d4f57613d4f618186565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff65417ef000000000000000000000000000000000000000000000000000000000361416357600061407383600481876187cd565b8101906140809190617e18565b90506000856000036140a9578c8a8151811061409e5761409e618186565b602002602001015190505b60405180604001604052808281526020016140c78460200151615eeb565b90526040516140d9919060240161893e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f55da7dca000000000000000000000000000000000000000000000000000000001790528751889088908110613d4f57613d4f618186565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e535900000000000000000000000000000000000000000000000000000000006044820152606401610937565b836001019350505050613bd5565b50808585815181106141e7576141e7618186565b6020026020010181905250836001019350505050613b45565b503073ffffffffffffffffffffffffffffffffffffffff16631848ed8c6040518060e001604052808481526020018b60200160208101906142419190618087565b73ffffffffffffffffffffffffffffffffffffffff1681526040808d013560208301520161427560808d0160608e01618087565b73ffffffffffffffffffffffffffffffffffffffff1681526020016142a060a08d0160808e01618087565b73ffffffffffffffffffffffffffffffffffffffff168152602081018790526040016142cd60018b618173565b8152506040518263ffffffff1660e01b81526004016142ec919061899f565b6060604051808303816000875af115801561430b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432f9190618b51565b506143439150506040890160208a01618087565b73ffffffffffffffffffffffffffffffffffffffff16337fd894b0a16e17c64506874f2532d1f3c95d243430af62889188956db96a2ba6d361438b60808c0160608d01618087565b61439b60a08d0160808e01618087565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015281018b9052606081018a905260800160405180910390a347156144285760405133904790600081818185875af1925050503d806000811461441f576040519150601f19603f3d011682016040523d82523d6000602084013e614424565b606091505b5050505b505050509193909250565b600042826040013510156144a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b61451660608301356144bb6040850160208601618087565b60408051808201909152600090806144d38880618768565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152615b3e565b5050600054608082013581111561378f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4541494d00000000000000000000000000000000000000000000000000000000604082015260600190565b614593615dc7565b73ffffffffffffffffffffffffffffffffffffffff81166145e3576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610937565b6145ec81615e55565b50565b6000614617826000013530600060405180604001604052808780602001906144d39190618768565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909155919050565b6060428210156146b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f45444c00000000000000000000000000000000000000000000000000000000006044820152606401610937565b6146bd3486866127ff565b90508581600183516146cf9190618173565b815181106146df576146df618186565b60200260200101511015614751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f464f414d00000000000000000000000000000000000000000000000000000000604082015260600190565b61476a610a3a86866000818110611a4d57611a4d618186565b610a9981868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250614e6d915050565b6060815167ffffffffffffffff8111156147c5576147c5617a9a565b6040519080825280602002602001820160405280156147ee578160200160208202803683370190505b509050828160018351038151811061480857614808618186565b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156113105760008061488085600185038151811061485957614859618186565b602002602001015186858151811061487357614873618186565b6020026020010151616078565b915091506148a884848151811061489957614899618186565b602002602001015183836120d1565b8460018503815181106148bd576148bd618186565b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614838565b60006148ff846103e561810e565b61490b846103e861810e565b6149159190618125565b61491f838661810e565b6108bd906103e561810e565b600080600061493a858561609a565b60408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527fe1f36c7b919c9f893e2cd30b471434aa2494664a0000000000000000000000006069830152607d8201527f537d8d504e4ada480625c407dbcb60ccf75ce650821f0c58561d19e3be6f64ce609d820152919350915060bd015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012095945050505050565b60005b6001835103811015614c0957600080848381518110614a7657614a76618186565b6020026020010151858460010181518110614a9357614a93618186565b6020026020010151915091506000614aab838361609a565b5090506000878560010181518110614ac557614ac5618186565b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614614b0d57826000614b11565b6000835b91509150600060028a51038810614b285788614b4e565b614b4e868b8a60020181518110614b4157614b41618186565b602002602001015161492b565b9050614b5a878761492b565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614ba4576020820181803683370190505b506040518563ffffffff1660e01b8152600401614bc49493929190618b7f565b600060405180830381600087803b158015614bde57600080fd5b505af1158015614bf2573d6000803e3d6000fd5b505060019099019850614a55975050505050505050565b50505050565b6000806000614c1e858561609a565b60408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527f454a49fa38f3ef5ab3c70f52899a17410226e7b40000000000000000000000006069830152607d8201527fddb31e73777ad2f4a8e79e7f62da232c95f8268402e366c88edda5360dfe5522609d820152919350915060bd01614a13565b73ffffffffffffffffffffffffffffffffffffffff8416737d72b22a74a216af4a002a1095c8c707d6ec1c5f148015614d345750804710155b15614df057737d72b22a74a216af4a002a1095c8c707d6ec1c5f73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015614d9557600080fd5b505af1158015614da9573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff831630149050614deb57614deb737d72b22a74a216af4a002a1095c8c707d6ec1c5f8383615d46565b614c09565b3073ffffffffffffffffffffffffffffffffffffffff841603614e4b5773ffffffffffffffffffffffffffffffffffffffff82163014614deb57614deb73ffffffffffffffffffffffffffffffffffffffff85168383615d46565b614c0973ffffffffffffffffffffffffffffffffffffffff85168484846160e5565b60005b6001835103811015614c0957600080848381518110614e9157614e91618186565b6020026020010151858460010181518110614eae57614eae618186565b6020026020010151915091506000614ec6838361609a565b5090506000878560010181518110614ee057614ee0618186565b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614614f2857826000614f2c565b6000835b91509150600060028a51038810614f435788614f69565b614f69868b8a60020181518110614f5c57614f5c618186565b6020026020010151614c0f565b9050614f758787614c0f565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614fbf576020820181803683370190505b506040518563ffffffff1660e01b8152600401614fdf9493929190618b7f565b600060405180830381600087803b158015614ff957600080fd5b505af115801561500d573d6000803e3d6000fd5b505060019099019850614e70975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216737d72b22a74a216af4a002a1095c8c707d6ec1c5f14801561505d5750804710155b156150db57737d72b22a74a216af4a002a1095c8c707d6ec1c5f73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156150be57600080fd5b505af11580156150d2573d6000803e3d6000fd5b50505050505050565b3033036150e6575050565b61212f73ffffffffffffffffffffffffffffffffffffffff83163330846160e5565b60008080805b61511885806181d7565b90508110156152335736600061512e87806181d7565b8481811061513e5761513e618186565b905060200281019061515091906181d7565b9092509050600080615184848461516d60808d0160608e01618087565b61517d60a08e0160808f01618087565b8c8c61612b565b909250905061519660a08a018a6181d7565b868181106151a6576151a6618186565b905060200201358214615217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4e56414900000000000000000000000000000000000000000000000000000000604082015260600190565b6152218188618125565b9650506001909301925061510e915050565b509193909250565b7fffffffffffffffffffffffff828d4dd58b5de950b5ffd5ef6a3738f82913e3a173ffffffffffffffffffffffffffffffffffffffff8416016153f7576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101829052737d72b22a74a216af4a002a1095c8c707d6ec1c5f90632e1a7d4d90602401600060405180830381600087803b1580156152de57600080fd5b505af11580156152f2573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff821630146135a8576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161534a919061835f565b60006040518083038185875af1925050503d8060008114615387576040519150601f19603f3d011682016040523d82523d6000602084013e61538c565b606091505b5050905080614c09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f46535700000000000000000000000000000000000000000000000000000000006044820152606401610937565b73ffffffffffffffffffffffffffffffffffffffff821630146135a8576135a873ffffffffffffffffffffffffffffffffffffffff84168383615d46565b600080600080600080615448888861609a565b90925090506154578282616de4565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156154a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154c5919061830f565b506dffffffffffffffffffffffffffff91821695501692505073ffffffffffffffffffffffffffffffffffffffff87811690821614615505578183615508565b82825b909890975095505050505050565b60008060008061552985600001516159df565b9194509250905073ffffffffffffffffffffffffffffffffffffffff8083169084161060008061555a868686615a1b565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b858e8d73ffffffffffffffffffffffffffffffffffffffff1660001461559c578d6155d5565b876155c5576155c0600173fffd8963efd1fc6a506488495d951d5263988d26618bba565b6155d5565b6155d56401000276a36001618be7565b8d6040516020016155e69190618c14565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401615615959493929190618c5c565b60408051808303816000875af1158015615633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156579190618cae565b91509150826156665781615668565b805b61567190618cd2565b9b9a5050505050505050505050565b615688616ef8565b615690616f5f565b61569982616f67565b61212f81616f6f565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ad4d9efbe36f8a4ae812e4b44c72cecad51c834516148061576f57507f000000000000000000000000ad4d9efbe36f8a4ae812e4b44c72cecad51c834573ffffffffffffffffffffffffffffffffffffffff166157567f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b156124c3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6145ec615dc7565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015615833575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261583091810190618d0a565b60015b615881576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610937565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146158dd576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610937565b6135a88383616fbe565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ad4d9efbe36f8a4ae812e4b44c72cecad51c834516146124c3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606122326000601461596a600382618125565b6159749190618125565b849190617021565b600061598a60036014618125565b6014615997600382618125565b6159a19190618125565b6159ab9190618125565b825110159050919050565b60606122326159c760036014618125565b6159d360036014618125565b84516159749190618173565b600080806159ed848261720e565b92506159fa846014617312565b9050615a12615a0b60036014618125565b859061720e565b91509193909250565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115615a55579192915b506040805173ffffffffffffffffffffffffffffffffffffffff948516602080830191909152939094168482015262ffffff91909116606080850191909152815180850390910181526080840182528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a08501527f8eff28b531b731814e4e4fffa0f7bd0fc50f370f00000000000000000000000060a185015260b58401527fca48321e8cb140e37a7d7ce66e055e7927429b4343c8fd9fb0dccadc72829bd560d5808501919091528151808503909101815260f59093019052815191012090565b600080600080615b5185600001516159df565b9194509250905073ffffffffffffffffffffffffffffffffffffffff80841690831610600080615b82858786615a1b565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b85615ba88f618cd2565b73ffffffffffffffffffffffffffffffffffffffff8e1615615bca578d615c03565b87615bf357615bee600173fffd8963efd1fc6a506488495d951d5263988d26618bba565b615c03565b615c036401000276a36001618be7565b8d604051602001615c149190618c14565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401615c43959493929190618c5c565b60408051808303816000875af1158015615c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c859190618cae565b91509150600083615c9f5781615c9a84618cd2565b615ca9565b82615ca983618cd2565b909850905073ffffffffffffffffffffffffffffffffffffffff8a16600003615d37578b8114615d37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4e414f5200000000000000000000000000000000000000000000000000000000604082015260600190565b50505050505050949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526135a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050617406565b33615e067f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146124c3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610937565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b805160609060006017615eff836003618125565b615f099190618138565b905060008267ffffffffffffffff811115615f2657615f26617a9a565b6040519080825280601f01601f191660200182016040528015615f50576020820181803683370190505b5090506000805b8381101561606d5760006014615f6d8488618173565b615f779190618173565b90508060208901015183602086010152601483615f949190618125565b9250615fa1600186618173565b82101561606457615fb3600382618173565b905060005b60038110156160555788615fcc8284618125565b81518110615fdc57615fdc618186565b01602001517fff00000000000000000000000000000000000000000000000000000000000000168561600e8387618125565b8151811061601e5761601e618186565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101615fb8565b50616061600384618125565b92505b50600101615f57565b509095945050505050565b60008060008060008061608b888861609a565b9092509050615457828261749c565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106160d75782846160da565b83835b909590945092505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052614c099186918216906323b872dd90608401615d80565b60008060005b87811015616dd8573660008a8a8481811061614e5761614e618186565b90506020028101906161609190618768565b9092509050600061617460048284866187cd565b61617d916187f7565b9050600060607f2855038d000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416148061621457507faa59cb36000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b156165e457856000036162975761622e84600481886187cd565b61623791618d23565b604051909850309061624c9087908790618d5f565b600060405180830381855af49150503d8060008114616287576040519150601f19603f3d011682016040523d82523d6000602084013e61628c565b606091505b509092509050616532565b6000806162a7866004818a6187cd565b8101906162b49190617b88565b915050806000815181106162ca576162ca618186565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529092506000915073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015616346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061636a9190618d0a565b90508d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361644e5730856163ab8e84618173565b6163b8896024818d6187cd565b6040516020016163cb9493929190618d6f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526164039161835f565b600060405180830381855af49150503d806000811461643e576040519150601f19603f3d011682016040523d82523d6000602084013e616443565b606091505b50909450925061652f565b8c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361648d5730856163ab8d84618173565b30858261649d896024818d6187cd565b6040516020016164b09493929190618d6f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526164e89161835f565b600060405180830381855af49150503d8060008114616523576040519150601f19603f3d011682016040523d82523d6000602084013e616528565b606091505b5090945092505b50505b8161659b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4656325300000000000000000000000000000000000000000000000000000000604082015260600190565b8c86036001016165df576000818060200190518101906165bb9190618db2565b9050806001825103815181106165d3576165d3618186565b60200260200101519750505b616dc7565b7fffffffff0000000000000000000000000000000000000000000000000000000083167f5624e60500000000000000000000000000000000000000000000000000000000036169e357856000036166ab5761664284602481886187cd565b61664b91618d23565b60405190985030906166609087908790618d5f565b600060405180830381855af49150503d806000811461669b576040519150601f19603f3d011682016040523d82523d6000602084013e6166a0565b606091505b509092509050616952565b6000806166bb866004818a6187cd565b8101906166c89190618922565b602001516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529092506000915073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561673d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906167619190618d0a565b90508d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361685357306167a560246000898b6187cd565b6167af8f85618173565b6167bc8a6044818e6187cd565b6040516020016167d0959493929190618de7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526168089161835f565b600060405180830381855af49150503d8060008114616843576040519150601f19603f3d011682016040523d82523d6000602084013e616848565b606091505b50909450925061694f565b8c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361689f573061689560246000898b6187cd565b6167af8e85618173565b306168ae60246000898b6187cd565b836168bc8a6044818e6187cd565b6040516020016168d0959493929190618de7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526169089161835f565b600060405180830381855af49150503d8060008114616943576040519150601f19603f3d011682016040523d82523d6000602084013e616948565b606091505b5090945092505b50505b816169bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4656335300000000000000000000000000000000000000000000000000000000604082015260600190565b8c86036001016165df576000818060200190518101906169db9190618d0a565b975050616dc7565b7fffffffff0000000000000000000000000000000000000000000000000000000083167f55da7dca00000000000000000000000000000000000000000000000000000000036141635785600003616aaa57616a4184602481886187cd565b616a4a91618d23565b6040519098503090616a5f9087908790618d5f565b600060405180830381855af49150503d8060008114616a9a576040519150601f19603f3d011682016040523d82523d6000602084013e616a9f565b606091505b509092509050616d5e565b600080616aba866004818a6187cd565b810190616ac79190617e18565b9050616ad681602001516159df565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529092506000915073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015616b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616b6d9190618d0a565b90508d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603616c5f5730616bb160246000898b6187cd565b616bbb8f85618173565b616bc88a6044818e6187cd565b604051602001616bdc959493929190618de7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052616c149161835f565b600060405180830381855af49150503d8060008114616c4f576040519150601f19603f3d011682016040523d82523d6000602084013e616c54565b606091505b509094509250616d5b565b8c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603616cab5730616ca160246000898b6187cd565b616bbb8e85618173565b30616cba60246000898b6187cd565b83616cc88a6044818e6187cd565b604051602001616cdc959493929190618de7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052616d149161835f565b600060405180830381855af49150503d8060008114616d4f576040519150601f19603f3d011682016040523d82523d6000602084013e616d54565b606091505b5090945092505b50505b816169bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109379060208082526004908201527f4656334d00000000000000000000000000000000000000000000000000000000604082015260600190565b505060019093019250616131915050565b50965096945050505050565b60408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527fe1f36c7b919c9f893e2cd30b471434aa2494664a0000000000000000000000006069830152607d8201527f537d8d504e4ada480625c407dbcb60ccf75ce650821f0c58561d19e3be6f64ce609d82015260009060bd015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166124c3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124c3616ef8565b614593616ef8565b616f77616ef8565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b616fc782617577565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115617019576135a88282617646565b61212f6176c0565b60608161702f81601f618125565b1015617097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610937565b826170a28382618125565b101561710a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610937565b6171148284618125565b8451101561717e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610937565b60608215801561719d5760405191506000825260208201604052617205565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156171d65780518352602092830192016171be565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60008161721c816014618125565b1015617284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f7700000000000000000000000000006044820152606401610937565b61728f826014618125565b835110156172f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401610937565b5001602001516c01000000000000000000000000900490565b600081617320816003618125565b1015617388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f770000000000000000000000000000006044820152606401610937565b617393826003618125565b835110156173fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e64730000000000000000000000006044820152606401610937565b50016003015190565b600061742873ffffffffffffffffffffffffffffffffffffffff8416836176f8565b9050805160001415801561744d57508080602001905181019061744b91906181b5565b155b156135a8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610937565b60408051606084811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009081166020808501919091529185901b166034830152825160288184030181526048830190935282519201919091207fff0000000000000000000000000000000000000000000000000000000000000060688301527f454a49fa38f3ef5ab3c70f52899a17410226e7b40000000000000000000000006069830152607d8201527fddb31e73777ad2f4a8e79e7f62da232c95f8268402e366c88edda5360dfe5522609d82015260009060bd01616ebb565b8073ffffffffffffffffffffffffffffffffffffffff163b6000036175e0576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610937565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051617670919061835f565b600060405180830381855af49150503d80600081146176ab576040519150601f19603f3d011682016040523d82523d6000602084013e6176b0565b606091505b50915091506118fc858383617706565b34156124c3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061153783836000617795565b60608261771b576177168261784e565b611537565b815115801561773f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561778e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610937565b5080611537565b6060814710156177d3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610937565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516177fc919061835f565b60006040518083038185875af1925050503d8060008114617839576040519150601f19603f3d011682016040523d82523d6000602084013e61783e565b606091505b5091509150611f91868383617706565b80511561785e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000606084860312156178a557600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126178ce57600080fd5b50813567ffffffffffffffff8111156178e657600080fd5b6020830191508360208260051b850101111561790157600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146145ec57600080fd5b8035611c9381617908565b60008060008060006080868803121561794d57600080fd5b85359450602086013567ffffffffffffffff81111561796b57600080fd5b617977888289016178bc565b909550935050604086013561798b81617908565b949793965091946060013592915050565b6020808252825182820181905260009190848201906040850190845b818110156179d4578351835292840192918401916001016179b8565b50909695505050505050565b60008060008060008060a087890312156179f957600080fd5b8635955060208701359450604087013567ffffffffffffffff811115617a1e57600080fd5b617a2a89828a016178bc565b9095509350506060870135617a3e81617908565b80925050608087013590509295509295509295565b600060e082840312156121e157600080fd5b600060208284031215617a7757600080fd5b813567ffffffffffffffff811115617a8e57600080fd5b6108c784828501617a53565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715617aec57617aec617a9a565b60405290565b60405160a0810167ffffffffffffffff81118282101715617aec57617aec617a9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715617b5c57617b5c617a9a565b604052919050565b600067ffffffffffffffff821115617b7e57617b7e617a9a565b5060051b60200190565b60008060408385031215617b9b57600080fd5b8235915060208084013567ffffffffffffffff811115617bba57600080fd5b8401601f81018613617bcb57600080fd5b8035617bde617bd982617b64565b617b15565b81815260059190911b82018301908381019088831115617bfd57600080fd5b928401925b82841015617c24578335617c1581617908565b82529284019290840190617c02565b80955050505050509250929050565b600080600060408486031215617c4857600080fd5b83359250602084013567ffffffffffffffff811115617c6657600080fd5b617c72868287016178bc565b9497909650939450505050565b600061010082840312156121e157600080fd5b60006101008284031215617ca557600080fd5b6115378383617c7f565b60008060408385031215617cc257600080fd5b8235617ccd81617908565b91506020830135617cdd81617908565b809150509250929050565b600082601f830112617cf957600080fd5b813567ffffffffffffffff811115617d1357617d13617a9a565b617d4460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601617b15565b818152846020838601011115617d5957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215617d8957600080fd5b8235617d9481617908565b9150602083013567ffffffffffffffff811115617db057600080fd5b617dbc85828601617ce8565b9150509250929050565b600060408284031215617dd857600080fd5b617de0617ac9565b905081358152602082013567ffffffffffffffff811115617e0057600080fd5b617e0c84828501617ce8565b60208301525092915050565b600060208284031215617e2a57600080fd5b813567ffffffffffffffff811115617e4157600080fd5b6108c784828501617dc6565b6000608082840312156121e157600080fd5b600060808284031215617e7157600080fd5b6115378383617e4d565b60008060008060608587031215617e9157600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115617eb757600080fd5b818701915087601f830112617ecb57600080fd5b813581811115617eda57600080fd5b886020828501011115617eec57600080fd5b95989497505060200194505050565b60008060408385031215617f0e57600080fd5b8235617f1981617908565b946020939093013593505050565b60005b83811015617f42578181015183820152602001617f2a565b50506000910152565b60008151808452617f63816020860160208601617f27565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115376020830184617f4b565b600060208284031215617fba57600080fd5b813567ffffffffffffffff80821115617fd257600080fd5b9083019060a08286031215617fe657600080fd5b617fee617af2565b823582811115617ffd57600080fd5b61800987828601617ce8565b8252506020830135915061801c82617908565b81602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006020828403121561805e57600080fd5b813567ffffffffffffffff81111561807557600080fd5b820160a0818503121561153757600080fd5b60006020828403121561809957600080fd5b813561153781617908565b6000602082840312156180b657600080fd5b813567ffffffffffffffff8111156180cd57600080fd5b82016040818503121561153757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417612232576122326180df565b80820180821115612232576122326180df565b60008261816e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115612232576122326180df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156181c757600080fd5b8151801515811461153757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261820c57600080fd5b83018035915067ffffffffffffffff82111561822757600080fd5b6020019150600581901b360382131561790157600080fd5b803562ffffff81168114611c9357600080fd5b60006020828403121561826457600080fd5b6115378261823f565b60006020828403121561827f57600080fd5b813567ffffffffffffffff8082111561829757600080fd5b90830190604082860312156182ab57600080fd5b6182b3617ac9565b8235828111156182c257600080fd5b6182ce87828601617ce8565b825250602083013592506182e183617908565b6020810192909252509392505050565b80516dffffffffffffffffffffffffffff81168114611c9357600080fd5b60008060006060848603121561832457600080fd5b61832d846182f1565b925061833b602085016182f1565b9150604084015163ffffffff8116811461835457600080fd5b809150509250925092565b60008251618371818460208701617f27565b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126183b057600080fd5b830160208101925035905067ffffffffffffffff8111156183d057600080fd5b8060051b360382131561790157600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561845d57600080fd5b8260051b80836020870137939093016020019392505050565b60006020808352610100830161848c858661837b565b60e08487015291829052610120600583811b8701820193918701908360005b848110156185bd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee08a88030184526184e4828761837b565b80895289890181861b8a018b018360005b848110156185a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08d840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe187360301811261855657600080fd5b86018e8101903567ffffffffffffffff81111561857257600080fd5b80360382131561858157600080fd5b61858c8582846183e2565b945050508d820191508d840193506001810190506184f5565b50909a505050948901945050908701906001016184ab565b5050505050506185ce82860161792a565b73ffffffffffffffffffffffffffffffffffffffff811660408601529150604085013560608501526186026060860161792a565b73ffffffffffffffffffffffffffffffffffffffff81166080860152915061862c6080860161792a565b73ffffffffffffffffffffffffffffffffffffffff811660a0860152915061865760a086018661837b565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030160c086015261868e82848361842b565b9250505060c084013560e08401528091505092915050565b600082601f8301126186b757600080fd5b815160206186c7617bd983617b64565b8083825260208201915060208460051b8701019350868411156186e957600080fd5b602086015b8481101561870557805183529183019183016186ee565b509695505050505050565b6000806000806080858703121561872657600080fd5b8451935060208501519250604085015167ffffffffffffffff81111561874b57600080fd5b618757878288016186a6565b606096909601519497939650505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261879d57600080fd5b83018035915067ffffffffffffffff8211156187b857600080fd5b60200191503681900382131561790157600080fd5b600080858511156187dd57600080fd5b838611156187ea57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156188375780818660040360031b1b83161692505b505092915050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b8181101561889857845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101618866565b5090979650505050505050565b6000608082840312156188b757600080fd5b6040516080810181811067ffffffffffffffff821117156188da576188da617a9a565b6040528235815290508060208301356188f281617908565b6020820152604083013561890581617908565b60408201526189166060840161823f565b60608201525092915050565b60006080828403121561893457600080fd5b61153783836188a5565b6020815281516020820152600060208301516040808401526108c76060840182617f4b565b60008151808452602080850194506020840160005b8381101561899457815187529582019590820190600101618978565b509495945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b83811015618a7c578987037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001855285518051808952908901908989019080861b8a018b01855b82811015618a66577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c8303018452618a54828651617f4b565b948d0194938d01939150600101618a1a565b50995050509588019550938701936001016189d3565b505050509286015173ffffffffffffffffffffffffffffffffffffffff811660408701529250618aa99050565b6040850151606085015260608501519150618adc608085018373ffffffffffffffffffffffffffffffffffffffff169052565b608085015173ffffffffffffffffffffffffffffffffffffffff811660a0860152915060a085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160c0850152618b3a8183618963565b91505060c084015160e08401528091505092915050565b600080600060608486031215618b6657600080fd5b8351925060208401519150604084015190509250925092565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000611f916080830184617f4b565b73ffffffffffffffffffffffffffffffffffffffff828116828216039080821115611310576113106180df565b73ffffffffffffffffffffffffffffffffffffffff818116838216019080821115611310576113106180df565b602081526000825160406020840152618c306060840182617f4b565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152618ca360a0830184617f4b565b979650505050505050565b60008060408385031215618cc157600080fd5b505080516020909101519092909150565b60007f80000000000000000000000000000000000000000000000000000000000000008203618d0357618d036180df565b5060000390565b600060208284031215618d1c57600080fd5b5051919050565b80356020831015612232577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8183823760009101908152919050565b7fffffffff000000000000000000000000000000000000000000000000000000008516815283600482015281836024830137600091016024019081529392505050565b600060208284031215618dc457600080fd5b815167ffffffffffffffff811115618ddb57600080fd5b6108c7848285016186a6565b848682376000858201858152838560208301376000930160200192835250909594505050505056fea2646970667358221220ab5d521f86643aec78e76e2321f9fd889fc3381a5b7141de346793e601a48b4b64736f6c63430008170033