60806040526001600760156101000a81548160ff021916908315150217905550604051806060016040528060008152602001600281526020016000815250600e60008201518160000155602082015181600101556040820151816002015550506040518060600160405280600081526020016002815260200160008152506011600082015181600001556020820151816001015560408201518160020155505060026014556002601555348015620000b657600080fd5b506040516200a67e3803806200a67e8339818101604052810190620000dc9190620011aa565b6040518060400160405280600881526020017f4469766964656e640000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4444495600000000000000000000000000000000000000000000000000000000815250816003908162000159919062001456565b5080600490816200016b919062001456565b5050506200018e62000182620008cc60201b60201c565b620008d460201b60201c565b6040516200019c9062001132565b604051809103906000f080158015620001b9573d6000803e3d6000fd5b50600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200020b816200099a60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620011aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000300573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003269190620011aa565b6040518363ffffffff1660e01b8152600401620003459291906200154e565b6020604051808303816000875af115801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b9190620011aa565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000423620493e0620009ee60201b60201c565b62000437621e848062000a1d60201b60201c565b6200044c621e84808062000a9560201b60201c565b6200045f81600162000b7360201b60201c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344b6bd9e600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401620004de91906200157b565b600060405180830381600087803b158015620004f957600080fd5b505af11580156200050e573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b815260040162000594929190620015b5565b600060405180830381600087803b158015620005af57600080fd5b505af1158015620005c4573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a03060016040518363ffffffff1660e01b815260040162000628929190620015b5565b600060405180830381600087803b1580156200064357600080fd5b505af115801562000658573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a0620006aa62000d4560201b60201c565b60016040518363ffffffff1660e01b8152600401620006cb929190620015b5565b600060405180830381600087803b158015620006e657600080fd5b505af1158015620006fb573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a061dead60016040518363ffffffff1660e01b815260040162000761929190620015b5565b600060405180830381600087803b1580156200077c57600080fd5b505af115801562000791573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08360016040518363ffffffff1660e01b8152600401620007f5929190620015b5565b600060405180830381600087803b1580156200081057600080fd5b505af115801562000825573d6000803e3d6000fd5b505050506200083c81600162000d6f60201b60201c565b6200084f30600162000d6f60201b60201c565b6200086282600162000d6f60201b60201c565b620008846200087662000d4560201b60201c565b600162000dda60201b60201c565b6200089730600162000dda60201b60201c565b620008c3620008ab62000d4560201b60201c565b6a52b7d2dcc80cd2e400000062000f2a60201b60201c565b50505062001ae1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620009aa6200109760201b60201c565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620009fe6200109760201b60201c565b670de0b6b3a76400008162000a14919062001611565b600a8190555050565b62000a2d6200109760201b60201c565b620f424081101562000a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6d90620016f9565b60405180910390fd5b670de0b6b3a76400008162000a8c919062001611565b600d8190555050565b62000aa56200109760201b60201c565b620f424082101562000aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae5906200176b565b60405180910390fd5b6207a12081101562000b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2e9062001803565b60405180910390fd5b670de0b6b3a76400008262000b4d919062001611565b600b81905550670de0b6b3a76400008162000b69919062001611565b600c819055505050565b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000c08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bff906200189b565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801562000cfb57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08360016040518363ffffffff1660e01b815260040162000cc6929190620015b5565b600060405180830381600087803b15801562000ce157600080fd5b505af115801562000cf6573d6000803e3d6000fd5b505050505b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000d7f6200109760201b60201c565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b62000dea6200109760201b60201c565b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000e7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e769062001933565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000f1e919062001955565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9390620019c2565b60405180910390fd5b62000fb0600083836200112860201b60201c565b806002600082825462000fc49190620019e4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001077919062001a52565b60405180910390a362001093600083836200112d60201b60201c565b5050565b620010a7620008cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620010cd62000d4560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462001126576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200111d9062001abf565b60405180910390fd5b565b505050565b505050565b6133e8806200729683390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011728262001145565b9050919050565b620011848162001165565b81146200119057600080fd5b50565b600081519050620011a48162001179565b92915050565b600060208284031215620011c357620011c262001140565b5b6000620011d38482850162001193565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200125e57607f821691505b60208210810362001274576200127362001216565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620012de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200129f565b620012ea86836200129f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001337620013316200132b8462001302565b6200130c565b62001302565b9050919050565b6000819050919050565b620013538362001316565b6200136b62001362826200133e565b848454620012ac565b825550505050565b600090565b6200138262001373565b6200138f81848462001348565b505050565b5b81811015620013b757620013ab60008262001378565b60018101905062001395565b5050565b601f8211156200140657620013d0816200127a565b620013db846200128f565b81016020851015620013eb578190505b62001403620013fa856200128f565b83018262001394565b50505b505050565b600082821c905092915050565b60006200142b600019846008026200140b565b1980831691505092915050565b600062001446838362001418565b9150826002028217905092915050565b6200146182620011dc565b67ffffffffffffffff8111156200147d576200147c620011e7565b5b62001489825462001245565b62001496828285620013bb565b600060209050601f831160018114620014ce5760008415620014b9578287015190505b620014c5858262001438565b86555062001535565b601f198416620014de866200127a565b60005b828110156200150857848901518255600182019150602085019450602081019050620014e1565b8683101562001528578489015162001524601f89168262001418565b8355505b6001600288020188555050505b505050505050565b620015488162001165565b82525050565b60006040820190506200156560008301856200153d565b6200157460208301846200153d565b9392505050565b60006020820190506200159260008301846200153d565b92915050565b60008115159050919050565b620015af8162001598565b82525050565b6000604082019050620015cc60008301856200153d565b620015db6020830184620015a4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200161e8262001302565b91506200162b8362001302565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620016675762001666620015e2565b5b828202905092915050565b600082825260208201905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016e160228362001672565b9150620016ee8262001683565b604082019050919050565b600060208201905081810360008301526200171481620016d2565b9050919050565b7f43616e6e6f7420736574206d6178627579206c6f776572207468616e20312520600082015250565b60006200175360208362001672565b915062001760826200171b565b602082019050919050565b60006020820190508181036000830152620017868162001744565b9050919050565b7f43616e6e6f7420736574206d617873656c6c206c6f776572207468616e20302e60008201527f3525200000000000000000000000000000000000000000000000000000000000602082015250565b6000620017eb60238362001672565b9150620017f8826200178d565b604082019050919050565b600060208201905081810360008301526200181e81620017dc565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200188360388362001672565b9150620018908262001825565b604082019050919050565b60006020820190508181036000830152620018b68162001874565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006200191b602a8362001672565b91506200192882620018bd565b604082019050919050565b600060208201905081810360008301526200194e816200190c565b9050919050565b60006020820190506200196c6000830184620015a4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620019aa601f8362001672565b9150620019b78262001972565b602082019050919050565b60006020820190508181036000830152620019dd816200199b565b9050919050565b6000620019f18262001302565b9150620019fe8362001302565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001a365762001a35620015e2565b5b828201905092915050565b62001a4c8162001302565b82525050565b600060208201905062001a69600083018462001a41565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001aa760208362001672565b915062001ab48262001a6f565b602082019050919050565b6000602082019050818103600083015262001ada8162001a98565b9050919050565b6157a58062001af16000396000f3fe6080604052600436106103855760003560e01c806379b447bd116101d1578063abb8105211610102578063d2fcc001116100a0578063f2fde38b1161006f578063f2fde38b14610d1d578063f66895a314610d46578063f887ea4014610d73578063f8b45b0514610d9e5761038c565b8063d2fcc00114610c63578063dd62ed3e14610c8c578063e01af92c14610cc9578063e2f4560514610cf25761038c565b8063bdf1436d116100dc578063bdf1436d14610bbf578063c024666814610be8578063c18bc19514610c11578063c851cc3214610c3a5761038c565b8063abb8105214610b1c578063afa4f3b214610b59578063b62496f514610b825761038c565b806392929a091161016f578063a457c2d711610149578063a457c2d714610a3a578063a8aa1b3114610a77578063a8b9d24014610aa2578063a9059cbb14610adf5761038c565b806392929a09146109bd57806395d89b41146109e65780639a7a23d614610a115761038c565b806388bdd9be116101ab57806388bdd9be1461091557806388e765ff1461093e5780638c9684f9146109695780638da5cb5b146109925761038c565b806379b447bd1461087e5780637b510fe8146108a7578063864701a5146108e85761038c565b806330bb4cff116102b65780634fbee193116102545780636ddd1713116102235780636ddd1713146107d457806370a08231146107ff578063715018a61461083c57806375f0a874146108535761038c565b80634fbee193146107065780635d098b381461074357806366d602ae1461076c5780636843cd84146107975761038c565b80633950935111610290578063395093511461065c57806346469afb146106995780634ada218b146106c45780634e71d92d146106ef5761038c565b806330bb4cff146105dd578063313ce56714610608578063342aa8b5146106335761038c565b806318160ddd1161032357806323b872dd116102fd57806323b872dd146105215780632866ed211461055e5780632c1f5216146105895780632e1ab904146105b45761038c565b806318160ddd146104a25780631870517a146104cd5780631bff7898146104f65761038c565b8063095ea7b31161035f578063095ea7b31461040e5780630a78097d1461044b5780630bd05b691461047457806312b77e8a1461048b5761038c565b80630483f7a01461039157806306fdde03146103ba57806308733214146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103b860048036038101906103b39190613f78565b610dc9565b005b3480156103c657600080fd5b506103cf610e64565b6040516103dc9190614051565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906140a9565b610ef6565b005b34801561041a57600080fd5b50610435600480360381019061043091906140fc565b610fb8565b604051610442919061414b565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190614166565b610fdb565b005b34801561048057600080fd5b506104896110e5565b005b34801561049757600080fd5b506104a061115a565b005b3480156104ae57600080fd5b506104b7611203565b6040516104c491906141a2565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef91906140a9565b61120d565b005b34801561050257600080fd5b5061050b6112cf565b60405161051891906141a2565b60405180910390f35b34801561052d57600080fd5b50610548600480360381019061054391906141bd565b6112d5565b604051610555919061414b565b60405180910390f35b34801561056a57600080fd5b50610573611304565b604051610580919061414b565b60405180910390f35b34801561059557600080fd5b5061059e611317565b6040516105ab919061426f565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190614166565b61133d565b005b3480156105e957600080fd5b506105f26113d5565b6040516105ff91906141a2565b60405180910390f35b34801561061457600080fd5b5061061d61146d565b60405161062a91906142a6565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190613f78565b611476565b005b34801561066857600080fd5b50610683600480360381019061067e91906140fc565b611535565b604051610690919061414b565b60405180910390f35b3480156106a557600080fd5b506106ae61156c565b6040516106bb91906141a2565b60405180910390f35b3480156106d057600080fd5b506106d9611572565b6040516106e6919061414b565b60405180910390f35b3480156106fb57600080fd5b50610704611585565b005b34801561071257600080fd5b5061072d60048036038101906107289190614166565b611675565b60405161073a919061414b565b60405180910390f35b34801561074f57600080fd5b5061076a60048036038101906107659190614166565b6116cb565b005b34801561077857600080fd5b50610781611717565b60405161078e91906141a2565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b99190614166565b61171d565b6040516107cb91906141a2565b60405180910390f35b3480156107e057600080fd5b506107e96117c2565b6040516107f6919061414b565b60405180910390f35b34801561080b57600080fd5b5061082660048036038101906108219190614166565b6117d5565b60405161083391906141a2565b60405180910390f35b34801561084857600080fd5b5061085161181d565b005b34801561085f57600080fd5b50610868611831565b60405161087591906142d0565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a091906142eb565b611857565b005b3480156108b357600080fd5b506108ce60048036038101906108c99190614166565b611923565b6040516108df95949392919061432b565b60405180910390f35b3480156108f457600080fd5b506108fd6119da565b60405161090c9392919061437e565b60405180910390f35b34801561092157600080fd5b5061093c60048036038101906109379190614166565b6119f2565b005b34801561094a57600080fd5b50610953611c25565b60405161096091906141a2565b60405180910390f35b34801561097557600080fd5b50610990600480360381019061098b9190614166565b611c2b565b005b34801561099e57600080fd5b506109a7611cc5565b6040516109b491906142d0565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906143b5565b611cef565b005b3480156109f257600080fd5b506109fb611d14565b604051610a089190614051565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a339190613f78565b611da6565b005b348015610a4657600080fd5b50610a616004803603810190610a5c91906140fc565b611dbc565b604051610a6e919061414b565b60405180910390f35b348015610a8357600080fd5b50610a8c611e33565b604051610a9991906142d0565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac49190614166565b611e59565b604051610ad691906141a2565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b0191906140fc565b611efe565b604051610b13919061414b565b60405180910390f35b348015610b2857600080fd5b50610b436004803603810190610b3e9190614166565b611f21565b604051610b50919061414b565b60405180910390f35b348015610b6557600080fd5b50610b806004803603810190610b7b91906143e2565b611f41565b005b348015610b8e57600080fd5b50610ba96004803603810190610ba49190614166565b611f66565b604051610bb6919061414b565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be191906143e2565b611f86565b005b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190613f78565b6120ee565b005b348015610c1d57600080fd5b50610c386004803603810190610c3391906143e2565b612231565b005b348015610c4657600080fd5b50610c616004803603810190610c5c9190614166565b61229c565b005b348015610c6f57600080fd5b50610c8a6004803603810190610c859190613f78565b6122e8565b005b348015610c9857600080fd5b50610cb36004803603810190610cae919061440f565b61234b565b604051610cc091906141a2565b60405180910390f35b348015610cd557600080fd5b50610cf06004803603810190610ceb91906143b5565b6123d2565b005b348015610cfe57600080fd5b50610d076123f7565b604051610d1491906141a2565b60405180910390f35b348015610d2957600080fd5b50610d446004803603810190610d3f9190614166565b6123fd565b005b348015610d5257600080fd5b50610d5b612480565b604051610d6a9392919061437e565b60405180910390f35b348015610d7f57600080fd5b50610d88612498565b604051610d959190614470565b60405180910390f35b348015610daa57600080fd5b50610db36124be565b604051610dc091906141a2565b60405180910390f35b610dd16124c4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a083836040518363ffffffff1660e01b8152600401610e2e92919061448b565b600060405180830381600087803b158015610e4857600080fd5b505af1158015610e5c573d6000803e3d6000fd5b505050505050565b606060038054610e73906144e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9f906144e3565b8015610eec5780601f10610ec157610100808354040283529160200191610eec565b820191906000526020600020905b815481529060010190602001808311610ecf57829003601f168201915b5050505050905090565b610efe6124c4565b6063818385610f0d9190614543565b610f179190614543565b1115610f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4f906145e5565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050808284610fa39190614543565b610fad9190614543565b601581905550505050565b600080610fc3612542565b9050610fd081858561254a565b600191505092915050565b610fe36124c4565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611007611cc5565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161104091906142d0565b602060405180830381865afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061461a565b6040518363ffffffff1660e01b815260040161109e929190614647565b6020604051808303816000875af11580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190614685565b5050565b6110ed6124c4565b600760179054906101000a900460ff161561113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906146fe565b60405180910390fd5b6001600760176101000a81548160ff021916908315150217905550565b6111626124c4565b60004790506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516111af9061474f565b60006040518083038185875af1925050503d80600081146111ec576040519150601f19603f3d011682016040523d82523d6000602084013e6111f1565b606091505b50509050806111ff57600080fd5b5050565b6000600254905090565b6112156124c4565b60328183856112249190614543565b61122e9190614543565b111561126f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611266906145e5565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e6000820151816000015560208201518160010155604082015181600201559050508082846112ba9190614543565b6112c49190614543565b601481905550505050565b60155481565b6000806112e0612542565b90506112ed858285612713565b6112f885858561279f565b60019150509392505050565b600760169054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113456124c4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344b6bd9e826040518263ffffffff1660e01b81526004016113a091906142d0565b600060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b5050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385a6b3ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611444573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611468919061461a565b905090565b60006012905090565b61147e6124c4565b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114da57600080fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080611540612542565b9050611561818585611552858961234b565b61155c9190614543565b61254a565b600191505092915050565b60145481565b600760179054906101000a900460ff1681565b600760169054906101000a900460ff166115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb906147b0565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663807ab4f7336040518263ffffffff1660e01b815260040161162f91906147f1565b6020604051808303816000875af115801561164e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116729190614685565b50565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6116d36124c4565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161177a91906142d0565b602060405180830381865afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb919061461a565b9050919050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118256124c4565b61182f60006130ce565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185f6124c4565b620f42408210156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90614858565b60405180910390fd5b6207a1208110156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e2906148ea565b60405180910390fd5b670de0b6b3a7640000826118ff919061490a565b600b81905550670de0b6b3a764000081611919919061490a565b600c819055505050565b6000806000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbcbc0f1876040518263ffffffff1660e01b815260040161198691906142d0565b60a060405180830381865afa1580156119a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c79190614979565b9450945094509450945091939590929450565b600e8060000154908060010154908060020154905083565b6119fa6124c4565b60008190508073ffffffffffffffffffffffffffffffffffffffff16630483f7a08260016040518363ffffffff1660e01b8152600401611a3b92919061448b565b600060405180830381600087803b158015611a5557600080fd5b505af1158015611a69573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16630483f7a03060016040518363ffffffff1660e01b8152600401611aa992919061448b565b600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16630483f7a0611aff611cc5565b60016040518363ffffffff1660e01b8152600401611b1e92919061448b565b600060405180830381600087803b158015611b3857600080fd5b505af1158015611b4c573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16630483f7a0600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b8152600401611bae92919061448b565b600060405180830381600087803b158015611bc857600080fd5b505af1158015611bdc573d6000803e3d6000fd5b5050505080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600b5481565b611c336124c4565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663497ec82333836040518363ffffffff1660e01b8152600401611c909291906149f4565b600060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cf76124c4565b80600760166101000a81548160ff02191690831515021790555050565b606060048054611d23906144e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4f906144e3565b8015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b5050505050905090565b611dae6124c4565b611db88282613194565b5050565b600080611dc7612542565b90506000611dd5828661234b565b905083811015611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190614a8f565b60405180910390fd5b611e27828686840361254a565b60019250505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a8b9d240836040518263ffffffff1660e01b8152600401611eb691906142d0565b602060405180830381865afa158015611ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef7919061461a565b9050919050565b600080611f09612542565b9050611f1681858561279f565b600191505092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b611f496124c4565b670de0b6b3a764000081611f5d919061490a565b600a8190555050565b60186020528060005260406000206000915054906101000a900460ff1681565b611f8e6124c4565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b815260040161201193929190614aaf565b6020604051808303816000875af1158015612030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120549190614685565b905080156120ea57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b81526004016120b791906141a2565b600060405180830381600087803b1580156120d157600080fd5b505af11580156120e5573d6000803e3d6000fd5b505050505b5050565b6120f66124c4565b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f90614b58565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612225919061414b565b60405180910390a25050565b6122396124c4565b620f424081101561227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690614bea565b60405180910390fd5b670de0b6b3a764000081612293919061490a565b600d8190555050565b6122a46124c4565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122f06124c4565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123da6124c4565b80600760156101000a81548160ff02191690831515021790555050565b600a5481565b6124056124c4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b90614c7c565b60405180910390fd5b61247d816130ce565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6124cc612542565b73ffffffffffffffffffffffffffffffffffffffff166124ea611cc5565b73ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253790614ce8565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b090614d7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f90614e0c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161270691906141a2565b60405180910390a3505050565b600061271f848461234b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612799578181101561278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278290614e78565b60405180910390fd5b612798848484840361254a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280590614f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287490614f9c565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129215750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561293a5750600760149054906101000a900460ff16155b15612b6e57600760179054906101000a900460ff1661298e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298590615008565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a2a57600c54811115612a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1c90615074565b60405180910390fd5b612ac3565b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ac257600b54811115612ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab8906150e0565b60405180910390fd5b5b5b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b6d57600d54612b20836117d5565b82612b2b9190614543565b1115612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b639061514c565b60405180910390fd5b5b5b60008103612b8757612b828383600061335e565b6130c9565b6000612b92306117d5565b90506000600a548210159050808015612bb85750600760149054906101000a900460ff16155b8015612bd05750600760159054906101000a900460ff165b8015612c255750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612c7b5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cd15750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d24576001600760146101000a81548160ff02191690831515021790555060006015541115612d0857612d07600a546135d4565b5b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dda5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612de457600090505b601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e885750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9257600090505b8015612f98576000601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f0d57606460155486612efc919061490a565b612f06919061519b565b9050612f7d565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f7c57606460145486612f6f919061490a565b612f79919061519b565b90505b5b8085612f8991906151cc565b9450612f9687308361335e565b505b612fa386868661335e565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc87612feb896117d5565b6040518363ffffffff1660e01b8152600401613008929190614647565b600060405180830381600087803b15801561302257600080fd5b505af1925050508015613033575060015b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e30443bc8661307c886117d5565b6040518363ffffffff1660e01b8152600401613099929190614647565b600060405180830381600087803b1580156130b357600080fd5b505af19250505080156130c4575060015b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b801515601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d90615272565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561331457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630483f7a08360016040518363ffffffff1660e01b81526004016132e192919061448b565b600060405180830381600087803b1580156132fb57600080fd5b505af115801561330f573d6000803e3d6000fd5b505050505b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c490614f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361343c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343390614f9c565b60405180910390fd5b6134478383836139e5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156134cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c490615304565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135bb91906141a2565b60405180910390a36135ce8484846139ea565b50505050565b60006002601554601160000154846135ec919061490a565b6135f6919061519b565b613600919061519b565b9050600060026015546011600001548561361a919061490a565b613624919061519b565b61362e919061519b565b9050600060155460116001015485613646919061490a565b613650919061519b565b9050600060155460116002015486613668919061490a565b613672919061519b565b905061367d846139ef565b60004790506000811115613696576136958482613c32565b5b61369f836139ef565b600047905060008190506000811115613782576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516136fa9061474f565b60006040518083038185875af1925050503d8060008114613737576040519150601f19603f3d011682016040523d82523d6000602084013e61373c565b606091505b5050905080613780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377790615370565b60405180910390fd5b505b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137df91906142d0565b602060405180830381865afa1580156137fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613820919061461a565b9050600081905060008111156139c5576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016138b1929190614647565b6020604051808303816000875af11580156138d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f49190614685565b905080156139c357600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ede6ad9c836040518263ffffffff1660e01b815260040161395791906141a2565b600060405180830381600087803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b505050507f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc38b836040516139ba929190615390565b60405180910390a15b505b60008611156139d9576139d83087613d10565b5b50505050505050505050565b505050565b505050565b6000600267ffffffffffffffff811115613a0c57613a0b6153b9565b5b604051908082528060200260200182016040528015613a3a5781602001602082028036833780820191505090505b5090503081600081518110613a5257613a516153e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1d9190615417565b81600181518110613b3157613b306153e8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b9830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461254a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bfc95949392919061553d565b600060405180830381600087803b158015613c1657600080fd5b505af1158015613c2a573d6000803e3d6000fd5b505050505050565b613c5f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461254a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613cc696959493929190615597565b60606040518083038185885af1158015613ce4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d0991906155f8565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d76906156bd565b60405180910390fd5b613d8b826000836139e5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e089061574f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ec491906141a2565b60405180910390a3613ed8836000846139ea565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f0d82613ee2565b9050919050565b613f1d81613f02565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008115159050919050565b613f5581613f40565b8114613f6057600080fd5b50565b600081359050613f7281613f4c565b92915050565b60008060408385031215613f8f57613f8e613edd565b5b6000613f9d85828601613f2b565b9250506020613fae85828601613f63565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ff2578082015181840152602081019050613fd7565b83811115614001576000848401525b50505050565b6000601f19601f8301169050919050565b600061402382613fb8565b61402d8185613fc3565b935061403d818560208601613fd4565b61404681614007565b840191505092915050565b6000602082019050818103600083015261406b8184614018565b905092915050565b6000819050919050565b61408681614073565b811461409157600080fd5b50565b6000813590506140a38161407d565b92915050565b6000806000606084860312156140c2576140c1613edd565b5b60006140d086828701614094565b93505060206140e186828701614094565b92505060406140f286828701614094565b9150509250925092565b6000806040838503121561411357614112613edd565b5b600061412185828601613f2b565b925050602061413285828601614094565b9150509250929050565b61414581613f40565b82525050565b6000602082019050614160600083018461413c565b92915050565b60006020828403121561417c5761417b613edd565b5b600061418a84828501613f2b565b91505092915050565b61419c81614073565b82525050565b60006020820190506141b76000830184614193565b92915050565b6000806000606084860312156141d6576141d5613edd565b5b60006141e486828701613f2b565b93505060206141f586828701613f2b565b925050604061420686828701614094565b9150509250925092565b6000819050919050565b600061423561423061422b84613ee2565b614210565b613ee2565b9050919050565b60006142478261421a565b9050919050565b60006142598261423c565b9050919050565b6142698161424e565b82525050565b60006020820190506142846000830184614260565b92915050565b600060ff82169050919050565b6142a08161428a565b82525050565b60006020820190506142bb6000830184614297565b92915050565b6142ca81613f02565b82525050565b60006020820190506142e560008301846142c1565b92915050565b6000806040838503121561430257614301613edd565b5b600061431085828601614094565b925050602061432185828601614094565b9150509250929050565b600060a08201905061434060008301886142c1565b61434d6020830187614193565b61435a6040830186614193565b6143676060830185614193565b6143746080830184614193565b9695505050505050565b60006060820190506143936000830186614193565b6143a06020830185614193565b6143ad6040830184614193565b949350505050565b6000602082840312156143cb576143ca613edd565b5b60006143d984828501613f63565b91505092915050565b6000602082840312156143f8576143f7613edd565b5b600061440684828501614094565b91505092915050565b6000806040838503121561442657614425613edd565b5b600061443485828601613f2b565b925050602061444585828601613f2b565b9150509250929050565b600061445a8261423c565b9050919050565b61446a8161444f565b82525050565b60006020820190506144856000830184614461565b92915050565b60006040820190506144a060008301856142c1565b6144ad602083018461413c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144fb57607f821691505b60208210810361450e5761450d6144b4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061454e82614073565b915061455983614073565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561458e5761458d614514565b5b828201905092915050565b7f466565206d757374206265203c3d203230250000000000000000000000000000600082015250565b60006145cf601283613fc3565b91506145da82614599565b602082019050919050565b600060208201905081810360008301526145fe816145c2565b9050919050565b6000815190506146148161407d565b92915050565b6000602082840312156146305761462f613edd565b5b600061463e84828501614605565b91505092915050565b600060408201905061465c60008301856142c1565b6146696020830184614193565b9392505050565b60008151905061467f81613f4c565b92915050565b60006020828403121561469b5761469a613edd565b5b60006146a984828501614670565b91505092915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b60006146e8601783613fc3565b91506146f3826146b2565b602082019050919050565b60006020820190508181036000830152614717816146db565b9050919050565b600081905092915050565b50565b600061473960008361471e565b915061474482614729565b600082019050919050565b600061475a8261472c565b9150819050919050565b7f436c61696d206e6f7420656e61626c6564000000000000000000000000000000600082015250565b600061479a601183613fc3565b91506147a582614764565b602082019050919050565b600060208201905081810360008301526147c98161478d565b9050919050565b60006147db82613ee2565b9050919050565b6147eb816147d0565b82525050565b600060208201905061480660008301846147e2565b92915050565b7f43616e6e6f7420736574206d6178627579206c6f776572207468616e20312520600082015250565b6000614842602083613fc3565b915061484d8261480c565b602082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f43616e6e6f7420736574206d617873656c6c206c6f776572207468616e20302e60008201527f3525200000000000000000000000000000000000000000000000000000000000602082015250565b60006148d4602383613fc3565b91506148df82614878565b604082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b600061491582614073565b915061492083614073565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561495957614958614514565b5b828202905092915050565b60008151905061497381613f14565b92915050565b600080600080600060a0868803121561499557614994613edd565b5b60006149a388828901614964565b95505060206149b488828901614605565b94505060406149c588828901614605565b93505060606149d688828901614605565b92505060806149e788828901614605565b9150509295509295909350565b6000604082019050614a0960008301856142c1565b614a1660208301846142c1565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a79602583613fc3565b9150614a8482614a1d565b604082019050919050565b60006020820190508181036000830152614aa881614a6c565b9050919050565b6000606082019050614ac460008301866142c1565b614ad160208301856142c1565b614ade6040830184614193565b949350505050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614b42602a83613fc3565b9150614b4d82614ae6565b604082019050919050565b60006020820190508181036000830152614b7181614b35565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd4602283613fc3565b9150614bdf82614b78565b604082019050919050565b60006020820190508181036000830152614c0381614bc7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c66602683613fc3565b9150614c7182614c0a565b604082019050919050565b60006020820190508181036000830152614c9581614c59565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614cd2602083613fc3565b9150614cdd82614c9c565b602082019050919050565b60006020820190508181036000830152614d0181614cc5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d64602483613fc3565b9150614d6f82614d08565b604082019050919050565b60006020820190508181036000830152614d9381614d57565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614df6602283613fc3565b9150614e0182614d9a565b604082019050919050565b60006020820190508181036000830152614e2581614de9565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614e62601d83613fc3565b9150614e6d82614e2c565b602082019050919050565b60006020820190508181036000830152614e9181614e55565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ef4602583613fc3565b9150614eff82614e98565b604082019050919050565b60006020820190508181036000830152614f2381614ee7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f86602383613fc3565b9150614f9182614f2a565b604082019050919050565b60006020820190508181036000830152614fb581614f79565b9050919050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b6000614ff2601283613fc3565b9150614ffd82614fbc565b602082019050919050565b6000602082019050818103600083015261502181614fe5565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c416d6f756e7400600082015250565b600061505e601f83613fc3565b915061506982615028565b602082019050919050565b6000602082019050818103600083015261508d81615051565b9050919050565b7f596f752061726520657863656564696e67206d6178427579416d6f756e740000600082015250565b60006150ca601e83613fc3565b91506150d582615094565b602082019050919050565b600060208201905081810360008301526150f9816150bd565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b6000615136601b83613fc3565b915061514182615100565b602082019050919050565b6000602082019050818103600083015261516581615129565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006151a682614073565b91506151b183614073565b9250826151c1576151c061516c565b5b828204905092915050565b60006151d782614073565b91506151e283614073565b9250828210156151f5576151f4614514565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061525c603883613fc3565b915061526782615200565b604082019050919050565b6000602082019050818103600083015261528b8161524f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152ee602683613fc3565b91506152f982615292565b604082019050919050565b6000602082019050818103600083015261531d816152e1565b9050919050565b7f4661696c656420746f2073656e642045544820746f206465762077616c6c6574600082015250565b600061535a602083613fc3565b915061536582615324565b602082019050919050565b600060208201905081810360008301526153898161534d565b9050919050565b60006040820190506153a56000830185614193565b6153b26020830184614193565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561542d5761542c613edd565b5b600061543b84828501614964565b91505092915050565b6000819050919050565b600061546961546461545f84615444565b614210565b614073565b9050919050565b6154798161544e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6154b481613f02565b82525050565b60006154c683836154ab565b60208301905092915050565b6000602082019050919050565b60006154ea8261547f565b6154f4818561548a565b93506154ff8361549b565b8060005b8381101561553057815161551788826154ba565b9750615522836154d2565b925050600181019050615503565b5085935050505092915050565b600060a0820190506155526000830188614193565b61555f6020830187615470565b818103604083015261557181866154df565b905061558060608301856142c1565b61558d6080830184614193565b9695505050505050565b600060c0820190506155ac60008301896142c1565b6155b96020830188614193565b6155c66040830187615470565b6155d36060830186615470565b6155e060808301856142c1565b6155ed60a0830184614193565b979650505050505050565b60008060006060848603121561561157615610613edd565b5b600061561f86828701614605565b935050602061563086828701614605565b925050604061564186828701614605565b9150509250925092565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006156a7602183613fc3565b91506156b28261564b565b604082019050919050565b600060208201905081810360008301526156d68161569a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615739602283613fc3565b9150615744826156dd565b604082019050919050565b600060208201905081810360008301526157688161572c565b905091905056fea2646970667358221220dc18a9c782b118eb5920a6c222954fcb918dde2a2d057f708a98ee7fdbce5a6764736f6c634300080f003360806040523480156200001157600080fd5b506040518060400160405280601581526020017f4c696e715f4469766964656e645f547261636b657200000000000000000000008152506040518060400160405280601581526020017f4c696e715f4469766964656e645f547261636b657200000000000000000000008152508181816003908162000091919062000416565b508060049081620000a3919062000416565b505050620000c6620000ba620000ce60201b60201c565b620000d660201b60201c565b5050620004fd565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021e57607f821691505b602082108103620002345762000233620001d6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025f565b620002aa86836200025f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f7620002f1620002eb84620002c2565b620002cc565b620002c2565b9050919050565b6000819050919050565b6200031383620002d6565b6200032b6200032282620002fe565b8484546200026c565b825550505050565b600090565b6200034262000333565b6200034f81848462000308565b505050565b5b8181101562000377576200036b60008262000338565b60018101905062000355565b5050565b601f821115620003c65762000390816200023a565b6200039b846200024f565b81016020851015620003ab578190505b620003c3620003ba856200024f565b83018262000354565b50505b505050565b600082821c905092915050565b6000620003eb60001984600802620003cb565b1980831691505092915050565b6000620004068383620003d8565b9150826002028217905092915050565b62000421826200019c565b67ffffffffffffffff8111156200043d576200043c620001a7565b5b62000449825462000205565b620004568282856200037b565b600060209050601f8311600181146200048e576000841562000479578287015190505b620004858582620003f8565b865550620004f5565b601f1984166200049e866200023a565b60005b82811015620004c857848901518255600182019150602085019450602081019050620004a1565b86831015620004e85784890151620004e4601f891682620003d8565b8355505b6001600288020188555050505b505050505050565b612edb806200050d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f578063a8b9d240116100a2578063e30443bc11610071578063e30443bc146105e2578063ede6ad9c146105fe578063f2fde38b1461061a578063fbcbc0f114610636576101e5565b8063a8b9d24014610522578063a9059cbb14610552578063aafd847a14610582578063dd62ed3e146105b2576101e5565b806391b89fba116100de57806391b89fba1461048657806395d89b41146104b65780639e1e0661146104d4578063a457c2d7146104f2576101e5565b8063715018a614610410578063807ab4f71461041a57806385a6b3ae1461044a5780638da5cb5b14610468576101e5565b806327ce014711610187578063497ec82311610156578063497ec8231461038a5780634e7b827f146103a65780636a474002146103d657806370a08231146103e0576101e5565b806327ce0147146102f0578063313ce56714610320578063395093511461033e57806344b6bd9e1461036e576101e5565b80631162c4b6116101c35780631162c4b61461025457806318160ddd14610272578063226cfa3d1461029057806323b872dd146102c0576101e5565b80630483f7a0146101ea57806306fdde0314610206578063095ea7b314610224575b600080fd5b61020460048036038101906101ff919061205a565b61066a565b005b61020e6107a6565b60405161021b9190612133565b60405180910390f35b61023e6004803603810190610239919061218b565b610838565b60405161024b91906121da565b60405180910390f35b61025c61085b565b6040516102699190612204565b60405180910390f35b61027a610881565b604051610287919061222e565b60405180910390f35b6102aa60048036038101906102a59190612249565b61088b565b6040516102b7919061222e565b60405180910390f35b6102da60048036038101906102d59190612276565b6108a3565b6040516102e791906121da565b60405180910390f35b61030a60048036038101906103059190612249565b6108d2565b604051610317919061222e565b60405180910390f35b610328610975565b60405161033591906122e5565b60405180910390f35b6103586004803603810190610353919061218b565b61097e565b60405161036591906121da565b60405180910390f35b61038860048036038101906103839190612249565b6109b5565b005b6103a4600480360381019061039f9190612300565b610a01565b005b6103c060048036038101906103bb9190612249565b610b05565b6040516103cd91906121da565b60405180910390f35b6103de610b25565b005b6103fa60048036038101906103f59190612249565b610b31565b604051610407919061222e565b60405180910390f35b610418610b79565b005b610434600480360381019061042f919061237e565b610b8d565b60405161044191906121da565b60405180910390f35b610452610c54565b60405161045f919061222e565b60405180910390f35b610470610c5a565b60405161047d9190612204565b60405180910390f35b6104a0600480360381019061049b9190612249565b610c84565b6040516104ad919061222e565b60405180910390f35b6104be610c96565b6040516104cb9190612133565b60405180910390f35b6104dc610d28565b6040516104e9919061222e565b60405180910390f35b61050c6004803603810190610507919061218b565b610d2e565b60405161051991906121da565b60405180910390f35b61053c60048036038101906105379190612249565b610da5565b604051610549919061222e565b60405180910390f35b61056c6004803603810190610567919061218b565b610e08565b60405161057991906121da565b60405180910390f35b61059c60048036038101906105979190612249565b610e2b565b6040516105a9919061222e565b60405180910390f35b6105cc60048036038101906105c79190612300565b610e74565b6040516105d9919061222e565b60405180910390f35b6105fc60048036038101906105f7919061218b565b610efb565b005b610618600480360381019061061391906123ab565b610f63565b005b610634600480360381019061062f9190612249565b611045565b005b610650600480360381019061064b9190612249565b6110c8565b6040516106619594939291906123d8565b60405180910390f35b6106726111a8565b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036106ce57600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060011515811515036107415761073c826000611226565b610754565b6107538261074e84610b31565b611226565b5b8173ffffffffffffffffffffffffffffffffffffffff167fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be8260405161079a91906121da565b60405180910390a25050565b6060600380546107b59061245a565b80601f01602080910402602001604051908101604052809291908181526020018280546107e19061245a565b801561082e5780601f106108035761010080835404028352916020019161082e565b820191906000526020600020905b81548152906001019060200180831161081157829003601f168201915b5050505050905090565b600080610843611293565b905061085081858561129b565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600d6020528060005260406000206000915090505481565b6000806108ae611293565b90506108bb858285611464565b6108c68585856114f0565b60019150509392505050565b600070010000000000000000000000000000000061096461095f600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095161094c61093b88610b31565b60075461153690919063ffffffff16565b6115b0565b6115cd90919063ffffffff16565b611618565b61096e91906124e9565b9050919050565b60006012905090565b600080610989611293565b90506109aa81858561099b8589610e74565b6109a5919061251a565b61129b565b600191505092915050565b6109bd6111a8565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a096111a8565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a5f9190612204565b602060405180830381865afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190612585565b6040518363ffffffff1660e01b8152600401610abd9291906125b2565b6020604051808303816000875af1158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0091906125f0565b505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b610b2e3361162f565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b816111a8565b610b8b60006118b9565b565b6000610b976111a8565b6000610ba28361162f565b90506000811115610c495742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610c37919061222e565b60405180910390a26001915050610c4f565b60009150505b919050565b600a5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c8f82610da5565b9050919050565b606060048054610ca59061245a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd19061245a565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b5050505050905090565b600b5481565b600080610d39611293565b90506000610d478286610e74565b905083811015610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d839061268f565b60405180910390fd5b610d99828686840361129b565b60019250505092915050565b6000610e01600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610df3846108d2565b61197f90919063ffffffff16565b9050919050565b600080610e13611293565b9050610e208185856114f0565b600191505092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f036111a8565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f5f57610f5e8282611226565b5b5050565b610f6b6111a8565b6000610f75610881565b11610f7f57600080fd5b600081111561104257610fd2610f93610881565b610fb77001000000000000000000000000000000008461153690919063ffffffff16565b610fc191906124e9565b6007546119c990919063ffffffff16565b6007819055503373ffffffffffffffffffffffffffffffffffffffff167fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165118260405161101e919061222e565b60405180910390a261103b81600a546119c990919063ffffffff16565b600a819055505b50565b61104d6111a8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612721565b60405180910390fd5b6110c5816118b9565b50565b60008060008060006110d8611f81565b86816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061111987610da5565b81602001818152505061112b876108d2565b816040018181525050600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548160600181815250508060000151816020015182604001518360600151600b54955095509550955095505091939590929450565b6111b0611293565b73ffffffffffffffffffffffffffffffffffffffff166111ce610c5a565b73ffffffffffffffffffffffffffffffffffffffff1614611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9061278d565b60405180910390fd5b565b600061123183610b31565b905080821115611262576000611250828461197f90919063ffffffff16565b905061125c8482611a27565b5061128e565b8082101561128d57600061127f838361197f90919063ffffffff16565b905061128b8482611ae6565b505b5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113019061281f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611370906128b1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611457919061222e565b60405180910390a3505050565b60006114708484610e74565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114ea57818110156114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d39061291d565b60405180910390fd5b6114e9848484840361129b565b5b50505050565b6000611531576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611528906129af565b60405180910390fd5b505050565b600080830361154857600090506115aa565b6000828461155691906129cf565b905082848261156591906124e9565b146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90612a9b565b60405180910390fd5b809150505b92915050565b60008082905060008112156115c457600080fd5b80915050919050565b60008082846115dc9190612ac5565b9050600083121580156115ef5750838112155b80611605575060008312801561160457508381125b5b61160e57600080fd5b8091505092915050565b60008082121561162757600080fd5b819050919050565b60008061163b83610da5565b905060008111156118ae5761169881600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c990919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600b60008282546116ed919061251a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d8260405161173a919061222e565b60405180910390a26000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016117a1929190612bb8565b6020604051808303816000875af11580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e491906125f0565b9050806118a45761183d82600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197f90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008282546118929190612be1565b925050819055506000925050506118b4565b81925050506118b4565b60009150505b919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006119c183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba5565b905092915050565b60008082846119d8919061251a565b905083811015611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1490612c61565b60405180910390fd5b8091505092915050565b611a318282611c09565b611a9f611a51611a4c8360075461153690919063ffffffff16565b6115b0565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5f90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611af08282611daa565b611b5e611b10611b0b8360075461153690919063ffffffff16565b6115b0565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115cd90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000838311158290611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be49190612133565b60405180910390fd5b5060008385611bfc9190612be1565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f90612ccd565b60405180910390fd5b611c8460008383611f77565b8060026000828254611c96919061251a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d47919061222e565b60405180910390a3611d5b60008383611f7c565b5050565b6000808284611d6e9190612ced565b905060008312158015611d815750838113155b80611d975750600083128015611d9657508381135b5b611da057600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090612df3565b60405180910390fd5b611e2582600083611f77565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea290612e85565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5e919061222e565b60405180910390a3611f7283600084611f7c565b505050565b505050565b505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fef82611fc4565b9050919050565b611fff81611fe4565b811461200a57600080fd5b50565b60008135905061201c81611ff6565b92915050565b60008115159050919050565b61203781612022565b811461204257600080fd5b50565b6000813590506120548161202e565b92915050565b6000806040838503121561207157612070611fbf565b5b600061207f8582860161200d565b925050602061209085828601612045565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120d45780820151818401526020810190506120b9565b838111156120e3576000848401525b50505050565b6000601f19601f8301169050919050565b60006121058261209a565b61210f81856120a5565b935061211f8185602086016120b6565b612128816120e9565b840191505092915050565b6000602082019050818103600083015261214d81846120fa565b905092915050565b6000819050919050565b61216881612155565b811461217357600080fd5b50565b6000813590506121858161215f565b92915050565b600080604083850312156121a2576121a1611fbf565b5b60006121b08582860161200d565b92505060206121c185828601612176565b9150509250929050565b6121d481612022565b82525050565b60006020820190506121ef60008301846121cb565b92915050565b6121fe81611fe4565b82525050565b600060208201905061221960008301846121f5565b92915050565b61222881612155565b82525050565b6000602082019050612243600083018461221f565b92915050565b60006020828403121561225f5761225e611fbf565b5b600061226d8482850161200d565b91505092915050565b60008060006060848603121561228f5761228e611fbf565b5b600061229d8682870161200d565b93505060206122ae8682870161200d565b92505060406122bf86828701612176565b9150509250925092565b600060ff82169050919050565b6122df816122c9565b82525050565b60006020820190506122fa60008301846122d6565b92915050565b6000806040838503121561231757612316611fbf565b5b60006123258582860161200d565b92505060206123368582860161200d565b9150509250929050565b600061234b82611fc4565b9050919050565b61235b81612340565b811461236657600080fd5b50565b60008135905061237881612352565b92915050565b60006020828403121561239457612393611fbf565b5b60006123a284828501612369565b91505092915050565b6000602082840312156123c1576123c0611fbf565b5b60006123cf84828501612176565b91505092915050565b600060a0820190506123ed60008301886121f5565b6123fa602083018761221f565b612407604083018661221f565b612414606083018561221f565b612421608083018461221f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061247257607f821691505b6020821081036124855761248461242b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124f482612155565b91506124ff83612155565b92508261250f5761250e61248b565b5b828204905092915050565b600061252582612155565b915061253083612155565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612565576125646124ba565b5b828201905092915050565b60008151905061257f8161215f565b92915050565b60006020828403121561259b5761259a611fbf565b5b60006125a984828501612570565b91505092915050565b60006040820190506125c760008301856121f5565b6125d4602083018461221f565b9392505050565b6000815190506125ea8161202e565b92915050565b60006020828403121561260657612605611fbf565b5b6000612614848285016125db565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006126796025836120a5565b91506126848261261d565b604082019050919050565b600060208201905081810360008301526126a88161266c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061270b6026836120a5565b9150612716826126af565b604082019050919050565b6000602082019050818103600083015261273a816126fe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127776020836120a5565b915061278282612741565b602082019050919050565b600060208201905081810360008301526127a68161276a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128096024836120a5565b9150612814826127ad565b604082019050919050565b60006020820190508181036000830152612838816127fc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061289b6022836120a5565b91506128a68261283f565b604082019050919050565b600060208201905081810360008301526128ca8161288e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612907601d836120a5565b9150612912826128d1565b602082019050919050565b60006020820190508181036000830152612936816128fa565b9050919050565b7f4c696e715f4469766964656e645f547261636b65723a204e6f207472616e736660008201527f65727320616c6c6f776564000000000000000000000000000000000000000000602082015250565b6000612999602b836120a5565b91506129a48261293d565b604082019050919050565b600060208201905081810360008301526129c88161298c565b9050919050565b60006129da82612155565b91506129e583612155565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a1e57612a1d6124ba565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a856021836120a5565b9150612a9082612a29565b604082019050919050565b60006020820190508181036000830152612ab481612a78565b9050919050565b6000819050919050565b6000612ad082612abb565b9150612adb83612abb565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03831360008312151615612b1657612b156124ba565b5b817f8000000000000000000000000000000000000000000000000000000000000000038312600083121615612b4e57612b4d6124ba565b5b828201905092915050565b6000819050919050565b6000612b7e612b79612b7484611fc4565b612b59565b611fc4565b9050919050565b6000612b9082612b63565b9050919050565b6000612ba282612b85565b9050919050565b612bb281612b97565b82525050565b6000604082019050612bcd6000830185612ba9565b612bda602083018461221f565b9392505050565b6000612bec82612155565b9150612bf783612155565b925082821015612c0a57612c096124ba565b5b828203905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612c4b601b836120a5565b9150612c5682612c15565b602082019050919050565b60006020820190508181036000830152612c7a81612c3e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612cb7601f836120a5565b9150612cc282612c81565b602082019050919050565b60006020820190508181036000830152612ce681612caa565b9050919050565b6000612cf882612abb565b9150612d0383612abb565b9250827f800000000000000000000000000000000000000000000000000000000000000001821260008412151615612d3e57612d3d6124ba565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018213600084121615612d7657612d756124ba565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ddd6021836120a5565b9150612de882612d81565b604082019050919050565b60006020820190508181036000830152612e0c81612dd0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e6f6022836120a5565b9150612e7a82612e13565b604082019050919050565b60006020820190508181036000830152612e9e81612e62565b905091905056fea264697066735822122088ee654260d0b54e103800d191ff3528794b6408cda3873543aa4b0f67b02a6564736f6c634300080f0033000000000000000000000000eed942f04abcc736e39e5ddfd541cc30f1edb13d