608060405234801562000010575f80fd5b5073d000d16f48b9ca41b316ca7a94b85a2f7a0e69615f80015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600981526020017f4d69746f426c6f627300000000000000000000000000000000000000000000008152505f6005019081620000ae919062000e97565b506040518060400160405280600581526020017f424c4f42530000000000000000000000000000000000000000000000000000008152505f6006019081620000f7919062000e97565b5060405180608001604052806059815260200162004561605991395f600701908162000124919062000e97565b5067016345785d8a00005f60080181905550600160095f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f6380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f3090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f1b5f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055505f60040181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001620045ba602191398051906020012061010060405162000352919062000f8c565b60405180910390a35f5b610100811015620003ed5760018161010062000379919062000fd4565b62000385919062000fd4565b8273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506200035c565b506200041181620004036200041860201b60201c565b60996200044160201b60201c565b50620010b2565b5f805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f90505f8062000459876200056760201b60201c565b5f1c90505f8567ffffffffffffffff8111156200047b576200047a62000c3d565b5b604051908082528060200260200182016040528015620004aa5781602001602082028036833780820191505090505b5090505b5f82118015620004bd57508583105b156200051f576001808316036200050a57836001901b5f1b851794506001846101000101818480600101955081518110620004fd57620004fc6200100e565b5b6020026020010181815250505b8380600101945050600182901c9150620004ae565b8583146200052b575f80fd5b84856200053e8a6200056760201b60201c565b161462000549575f80fd5b6200055d88888784620005b160201b60201c565b5050505050505050565b5f806002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01549050919050565b5f815111620005be575f80fd5b5f5b815181101562000798575f73ffffffffffffffffffffffffffffffffffffffff166200060f838381518110620005fb57620005fa6200100e565b5b602002602001015162000b3e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000712575f806003015f8484815181106200064757620006466200100e565b5b602002602001015181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818181518110620006af57620006ae6200100e565b5b60200260200101515f73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b8181815181106200072857620007276200100e565b5b60200260200101518473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050620005c0565b50815f6002015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f82825418925050819055505f805f1b620007fc866200056760201b60201c565b1490505f805f1b62000814866200056760201b60201c565b149050835f6002015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282541792505081905550811562000a33575f806200087e62000ba460201b60201c565b90505f5b8151811015620008f4578873ffffffffffffffffffffffffffffffffffffffff16828281518110620008b957620008b86200100e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603620008e657809250620008f4565b808060010191505062000882565b5082156200096157865f60040183815481106200091657620009156200100e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a2b565b806001825103815181106200097b576200097a6200100e565b5b60200260200101515f60040183815481106200099c576200099b6200100e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600401805480620009f857620009f76200103b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b505062000a9e565b801562000a9d575f60040185908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f801b62000ab2866200056760201b60201c565b62000ac3886200056760201b60201c565b161462000ace575f80fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16604051806060016040528060218152602001620045ba6021913980519060200120855160405162000b2e919062000f8c565b60405180910390a3505050505050565b5f6101008211801562000b615750610100600262000b5d919062001068565b8211155b62000b6a575f80fd5b5f6003015f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60605f60040180548060200260200160405190810160405280929190818152602001828054801562000c2957602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000bdf575b5050505050905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000caf57607f821691505b60208210810362000cc55762000cc462000c6a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cec565b62000d35868362000cec565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d7f62000d7962000d738462000d4d565b62000d56565b62000d4d565b9050919050565b5f819050919050565b62000d9a8362000d5f565b62000db262000da98262000d86565b84845462000cf8565b825550505050565b5f90565b62000dc862000dba565b62000dd581848462000d8f565b505050565b5b8181101562000dfc5762000df05f8262000dbe565b60018101905062000ddb565b5050565b601f82111562000e4b5762000e158162000ccb565b62000e208462000cdd565b8101602085101562000e30578190505b62000e4862000e3f8562000cdd565b83018262000dda565b50505b505050565b5f82821c905092915050565b5f62000e6d5f198460080262000e50565b1980831691505092915050565b5f62000e87838362000e5c565b9150826002028217905092915050565b62000ea28262000c33565b67ffffffffffffffff81111562000ebe5762000ebd62000c3d565b5b62000eca825462000c97565b62000ed782828562000e00565b5f60209050601f83116001811462000f0d575f841562000ef8578287015190505b62000f04858262000e7a565b86555062000f73565b601f19841662000f1d8662000ccb565b5f5b8281101562000f465784890151825560018201915060208501945060208101905062000f1f565b8683101562000f66578489015162000f62601f89168262000e5c565b8355505b6001600288020188555050505b505050505050565b62000f868162000d4d565b82525050565b5f60208201905062000fa15f83018462000f7b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000fe08262000d4d565b915062000fed8362000d4d565b925082820190508082111562001008576200100762000fa7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f620010748262000d4d565b9150620010818362000d4d565b9250828202620010918162000d4d565b91508282048414831517620010ab57620010aa62000fa7565b5b5092915050565b6134a180620010c05f395ff3fe60806040526004361061019b575f3560e01c80638188f71c116100eb578063c87b56dd11610089578063dd62ed3e11610063578063dd62ed3e146105ff578063e4b50cb81461063b578063e985e9c514610679578063f4a0a528146106b55761019b565b8063c87b56dd14610573578063d28a4761146105af578063dba124fb146105d75761019b565b8063a0712d68116100c5578063a0712d68146104cb578063a22cb465146104e7578063a9059cbb1461050f578063b88d4fde1461054b5761019b565b80638188f71c1461044d5780638da5cb5b1461047757806395d89b41146104a15761019b565b806323b872dd1161015857806342842e0e1161013257806342842e0e1461038557806355f804b3146103ad5780636352211e146103d557806370a08231146104115761019b565b806323b872dd146102cf5780632497ab151461030b57806332ba0a1e146103475761019b565b806301ffc9a71461019f57806306fdde03146101db578063081812fc14610205578063095ea7b31461024157806313af40351461027d57806318160ddd146102a5575b5f80fd5b3480156101aa575f80fd5b506101c560048036038101906101c09190612361565b6106dd565b6040516101d291906123a6565b60405180910390f35b3480156101e6575f80fd5b506101ef6106fa565b6040516101fc9190612449565b60405180910390f35b348015610210575f80fd5b5061022b6004803603810190610226919061249c565b61078c565b6040516102389190612506565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612549565b6107ee565b60405161027491906123a6565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612587565b610838565b005b3480156102b0575f80fd5b506102b96108ba565b6040516102c691906125c1565b60405180910390f35b3480156102da575f80fd5b506102f560048036038101906102f091906125da565b6108c3565b60405161030291906123a6565b60405180910390f35b348015610316575f80fd5b50610331600480360381019061032c9190612587565b6109e4565b60405161033e9190612642565b60405180910390f35b348015610352575f80fd5b5061036d6004803603810190610368919061279b565b610a2e565b60405161037c9392919061299c565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a691906125da565b610c15565b005b3480156103b8575f80fd5b506103d360048036038101906103ce9190612a96565b610c34565b005b3480156103e0575f80fd5b506103fb60048036038101906103f6919061249c565b610c87565b6040516104089190612506565b60405180910390f35b34801561041c575f80fd5b5061043760048036038101906104329190612587565b610d36565b60405161044491906125c1565b60405180910390f35b348015610458575f80fd5b50610461610d4f565b60405161046e9190612add565b60405180910390f35b348015610482575f80fd5b5061048b610ddc565b6040516104989190612506565b60405180910390f35b3480156104ac575f80fd5b506104b5610e05565b6040516104c29190612449565b60405180910390f35b6104e560048036038101906104e0919061249c565b610e97565b005b3480156104f2575f80fd5b5061050d60048036038101906105089190612b27565b610f86565b005b34801561051a575f80fd5b5061053560048036038101906105309190612549565b611083565b60405161054291906123a6565b60405180910390f35b348015610556575f80fd5b50610571600480360381019061056c9190612c03565b611099565b005b34801561057e575f80fd5b506105996004803603810190610594919061249c565b61116e565b6040516105a69190612449565b60405180910390f35b3480156105ba575f80fd5b506105d560048036038101906105d09190612c83565b6113dd565b005b3480156105e2575f80fd5b506105fd60048036038101906105f89190612587565b6113eb565b005b34801561060a575f80fd5b5061062560048036038101906106209190612cdd565b61146e565b60405161063291906125c1565b60405180910390f35b348015610646575f80fd5b50610661600480360381019061065c919061249c565b6114f5565b60405161067093929190612d1b565b60405180910390f35b348015610684575f80fd5b5061069f600480360381019061069a9190612cdd565b611521565b6040516106ac91906123a6565b60405180910390f35b3480156106c0575f80fd5b506106db60048036038101906106d6919061249c565b6115b4565b005b6009602052805f5260405f205f915054906101000a900460ff1681565b60605f600501805461070b90612d84565b80601f016020809104026020016040519081016040528092919081815260200182805461073790612d84565b80156107825780601f1061075957610100808354040283529160200191610782565b820191905f5260205f20905b81548152906001019060200180831161076557829003601f168201915b5050505050905090565b5f610100821180156107ac575061010060026107a89190612de1565b8211155b6107b4575f80fd5b5f6003015f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f6101008211801561080e5750610100600261080a9190612de1565b8211155b156108225761081d83836115fe565b61082e565b61082d3384846116e7565b5b6001905092915050565b610840610ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610876575f80fd5b805f80015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610100905090565b5f610100821180156108e3575061010060026108df9190612de1565b8211155b156108f8576108f38484846117d2565b6109d9565b5f610903853361146e565b905082811015610911575f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109cc57825f6002015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109c49190612e22565b925050819055505b6109d785858561191c565b505b600190509392505050565b5f806002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01549050919050565b60608060605f845190508067ffffffffffffffff811115610a5257610a5161265f565b5b604051908082528060200260200182016040528015610a805781602001602082028036833780820191505090505b5093508067ffffffffffffffff811115610a9d57610a9c61265f565b5b604051908082528060200260200182016040528015610acb5781602001602082028036833780820191505090505b5092508067ffffffffffffffff811115610ae857610ae761265f565b5b604051908082528060200260200182016040528015610b1b57816020015b6060815260200190600190039081610b065790505b5091505f5b81811015610c0c57610b4b868281518110610b3e57610b3d612e55565b5b60200260200101516114f5565b878481518110610b5e57610b5d612e55565b5b60200260200101878581518110610b7857610b77612e55565b5b60200260200101878681518110610b9257610b91612e55565b5b602002602001018390528373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050508080600101915050610b20565b50509193909250565b610c2f83838360405180602001604052805f815250611099565b505050565b610c3c610ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c72575f80fd5b805f6007019081610c83919061301f565b5050565b5f61010082118015610c9e57506101006002028211155b610ca6575f80fd5b5f60016101008403036001901b5f1b90505f610cc0610d4f565b90505f5b8151811015610d2a578283610cf2848481518110610ce557610ce4612e55565b5b60200260200101516109e4565b1603610d1d57818181518110610d0b57610d0a612e55565b5b60200260200101519350505050610d31565b8080600101915050610cc4565b505f925050505b919050565b5f610d48610d43836109e4565b611a1d565b9050919050565b60605f600401805480602002602001604051908101604052809291908181526020018280548015610dd257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d89575b5050505050905090565b5f805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60605f6006018054610e1690612d84565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4290612d84565b8015610e8d5780601f10610e6457610100808354040283529160200191610e8d565b820191905f5260205f20905b815481529060010190602001808311610e7057829003601f168201915b5050505050905090565b5f3090505f610ea582610d36565b905080831115610eb3575f80fd5b5f806008015484610ec49190612de1565b905080341015610ed2575f80fd5b610edd83338661191c565b610ee5610ddc565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610f27573d5f803e3d5ffd5b5080341115610f80573373ffffffffffffffffffffffffffffffffffffffff166108fc8234610f569190612e22565b90811502906040515f60405180830381858888f19350505050158015610f7e573d5f803e3d5ffd5b505b50505050565b805f6002015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161107791906123a6565b60405180910390a35050565b5f61108f33848461191c565b6001905092915050565b6110a48484846117d2565b5f833b90505f8163ffffffff1611156111675763150b7a0260e01b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016110fe9493929190613140565b6020604051808303815f875af115801561111a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113e919061319e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611166575f80fd5b5b5050505050565b60605f61117a83610c87565b90505f7318e5f92103d1b34623738ee79214b1659f2ee10973ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016111ca9190612506565b602060405180830381865afa1580156111e5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120991906131dd565b670de0b6b3a7640000737f59b64c6ee521c0d7e590cf8e4b843caa236f9673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b815260040161125f9190612506565b602060405180830381865afa15801561127a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e91906131dd565b6112a89190612de1565b6112b29190613208565b90505f67016345785d8a0000821115611399576702c68af0bb1400008210156112de5760019050611398565b670429d069189e00008210156112f75760029050611397565b6706f05b59d3b200008210156113105760039050611396565b670a688906bd8b00008210156113295760049050611395565b670de0b6b3a76400008210156113425760059050611394565b671bc16d674ec8000082101561135b5760069050611393565b6729a2241af62c00008210156113745760079050611392565b6729a2241af62c0000821061138c5760089050611391565b600190505b5b5b5b5b5b5b5b5b5f6007016113a686611b2c565b6113b28360ff16611b2c565b6040516020016113c493929190613389565b6040516020818303038152906040529350505050919050565b6113e78282611bf6565b5050565b6113f3610ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611429575f80fd5b805f6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f806002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f80606061150284610c87565b61150b8561078c565b6115148661116e565b9250925092509193909250565b5f806002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6115bc610ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f2575f80fd5b805f6008018190555050565b5f60016101008361160f9190612e22565b6116199190612e22565b6001901b5f1b9050808161162c336109e4565b1614611636575f80fd5b825f6003015f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b805f6002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1660405180606001604052806021815260200161342a6021913980519060200120836040516117c591906125c1565b60405180910390a3505050565b610100811180156117e857506101006002028111155b6117f0575f80fd5b5f60016101008303036001901b5f1b9050808161180c866109e4565b1614611816575f80fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061188357506118548261078c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061189457506118938433611521565b5b61189c575f80fd5b5f600167ffffffffffffffff8111156118b8576118b761265f565b5b6040519080825280602002602001820160405280156118e65781602001602082028036833780820191505090505b50905082815f815181106118fd576118fc612e55565b5b60200260200101818152505061191585858484611c79565b5050505050565b5f805f90505f8061192c876109e4565b5f1c90505f8567ffffffffffffffff81111561194b5761194a61265f565b5b6040519080825280602002602001820160405280156119795781602001602082028036833780820191505090505b5090505b5f8211801561198b57508583105b156119e7576001808316036119d357836001901b5f1b8517945060018461010001018184806001019550815181106119c6576119c5612e55565b5b6020026020010181815250505b8380600101945050600182901c915061197d565b8583146119f2575f80fd5b84856119fd8a6109e4565b1614611a07575f80fd5b611a1388888784611c79565b5050505050505050565b5f80825f1c90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103611a5657610100915050611b27565b7f5555555555555555555555555555555555555555555555555555555555555555600182901c16810390507f3333333333333333333333333333333333333333333333333333333333333333600282901c167f333333333333333333333333333333333333333333333333333333333333333382160190507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f600482901c820116905060f87f01010101010101010101010101010101010101010101010101010101010101018202901c9050809150505b919050565b60605f6001611b3a846121aa565b0190505f8167ffffffffffffffff811115611b5857611b5761265f565b5b6040519080825280601f01601f191660200182016040528015611b8a5781602001600182028036833780820191505090505b5090505f82602001820190505b600115611beb578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611be057611bdf6133cf565b5b0494505f8503611b97575b819350505050919050565b5f805f90505b8251811015611c3e576001610100848381518110611c1d57611c1c612e55565b5b602002602001015103036001901b5f1b821791508080600101915050611bfc565b508151611c4a82611a1d565b14611c53575f80fd5b8081611c5e336109e4565b1614611c68575f80fd5b611c7433848385611c79565b505050565b5f815111611c85575f80fd5b5f5b8151811015611e48575f73ffffffffffffffffffffffffffffffffffffffff16611cca838381518110611cbd57611cbc612e55565b5b602002602001015161078c565b73ffffffffffffffffffffffffffffffffffffffff1614611dc6575f806003015f848481518110611cfe57611cfd612e55565b5b602002602001015181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818181518110611d6357611d62612e55565b5b60200260200101515f73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b818181518110611dd957611dd8612e55565b5b60200260200101518473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050611c87565b50815f6002015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f82825418925050819055505f805f1b611ea4866109e4565b1490505f805f1b611eb4866109e4565b149050835f6002015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f828254179250508190555081156120b4575f80611f15610d4f565b90505f5b8151811015611f84578873ffffffffffffffffffffffffffffffffffffffff16828281518110611f4c57611f4b612e55565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611f7757809250611f84565b8080600101915050611f19565b508215611fec57865f6004018381548110611fa257611fa1612e55565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506120ad565b8060018251038151811061200357612002612e55565b5b60200260200101515f600401838154811061202157612020612e55565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60040180548061207a576120796133fc565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555b505061211e565b801561211d575f60040185908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f801b61212a866109e4565b612133886109e4565b161461213d575f80fd5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1660405180606001604052806021815260200161344b6021913980519060200120855160405161219a91906125c1565b60405180910390a3505050505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612206577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816121fc576121fb6133cf565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612243576d04ee2d6d415b85acef81000000008381612239576122386133cf565b5b0492506020810190505b662386f26fc10000831061227257662386f26fc100008381612268576122676133cf565b5b0492506010810190505b6305f5e100831061229b576305f5e1008381612291576122906133cf565b5b0492506008810190505b61271083106122c05761271083816122b6576122b56133cf565b5b0492506004810190505b606483106122e357606483816122d9576122d86133cf565b5b0492506002810190505b600a83106122f2576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123408161230c565b811461234a575f80fd5b50565b5f8135905061235b81612337565b92915050565b5f6020828403121561237657612375612304565b5b5f6123838482850161234d565b91505092915050565b5f8115159050919050565b6123a08161238c565b82525050565b5f6020820190506123b95f830184612397565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123f65780820151818401526020810190506123db565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61241b826123bf565b61242581856123c9565b93506124358185602086016123d9565b61243e81612401565b840191505092915050565b5f6020820190508181035f8301526124618184612411565b905092915050565b5f819050919050565b61247b81612469565b8114612485575f80fd5b50565b5f8135905061249681612472565b92915050565b5f602082840312156124b1576124b0612304565b5b5f6124be84828501612488565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124f0826124c7565b9050919050565b612500816124e6565b82525050565b5f6020820190506125195f8301846124f7565b92915050565b612528816124e6565b8114612532575f80fd5b50565b5f813590506125438161251f565b92915050565b5f806040838503121561255f5761255e612304565b5b5f61256c85828601612535565b925050602061257d85828601612488565b9150509250929050565b5f6020828403121561259c5761259b612304565b5b5f6125a984828501612535565b91505092915050565b6125bb81612469565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b5f805f606084860312156125f1576125f0612304565b5b5f6125fe86828701612535565b935050602061260f86828701612535565b925050604061262086828701612488565b9150509250925092565b5f819050919050565b61263c8161262a565b82525050565b5f6020820190506126555f830184612633565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61269582612401565b810181811067ffffffffffffffff821117156126b4576126b361265f565b5b80604052505050565b5f6126c66122fb565b90506126d2828261268c565b919050565b5f67ffffffffffffffff8211156126f1576126f061265f565b5b602082029050602081019050919050565b5f80fd5b5f612718612713846126d7565b6126bd565b9050808382526020820190506020840283018581111561273b5761273a612702565b5b835b8181101561276457806127508882612488565b84526020840193505060208101905061273d565b5050509392505050565b5f82601f8301126127825761278161265b565b5b8135612792848260208601612706565b91505092915050565b5f602082840312156127b0576127af612304565b5b5f82013567ffffffffffffffff8111156127cd576127cc612308565b5b6127d98482850161276e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612814816124e6565b82525050565b5f612825838361280b565b60208301905092915050565b5f602082019050919050565b5f612847826127e2565b61285181856127ec565b935061285c836127fc565b805f5b8381101561288c578151612873888261281a565b975061287e83612831565b92505060018101905061285f565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6128dc826123bf565b6128e681856128c2565b93506128f68185602086016123d9565b6128ff81612401565b840191505092915050565b5f61291583836128d2565b905092915050565b5f602082019050919050565b5f61293382612899565b61293d81856128a3565b93508360208202850161294f856128b3565b805f5b8581101561298a578484038952815161296b858261290a565b94506129768361291d565b925060208a01995050600181019050612952565b50829750879550505050505092915050565b5f6060820190508181035f8301526129b4818661283d565b905081810360208301526129c8818561283d565b905081810360408301526129dc8184612929565b9050949350505050565b5f80fd5b5f67ffffffffffffffff821115612a0457612a0361265f565b5b612a0d82612401565b9050602081019050919050565b828183375f83830152505050565b5f612a3a612a35846129ea565b6126bd565b905082815260208101848484011115612a5657612a556129e6565b5b612a61848285612a1a565b509392505050565b5f82601f830112612a7d57612a7c61265b565b5b8135612a8d848260208601612a28565b91505092915050565b5f60208284031215612aab57612aaa612304565b5b5f82013567ffffffffffffffff811115612ac857612ac7612308565b5b612ad484828501612a69565b91505092915050565b5f6020820190508181035f830152612af5818461283d565b905092915050565b612b068161238c565b8114612b10575f80fd5b50565b5f81359050612b2181612afd565b92915050565b5f8060408385031215612b3d57612b3c612304565b5b5f612b4a85828601612535565b9250506020612b5b85828601612b13565b9150509250929050565b5f67ffffffffffffffff821115612b7f57612b7e61265f565b5b612b8882612401565b9050602081019050919050565b5f612ba7612ba284612b65565b6126bd565b905082815260208101848484011115612bc357612bc26129e6565b5b612bce848285612a1a565b509392505050565b5f82601f830112612bea57612be961265b565b5b8135612bfa848260208601612b95565b91505092915050565b5f805f8060808587031215612c1b57612c1a612304565b5b5f612c2887828801612535565b9450506020612c3987828801612535565b9350506040612c4a87828801612488565b925050606085013567ffffffffffffffff811115612c6b57612c6a612308565b5b612c7787828801612bd6565b91505092959194509250565b5f8060408385031215612c9957612c98612304565b5b5f612ca685828601612535565b925050602083013567ffffffffffffffff811115612cc757612cc6612308565b5b612cd38582860161276e565b9150509250929050565b5f8060408385031215612cf357612cf2612304565b5b5f612d0085828601612535565b9250506020612d1185828601612535565b9150509250929050565b5f606082019050612d2e5f8301866124f7565b612d3b60208301856124f7565b8181036040830152612d4d8184612411565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612d9b57607f821691505b602082108103612dae57612dad612d57565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612deb82612469565b9150612df683612469565b9250828202612e0481612469565b91508282048414831517612e1b57612e1a612db4565b5b5092915050565b5f612e2c82612469565b9150612e3783612469565b9250828203905081811115612e4f57612e4e612db4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612ede7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ea3565b612ee88683612ea3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612f23612f1e612f1984612469565b612f00565b612469565b9050919050565b5f819050919050565b612f3c83612f09565b612f50612f4882612f2a565b848454612eaf565b825550505050565b5f90565b612f64612f58565b612f6f818484612f33565b505050565b5b81811015612f9257612f875f82612f5c565b600181019050612f75565b5050565b601f821115612fd757612fa881612e82565b612fb184612e94565b81016020851015612fc0578190505b612fd4612fcc85612e94565b830182612f74565b50505b505050565b5f82821c905092915050565b5f612ff75f1984600802612fdc565b1980831691505092915050565b5f61300f8383612fe8565b9150826002028217905092915050565b613028826123bf565b67ffffffffffffffff8111156130415761304061265f565b5b61304b8254612d84565b613056828285612f96565b5f60209050601f831160018114613087575f8415613075578287015190505b61307f8582613004565b8655506130e6565b601f19841661309586612e82565b5f5b828110156130bc57848901518255600182019150602085019450602081019050613097565b868310156130d957848901516130d5601f891682612fe8565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f613112826130ee565b61311c81856130f8565b935061312c8185602086016123d9565b61313581612401565b840191505092915050565b5f6080820190506131535f8301876124f7565b61316060208301866124f7565b61316d60408301856125b2565b818103606083015261317f8184613108565b905095945050505050565b5f8151905061319881612337565b92915050565b5f602082840312156131b3576131b2612304565b5b5f6131c08482850161318a565b91505092915050565b5f815190506131d781612472565b92915050565b5f602082840312156131f2576131f1612304565b5b5f6131ff848285016131c9565b91505092915050565b5f61321282612469565b915061321d83612469565b925082820190508082111561323557613234612db4565b5b92915050565b5f81905092915050565b5f815461325181612d84565b61325b818661323b565b9450600182165f8114613275576001811461328a576132bc565b60ff19831686528115158202860193506132bc565b61329385612e82565b5f5b838110156132b457815481890152600182019150602081019050613295565b838801955050505b50505092915050565b5f6132cf826123bf565b6132d9818561323b565b93506132e98185602086016123d9565b80840191505092915050565b7f2d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61332960018361323b565b9150613334826132f5565b600182019050919050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f61337360058361323b565b915061337e8261333f565b600582019050919050565b5f6133948286613245565b91506133a082856132c5565b91506133ab8261331d565b91506133b782846132c5565b91506133c282613367565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe417070726f76616c28616464726573732c616464726573732c75696e74323536295472616e7366657228616464726573732c616464726573732c75696e7432353629a2646970667358221220849ad16254459d0ba6ab2a0e8fe90f97cdfde40ec71867f82701217f5f80350264736f6c6343000818003368747470733a2f2f6e667473746f726167652e6c696e6b2f697066732f62616679626569646236667979626b6d6b70376f797a796d6f333568716b346a33356c6935326437376f676a63666233766f79616b6d6475756d752f5472616e7366657228616464726573732c616464726573732c75696e7432353629