0x608060405234801561001057600080fd5b50600436106101365760003560e01c8063715018a6116100b8578063bb872b4a1161007c578063bb872b4a146102ef578063c7dab4361461030b578063ca1ba0e314610329578063e3161ddd14610345578063f2fde38b1461034f578063f40f0f521461036b57610136565b8063715018a61461026d5780638ae39cac146102775780638da5cb5b14610295578063939d6237146102b3578063a9f8d181146102d157610136565b8063485cc955116100ff578063485cc955146101df578063523a3f08146101fb5780635fcbd285146102175780636e553f65146102355780636ff1c9bc1461025157610136565b8062f714ce1461013b5780630e5c011e146101575780631959a002146101735780631e2720ff146101a5578063228cb733146101c1575b600080fd5b61015560048036038101906101509190611d0f565b61039b565b005b610171600480360381019061016c9190611c2f565b610643565b005b61018d60048036038101906101889190611c2f565b610791565b60405161019c93929190612273565b60405180910390f35b6101bf60048036038101906101ba9190611cbd565b6107bb565b005b6101c9610889565b6040516101d6919061211b565b60405180910390f35b6101f960048036038101906101f49190611c81565b6108af565b005b61021560048036038101906102109190611cbd565b610a23565b005b61021f610aef565b60405161022c919061211b565b60405180910390f35b61024f600480360381019061024a9190611d0f565b610b15565b005b61026b60048036038101906102669190611c2f565b610c84565b005b610275610df6565b005b61027f610e7e565b60405161028c9190612258565b60405180910390f35b61029d610e84565b6040516102aa91906120a0565b60405180910390f35b6102bb610eae565b6040516102c89190612258565b60405180910390f35b6102d9610eb4565b6040516102e69190612258565b60405180910390f35b61030960048036038101906103049190611cbd565b610eba565b005b610313610f48565b6040516103209190612258565b60405180910390f35b610343600480360381019061033e9190611cbd565b610f4e565b005b61034d610fd4565b005b61036960048036038101906103649190611c2f565b611152565b005b61038560048036038101906103809190611c2f565b61124a565b6040516103929190612258565b60405180910390f35b6103a3610fd4565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506103ff606a54826002015461141690919063ffffffff16565b421015610441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043890612158565b60405180910390fd5b600064e8d4a51000610462606754846000015461142c90919063ffffffff16565b61046c91906123fd565b9050600061048f61048a84600101548461144290919063ffffffff16565b611458565b90506104c864e8d4a510006104af6067548861142c90919063ffffffff16565b6104b991906123fd565b8361144290919063ffffffff16565b83600101819055506104e78584600001546114a590919063ffffffff16565b836000018190555061053c8482606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b6105898486606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f56c54ba9bd38d8fd62012e42c7ee564519b09763c426d331b3661b537ead19b2876040516105e69190612258565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040516106349190612258565b60405180910390a25050505050565b61064b610fd4565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a510006106af606754846000015461142c90919063ffffffff16565b6106b991906123fd565b905060006106dc6106d784600101548461144290919063ffffffff16565b611458565b90508183600101819055506000811461073d5761073c8482606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040516107839190612258565b60405180910390a250505050565b606b6020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c3611541565b73ffffffffffffffffffffffffffffffffffffffff166107e1610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906121f8565b60405180910390fd5b610886333083606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611549909392919063ffffffff16565b50565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900460ff16806108d5575060008054906101000a900460ff16155b610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015610964576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61096c6115d2565b82606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606781905550436068819055508015610a1e5760008060016101000a81548160ff0219169083151502179055505b505050565b610a2b611541565b73ffffffffffffffffffffffffffffffffffffffff16610a49610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a96906121f8565b60405180910390fd5b610aec3382606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b50565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b1d610fd4565b6000606b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050428160020181905550610b8083826000015461141690919063ffffffff16565b8160000181905550610bc364e8d4a51000610ba66067548661142c90919063ffffffff16565b610bb091906123fd565b82600101546116bb90919063ffffffff16565b8160010181905550610c1a333085606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611549909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe31c7b8d08ee7db0afa68782e1028ef92305caeea8626633ad44d413e30f6b2f85604051610c779190612258565b60405180910390a3505050565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610ce0606a54826002015461141690919063ffffffff16565b421015610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990612158565b60405180910390fd5b6000816000015490506000826000018190555060008260010181905550610d8c8382606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167faaeda929aa102e867049528ec7cd2499e3a2f8846e736ae7935f234dfbf500d983604051610de99190612258565b60405180910390a3505050565b610dfe611541565b73ffffffffffffffffffffffffffffffffffffffff16610e1c610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906121f8565b60405180910390fd5b610e7c60006116d1565b565b60695481565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60675481565b60685481565b610ec2611541565b73ffffffffffffffffffffffffffffffffffffffff16610ee0610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906121f8565b60405180910390fd5b610f3e610fd4565b8060698190555050565b606a5481565b610f56611541565b73ffffffffffffffffffffffffffffffffffffffff16610f74610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc1906121f8565b60405180910390fd5b80606a8190555050565b606854431115611150576000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103b91906120a0565b60206040518083038186803b15801561105357600080fd5b505afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ce6565b905060008111156111085760006110ad606854436114a590919063ffffffff16565b905060006110c66069548361142c90919063ffffffff16565b90506110ff836110e464e8d4a510008461142c90919063ffffffff16565b6110ee91906123fd565b60675461141690919063ffffffff16565b60678190555050505b436068819055507f1f2d1a9fde053af46b5db3dc92a8aa8696e56a677998fdd1311b45be341f785360685482606754604051611146939291906122aa565b60405180910390a1505b565b61115a611541565b73ffffffffffffffffffffffffffffffffffffffff16611178610e84565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c5906121f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612178565b60405180910390fd5b611247816116d1565b50565b600080606b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112eb91906120a0565b60206040518083038186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133b9190611ce6565b90506000606754905060685443118015611356575060008214155b156113c7576000611372606854436114a590919063ffffffff16565b9050600061138b6069548361142c90919063ffffffff16565b90506113c2846113a964e8d4a510008461142c90919063ffffffff16565b6113b391906123fd565b8461141690919063ffffffff16565b925050505b61140c611407846001015464e8d4a510006113ef85886000015461142c90919063ffffffff16565b6113f991906123fd565b61144290919063ffffffff16565b611458565b9350505050919050565b6000818361142491906123a7565b905092915050565b6000818361143a919061242e565b905092915050565b600081836114509190612488565b905092915050565b60008082121561149d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611494906121b8565b60405180910390fd5b819050919050565b600081836114b3919061251c565b905092915050565b61153c8363a9059cbb60e01b84846040516024016114da9291906120f2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611797565b505050565b600033905090565b6115cc846323b872dd60e01b85858560405160240161156a939291906120bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611797565b50505050565b600060019054906101000a900460ff16806115f8575060008054906101000a900460ff16155b611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015611687576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61168f61185e565b611697611937565b80156116b85760008060016101000a81548160ff0219169083151502179055505b50565b600081836116c99190612313565b905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006117f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a209092919063ffffffff16565b905060008151111561185957808060200190518101906118199190611c58565b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90612238565b60405180910390fd5b5b505050565b600060019054906101000a900460ff1680611884575060008054906101000a900460ff16155b6118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015611913576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156119345760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061195d575060008054906101000a900460ff16155b61199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906121d8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156119ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6119fc6119f7611541565b6116d1565b8015611a1d5760008060016101000a81548160ff0219169083151502179055505b50565b6060611a2f8484600085611a38565b90509392505050565b606082471015611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490612198565b60405180910390fd5b611a8685611b4c565b611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90612218565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611aee9190612089565b60006040518083038185875af1925050503d8060008114611b2b576040519150601f19603f3d011682016040523d82523d6000602084013e611b30565b606091505b5091509150611b40828286611b5f565b92505050949350505050565b600080823b905060008111915050919050565b60608315611b6f57829050611bbf565b600083511115611b825782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb69190612136565b60405180910390fd5b9392505050565b600081359050611bd58161267a565b92915050565b600081519050611bea81612691565b92915050565b600081359050611bff816126a8565b92915050565b600081359050611c14816126bf565b92915050565b600081519050611c29816126bf565b92915050565b600060208284031215611c4157600080fd5b6000611c4f84828501611bc6565b91505092915050565b600060208284031215611c6a57600080fd5b6000611c7884828501611bdb565b91505092915050565b60008060408385031215611c9457600080fd5b6000611ca285828601611bf0565b9250506020611cb385828601611bf0565b9150509250929050565b600060208284031215611ccf57600080fd5b6000611cdd84828501611c05565b91505092915050565b600060208284031215611cf857600080fd5b6000611d0684828501611c1a565b91505092915050565b60008060408385031215611d2257600080fd5b6000611d3085828601611c05565b9250506020611d4185828601611bc6565b9150509250929050565b611d5481612550565b82525050565b6000611d65826122e1565b611d6f81856122f7565b9350611d7f8185602086016125d8565b80840191505092915050565b611d94816125b4565b82525050565b611da381612580565b82525050565b6000611db4826122ec565b611dbe8185612302565b9350611dce8185602086016125d8565b611dd781612669565b840191505092915050565b6000611def601683612302565b91507f56657374696e672074696d6520726571756972657321000000000000000000006000830152602082019050919050565b6000611e2f602683612302565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e95602683612302565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611efb602083612302565b91507f53616665436173743a2076616c7565206d75737420626520706f7369746976656000830152602082019050919050565b6000611f3b602e83612302565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000611fa1602083612302565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611fe1601d83612302565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612021602a83612302565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612083816125aa565b82525050565b60006120958284611d5a565b915081905092915050565b60006020820190506120b56000830184611d4b565b92915050565b60006060820190506120d06000830186611d4b565b6120dd6020830185611d4b565b6120ea604083018461207a565b949350505050565b60006040820190506121076000830185611d4b565b612114602083018461207a565b9392505050565b60006020820190506121306000830184611d8b565b92915050565b600060208201905081810360008301526121508184611da9565b905092915050565b6000602082019050818103600083015261217181611de2565b9050919050565b6000602082019050818103600083015261219181611e22565b9050919050565b600060208201905081810360008301526121b181611e88565b9050919050565b600060208201905081810360008301526121d181611eee565b9050919050565b600060208201905081810360008301526121f181611f2e565b9050919050565b6000602082019050818103600083015261221181611f94565b9050919050565b6000602082019050818103600083015261223181611fd4565b9050919050565b6000602082019050818103600083015261225181612014565b9050919050565b600060208201905061226d600083018461207a565b92915050565b6000606082019050612288600083018661207a565b6122956020830185611d9a565b6122a2604083018461207a565b949350505050565b60006060820190506122bf600083018661207a565b6122cc602083018561207a565b6122d9604083018461207a565b949350505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061231e82612580565b915061232983612580565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038313600083121516156123645761236361260b565b5b817f800000000000000000000000000000000000000000000000000000000000000003831260008312161561239c5761239b61260b565b5b828201905092915050565b60006123b2826125aa565b91506123bd836125aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123f2576123f161260b565b5b828201905092915050565b6000612408826125aa565b9150612413836125aa565b9250826124235761242261263a565b5b828204905092915050565b6000612439826125aa565b9150612444836125aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247d5761247c61260b565b5b828202905092915050565b600061249382612580565b915061249e83612580565b9250827f8000000000000000000000000000000000000000000000000000000000000000018212600084121516156124d9576124d861260b565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0182136000841216156125115761251061260b565b5b828203905092915050565b6000612527826125aa565b9150612532836125aa565b9250828210156125455761254461260b565b5b828203905092915050565b600061255b8261258a565b9050919050565b60008115159050919050565b600061257982612550565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125bf826125c6565b9050919050565b60006125d18261258a565b9050919050565b60005b838110156125f65780820151818401526020810190506125db565b83811115612605576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61268381612550565b811461268e57600080fd5b50565b61269a81612562565b81146126a557600080fd5b50565b6126b18161256e565b81146126bc57600080fd5b50565b6126c8816125aa565b81146126d357600080fd5b5056fea2646970667358221220ca28c6baa0e2153e99a2e911b092ff24a265c594beef580999c9717575c4367b64736f6c63430008000033
0x608060405262278d00606a5534801561001757600080fd5b5061270c806100276000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063715018a6116100b8578063bb872b4a1161007c578063bb872b4a146102ef578063c7dab4361461030b578063ca1ba0e314610329578063e3161ddd14610345578063f2fde38b1461034f578063f40f0f521461036b57610136565b8063715018a61461026d5780638ae39cac146102775780638da5cb5b14610295578063939d6237146102b3578063a9f8d181146102d157610136565b8063485cc955116100ff578063485cc955146101df578063523a3f08146101fb5780635fcbd285146102175780636e553f65146102355780636ff1c9bc1461025157610136565b8062f714ce1461013b5780630e5c011e146101575780631959a002146101735780631e2720ff146101a5578063228cb733146101c1575b600080fd5b61015560048036038101906101509190611d0f565b61039b565b005b610171600480360381019061016c9190611c2f565b610643565b005b61018d60048036038101906101889190611c2f565b610791565b60405161019c93929190612273565b60405180910390f35b6101bf60048036038101906101ba9190611cbd565b6107bb565b005b6101c9610889565b6040516101d6919061211b565b60405180910390f35b6101f960048036038101906101f49190611c81565b6108af565b005b61021560048036038101906102109190611cbd565b610a23565b005b61021f610aef565b60405161022c919061211b565b60405180910390f35b61024f600480360381019061024a9190611d0f565b610b15565b005b61026b60048036038101906102669190611c2f565b610c84565b005b610275610df6565b005b61027f610e7e565b60405161028c9190612258565b60405180910390f35b61029d610e84565b6040516102aa91906120a0565b60405180910390f35b6102bb610eae565b6040516102c89190612258565b60405180910390f35b6102d9610eb4565b6040516102e69190612258565b60405180910390f35b61030960048036038101906103049190611cbd565b610eba565b005b610313610f48565b6040516103209190612258565b60405180910390f35b610343600480360381019061033e9190611cbd565b610f4e565b005b61034d610fd4565b005b61036960048036038101906103649190611c2f565b611152565b005b61038560048036038101906103809190611c2f565b61124a565b6040516103929190612258565b60405180910390f35b6103a3610fd4565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506103ff606a54826002015461141690919063ffffffff16565b421015610441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043890612158565b60405180910390fd5b600064e8d4a51000610462606754846000015461142c90919063ffffffff16565b61046c91906123fd565b9050600061048f61048a84600101548461144290919063ffffffff16565b611458565b90506104c864e8d4a510006104af6067548861142c90919063ffffffff16565b6104b991906123fd565b8361144290919063ffffffff16565b83600101819055506104e78584600001546114a590919063ffffffff16565b836000018190555061053c8482606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b6105898486606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f56c54ba9bd38d8fd62012e42c7ee564519b09763c426d331b3661b537ead19b2876040516105e69190612258565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040516106349190612258565b60405180910390a25050505050565b61064b610fd4565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a510006106af606754846000015461142c90919063ffffffff16565b6106b991906123fd565b905060006106dc6106d784600101548461144290919063ffffffff16565b611458565b90508183600101819055506000811461073d5761073c8482606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040516107839190612258565b60405180910390a250505050565b606b6020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c3611541565b73ffffffffffffffffffffffffffffffffffffffff166107e1610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906121f8565b60405180910390fd5b610886333083606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611549909392919063ffffffff16565b50565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900460ff16806108d5575060008054906101000a900460ff16155b610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015610964576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61096c6115d2565b82606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606781905550436068819055508015610a1e5760008060016101000a81548160ff0219169083151502179055505b505050565b610a2b611541565b73ffffffffffffffffffffffffffffffffffffffff16610a49610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a96906121f8565b60405180910390fd5b610aec3382606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b50565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b1d610fd4565b6000606b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050428160020181905550610b8083826000015461141690919063ffffffff16565b8160000181905550610bc364e8d4a51000610ba66067548661142c90919063ffffffff16565b610bb091906123fd565b82600101546116bb90919063ffffffff16565b8160010181905550610c1a333085606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611549909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe31c7b8d08ee7db0afa68782e1028ef92305caeea8626633ad44d413e30f6b2f85604051610c779190612258565b60405180910390a3505050565b6000606b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610ce0606a54826002015461141690919063ffffffff16565b421015610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990612158565b60405180910390fd5b6000816000015490506000826000018190555060008260010181905550610d8c8382606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114bb9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167faaeda929aa102e867049528ec7cd2499e3a2f8846e736ae7935f234dfbf500d983604051610de99190612258565b60405180910390a3505050565b610dfe611541565b73ffffffffffffffffffffffffffffffffffffffff16610e1c610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906121f8565b60405180910390fd5b610e7c60006116d1565b565b60695481565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60675481565b60685481565b610ec2611541565b73ffffffffffffffffffffffffffffffffffffffff16610ee0610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906121f8565b60405180910390fd5b610f3e610fd4565b8060698190555050565b606a5481565b610f56611541565b73ffffffffffffffffffffffffffffffffffffffff16610f74610e84565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc1906121f8565b60405180910390fd5b80606a8190555050565b606854431115611150576000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161103b91906120a0565b60206040518083038186803b15801561105357600080fd5b505afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ce6565b905060008111156111085760006110ad606854436114a590919063ffffffff16565b905060006110c66069548361142c90919063ffffffff16565b90506110ff836110e464e8d4a510008461142c90919063ffffffff16565b6110ee91906123fd565b60675461141690919063ffffffff16565b60678190555050505b436068819055507f1f2d1a9fde053af46b5db3dc92a8aa8696e56a677998fdd1311b45be341f785360685482606754604051611146939291906122aa565b60405180910390a1505b565b61115a611541565b73ffffffffffffffffffffffffffffffffffffffff16611178610e84565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c5906121f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612178565b60405180910390fd5b611247816116d1565b50565b600080606b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112eb91906120a0565b60206040518083038186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133b9190611ce6565b90506000606754905060685443118015611356575060008214155b156113c7576000611372606854436114a590919063ffffffff16565b9050600061138b6069548361142c90919063ffffffff16565b90506113c2846113a964e8d4a510008461142c90919063ffffffff16565b6113b391906123fd565b8461141690919063ffffffff16565b925050505b61140c611407846001015464e8d4a510006113ef85886000015461142c90919063ffffffff16565b6113f991906123fd565b61144290919063ffffffff16565b611458565b9350505050919050565b6000818361142491906123a7565b905092915050565b6000818361143a919061242e565b905092915050565b600081836114509190612488565b905092915050565b60008082121561149d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611494906121b8565b60405180910390fd5b819050919050565b600081836114b3919061251c565b905092915050565b61153c8363a9059cbb60e01b84846040516024016114da9291906120f2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611797565b505050565b600033905090565b6115cc846323b872dd60e01b85858560405160240161156a939291906120bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611797565b50505050565b600060019054906101000a900460ff16806115f8575060008054906101000a900460ff16155b611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015611687576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61168f61185e565b611697611937565b80156116b85760008060016101000a81548160ff0219169083151502179055505b50565b600081836116c99190612313565b905092915050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006117f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a209092919063ffffffff16565b905060008151111561185957808060200190518101906118199190611c58565b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90612238565b60405180910390fd5b5b505050565b600060019054906101000a900460ff1680611884575060008054906101000a900460ff16155b6118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906121d8565b60405180910390fd5b60008060019054906101000a900460ff161590508015611913576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156119345760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061195d575060008054906101000a900460ff16155b61199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906121d8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156119ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6119fc6119f7611541565b6116d1565b8015611a1d5760008060016101000a81548160ff0219169083151502179055505b50565b6060611a2f8484600085611a38565b90509392505050565b606082471015611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490612198565b60405180910390fd5b611a8685611b4c565b611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90612218565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611aee9190612089565b60006040518083038185875af1925050503d8060008114611b2b576040519150601f19603f3d011682016040523d82523d6000602084013e611b30565b606091505b5091509150611b40828286611b5f565b92505050949350505050565b600080823b905060008111915050919050565b60608315611b6f57829050611bbf565b600083511115611b825782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb69190612136565b60405180910390fd5b9392505050565b600081359050611bd58161267a565b92915050565b600081519050611bea81612691565b92915050565b600081359050611bff816126a8565b92915050565b600081359050611c14816126bf565b92915050565b600081519050611c29816126bf565b92915050565b600060208284031215611c4157600080fd5b6000611c4f84828501611bc6565b91505092915050565b600060208284031215611c6a57600080fd5b6000611c7884828501611bdb565b91505092915050565b60008060408385031215611c9457600080fd5b6000611ca285828601611bf0565b9250506020611cb385828601611bf0565b9150509250929050565b600060208284031215611ccf57600080fd5b6000611cdd84828501611c05565b91505092915050565b600060208284031215611cf857600080fd5b6000611d0684828501611c1a565b91505092915050565b60008060408385031215611d2257600080fd5b6000611d3085828601611c05565b9250506020611d4185828601611bc6565b9150509250929050565b611d5481612550565b82525050565b6000611d65826122e1565b611d6f81856122f7565b9350611d7f8185602086016125d8565b80840191505092915050565b611d94816125b4565b82525050565b611da381612580565b82525050565b6000611db4826122ec565b611dbe8185612302565b9350611dce8185602086016125d8565b611dd781612669565b840191505092915050565b6000611def601683612302565b91507f56657374696e672074696d6520726571756972657321000000000000000000006000830152602082019050919050565b6000611e2f602683612302565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e95602683612302565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611efb602083612302565b91507f53616665436173743a2076616c7565206d75737420626520706f7369746976656000830152602082019050919050565b6000611f3b602e83612302565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000611fa1602083612302565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611fe1601d83612302565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612021602a83612302565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612083816125aa565b82525050565b60006120958284611d5a565b915081905092915050565b60006020820190506120b56000830184611d4b565b92915050565b60006060820190506120d06000830186611d4b565b6120dd6020830185611d4b565b6120ea604083018461207a565b949350505050565b60006040820190506121076000830185611d4b565b612114602083018461207a565b9392505050565b60006020820190506121306000830184611d8b565b92915050565b600060208201905081810360008301526121508184611da9565b905092915050565b6000602082019050818103600083015261217181611de2565b9050919050565b6000602082019050818103600083015261219181611e22565b9050919050565b600060208201905081810360008301526121b181611e88565b9050919050565b600060208201905081810360008301526121d181611eee565b9050919050565b600060208201905081810360008301526121f181611f2e565b9050919050565b6000602082019050818103600083015261221181611f94565b9050919050565b6000602082019050818103600083015261223181611fd4565b9050919050565b6000602082019050818103600083015261225181612014565b9050919050565b600060208201905061226d600083018461207a565b92915050565b6000606082019050612288600083018661207a565b6122956020830185611d9a565b6122a2604083018461207a565b949350505050565b60006060820190506122bf600083018661207a565b6122cc602083018561207a565b6122d9604083018461207a565b949350505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061231e82612580565b915061232983612580565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038313600083121516156123645761236361260b565b5b817f800000000000000000000000000000000000000000000000000000000000000003831260008312161561239c5761239b61260b565b5b828201905092915050565b60006123b2826125aa565b91506123bd836125aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156123f2576123f161260b565b5b828201905092915050565b6000612408826125aa565b9150612413836125aa565b9250826124235761242261263a565b5b828204905092915050565b6000612439826125aa565b9150612444836125aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247d5761247c61260b565b5b828202905092915050565b600061249382612580565b915061249e83612580565b9250827f8000000000000000000000000000000000000000000000000000000000000000018212600084121516156124d9576124d861260b565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0182136000841216156125115761251061260b565b5b828203905092915050565b6000612527826125aa565b9150612532836125aa565b9250828210156125455761254461260b565b5b828203905092915050565b600061255b8261258a565b9050919050565b60008115159050919050565b600061257982612550565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125bf826125c6565b9050919050565b60006125d18261258a565b9050919050565b60005b838110156125f65780820151818401526020810190506125db565b83811115612605576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61268381612550565b811461268e57600080fd5b50565b61269a81612562565b81146126a557600080fd5b50565b6126b18161256e565b81146126bc57600080fd5b50565b6126c8816125aa565b81146126d357600080fd5b5056fea2646970667358221220ca28c6baa0e2153e99a2e911b092ff24a265c594beef580999c9717575c4367b64736f6c63430008000033