diff --git a/Api/Sales/OrderRepositoryInterface.php b/Api/Sales/OrderRepositoryInterface.php index c9ef6e3..cda6705 100644 --- a/Api/Sales/OrderRepositoryInterface.php +++ b/Api/Sales/OrderRepositoryInterface.php @@ -1,17 +1,13 @@ _customerSession = $customerSession; - $this->_checkoutSession = $checkoutSession; - $this->_orderFactory = $orderFactory; - $this->_model = $model; - $this->localeResolver = $localeResolver; - $this->objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - parent::__construct($context); - - $this->_model->setCustomerID($this->_customerSession->getCustomerId()); - } - - protected function getDotAmount() - { - return $this->getFormatAmount($this->_checkoutSession->getLastRealOrder()->getGrandTotal()); - } -} diff --git a/Controller/tpay/CardPayment.php b/Controller/tpay/CardPayment.php new file mode 100644 index 0000000..2c5a3ea --- /dev/null +++ b/Controller/tpay/CardPayment.php @@ -0,0 +1,56 @@ +tpay = $tpayModel; + $this->tpayService = $tpayService; + $this->checkoutSession = $checkoutSession; + $this->tokensService = new TpayTokensService($modelContext, $registry, $resourceConnection); + Util::$loggingEnabled = false; + parent::__construct($context); + } + + public function execute() + { + /** @var int $orderId */ + $orderId = $this->checkoutSession->getLastRealOrderId(); + + if ($orderId) { + $cardTransaction = new CardApiFacade($this->tpay, $this->tokensService, $this->tpayService); + $redirectUrl = $cardTransaction->makeCardTransaction($orderId); + + return $this->_redirect($redirectUrl); + } + $this->checkoutSession->unsQuoteId(); + + return $this->_redirect('magento2basic/tpay/error'); + } +} diff --git a/Controller/tpay/Create.php b/Controller/tpay/Create.php index 434772f..fd98d71 100644 --- a/Controller/tpay/Create.php +++ b/Controller/tpay/Create.php @@ -5,12 +5,11 @@ use Magento\Checkout\Model\Session; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; -use Magento\Framework\DataObject; +use Tpay\OriginApi\Utilities\Util; use tpaycom\magento2basic\Api\TpayInterface; -use tpaycom\magento2basic\Model\TransactionModel; -use tpaycom\magento2basic\Model\TransactionModelFactory; +use tpaycom\magento2basic\Model\ApiFacade\Transaction\TransactionApiFacade; +use tpaycom\magento2basic\Model\ApiFacade\Transaction\TransactionOriginApi; use tpaycom\magento2basic\Service\TpayService; -use tpayLibs\src\_class_tpay\Utilities\Util; class Create extends Action { @@ -23,21 +22,12 @@ class Create extends Action /** @var TpayInterface */ private $tpay; - /** @var TransactionModel */ + /** @var TransactionApiFacade */ private $transaction; - /** @var TransactionModelFactory */ - private $transactionFactory; - - public function __construct( - Context $context, - TpayInterface $tpayModel, - TransactionModelFactory $transactionModelFactory, - TpayService $tpayService, - Session $checkoutSession - ) { + public function __construct(Context $context, TpayInterface $tpayModel, TpayService $tpayService, Session $checkoutSession) + { $this->tpay = $tpayModel; - $this->transactionFactory = $transactionModelFactory; $this->tpayService = $tpayService; $this->checkoutSession = $checkoutSession; Util::$loggingEnabled = false; @@ -47,46 +37,39 @@ public function __construct( public function execute() { - /** @var int $orderId */ $orderId = $this->checkoutSession->getLastRealOrderId(); - if ($orderId) { - /** @var DataObject $payment */ $payment = $this->tpayService->getPayment($orderId); - - /** @var array $paymentData */ $paymentData = $payment->getData(); - - $this->transaction = $this->transactionFactory->create( - [ - 'apiPassword' => $this->tpay->getApiPassword(), - 'apiKey' => $this->tpay->getApiKey(), - 'merchantId' => $this->tpay->getMerchantId(), - 'merchantSecret' => $this->tpay->getSecurityCode(), - ] - ); + $this->transaction = new TransactionApiFacade($this->tpay); $additionalPaymentInformation = $paymentData['additional_information']; - /** @var array $transaction */ $transaction = $this->prepareTransaction($orderId, $additionalPaymentInformation); if (!isset($transaction['title'], $transaction['url'])) { return $this->_redirect('magento2basic/tpay/error'); } + + $this->handleOpenApiTrId($paymentData, $transaction); + $this->tpayService->addCommentToHistory($orderId, 'Transaction title '.$transaction['title']); $transactionUrl = $transaction['url']; + if (true === $this->tpay->redirectToChannel()) { $transactionUrl = str_replace('gtitle', 'title', $transactionUrl); } + $this->tpayService->addCommentToHistory($orderId, 'Transaction link '.$transactionUrl); $paymentData['additional_information']['transaction_url'] = $transactionUrl; $payment->setData($paymentData)->save(); - if (6 === strlen($additionalPaymentInformation['blik_code']) - && $this->tpay->checkBlikLevel0Settings() - ) { + if (6 === strlen($additionalPaymentInformation['blik_code']) && $this->tpay->checkBlikLevel0Settings()) { + if (true === $this->transaction->isOpenApiUse()) { + return $this->_redirect('magento2basic/tpay/success'); + } $result = $this->blikPay($transaction['title'], $additionalPaymentInformation['blik_code']); $this->checkoutSession->unsQuoteId(); + if (!$result) { $this->tpayService->addCommentToHistory( $orderId, @@ -108,30 +91,45 @@ public function execute() * * @param string $blikTransactionId * @param string $blikCode - * - * @return bool */ - protected function blikPay($blikTransactionId, $blikCode) + protected function blikPay($blikTransactionId, $blikCode): bool { - /** @var array $apiResult */ $apiResult = $this->transaction->blik($blikTransactionId, $blikCode); return isset($apiResult['result']) && 1 === $apiResult['result']; } - /** - * @param mixed $orderId - * @param array{blik_code: string, group: int|string} $additionalPaymentInformation - */ private function prepareTransaction($orderId, array $additionalPaymentInformation) { $data = $this->tpay->getTpayFormData($orderId); + if (6 === strlen($additionalPaymentInformation['blik_code'])) { - $data['group'] = TransactionModel::BLIK_CHANNEL; + $data['group'] = TransactionOriginApi::BLIK_CHANNEL; + $this->handleBlikData($data, $additionalPaymentInformation['blik_code']); } else { $data['group'] = (int) $additionalPaymentInformation['group']; + + if ($this->tpay->redirectToChannel()) { + $data['direct'] = 1; + } } return $this->transaction->create($data); } + + private function handleBlikData(array &$data, string $blikCode) + { + if ($this->transaction->isOpenApiUse() && $this->tpay->checkBlikLevel0Settings()) { + $data['blikPaymentData'] = [ + 'blikToken' => $blikCode, + ]; + } + } + + private function handleOpenApiTrId(array &$paymentData, array $transaction) + { + if (isset($transaction['transactionId'])) { + $paymentData['additional_information']['transaction_id'] = $transaction['transactionId']; + } + } } diff --git a/Controller/tpay/Error.php b/Controller/tpay/Error.php index 1772aad..e7dd0c1 100644 --- a/Controller/tpay/Error.php +++ b/Controller/tpay/Error.php @@ -1,5 +1,7 @@ tpay = $tpayModel; $this->remoteAddress = $remoteAddress; - $this->notificationFactory = $notificationModelFactory; $this->tpayService = $tpayService; + $this->tokensService = $tokensService; Util::$loggingEnabled = false; parent::__construct($context); } - /** @return bool */ public function execute() { try { - $id = $this->tpay->getMerchantId(); - $code = $this->tpay->getSecurityCode(); - $checkServer = $this->tpay->getCheckTpayIP(); - $checkProxy = $this->tpay->getCheckProxy(); - $forwardedIP = null; - $this->NotificationHandler = $this->notificationFactory->create( - [ - 'merchantId' => $id, - 'merchantSecret' => $code, - ] - ); - if (false === $checkServer) { - $this->NotificationHandler->disableValidationServerIP(); - } - if (true === $checkProxy) { - $this->NotificationHandler->enableForwardedIPValidation(); - } + $notification = $this->generateNotification(); + $notification = $notification->getNotificationAssociative(); + $orderId = base64_decode($notification['tr_crc']); - /** @var array $validParams */ - $validParams = $this->NotificationHandler->checkPayment(''); - - $orderId = base64_decode($validParams['tr_crc']); - if ('PAID' === $validParams['tr_status']) { + if ('PAID' === $notification['tr_status']) { $response = $this->getPaidTransactionResponse($orderId); - return $this - ->getResponse() - ->setStatusCode(Http::STATUS_CODE_200) - ->setContent($response); + return $this->getResponse()->setStatusCode(Http::STATUS_CODE_200)->setContent($response); } - $this->tpayService->SetOrderStatus($orderId, $validParams, $this->tpay); - return $this - ->getResponse() - ->setStatusCode(Http::STATUS_CODE_200) - ->setContent('TRUE'); + $this->saveCard($notification, $orderId); + $this->tpayService->SetOrderStatus($orderId, $notification, $this->tpay); + + return $this->getResponse()->setStatusCode(Http::STATUS_CODE_200)->setContent('TRUE'); } catch (Exception $e) { - return false; + Util::log('Notification exception', "{$e->getMessage()} in file {$e->getFile()} line: {$e->getLine()} \n\n {$e->getTraceAsString()}"); + + return $this->getResponse()->setStatusCode(Http::STATUS_CODE_500)->setContent('FALSE'); } } /** * Create exception in case CSRF validation failed. * Return null if default exception will suffice. - * - * @return null|InvalidRequestException */ - public function createCsrfValidationException(RequestInterface $request) {} + public function createCsrfValidationException(RequestInterface $request): ?InvalidRequestException + { + return null; + } /** * Perform custom request validation. * Return null if default validation is needed. - * - * @return null|bool */ - public function validateForCsrf(RequestInterface $request) + public function validateForCsrf(RequestInterface $request): ?bool { return true; } @@ -122,22 +91,43 @@ public function validateForCsrf(RequestInterface $request) /** * Check if the order has been canceled and get response to Tpay server. * - * @param int $orderId - * * @throws Exception * * @return string response for Tpay server */ - protected function getPaidTransactionResponse($orderId) + protected function getPaidTransactionResponse(string $orderId): string { $order = $this->tpayService->getOrderById($orderId); + if (!$order->getId()) { - throw new Exception('Unable to get order by orderId %s', $orderId); + throw new Exception(sprintf('Unable to get order by orderId %s', $orderId)); } + if (Order::STATE_CANCELED === $order->getState()) { return 'FALSE'; } return 'TRUE'; } + + private function saveCard(array $notification, string $orderId) + { + $order = $this->tpayService->getOrderById($orderId); + + if (isset($notification['card_token']) && !$this->tpay->isCustomerGuest($orderId)) { + $token = $this->tokensService->getWithoutAuthCustomerTokens((int) $order->getCustomerId(), $notification['tr_crc']); + if (!empty($token)) { + $this->tokensService->updateTokenById((int) $token['tokenId'], $notification['card_token']); + } + } + } + + private function generateNotification() + { + try { + return (new JWSVerifiedPaymentNotification($this->tpay->getSecurityCode(), !$this->tpay->useSandboxMode()))->getNotification(); + } catch (Exception $e) { + return (new JWSVerifiedPaymentNotification($this->tpay->getOpenApiSecurityCode(), !$this->tpay->useSandboxMode()))->getNotification(); + } + } } diff --git a/Controller/tpay/Redirect.php b/Controller/tpay/Redirect.php index c7576bc..36c6871 100644 --- a/Controller/tpay/Redirect.php +++ b/Controller/tpay/Redirect.php @@ -1,10 +1,13 @@ tpayService = $tpayService; $this->checkoutSession = $checkoutSession; @@ -28,25 +28,20 @@ public function __construct( public function execute() { - /** @var string $uid */ $uid = $this->getRequest()->getParam('uid'); - - /** @var int $orderId */ $orderId = $this->checkoutSession->getLastRealOrderId(); - if (!$orderId || !$uid) { return $this->_redirect('checkout/cart'); } $payment = $this->tpayService->getPayment($orderId); - - /** @var array $paymentData */ $paymentData = $payment->getData(); - $additionalPaymentInfo = $paymentData['additional_information']; - if ( - (!isset($additionalPaymentInfo['group']) || (int) $additionalPaymentInfo['group'] < 1) - && (!isset($additionalPaymentInfo['blik_code']) || 6 !== strlen($additionalPaymentInfo['blik_code'])) - ) { + + if (!empty($additionalPaymentInfo[TpayInterface::CARDDATA]) || !empty($additionalPaymentInfo[TpayInterface::CARD_ID])) { + return $this->_redirect('magento2basic/tpay/CardPayment'); + } + + if ((!array_key_exists(TpayInterface::CHANNEL, $additionalPaymentInfo) || (int) $additionalPaymentInfo[TpayInterface::CHANNEL] < 1) && (!array_key_exists(TpayInterface::BLIK_CODE, $additionalPaymentInfo) || 6 !== strlen($additionalPaymentInfo[TpayInterface::BLIK_CODE]))) { return $this->_redirect('checkout/cart'); } $this->tpayService->setOrderStatePendingPayment($orderId, true); diff --git a/Controller/tpay/Refund.php b/Controller/tpay/Refund.php deleted file mode 100644 index dac8236..0000000 --- a/Controller/tpay/Refund.php +++ /dev/null @@ -1,96 +0,0 @@ -apiPassword, $this->apiKey, $this->merchantId, $this->merchantSecret); - - /** @var array{result?: string, err?: int} $apiResult */ - $apiResult = $RefundModel - ->setTransactionID($payment->getParentTransactionId()) - ->refundAny(number_format($amount, 2)); - - if (isset($apiResult['result']) && 1 === (int) $apiResult['result']) { - return true; - } - $errCode = isset($apiResult['err']) ? ' error code: '.$apiResult['err'] : ''; - throw new Exception(__('Payment refunding error. -'.$errCode)); - } - - /** - * @param string $merchantSecret - * - * @return self - */ - public function setMerchantSecret($merchantSecret) - { - $this->merchantSecret = $merchantSecret; - - return $this; - } - - /** - * @param int $merchantId - * - * @return self - */ - public function setMerchantId($merchantId) - { - $this->merchantId = $merchantId; - - return $this; - } - - /** - * @param string $apiPassword - * - * @return self - */ - public function setApiPassword($apiPassword) - { - $this->apiPassword = $apiPassword; - - return $this; - } - - /** - * @param string $apiKey - * - * @return self - */ - public function setApiKey($apiKey) - { - $this->apiKey = $apiKey; - - return $this; - } -} diff --git a/Controller/tpay/Success.php b/Controller/tpay/Success.php index eeb9673..85ff48d 100644 --- a/Controller/tpay/Success.php +++ b/Controller/tpay/Success.php @@ -1,5 +1,7 @@ cardOrigin = new CardOrigin($tpay, $tokensService, $tpayService); + $this->createOpenApiInstance($tpay, $tokensService, $tpayService); + } + + public function makeCardTransaction(string $orderId): string + { + return $this->getCurrent()->makeCardTransaction($orderId); + } + + private function getCurrent() + { + return $this->useOpenCard ? $this->cardOpen : $this->cardOrigin; + } + + private function createOpenApiInstance(TpayInterface $tpay, TpayTokensService $tokensService, TpayService $tpayService) + { + try { + $this->cardOpen = new CardOpen($tpay, $tokensService, $tpayService); + $this->useOpenCard = true; + } catch (Exception $exception) { + $this->cardOpen = null; + $this->useOpenCard = false; + } + } +} diff --git a/Model/ApiFacade/CardTransaction/CardOpen.php b/Model/ApiFacade/CardTransaction/CardOpen.php new file mode 100755 index 0000000..b032956 --- /dev/null +++ b/Model/ApiFacade/CardTransaction/CardOpen.php @@ -0,0 +1,184 @@ +tpay = $tpay; + $this->tokensService = $tokensService; + $this->tpayService = $tpayService; + $this->tpayApi = new TpayApi($tpay->getOpenApiClientId(), $tpay->getOpenApiPassword(), !$tpay->useSandboxMode()); + } + + public function makeCardTransaction(string $orderId): string + { + $payment = $this->tpayService->getPayment($orderId); + $paymentData = $payment->getData(); + + $this->tpayService->setOrderStatePendingPayment($orderId, false); + $additionalPaymentInformation = $paymentData['additional_information']; + + $this->tpayPaymentConfig = $this->tpay->getTpayFormData($orderId); + + if (isset($additionalPaymentInformation['card_id']) && false !== $additionalPaymentInformation['card_id'] && $this->tpay->getCardSaveEnabled()) { + $cardId = (int) $additionalPaymentInformation['card_id']; + + return $this->processSavedCardPayment($orderId, $cardId); + } + + return $this->processNewCardPayment($orderId, $additionalPaymentInformation); + } + + private function processSavedCardPayment(string $orderId, int $cardId): string + { + $customerToken = $this->tokensService->getTokenById($cardId, $this->tpay->getCustomerId($orderId)); + + if ($customerToken) { + try { + $transaction = $this->tpayApi->Transactions->createTransaction($this->handleDataStructure()); + + $request = [ + 'groupId' => 103, + 'cardPaymentData' => [ + 'token' => $customerToken['cli_auth'], + ], + 'method' => 'sale', + ]; + + $result = $this->tpayApi->Transactions->createPaymentByTransactionId($request, $transaction['transactionId']); + + if ('success' === $result['result'] && isset($result['payments']['status']) && 'correct' === $result['payments']['status']) { + $this->tpayService->setCardOrderStatus($orderId, $this->handleValidParams($result), $this->tpay); + $this->tpayService->addCommentToHistory($orderId, 'Successful payment by saved card'); + + return 'magento2basic/tpay/success'; + } + + if (isset($paymentResult['status']) && 'declined' === $paymentResult['status']) { + $this->tpayService->addCommentToHistory($orderId, 'Failed to pay by saved card, Elavon rejection code: '.$paymentResult['reason']); + } else { + $this->tpayService->addCommentToHistory($orderId, 'Failed to pay by saved card, error: '.$paymentResult['err_desc']); + } + } catch (Exception $e) { + return 'magento2basic/tpay/error'; + } + } else { + $this->tpayService->addCommentToHistory($orderId, 'Attempt of payment by not owned card has been blocked!'); + } + + return 'magento2basic/tpay/error'; + } + + private function addToPaymentData(string $orderId, string $key, $value) + { + $payment = $this->tpayService->getPayment($orderId); + $paymentData = $payment->getData(); + $paymentData['additional_information'][$key] = $value; + $payment->setData($paymentData)->save(); + } + + private function processNewCardPayment(string $orderId, array $additionalPaymentInformation): string + { + $saveCard = isset($additionalPaymentInformation['card_save']) && $this->tpay->getCardSaveEnabled() ? (bool) $additionalPaymentInformation['card_save'] : false; + try { + $transaction = $this->tpayApi->Transactions->createTransaction($this->handleDataStructure()); + $request = [ + 'groupId' => 103, + 'cardPaymentData' => [ + 'card' => $additionalPaymentInformation['card_data'], + 'save' => $saveCard, + ], + 'method' => 'pay_by_link', + ]; + $result = $this->tpayApi->Transactions->createPaymentByTransactionId($request, $transaction['transactionId']); + $this->tpayService->setCardOrderStatus($orderId, $this->handleValidParams($result), $this->tpay); + } catch (Exception $e) { + return 'magento2basic/tpay/error'; + } + + if (isset($result['transactionPaymentUrl']) && 'pending' === $result['payments']['status']) { + $url3ds = $result['transactionPaymentUrl']; + $this->tpayService->addCommentToHistory($orderId, '3DS Transaction link '.$url3ds); + $this->addToPaymentData($orderId, 'transaction_url', $url3ds); + $this->saveCard($orderId, $saveCard, $additionalPaymentInformation); + + return $url3ds; + } + + return 'magento2basic/tpay/error'; + } + + private function saveCard(string $orderId, bool $saveCard, array $additionalPaymentInformation) + { + if ($saveCard && !$this->tpay->isCustomerGuest($orderId)) { + $this->tokensService->setCustomerToken( + $this->tpay->getCustomerId($orderId), + null, + $additionalPaymentInformation[TpayInterface::SHORT_CODE], + $additionalPaymentInformation[TpayInterface::CARD_VENDOR], + $this->tpayPaymentConfig['crc'] + ); + } + } + + private function handleDataStructure(): array + { + return [ + 'amount' => (float) $this->tpayPaymentConfig['amount'], + 'description' => $this->tpayPaymentConfig['description'], + 'hiddenDescription' => $this->tpayPaymentConfig['crc'], + 'payer' => [ + 'email' => $this->tpayPaymentConfig['email'], + 'name' => $this->tpayPaymentConfig['name'], + 'phone' => $this->tpayPaymentConfig['phone'], + 'address' => $this->tpayPaymentConfig['address'], + 'code' => $this->tpayPaymentConfig['zip'], + 'city' => $this->tpayPaymentConfig['city'], + 'country' => $this->tpayPaymentConfig['country'], + ], + 'lang' => 'pl', + 'pay' => [ + 'groupId' => 103, + ], + 'callbacks' => [ + 'notification' => [ + 'url' => $this->tpayPaymentConfig['result_url'], + ], + 'payerUrls' => [ + 'success' => $this->tpayPaymentConfig['return_url'], + 'error' => $this->tpayPaymentConfig['return_error_url'], + ], + ], + ]; + } + + private function handleValidParams(array $response): array + { + $response['status'] = $response['payments']['status']; + $response['sale_auth'] = $response['transactionId']; + + return $response; + } +} diff --git a/Model/ApiFacade/CardTransaction/CardOrigin.php b/Model/ApiFacade/CardTransaction/CardOrigin.php new file mode 100755 index 0000000..a4a5cd7 --- /dev/null +++ b/Model/ApiFacade/CardTransaction/CardOrigin.php @@ -0,0 +1,206 @@ +tpay = $tpay; + $this->tokensService = $tokensService; + $this->tpayService = $tpayService; + $this->cardApiKey = $tpay->getCardApiKey(); + $this->cardApiPass = $tpay->getCardApiPassword(); + $this->cardVerificationCode = $tpay->getVerificationCode(); + $this->cardKeyRSA = $tpay->getRSAKey(); + $this->cardHashAlg = $tpay->getHashType(); + parent::__construct(); + } + + public function makeCardTransaction(string $orderId): string + { + $payment = $this->tpayService->getPayment($orderId); + $paymentData = $payment->getData(); + + $this->tpayService->setOrderStatePendingPayment($orderId, false); + $additionalPaymentInformation = $paymentData['additional_information']; + + $this->tpayPaymentConfig = $this->tpay->getTpayFormData($orderId); + + $this + ->setEnablePowUrl(true) + ->setReturnUrls($this->tpayPaymentConfig['return_url'], $this->tpayPaymentConfig['return_error_url']) + ->setAmount($this->tpayPaymentConfig['amount']) + ->setCurrency($this->tpayPaymentConfig['currency']) + ->setLanguage(strtolower($this->tpayPaymentConfig['language'])) + ->setOrderID($this->tpayPaymentConfig['crc']) + ->setModuleName($this->tpayPaymentConfig['module']); + + if (isset($additionalPaymentInformation['card_id']) && false !== $additionalPaymentInformation['card_id'] && $this->tpay->getCardSaveEnabled()) { + $cardId = (int) $additionalPaymentInformation['card_id']; + + return $this->processSavedCardPayment($orderId, $cardId); + } + + return $this->processNewCardPayment($orderId, $additionalPaymentInformation); + } + + private function processSavedCardPayment(string $orderId, string $cardId): string + { + $customerTokens = $this->tokensService->getCustomerTokens($this->tpay->getCustomerId($orderId)); + + $isValid = false; + $token = ''; + foreach ($customerTokens as $key => $value) { + if ((int) $value['tokenId'] === $cardId) { + $isValid = true; + $token = $value['token']; + } + } + if ($isValid) { + try { + $paymentResult = $this->presale($this->tpayPaymentConfig['description'], $token); + + if (isset($paymentResult['sale_auth'])) { + $paymentResult = $this->sale($paymentResult['sale_auth'], $token); + } + + if (1 === (int) $paymentResult['result'] && isset($paymentResult['status']) && 'correct' === $paymentResult['status']) { + $this->tpayService->setOrderStatus($orderId, $paymentResult, $this->tpay); + $this->tpayService->addCommentToHistory($orderId, 'Successful payment by saved card'); + + return 'magento2basic/tpay/success'; + } + + if (isset($paymentResult['status']) && 'declined' === $paymentResult['status']) { + $this->tpayService->addCommentToHistory( + $orderId, + 'Failed to pay by saved card, Elavon rejection code: '.$paymentResult['reason'] + ); + } else { + $this->tpayService->addCommentToHistory( + $orderId, + 'Failed to pay by saved card, error: '.$paymentResult['err_desc'] + ); + } + } catch (Exception $e) { + return $this->trySaleAgain($orderId); + } + } + if (!$isValid) { + $this->tpayService->addCommentToHistory($orderId, 'Attempt of payment by not owned card has been blocked!'); + } + + return $this->trySaleAgain($orderId); + } + + private function trySaleAgain(string $orderId): string + { + $this->setCardData(null); + $result = $this->registerSale($this->tpayPaymentConfig['name'], $this->tpayPaymentConfig['email'], $this->tpayPaymentConfig['description']); + + if (isset($result['sale_auth'])) { + $url = 'https://secure.tpay.com/cards?sale_auth='.$result['sale_auth']; + $this->tpayService->addCommentToHistory($orderId, 'Customer has been redirected to tpay.com transaction panel. Transaction link '.$url); + $this->addToPaymentData($orderId, 'transaction_url', $url); + + return $url; + } + + return 'magento2basic/tpay/success'; + } + + private function addToPaymentData(string $orderId, string $key, $value) + { + $payment = $this->tpayService->getPayment($orderId); + $paymentData = $payment->getData(); + $paymentData['additional_information'][$key] = $value; + $payment->setData($paymentData)->save(); + } + + private function processNewCardPayment(string $orderId, array $additionalPaymentInformation): string + { + $saveCard = isset($additionalPaymentInformation['card_save']) && $this->tpay->getCardSaveEnabled() ? (bool) $additionalPaymentInformation['card_save'] : false; + if (true === $saveCard) { + $this->setOneTimer(false); + } + try { + $result = $this->createNewCardPayment($additionalPaymentInformation); + } catch (Exception $e) { + return $this->trySaleAgain($orderId); + } + if (isset($result['3ds_url'])) { + $url3ds = $result['3ds_url']; + $this->tpayService->addCommentToHistory($orderId, '3DS Transaction link '.$url3ds); + $this->addToPaymentData($orderId, 'transaction_url', $url3ds); + + return $url3ds; + } + if (isset($result['status']) && 'correct' === $result['status']) { + $this->validateNon3dsSign($result); + $this->tpayService->setCardOrderStatus($orderId, $result, $this->tpay); + } + + if (isset($result['cli_auth'], $result['card']) && !$this->tpay->isCustomerGuest($orderId)) { + $this->tokensService + ->setCustomerToken( + $this->tpay->getCustomerId($orderId), + $result['cli_auth'], + $result['card'], + $additionalPaymentInformation['card_vendor'] + ); + } + + return 1 === (int) $result['result'] && isset($result['status']) && 'correct' === $result['status'] ? 'magento2basic/tpay/success' : $this->trySaleAgain($orderId); + } + + private function createNewCardPayment(array $additionalPaymentInformation): array + { + $cardData = str_replace(' ', '+', $additionalPaymentInformation['card_data']); + + return $this->registerSale( + $this->tpayPaymentConfig['name'], + $this->tpayPaymentConfig['email'], + $this->tpayPaymentConfig['description'], + $cardData + ); + } + + private function validateNon3dsSign(array $tpayResponse) + { + $testMode = isset($tpayResponse['test_mode']) ? '1' : ''; + $cliAuth = isset($tpayResponse['cli_auth']) ? $tpayResponse['cli_auth'] : ''; + $localHash = hash( + $this->tpay->getHashType(), + $testMode + .$tpayResponse['sale_auth'] + .$cliAuth + .$tpayResponse['card'] + .$this->tpayPaymentConfig['currency'] + .$this->tpayPaymentConfig['amount'] + .$tpayResponse['date'] + .$tpayResponse['status'] + .$this->tpay->getVerificationCode() + ); + if ($tpayResponse['sign'] !== $localHash) { + throw new Exception('Card payment - invalid checksum'); + } + } +} diff --git a/Model/ApiFacade/OpenApi.php b/Model/ApiFacade/OpenApi.php new file mode 100755 index 0000000..10157a1 --- /dev/null +++ b/Model/ApiFacade/OpenApi.php @@ -0,0 +1,71 @@ +handleDataStructure($data); + $transaction = $this->Transactions->createTransaction($transactionData); + + return $this->updateRedirectUrl($transaction); + } + + public function makeRefund(InfoInterface $payment, string $amount): array + { + return $this->Transactions->createRefundByTransactionId(['amount' => number_format($amount, 2)], $payment->getAdditionalInformation('transaction_id')); + } + + private function handleDataStructure(array $data): array + { + $paymentData = [ + 'amount' => $data['amount'], + 'description' => $data['description'], + 'hiddenDescription' => $data['crc'], + 'payer' => [ + 'email' => $data['email'], + 'name' => $data['name'], + 'phone' => $data['phone'], + 'address' => $data['address'], + 'code' => $data['zip'], + 'city' => $data['city'], + 'country' => $data['country'], + ], + 'pay' => [ + 'groupId' => $data['group'], + ], + 'callbacks' => [ + 'payerUrls' => [ + 'success' => $data['return_url'], + 'error' => $data['return_error_url'], + ], + 'notification' => [ + 'url' => $data['result_url'], + ], + ], + ]; + + if (!empty($data['blikPaymentData'])) { + $paymentData['pay']['blikPaymentData'] = [ + 'blikToken' => $data['blikPaymentData']['blikToken'], + ]; + } + + return $paymentData; + } + + private function updateRedirectUrl(array $transactionData): array + { + $blik0Url = null; + if (!isset($transactionData['transactionPaymentUrl']) && 'success' === $transactionData['result']) { + $blik0Url = 'blik0url'; + } + $transactionData['url'] = $transactionData['transactionPaymentUrl'] ?? $blik0Url; + + return $transactionData; + } +} diff --git a/Model/ApiFacade/Refund/RefundApiFacade.php b/Model/ApiFacade/Refund/RefundApiFacade.php new file mode 100755 index 0000000..58b067e --- /dev/null +++ b/Model/ApiFacade/Refund/RefundApiFacade.php @@ -0,0 +1,58 @@ +tpay = $tpay; + $this->originApi = new RefundOriginApi($tpay); + $this->createOpenApiInstance($tpay->getOpenApiClientId(), $tpay->getOpenApiPassword(), !$tpay->useSandboxMode()); + } + + public function makeRefund(InfoInterface $payment, float $amount) + { + if ($payment->getAdditionalInformation('transaction_id')) { + return $this->getCurrentApi()->makeRefund($payment, $amount); + } + if (!empty($payment->getAdditionalInformation('card_data'))) { + return (new RefundCardOriginApi($this->tpay))->makeCardRefund($payment, $amount); + } + + return $this->originApi->makeRefund($payment, $amount); + } + + private function getCurrentApi() + { + return $this->useOpenApi ? $this->openApi : $this->originApi; + } + + private function createOpenApiInstance(string $clientId, string $apiPassword, bool $isProd) + { + try { + $this->openApi = new OpenApi($clientId, $apiPassword, $isProd); + $this->useOpenApi = true; + } catch (Exception $exception) { + $this->openApi = null; + $this->useOpenApi = false; + } + } +} diff --git a/Model/ApiFacade/Refund/RefundCardOriginApi.php b/Model/ApiFacade/Refund/RefundCardOriginApi.php new file mode 100755 index 0000000..e64e064 --- /dev/null +++ b/Model/ApiFacade/Refund/RefundCardOriginApi.php @@ -0,0 +1,37 @@ +cardApiKey = $tpay->getCardApiKey(); + $this->cardApiPass = $tpay->getCardApiPassword(); + $this->cardVerificationCode = $tpay->getVerificationCode(); + $this->cardKeyRSA = $tpay->getRSAKey(); + $this->cardHashAlg = $tpay->getHashType(); + parent::__construct(); + } + + public function makeCardRefund($payment, $amount, $currency = '985') + { + $transactionId = $payment->getParentTransactionId(); + $this->setAmount($amount)->setCurrency($currency); + $result = $this->refund($transactionId, __('Zwrot do zamówienia ').$payment->getOrder()->getRealOrderId()); + + if (1 === (int) $result['result'] && isset($result['status']) && 'correct' === $result['status']) { + return $result['sale_auth']; + } + $errDesc = isset($result['err_desc']) ? ' error description: '.$result['err_desc'] : ''; + $errCode = isset($result['err_code']) ? ' error code: '.$result['err_code'] : ''; + $reason = isset($result['reason']) ? ' reason: '.$result['reason'] : ''; + throw new Exception(__('Payment refunding error. -'.$errCode.$errDesc.$reason)); + } +} diff --git a/Model/ApiFacade/Refund/RefundOriginApi.php b/Model/ApiFacade/Refund/RefundOriginApi.php new file mode 100755 index 0000000..659b515 --- /dev/null +++ b/Model/ApiFacade/Refund/RefundOriginApi.php @@ -0,0 +1,35 @@ +trApiKey = $tpay->getApiPassword(); + $this->trApiPass = $tpay->getApiKey(); + $this->merchantId = $tpay->getMerchantId(); + $this->merchantSecret = $tpay->getSecurityCode(); + parent::__construct(); + if ($tpay->useSandboxMode()) { + $this->apiURL = 'https://secure.sandbox.tpay.com/api/gw/'; + } + } + + public function makeRefund(InfoInterface $payment, float $amount): bool + { + Util::$loggingEnabled = false; + $apiResult = $this->setTransactionID($payment->getParentTransactionId())->refundAny(number_format($amount, 2)); + if (isset($apiResult['result']) && 1 === (int) $apiResult['result']) { + return true; + } + $errCode = isset($apiResult['err']) ? ' error code: '.$apiResult['err'] : ''; + throw new Exception(__('Payment refunding error. -'.$errCode)); + } +} diff --git a/Model/ApiFacade/TpayConfig/ConfigFacade.php b/Model/ApiFacade/TpayConfig/ConfigFacade.php new file mode 100755 index 0000000..686cf9e --- /dev/null +++ b/Model/ApiFacade/TpayConfig/ConfigFacade.php @@ -0,0 +1,48 @@ +tpay = $tpay; + $this->originApi = new ConfigOrigin($tpay, $assetRepository, $tokensService); + $this->createOpenApiInstance($tpay, $assetRepository, $tokensService); + } + + public function getConfig(): array + { + return $this->getCurrentApi()->getConfig(); + } + + private function getCurrentApi() + { + return $this->useOpenApi ? $this->openApi : $this->originApi; + } + + private function createOpenApiInstance(TpayInterface $tpay, Repository $assetRepository, TpayTokensService $tokensService) + { + try { + $this->openApi = new ConfigOpen($tpay, $assetRepository, $tokensService); + $this->useOpenApi = true; + } catch (Exception $exception) { + $this->openApi = null; + $this->useOpenApi = false; + } + } +} diff --git a/Model/ApiFacade/TpayConfig/ConfigOpen.php b/Model/ApiFacade/TpayConfig/ConfigOpen.php new file mode 100755 index 0000000..68e0c88 --- /dev/null +++ b/Model/ApiFacade/TpayConfig/ConfigOpen.php @@ -0,0 +1,132 @@ +tpay = $tpay; + $this->assetRepository = $assetRepository; + $this->tokensService = $tokensService; + parent::__construct($tpay->getOpenApiClientId(), $tpay->getOpenApiPassword(), !$tpay->useSandboxMode()); + } + + public function getConfig(): array + { + $config = [ + 'tpay' => [ + 'payment' => [ + 'redirectUrl' => $this->tpay->getPaymentRedirectUrl(), + 'tpayLogoUrl' => $this->generateURL('tpaycom_magento2basic::images/logo_tpay.png'), + 'showPaymentChannels' => $this->showChannels(), + 'getTerms' => $this->getTerms(), + 'addCSS' => $this->createCSS('tpaycom_magento2basic::css/tpay.css'), + 'blikStatus' => $this->tpay->checkBlikLevel0Settings(), + 'getBlikChannelID' => TransactionOriginApi::BLIK_CHANNEL, + 'useSandbox' => $this->tpay->useSandboxMode(), + 'grandTotal' => number_format($this->tpay->getCheckoutTotal(), 2, '.', ''), + 'groups' => $this->Transactions->getBankGroups((bool) $this->tpay->onlyOnlineChannels())['groups'], + ], + ], + ]; + $config = array_merge($config, $this->getCardConfig()); + + return $this->tpay->isAvailable() ? $config : []; + } + + public function generateURL(string $name): string + { + return $this->assetRepository->createAsset($name)->getUrl(); + } + + public function showChannels(): ?string + { + $script = 'tpaycom_magento2basic::js/open_render_channels.js'; + + return $this->createScript($script); + } + + public function createScript(string $script): string + { + return " + "; + } + + public function getTerms(): ?string + { + return $this->tpay->getTermsURL(); + } + + public function createCSS(string $css): string + { + return "generateURL($css)}\">"; + } + + public function getCardConfig() + { + $customerTokensData = []; + if ($this->tpay->getCardSaveEnabled()) { + $customerTokens = $this->tokensService->getCustomerTokens($this->tpay->getCheckoutCustomerId(), true); + foreach ($customerTokens as $value) { + $customerTokensData[] = [ + 'cardShortCode' => $value['cardShortCode'], + 'id' => $value['tokenId'], + 'vendor' => $value['vendor'], + ]; + } + } + + return [ + 'tpaycards' => [ + 'payment' => [ + 'tpayLogoUrl' => $this->generateURL('tpaycom_magento2cards::images/logo_tpay.png'), + 'getTpayLoadingGif' => $this->generateURL('tpaycom_magento2cards::images/loading.gif'), + 'getRSAkey' => $this->tpay->getRSAKey(), + 'fetchJavaScripts' => $this->fetchJavaScripts(), + 'addCSS' => $this->createCSS('tpaycom_magento2basic::css/tpaycards.css'), + 'redirectUrl' => $this->tpay->getPaymentRedirectUrl(), + 'isCustomerLoggedIn' => $this->tpay->isCustomerLoggedIn(), + 'customerTokens' => $customerTokensData, + 'isSavingEnabled' => $this->tpay->getCardSaveEnabled(), + ], + ], + ]; + } + + public function fetchJavaScripts() + { + $script = []; + $script[] = 'tpaycom_magento2basic::js/jquery.payment.min.js'; + $script[] = 'tpaycom_magento2basic::js/jsencrypt.min.js'; + $script[] = 'tpaycom_magento2basic::js/string_routines.js'; + $script[] = 'tpaycom_magento2basic::js/tpayCards.js'; + $script[] = 'tpaycom_magento2basic::js/renderSavedCards.js'; + $scripts = ''; + foreach ($script as $key => $value) { + $scripts .= $this->createScript($value); + } + + return $scripts; + } +} diff --git a/Model/ApiFacade/TpayConfig/ConfigOrigin.php b/Model/ApiFacade/TpayConfig/ConfigOrigin.php new file mode 100755 index 0000000..086a456 --- /dev/null +++ b/Model/ApiFacade/TpayConfig/ConfigOrigin.php @@ -0,0 +1,132 @@ +tpay = $tpay; + $this->assetRepository = $assetRepository; + $this->tokensService = $tokensService; + } + + public function getConfig(): array + { + $config = [ + 'tpay' => [ + 'payment' => [ + 'redirectUrl' => $this->tpay->getPaymentRedirectUrl(), + 'tpayLogoUrl' => $this->generateURL('tpaycom_magento2basic::images/logo_tpay.png'), + 'merchantId' => $this->tpay->getMerchantId(), + 'showPaymentChannels' => $this->showChannels(), + 'getTerms' => $this->getTerms(), + 'addCSS' => $this->createCSS('tpaycom_magento2basic::css/tpay.css'), + 'blikStatus' => $this->tpay->checkBlikLevel0Settings(), + 'onlyOnlineChannels' => $this->tpay->onlyOnlineChannels(), + 'getBlikChannelID' => TransactionOriginApi::BLIK_CHANNEL, + 'useSandbox' => $this->tpay->useSandboxMode(), + 'grandTotal' => number_format($this->tpay->getCheckoutTotal(), 2, '.', ''), + ], + ], + ]; + + $config = array_merge($config, $this->getCardConfig()); + + return $this->tpay->isAvailable() ? $config : []; + } + + public function generateURL(string $name): string + { + return $this->assetRepository->createAsset($name)->getUrl(); + } + + public function showChannels(): ?string + { + $script = 'tpaycom_magento2basic::js/render_channels.js'; + + return $this->createScript($script); + } + + public function createScript(string $script): string + { + return " + "; + } + + public function getTerms(): ?string + { + return $this->tpay->getTermsURL(); + } + + public function createCSS(string $css): string + { + return "generateURL($css)}\">"; + } + + private function getCardConfig() + { + $customerTokensData = []; + if ($this->tpay->getCardSaveEnabled()) { + $customerTokens = $this->tokensService->getCustomerTokens($this->tpay->getCheckoutCustomerId()); + foreach ($customerTokens as $key => $value) { + $customerTokensData[] = [ + 'cardShortCode' => $value['cardShortCode'], + 'id' => $value['tokenId'], + 'vendor' => $value['vendor'], + ]; + } + } + + return [ + 'tpaycards' => [ + 'payment' => [ + 'tpayLogoUrl' => $this->generateURL('tpaycom_magento2cards::images/logo_tpay.png'), + 'getTpayLoadingGif' => $this->generateURL('tpaycom_magento2cards::images/loading.gif'), + 'getRSAkey' => $this->tpay->getRSAKey(), + 'fetchJavaScripts' => $this->fetchJavaScripts(), + 'addCSS' => $this->createCSS('tpaycom_magento2cards::css/tpaycards.css'), + 'redirectUrl' => $this->tpay->getPaymentRedirectUrl(), + 'isCustomerLoggedIn' => $this->tpay->isCustomerLoggedIn(), + 'customerTokens' => $customerTokensData, + 'isSavingEnabled' => $this->tpay->getCardSaveEnabled(), + ], + ], + ]; + } + + private function fetchJavaScripts(): string + { + $script = []; + $script[] = 'tpaycom_magento2basic::js/jquery.payment.min.js'; + $script[] = 'tpaycom_magento2basic::js/jsencrypt.min.js'; + $script[] = 'tpaycom_magento2basic::js/string_routines.js'; + $script[] = 'tpaycom_magento2basic::js/tpayCards.js'; + $script[] = 'tpaycom_magento2basic::js/renderSavedCards.js'; + $scripts = ''; + foreach ($script as $value) { + $scripts .= $this->createScript($value); + } + + return $scripts; + } +} diff --git a/Model/ApiFacade/Transaction/TransactionApiFacade.php b/Model/ApiFacade/Transaction/TransactionApiFacade.php new file mode 100755 index 0000000..cabe2bc --- /dev/null +++ b/Model/ApiFacade/Transaction/TransactionApiFacade.php @@ -0,0 +1,56 @@ +originApi = new TransactionOriginApi($tpay->getApiPassword(), $tpay->getApiKey(), $tpay->getMerchantId(), $tpay->getSecurityCode(), !$tpay->useSandboxMode()); + $this->createOpenApiInstance($tpay->getOpenApiClientId(), $tpay->getOpenApiPassword(), !$tpay->useSandboxMode()); + } + + public function isOpenApiUse() + { + return $this->useOpenApi; + } + + public function create(array $config) + { + return $this->getCurrentApi()->create($config); + } + + public function blik($blikTransactionId, $blikCode) + { + return $this->originApi->blik($blikTransactionId, $blikCode); + } + + private function getCurrentApi() + { + return $this->useOpenApi ? $this->openApi : $this->originApi; + } + + private function createOpenApiInstance(string $clientId, string $apiPassword, bool $isProd) + { + try { + $this->openApi = new OpenApi($clientId, $apiPassword, $isProd); + $this->useOpenApi = true; + } catch (Exception $exception) { + $this->openApi = null; + $this->useOpenApi = false; + } + } +} diff --git a/Model/TransactionModel.php b/Model/ApiFacade/Transaction/TransactionOriginApi.php old mode 100644 new mode 100755 similarity index 59% rename from Model/TransactionModel.php rename to Model/ApiFacade/Transaction/TransactionOriginApi.php index 1d0efe0..4dcd2cb --- a/Model/TransactionModel.php +++ b/Model/ApiFacade/Transaction/TransactionOriginApi.php @@ -1,10 +1,10 @@ trApiKey = $apiKey; $this->trApiPass = $apiPassword; $this->merchantId = $merchantId; $this->merchantSecret = $merchantSecret; parent::__construct(); + if (!$isProd) { + $this->apiURL = 'https://secure.sandbox.tpay.com/api/gw/'; + } } } diff --git a/Model/Config/Source/HashTypes.php b/Model/Config/Source/HashTypes.php new file mode 100644 index 0000000..6430cdd --- /dev/null +++ b/Model/Config/Source/HashTypes.php @@ -0,0 +1,39 @@ +toArray(); + $ret = []; + foreach ($arr as $key => $value) { + $ret[] = [ + 'value' => $key, + 'label' => $value, + ]; + } + + return $ret; + } + + /** + * Get options in "key-value" format + * + * @return list + */ + public function toArray() + { + return [ + 'sha1' => 'sha1', + 'sha256' => 'sha256', + 'sha512' => 'sha512', + 'ripemd160' => 'ripemd160', + 'ripemd320' => 'ripemd320', + 'md5' => 'md5', + ]; + } +} diff --git a/Model/NotificationModel.php b/Model/NotificationModel.php deleted file mode 100644 index 4950018..0000000 --- a/Model/NotificationModel.php +++ /dev/null @@ -1,19 +0,0 @@ -merchantId = $merchantId; - $this->merchantSecret = $merchantSecret; - parent::__construct(); - } -} diff --git a/Model/RefundModel.php b/Model/RefundModel.php deleted file mode 100644 index c5ea883..0000000 --- a/Model/RefundModel.php +++ /dev/null @@ -1,23 +0,0 @@ -trApiKey = $apiKey; - $this->trApiPass = $apiPassword; - $this->merchantId = $merchantId; - $this->merchantSecret = $merchantSecret; - parent::__construct(); - } -} diff --git a/Model/ResourceModel/Token.php b/Model/ResourceModel/Token.php new file mode 100644 index 0000000..cbdca06 --- /dev/null +++ b/Model/ResourceModel/Token.php @@ -0,0 +1,13 @@ +_init('tpay_credit_cards', 'id'); + } +} diff --git a/Model/ResourceModel/Token/Collection.php b/Model/ResourceModel/Token/Collection.php new file mode 100644 index 0000000..410cd3d --- /dev/null +++ b/Model/ResourceModel/Token/Collection.php @@ -0,0 +1,13 @@ +_init('tpaycom\magento2basic\Model\Tokens', 'tpaycom\magento2basic\Model\ResourceModel\Token'); + } +} diff --git a/Model/Sales/OrderRepository.php b/Model/Sales/OrderRepository.php index 6bc3b3a..f7a6832 100644 --- a/Model/Sales/OrderRepository.php +++ b/Model/Sales/OrderRepository.php @@ -1,5 +1,7 @@ setData('cli_id', $id); + + return $this; + } + + public function getToken($customerId) + { + // Get tokens collection + $tokensCollection = $this->getResourceCollection(); + $results = []; + // Load all data of collection + foreach ($tokensCollection as $token) { + if ((int) $token->getCliId() === (int) $customerId) { + $results[] = [ + 'tokenId' => $token->getId(), + 'token' => $token->getCliAuth(), + 'cardShortCode' => $token->getShortCode(), + 'vendor' => $token->getVendor(), + 'crc' => $token->getCrc(), + ]; + } + } + + return $results; + } + + /** + * @param string $token + * + * @return $this + */ + public function setToken($token) + { + $this->setData('cli_auth', $token); + + return $this; + } + + /** + * @param string $shortCode + * + * @return $this + */ + public function setShortCode($shortCode) + { + $this->setData('short_code', $shortCode); + + return $this; + } + + /** + * @param string $crc + * + * @return $this + */ + public function setCrc($crc) + { + $this->setData('crc', $crc); + + return $this; + } + + /** + * @param string $vendorName + * + * @return $this + */ + public function setVendor($vendorName) + { + $this->setData('vendor', $vendorName); + + return $this; + } + + /** @return $this */ + public function setCreationTime() + { + $this->setData('created_at', date('Y-m-d H:i:s')); + + return $this; + } + + /** + * @param string $requestToken + * + * @return $this + */ + public function deleteToken($requestToken) + { + $tokensCollection = $this->getResourceCollection(); + foreach ($tokensCollection as $token) { + if ($token->getCliAuth() === $requestToken) { + $token->delete(); + } + } + + return $this; + } + + protected function _construct() + { + $this->_init('tpaycom\magento2basic\Model\ResourceModel\Token'); + } +} diff --git a/Model/Tpay.php b/Model/Tpay.php index ffa291e..032de04 100755 --- a/Model/Tpay.php +++ b/Model/Tpay.php @@ -1,5 +1,7 @@ */ protected $availableCurrencyCodes = ['PLN']; - - /** @var string */ protected $redirectURL = 'https://secure.tpay.com'; - - /** @var string */ protected $termsURL = 'https://secure.tpay.com/regulamin.pdf'; /** @@ -73,12 +60,18 @@ class Tpay extends AbstractMethod implements TpayInterface /** @var Escaper */ protected $escaper; - /** @var Refund */ - protected $refund; - /** @var StoreManager */ protected $storeManager; + private $supportedVendors = [ + 'visa', + 'jcb', + 'dinersclub', + 'maestro', + 'amex', + 'mastercard', + ]; + public function __construct( Context $context, Registry $registry, @@ -90,7 +83,6 @@ public function __construct( UrlInterface $urlBuilder, Session $checkoutSession, OrderRepositoryInterface $orderRepository, - Refund $refund, Escaper $escaper, StoreManager $storeManager, $data = [] @@ -99,7 +91,6 @@ public function __construct( $this->escaper = $escaper; $this->checkoutSession = $checkoutSession; $this->orderRepository = $orderRepository; - $this->refund = $refund; $this->storeManager = $storeManager; parent::__construct( @@ -116,12 +107,12 @@ public function __construct( ); } - public function getRedirectURL() + public function getRedirectURL(): string { return $this->redirectURL; } - public function checkBlikLevel0Settings() + public function checkBlikLevel0Settings(): bool { if (!$this->getBlikLevelZeroStatus() || !$this->checkBlikAmount()) { return false; @@ -134,50 +125,66 @@ public function checkBlikLevel0Settings() return !(empty($apiKey) || strlen($apiKey) < 8 || empty($apiPassword) || strlen($apiPassword) < 4); } - /** @return bool */ - public function getInstallmentsAmountValid() + public function getInstallmentsAmountValid(): bool { $amount = $this->getCheckoutTotal(); return $amount > 300 && $amount < 9259; } - public function getBlikLevelZeroStatus() + public function getBlikLevelZeroStatus(): bool { return (bool) $this->getConfigData('blik_level_zero'); } - public function getApiKey() + public function getApiKey(): string { return $this->getConfigData('api_key_tpay'); } - public function getApiPassword() + public function getCardApiKey(): ?string + { + return $this->getConfigData('card_api_key_tpay'); + } + + public function getApiPassword(): string { return $this->getConfigData('api_password'); } - public function getInvoiceSendMail() + public function getCardApiPassword(): ?string + { + return $this->getConfigData('card_api_password'); + } + + public function getInvoiceSendMail(): string { return $this->getConfigData('send_invoice_email'); } - public function getTermsURL() + public function getTermsURL(): string { return $this->termsURL; } - public function getTpayFormData($orderId = null) + public function getOpenApiPassword() + { + return $this->getConfigData('open_api_password'); + } + + public function getTpayFormData(?string $orderId = null): array { $order = $this->getOrder($orderId); $billingAddress = $order->getBillingAddress(); - $amount = number_format($order->getGrandTotal(), 2, '.', ''); + $amount = number_format((float) $order->getGrandTotal(), 2, '.', ''); $crc = base64_encode($orderId); $name = $billingAddress->getData('firstname').' '.$billingAddress->getData('lastname'); - - /** @var string $phone */ $phone = $billingAddress->getData('telephone'); + $om = ObjectManager::getInstance(); + $resolver = $om->get('Magento\Framework\Locale\Resolver'); + $language = $this->validateCardLanguage($resolver->getLocale()); + return [ 'email' => $this->escaper->escapeHtml($order->getCustomerEmail()), 'name' => $this->escaper->escapeHtml($name), @@ -194,67 +201,65 @@ public function getTpayFormData($orderId = null) 'phone' => $phone, 'online' => $this->onlyOnlineChannels() ? 1 : 0, 'module' => 'Magento '.$this->getMagentoVersion(), + 'currency' => $this->getISOCurrencyCode($order->getOrderCurrencyCode()), + 'language' => $language, ]; } - public function getMerchantId() + public function getMerchantId(): int { return (int) $this->getConfigData('merchant_id'); } - public function getSecurityCode() + public function getOpenApiClientId() + { + return $this->getConfigData('open_api_client_id'); + } + + public function getSecurityCode(): string { return $this->getConfigData('security_code'); } - public function onlyOnlineChannels() + public function getOpenApiSecurityCode(): ?string { - return (bool) $this->getConfigData('show_payment_channels_online'); + return $this->getConfigData('open_api_security_code'); } - public function redirectToChannel() + public function onlyOnlineChannels(): bool { - return (bool) $this->getConfigData('redirect_directly_to_channel'); + return (bool) $this->getConfigData('show_payment_channels_online'); } - public function getCheckProxy() + public function redirectToChannel(): bool { - return (bool) $this->getConfigData('check_proxy'); + return (bool) $this->getConfigData('redirect_directly_to_channel'); } - public function getCheckTpayIP() + public function useSandboxMode(): bool { - return (bool) $this->getConfigData('check_server'); + return (bool) $this->getConfigData('use_sandbox'); } - public function getPaymentRedirectUrl() + public function getPaymentRedirectUrl(): string { - return $this->urlBuilder->getUrl('magento2basic/tpay/redirect', ['uid' => time().uniqid(true)]); + return $this->urlBuilder->getUrl('magento2basic/tpay/redirect', ['uid' => time().uniqid('', true)]); } /** * {@inheritDoc} - * * Check that tpay.com payments should be available. */ - public function isAvailable(CartInterface $quote = null) + public function isAvailable(?CartInterface $quote = null) { - /** @var float|int $minAmount */ $minAmount = $this->getConfigData('min_order_total'); - - /** @var float|int $maxAmount */ $maxAmount = $this->getConfigData('max_order_total'); - if ( - $quote - && ($quote->getBaseGrandTotal() < $minAmount || ($maxAmount && $quote->getBaseGrandTotal() > $maxAmount)) - ) { + if ($quote && ($quote->getBaseGrandTotal() < $minAmount || ($maxAmount && $quote->getBaseGrandTotal() > $maxAmount))) { return false; } - if (!$this->getMerchantId() - || ($quote && !$this->isAvailableForCurrency($quote->getCurrency()->getQuoteCurrencyCode())) - ) { + if (!$this->getMerchantId() || ($quote && !$this->isAvailableForCurrency($quote->getCurrency()->getQuoteCurrencyCode()))) { return false; } @@ -263,28 +268,24 @@ public function isAvailable(CartInterface $quote = null) public function assignData(DataObject $data) { - /** @var array $additionalData */ $additionalData = $data->getData('additional_data'); - $info = $this->getInfoInstance(); - $info->setAdditionalInformation( - static::CHANNEL, - isset($additionalData[static::CHANNEL]) ? $additionalData[static::CHANNEL] : '' - ); + $info->setAdditionalInformation(static::CHANNEL, array_key_exists(static::CHANNEL, $additionalData) ? $additionalData[static::CHANNEL] : ''); - $info->setAdditionalInformation( - static::BLIK_CODE, - isset($additionalData[static::BLIK_CODE]) ? $additionalData[static::BLIK_CODE] : '' - ); + $info->setAdditionalInformation(static::BLIK_CODE, array_key_exists(static::BLIK_CODE, $additionalData) ? $additionalData[static::BLIK_CODE] : ''); - if (isset($additionalData[static::TERMS_ACCEPT]) && 1 === $additionalData[static::TERMS_ACCEPT]) { - $info->setAdditionalInformation( - static::TERMS_ACCEPT, - 1 - ); + if (array_key_exists(static::TERMS_ACCEPT, $additionalData) && 1 === $additionalData[static::TERMS_ACCEPT]) { + $info->setAdditionalInformation(static::TERMS_ACCEPT, 1); } + // KARTY + $info->setAdditionalInformation(static::CARDDATA, isset($additionalData[static::CARDDATA]) ? $additionalData[static::CARDDATA] : ''); + $info->setAdditionalInformation(static::CARD_VENDOR, isset($additionalData[static::CARD_VENDOR]) && in_array($additionalData[static::CARD_VENDOR], $this->supportedVendors) ? $additionalData[static::CARD_VENDOR] : 'undefined'); + $info->setAdditionalInformation(static::CARD_SAVE, isset($additionalData[static::CARD_SAVE]) ? '1' === $additionalData[static::CARD_SAVE] : false); + $info->setAdditionalInformation(static::CARD_ID, isset($additionalData[static::CARD_ID]) && is_numeric($additionalData[static::CARD_ID]) ? $additionalData[static::CARD_ID] : false); + $info->setAdditionalInformation(static::SHORT_CODE, isset($additionalData[static::SHORT_CODE]) && is_numeric($additionalData[static::SHORT_CODE]) ? '****'.$additionalData[static::SHORT_CODE] : false); + return $this; } @@ -299,12 +300,9 @@ public function assignData(DataObject $data) */ public function refund(InfoInterface $payment, $amount) { - $this->refund - ->setApiKey($this->getApiKey()) - ->setApiPassword($this->getApiPassword()) - ->setMerchantId($this->getMerchantId()) - ->setMerchantSecret($this->getSecurityCode()); - $refundResult = $this->refund->makeRefund($payment, $amount); + $refundService = new RefundApiFacade($this); + + $refundResult = $refundService->makeRefund($payment, (float) $amount); try { if ($refundResult) { $payment @@ -322,70 +320,123 @@ public function refund(InfoInterface $payment, $amount) return $this; } + /** @return float current cart total */ + public function getCheckoutTotal() + { + $amount = (float) $this->getCheckout()->getQuote()->getBaseGrandTotal(); + + if (!$amount) { + $orderId = $this->getCheckout()->getLastRealOrderId(); + $order = $this->orderRepository->getByIncrementId($orderId); + $amount = $order->getGrandTotal(); + } + + return $amount; + } + public function getConfigData($field, $storeId = null) { - if (is_null($storeId)) { + if (null === $storeId) { $storeId = $this->storeManager->getStore()->getId(); } return parent::getConfigData($field, $storeId); } - /** - * Check that the BLIK should be available for order/quote amount - * - * @return bool - */ - protected function checkBlikAmount() + // KARTY + public function getCardSaveEnabled(): bool { - return (bool) ($this->getCheckoutTotal() >= $this->minAmountBlik); + return (bool) $this->getConfigData('card_save_enabled'); } - /** @return float current cart total */ - protected function getCheckoutTotal() + public function getCheckoutCustomerId(): ?string { - $amount = $this->getCheckout()->getQuote()->getBaseGrandTotal(); + $objectManager = ObjectManager::getInstance(); - if (!$amount) { - /** @var int $orderId */ - $orderId = $this->getCheckout()->getLastRealOrderId(); + /** @var \Magento\Customer\Model\Session $customerSession */ + $customerSession = $objectManager->get('Magento\Customer\Model\Session'); - $order = $this->orderRepository->getByIncrementId($orderId); - $amount = $order->getGrandTotal(); - } + return $customerSession->getCustomerId(); + } - return number_format($amount, 2, '.', ''); + public function getRSAKey(): string + { + return $this->getConfigData('rsa_key'); } - /** @return Session */ - protected function getCheckout() + public function isCustomerLoggedIn(): bool { - return $this->checkoutSession; + $objectManager = ObjectManager::getInstance(); + + /** @var \Magento\Customer\Model\Session $customerSession */ + $customerSession = $objectManager->get('Magento\Customer\Model\Session'); + + return $customerSession->isLoggedIn(); + } + + public function getHashType(): string + { + return $this->getConfigData('hash_type'); + } + + public function getVerificationCode(): string + { + return $this->getConfigData('verification_code'); } /** - * @param int $orderId + * @param string $orderId * - * @return \Magento\Sales\Api\Data\OrderInterface + * @return string */ - protected function getOrder($orderId = null) + public function getCustomerId($orderId) { - if (null === $orderId) { - /** @var int $orderId */ - $orderId = $this->getCheckout()->getLastRealOrderId(); - } + $order = $this->getOrder($orderId); - return $this->orderRepository->getByIncrementId($orderId); + return $order->getCustomerId(); } /** - * Availability for currency + * check if customer was logged while placing order * - * @param string $currencyCode + * @param string $orderId * * @return bool */ - protected function isAvailableForCurrency($currencyCode) + public function isCustomerGuest($orderId) + { + $order = $this->getOrder($orderId); + + return $order->getCustomerIsGuest(); + } + + public function getISOCurrencyCode($orderCurrency) + { + return $this->validateCardCurrency($orderCurrency); + } + + /** Check that the BLIK should be available for order/quote amount */ + protected function checkBlikAmount(): bool + { + return (bool) ($this->getCheckoutTotal() >= $this->minAmountBlik); + } + + protected function getCheckout(): Session + { + return $this->checkoutSession; + } + + protected function getOrder(?string $orderId = null): \Magento\Sales\Api\Data\OrderInterface + { + if (null === $orderId) { + $orderId = $this->getCheckout()->getLastRealOrderId(); + } + + return $this->orderRepository->getByIncrementId($orderId); + } + + /** Availability for currency */ + protected function isAvailableForCurrency(string $currencyCode): bool { return !(!in_array($currencyCode, $this->availableCurrencyCodes)); } @@ -393,8 +444,6 @@ protected function isAvailableForCurrency($currencyCode) private function getMagentoVersion() { $objectManager = ObjectManager::getInstance(); - - /** @var ProductMetadataInterface $productMetadata */ $productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface'); return $productMetadata->getVersion(); diff --git a/Model/TpayConfigProvider.php b/Model/TpayConfigProvider.php index b051ba1..57c6dc1 100644 --- a/Model/TpayConfigProvider.php +++ b/Model/TpayConfigProvider.php @@ -1,5 +1,7 @@ assetRepository = $assetRepository; - $this->paymentHelper = $paymentHelper; - } - - public function getConfig() - { - $tpay = $this->getPaymentMethodInstance(); - - $config = [ - 'tpay' => [ - 'payment' => [ - 'redirectUrl' => $tpay->getPaymentRedirectUrl(), - 'tpayLogoUrl' => $this->generateURL('tpaycom_magento2basic::images/logo_tpay.png'), - 'merchantId' => $tpay->getMerchantId(), - 'showPaymentChannels' => $this->showChannels(), - 'getTerms' => $this->getTerms(), - 'addCSS' => $this->createCSS('tpaycom_magento2basic::css/tpay.css'), - 'blikStatus' => $this->getPaymentMethodInstance()->checkBlikLevel0Settings(), - 'onlyOnlineChannels' => $this->getPaymentMethodInstance()->onlyOnlineChannels(), - 'getBlikChannelID' => TransactionModel::BLIK_CHANNEL, - 'isInstallmentsAmountValid' => $this->getPaymentMethodInstance()->getInstallmentsAmountValid(), - ], - ], - ]; - - return $tpay->isAvailable() ? $config : []; - } + /** @var ConfigFacade */ + protected $configFacade; - /** - * @param string $name - * - * @return string - */ - public function generateURL($name) + public function __construct(PaymentHelper $paymentHelper, Repository $assetRepository, TpayTokensService $tokensService) { - return $this->assetRepository->createAsset($name)->getUrl(); - } - - /** @return null|string */ - public function showChannels() - { - $script = 'tpaycom_magento2basic::js/render_channels.js'; - - return $this->createScript($script); - } - - /** - * @param string $script - * - * @return string - */ - public function createScript($script) - { - return " - "; - } - - /** @return null|string */ - public function getTerms() - { - return $this->getPaymentMethodInstance()->getTermsURL(); + $this->paymentHelper = $paymentHelper; + $this->configFacade = new ConfigFacade($this->getPaymentMethodInstance(), $assetRepository, $tokensService); } - /** - * @param string $css - * - * @return string - */ - public function createCSS($css) + public function getConfig() { - return "generateURL($css)}\">"; + return $this->configFacade->getConfig(); } /** @return MethodInterface|TpayInterface */ - protected function getPaymentMethodInstance() + private function getPaymentMethodInstance() { if (null === $this->paymentMethod) { $this->paymentMethod = $this->paymentHelper->getMethodInstance(TpayInterface::CODE); diff --git a/Service/TpayService.php b/Service/TpayService.php index de77619..0a517e6 100644 --- a/Service/TpayService.php +++ b/Service/TpayService.php @@ -1,9 +1,13 @@ orderRepository->getByIncrementId($orderId); - - $order->setTotalDue($order->getGrandTotal()) + $order + ->setTotalDue($order->getGrandTotal()) ->setTotalPaid(0.00) ->setBaseTotalPaid(0.00) ->setBaseTotalDue($order->getBaseGrandTotal()) @@ -85,14 +77,8 @@ public function addCommentToHistory($orderId, $comment) $order->save(); } - /** - * Return payment data - * - * @param int $orderId - * - * @return OrderPaymentInterface - */ - public function getPayment($orderId) + /** Return payment data */ + public function getPayment(string $orderId): OrderPaymentInterface { /** @var Order $order */ $order = $this->orderRepository->getByIncrementId($orderId); @@ -103,28 +89,25 @@ public function getPayment($orderId) /** * Validate order and set appropriate state * - * @param int $orderId - * @param array $validParams - * @param TpayInterface $tpayModel + * @throws Exception * - * @return bool|Order + * @return bool|OrderInterface */ - public function SetOrderStatus($orderId, array $validParams, $tpayModel) + public function SetOrderStatus(string $orderId, array $validParams, TpayInterface $tpayModel) { $order = $this->getOrderById($orderId); + if (!$order->getId()) { return false; } + $sendNewInvoiceMail = (bool) $tpayModel->getInvoiceSendMail(); - $orderAmount = (float) number_format($order->getGrandTotal(), 2, '.', ''); + $orderAmount = (float) number_format((float) $order->getGrandTotal(), 2, '.', ''); $trStatus = $validParams['tr_status']; $emailNotify = false; - if ( - 'TRUE' === $trStatus - && ((float) number_format($validParams['tr_paid'], 2, '.', '') === $orderAmount) - ) { - if (Order::STATE_PROCESSING != $order->getState()) { + if ('TRUE' === $trStatus && ((float) number_format($validParams['tr_paid'], 2, '.', '') === $orderAmount)) { + if (Order::STATE_PROCESSING !== $order->getState()) { $emailNotify = true; } $status = Order::STATE_PROCESSING; @@ -135,7 +118,7 @@ public function SetOrderStatus($orderId, array $validParams, $tpayModel) return $order; } else { - if (Order::STATE_HOLDED != $order->getState()) { + if (Order::STATE_HOLDED !== $order->getState()) { $emailNotify = true; } $comment = __('The order has been holded: ').'
'.$this->getTransactionDesc($validParams); @@ -147,11 +130,8 @@ public function SetOrderStatus($orderId, array $validParams, $tpayModel) } $order->setStatus($status)->setState($status)->save(); if ($sendNewInvoiceMail) { - /** @var Invoice $invoice */ foreach ($order->getInvoiceCollection() as $invoice) { - /** @var int $invoiceId */ $invoiceId = $invoice->getId(); - $this->invoiceService->notify($invoiceId); } } @@ -159,23 +139,54 @@ public function SetOrderStatus($orderId, array $validParams, $tpayModel) return $order; } - /** - * Get Order object by orderId - * - * @param int $orderId - * - * @return Order - */ - public function getOrderById($orderId) + /** Get Order object by orderId */ + public function getOrderById(string $orderId): OrderInterface { return $this->orderRepository->getByIncrementId($orderId); } + // KARTY + public function setCardOrderStatus($orderId, array $validParams, $tpayModel) + { + /** @var Order $order */ + $order = $this->orderRepository->getByIncrementId($orderId); + if (!$order->getId()) { + return false; + } + $sendNewInvoiceMail = (bool) $tpayModel->getInvoiceSendMail(); + $transactionDesc = $this->getCardTransactionDesc($validParams); + $orderAmount = (float) number_format((float) $order->getGrandTotal(), 2, '.', ''); + $emailNotify = false; + + $order = $this->updateTransactionId($order, $validParams); + + if (!isset($validParams['status']) || 'correct' !== $validParams['status'] || ((float) number_format((float) $validParams['amount'], 2, '.', '') !== $orderAmount)) { + $comment = __('Payment has been declined. ').'
'.$transactionDesc; + $this->addCommentToHistory($orderId, $comment); + } else { + if (Order::STATE_PROCESSING != $order->getState()) { + $emailNotify = true; + } + $this->registerCardCaptureNotificationTpay($order->getPayment(), $order->getGrandTotal(), $validParams); + } + + if ($emailNotify) { + $order->setSendEmail(true); + } + $order->save(); + if ($sendNewInvoiceMail) { + foreach ($order->getInvoiceCollection() as $invoice) { + $invoiceId = $invoice->getId(); + $this->invoiceService->notify($invoiceId); + } + } + + return $order; + } + /** * Get description for transaction * - * @param array $validParams - * * @return bool|string */ protected function getTransactionDesc(array $validParams) @@ -191,34 +202,42 @@ protected function getTransactionDesc(array $validParams) if ('CHARGEBACK' === $status) { $transactionDesc .= __('Transaction has been refunded'); } - if (isset($validParams['test_mode'])) { + if (array_key_exists('test_mode', $validParams)) { $transactionDesc .= ' TEST '; } return $transactionDesc; } + protected function getCardTransactionDesc($validParams) + { + if (empty($validParams)) { + return false; + } + if (isset($validParams['err_desc'])) { + return 'Payment error: '.$validParams['err_desc'].', error code: '.$validParams['err_code']; + } + $error = null; + if ('declined' === $validParams['status']) { + $error = $validParams['reason']; + } + + $transactionDesc = (is_null($error)) ? ' ' : ' Reason: '.$error.''; + $transactionDesc .= (isset($validParams['test_mode'])) && 1 === (int) $validParams['test_mode'] ? ' TEST ' : ' '; + + return $transactionDesc; + } + /** * Registers capture notification. * - * @param Payment $payment * @param float|string $amount - * @param array $validParams * @param bool|int $skipFraudDetection */ - private function registerCaptureNotificationTpay( - OrderPaymentInterface $payment, - $amount, - $validParams, - $skipFraudDetection = false - ) { - $payment->setTransactionId( - $this->transactionManager->generateTransactionId( - $payment, - Transaction::TYPE_CAPTURE, - $payment->getAuthorizationTransaction() - ) - ); + private function registerCaptureNotificationTpay(OrderPaymentInterface $payment, $amount, array $validParams, $skipFraudDetection = false) + { + // @var $payment Payment + $payment->setTransactionId($this->transactionManager->generateTransactionId($payment, Transaction::TYPE_CAPTURE, $payment->getAuthorizationTransaction())); $order = $payment->getOrder(); $amount = (float) $amount; @@ -245,14 +264,65 @@ private function registerCaptureNotificationTpay( } $message = $this->stateCommand->execute($payment, $amount, $order); - $payment->setTransactionId($validParams['tr_id']) + $payment + ->setTransactionId($validParams['tr_id']) ->setTransactionAdditionalInfo(Transaction::RAW_DETAILS, $validParams); - $transaction = $payment->addTransaction( - Transaction::TYPE_ORDER, - $invoice, - true - ); + + $transaction = $payment->addTransaction(Transaction::TYPE_ORDER, $invoice, true); $message = $payment->prependMessage($message); $payment->addTransactionCommentsToOrder($transaction, $message); } + + private function registerCardCaptureNotificationTpay(OrderPaymentInterface $payment, $amount, $validParams, $skipFraudDetection = false) + { + // @var $payment Payment + $payment->setTransactionId($this->transactionManager->generateTransactionId($payment, Transaction::TYPE_CAPTURE, $payment->getAuthorizationTransaction())); + + $order = $payment->getOrder(); + $amount = (float) $amount; + $invoice = $this->getInvoiceForTransactionId($order, $payment->getTransactionId()); + $orderCurrencyCode = $order->getOrderCurrency()->getCode(); + if (!in_array($orderCurrencyCode, CurrencyCodesDictionary::CODES)) { + throw new Exception(sprintf('Order currency %s does not exist in Tpay dictionary!', $orderCurrencyCode)); + } + $orderCurrency = array_search($orderCurrencyCode, CurrencyCodesDictionary::CODES); + // register new capture + if (!$invoice && $payment->isCaptureFinal($amount) && ($orderCurrency === (int) $validParams['currency'] || $orderCurrencyCode === $validParams['currency'])) { + $invoice = $order->prepareInvoice()->register(); + $invoice->setOrder($order); + $order->addRelatedObject($invoice); + $payment->setCreatedInvoice($invoice); + $payment->setShouldCloseParentTransaction(true); + $order->setState(Order::STATE_PROCESSING)->save(); + } else { + $payment->setIsFraudDetected(!$skipFraudDetection); + $this->updateTotals($payment, ['base_amount_paid_online' => $amount]); + } + + if (!$payment->getIsTransactionPending() && $invoice && Invoice::STATE_OPEN === $invoice->getState()) { + $invoice->setOrder($order); + $invoice->pay(); + $this->updateTotals($payment, ['base_amount_paid_online' => $amount]); + $order->addRelatedObject($invoice); + } + $payment + ->setTransactionId($validParams['sale_auth']) + ->setTransactionAdditionalInfo(Transaction::RAW_DETAILS, $validParams); + + $transaction = $payment->addTransaction(Transaction::TYPE_CAPTURE, $invoice, true); + $message = $this->stateCommand->execute($payment, $amount, $order); + $message = $payment->prependMessage($message); + $payment->addTransactionCommentsToOrder($transaction, $message); + } + + private function updateTransactionId(Order $order, array $validParams): Order + { + if (isset($validParams['transactionId'])) { + $additionalInfo = $order->getPayment()->getAdditionalInformation(); + $additionalInfo['transaction_id'] = $validParams['transactionId']; + $order->getPayment()->setAdditionalInformation($additionalInfo); + } + + return $order; + } } diff --git a/Service/TpayTokensService.php b/Service/TpayTokensService.php new file mode 100644 index 0000000..fc310dc --- /dev/null +++ b/Service/TpayTokensService.php @@ -0,0 +1,104 @@ +resourceConnection = $resourceConnection; + parent::__construct($context, $registry, $resource, $resourceCollection, $data); + } + + public function setCustomerToken(string $customerId, ?string $token, string $shortCode, string $vendor, ?string $crc = null) + { + $tokenEntity = $this->load($token, 'cli_auth'); + + if (!$tokenEntity->getId()) { + $this->setCustomerId($customerId) + ->setToken($token) + ->setShortCode($shortCode) + ->setVendor($vendor) + ->setCreationTime() + ->setCrc($crc) + ->save(); + } + } + + public function getCustomerTokens(string $customerId, bool $crcRequired = false): array + { + $connection = $this->resourceConnection->getConnection(); + $tableName = $connection->getTableName('tpay_credit_cards'); + + $select = $connection->select() + ->from($tableName) + ->where('cli_id = ?', $customerId) + ->where(new Zend_Db_Expr('cli_auth IS NOT NULL')) + ->where(new Zend_Db_Expr($crcRequired ? 'crc IS NOT NULL' : 'crc IS NULL')); + + $results = []; + foreach ($connection->fetchAll($select) as $token) { + $results[] = [ + 'tokenId' => $token['id'], + 'token' => $token['cli_auth'], + 'cardShortCode' => $token['short_code'], + 'vendor' => $token['vendor'], + 'crc' => $token['crc'], + ]; + } + + return $results; + } + + public function deleteCustomerToken(string $token): TpayTokensService + { + return $this->deleteToken($token)->save(); + } + + public function getWithoutAuthCustomerTokens(int $customerId, string $crc): array + { + foreach ($this->getToken($customerId) as $token) { + if (empty($token['crc'])) { + continue; + } + if ($token['crc'] === $crc && empty($token['token'])) { + return $token; + } + } + + return []; + } + + public function updateTokenById(int $tokenId, string $tokenValue) + { + $token = $this->load($tokenId); + $token->setToken($tokenValue); + $token->save(); + } + + public function getTokenById(int $tokenId, int $customerId, bool $crcRequired = true): ?array + { + $connection = $this->resourceConnection->getConnection(); + $tableName = $connection->getTableName('tpay_credit_cards'); + + $select = $connection->select() + ->from($tableName) + ->where('id = ?', $tokenId) + ->where('cli_id = ?', $customerId) + ->where(new Zend_Db_Expr($crcRequired ? 'crc IS NOT NULL' : 'crc IS NULL')); + + $result = $connection->fetchAll($select); + + return !empty($result) ? $result[0] : null; + } +} diff --git a/Setup/InstallSchema.php b/Setup/InstallSchema.php new file mode 100644 index 0000000..2fa4f81 --- /dev/null +++ b/Setup/InstallSchema.php @@ -0,0 +1,86 @@ +startSetup(); + + // Get tpay cards table + $tableName = $installer->getTable('tpay_credit_cards'); + // Check if the table already exists + if (true != $installer->getConnection()->isTableExists($tableName)) { + // Create table + $table = $installer->getConnection() + ->newTable($tableName) + ->addColumn( + 'id', + Table::TYPE_INTEGER, + null, + [ + 'identity' => true, + 'unsigned' => true, + 'nullable' => false, + 'primary' => true, + ], + 'ID' + ) + ->addColumn( + 'cli_auth', + Table::TYPE_TEXT, + null, + ['nullable' => false, 'default' => ''], + 'Token' + ) + ->addColumn( + 'cli_id', + Table::TYPE_TEXT, + null, + ['nullable' => false, 'default' => ''], + 'Summary' + ) + ->addColumn( + 'short_code', + Table::TYPE_TEXT, + null, + ['nullable' => false, 'default' => ''], + 'Description' + ) + ->addColumn( + 'vendor', + Table::TYPE_TEXT, + null, + ['nullable' => false, 'default' => ''], + 'Card vendor' + ) + ->addColumn( + 'crc', + Table::TYPE_TEXT, + null, + ['nullable' => false, 'default' => ''], + 'CRC' + ) + ->addColumn( + 'created_at', + Table::TYPE_DATETIME, + null, + ['nullable' => false], + 'Created At' + ) + ->setComment('Tpay credit cards') + ->setOption('type', 'InnoDB') + ->setOption('charset', 'utf8'); + $installer->getConnection()->createTable($table); + } + + $installer->endSetup(); + } +} diff --git a/Setup/Uninstall.php b/Setup/Uninstall.php new file mode 100644 index 0000000..92d64a8 --- /dev/null +++ b/Setup/Uninstall.php @@ -0,0 +1,20 @@ +startSetup(); + + $installer->getConnection()->dropTable($installer->getTable('tpay_credit_cards')); + + $installer->endSetup(); + } +} diff --git a/Setup/UpgradeSchema.php b/Setup/UpgradeSchema.php new file mode 100644 index 0000000..7b3f033 --- /dev/null +++ b/Setup/UpgradeSchema.php @@ -0,0 +1,15 @@ +install($setup, $context); + } +} diff --git a/composer.json b/composer.json index 3c17272..f577c2c 100755 --- a/composer.json +++ b/composer.json @@ -11,10 +11,11 @@ ], "require": { "php": ">=7.1", - "magento/module-sales": ">=100.0", - "magento/module-checkout": ">=100.0", - "magento/module-payment": ">=100.0", - "magento/framework": ">=100.0", + "magento/framework": "^100.0", + "magento/module-checkout": "^100.0", + "magento/module-payment": "^100.0", + "magento/module-sales": "^100.0", + "tpay-com/tpay-openapi-php": "^1.3", "tpay-com/tpay-php": "^2.3" }, "autoload": { diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 3ca7725..a17c546 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -27,16 +27,46 @@ - validate-no-empty validate-length maximum-length-32 + validate-no-empty validate-length maximum-length-32 - no-whitespace validate-length maximum-length-126 + validate-no-empty no-whitespace validate-length maximum-length-126 - no-whitespace validate-length maximum-length-40 + validate-no-empty no-whitespace validate-length maximum-length-40 + + + + + validate-no-empty no-whitespace validate-length maximum-length-126 + + + + validate-no-empty no-whitespace validate-length maximum-length-40 + + + + validate-no-empty + + + + validate-no-empty + + + + Magento\Config\Model\Config\Source\Yesno + + + + tpaycom\magento2cards\Model\Config\Source\HashTypes + + + + + Magento\Config\Model\Config\Source\Yesno @@ -78,6 +108,24 @@ Leave empty for no limit validate-number + + + + + validate-length maximum-length-64 + + + + validate-length maximum-length-64 + + + + + validate-no-empty validate-length maximum-length-32 + + + + diff --git a/etc/config.xml b/etc/config.xml index cdd16dc..f5303c0 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -27,8 +27,7 @@ 0 1 PLN - 1 - 0 + 0 diff --git a/etc/csp_whitelist.xml b/etc/csp_whitelist.xml index 6ca4386..4322ea9 100644 --- a/etc/csp_whitelist.xml +++ b/etc/csp_whitelist.xml @@ -6,36 +6,42 @@ https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com https://secure.tpay.com + https://secure.sandbox.tpay.com https://tpay.com diff --git a/etc/module.xml b/etc/module.xml index 9421664..fb59980 100755 --- a/etc/module.xml +++ b/etc/module.xml @@ -9,7 +9,7 @@ */ --> - + diff --git a/i18n/pl_PL.csv b/i18n/pl_PL.csv index ad7fda0..f894662 100644 --- a/i18n/pl_PL.csv +++ b/i18n/pl_PL.csv @@ -22,9 +22,9 @@ "There was an error during your payment.","Wystąpił błąd podczas Twojej płatności." "Thank you for your payment!","Dziękujemy za dokonanie płatności!" "I do accept Tpay service regulations","Akceptuję regulamin Tpay" -"My server use proxy","Mój serwer korzysta z proxy" -"Validate Tpay notifications server IP (recommended)","Sprawdzaj adres IP serwera powiadomień (zalecane)" +"Use sandbox mode (avoid using it in real production store)","Użyj trybu sandox (nie używaj tego na produkcyjnym sklepie)" "BLIK code","Kod BLIK" "Choose a payment method","Wybierz metodę płatności" "Transaction has been refunded","Transakcja została zwrócona" "The order has been holded","Zamówienie zostało wstrzymane" +"Send new invoice email to customer", "Wyślij fakturę na adres email klienta" diff --git a/view/base/web/css/tpaycards.css b/view/base/web/css/tpaycards.css new file mode 100644 index 0000000..704debf --- /dev/null +++ b/view/base/web/css/tpaycards.css @@ -0,0 +1,612 @@ +.tpay-insidebg { + width: 100%; + max-width: 630px; + margin: 0 auto; + box-sizing: border-box; + background: #F7F7FA; + padding-bottom: 3px; +} + +#blik_img { + top: 20px; + bottom: 8px; + left: 10px; +} + +.tpay-powered_by { + margin-left: 20px; + align-content: center; + background-image: url("https://tpay.com/img/banners/powered_by_tpay.svg"); + background-size: 170px 33px; + background-repeat: no-repeat; + margin-bottom: 1em; + width: 170px; + height: 33px; + display: block; +} + +#card_icons { + width: 100%; + text-align: center; + margin: 100px 0 15px 0; +} + +#card_icons .tpay-card_icon { + display: inline-block; + width: 44px; + height: 30px; + margin: 0 3px; + opacity: 0.6; + background-image: url('data:image/png;base64,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'); + background-size: 320px; +} + +#card_icons .tpay-card_icon.tpay-hover { + opacity: 1; +} + +.tpay-visa-icon { + height: 23px; + width: 35px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAXCAYAAACBMvbiAAAACXBIWXMAAAsTAAALEwEAmpwYAABAb2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3JpZ2h0cy8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxMjllMzUzZi05MmE1LTExZTktOGVjZC1jNTU5MGM3MGZhMzM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6YTA1MDAxZDMtNDM4Mi05YTRjLWJmMDctMDAyYjVjMDc2ZTkwPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6Qjc1MUJEQkIyMUZBRTcxMUJDNEY5MTAzN0M2ODY4QTI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI5NWExYmYyLTc1MGItOTg0YS05NGZhLTRhNDg3NWE3ZDVjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzoxNTo0MCswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBpbWFnZS9qcGVnIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gaW1hZ2UvanBlZyB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmEwNTAwMWQzLTQzODItOWE0Yy1iZjA3LTAwMmI1YzA3NmU5MDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzoxNTo0MCswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDpiOTVhMWJmMi03NTBiLTk4NGEtOTRmYS00YTQ4NzVhN2Q1YzY8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnV1aWQ6Qjc1MUJEQkIyMUZBRTcxMUJDNEY5MTAzN0M2ODY4QTI8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+dXVpZDpCNzUxQkRCQjIxRkFFNzExQkM0RjkxMDM3QzY4NjhBMjwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOC0wMS0xNVQxNToyMjowNy0wNTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjE1OjQwKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzoxNTo0MCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkxlZ2FjeUlQVENEaWdlc3Q+MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE8L3Bob3Rvc2hvcDpMZWdhY3lJUFRDRGlnZXN0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGUvPgogICAgICAgICA8eG1wUmlnaHRzOk1hcmtlZD5GYWxzZTwveG1wUmlnaHRzOk1hcmtlZD4KICAgICAgICAgPHRpZmY6SW1hZ2VXaWR0aD4xMDgwPC90aWZmOkltYWdlV2lkdGg+CiAgICAgICAgIDx0aWZmOkltYWdlTGVuZ3RoPjY0ODwvdGlmZjpJbWFnZUxlbmd0aD4KICAgICAgICAgPHRpZmY6Qml0c1BlclNhbXBsZT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+ODwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPjg8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT44PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC90aWZmOkJpdHNQZXJTYW1wbGU+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpTYW1wbGVzUGVyUGl4ZWw+MzwvdGlmZjpTYW1wbGVzUGVyUGl4ZWw+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpFeGlmVmVyc2lvbj4wMjIxPC9leGlmOkV4aWZWZXJzaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4zNTwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+b4zyjwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAFLUlEQVR42syWWWzUVRTGf/e/zky3zLSlLZZFoThQgWININpioUUaikYwICAC8cGoRB/UCJqqMRqXqGj0EUEJESEmilhFqUoMYlhNE2URCy0dSm2t05npLP/dhwGB6rtzkvNwc5P7ffcs3zmievrGC0AB/78lFGA0uWEFCjiJnImM67rkiknkkCkgkGSBZTlEo8O4jpe9EVBUGCCQp+O6Hq7rMjiYwHFcgsF8XMclFk/h0zVCxfl4rsdQLEVsKInrevj9GiUlBSiqjBCC4eEMiUQaPAiF8tF1Becy1mUywnMxUjb5+T7qF9ciSxI9kUEyGZOuc/1khjP4/RqpZJrwpHL8AR/D8RSxWIqJE8bjuR7d3X/Sda6f8JQKbp8zEVWTudg7RF/vEJ7lkEwZCFlQM20MCIneyCCOaSMkMSIyroXnWNgmBHSJxYtvobFxOp7nse3D/axfvxlVk5g6dSzf7H0GXddY1PIyLYtmsHHDPbS1HaGl5Vme3rCap568m+Liwn8eX37fW+zefQRNkdi56wmam2cAgpUr32TPnuOMHVcC3tU1IyCQp2HZDlu2fkdT03N8tOMHhBAsX3Ebo8cEiUb7WXLvbHRdY2AgxsEfT3LvkpkA7P26g4aGmbz6ymqKiwvZ195B25fH6OuLkkymMTIJbqsL09x8czb3QPVNYxlOprPHq1wCcBwPWZYYP34Uiqqxa+cBAHy6RllpEapeyPJltwPw6mufISsKVZOuA+CHAydY+2ATAKdORVjQtIGWRY9Tf0crkZ6/QKisWXMHAMlkKkumehy6rsKIRpY8Dy6747iUlwc5feYiieE0ALIsmD1rEuVlQcBj8+Z26uomA2BZNmc7++g69wcA4XAl+/e/wYKFjZw53UPvxSjV1WNYuvRW0mmTNzd9DkBt7fWMGlVIJmNyNb7keQ5Xe16eRmfnRQ7+eAqACRPKuOuuWgD27DlMPHaC+rowACdP9eC5Hm9v2s2OHfsBmDu3mq+/eoGHH2lmoP8ES+6ZhaoobNv+Lc+3bsG2HcZUllJZGSKeSF2DLWVjdcUlycUyMhw9dgaA9Y82s+aBBgC2fvA9oDNlcjZFv/4SITkcI/pXjJUrX6dpQSvHj/8OwMsvraKgcDRLlt4KgK5p3LlwNvF4EoCqqgri8cS12COFx/PAH/DR0XEWgJoZEyktDXL6twhtbYcor5hETc0EAH46eJKS0hDLltVRVlFC+759HD2a/URXdz9z62dQM/0GANaumc/er14kFMp229Sp4zANa4TO/IcSFocK+fl4J7Zlo6gKAB9u/RbTuMCcOTMpKw8C8EXbIdatm8/rr62j748ouqYSDOYD8M6mT1l1fz0A3V197Np1ACEEDfOmUVtbxbyGafj9Oq7tIivSJZ3x/k0mP89H5MIA27d/R2PjdKLRFJ9/dhhVLSEUzOdCpJ/oUIo/BxIMDsSIRAaorCzN1tGJHt59bzft7R20tq7gfHc/GzZu4+OPPwEEjfObeH/LY1imQUV5EZblIMtZMqLqxofiI6e2ENnOMg0TXVcwMjYICX/AhyyDZZqYpoPu00nEk2iaTEVFMZ7ncf78AH19UcKTx6IqglTKxDBsAnk+AAzDRJEFqiojJAnLchFCZKe2EPa/IiMAVRE4NqTSBrIkCAQUJMnGMCwyGRtZEkiSQ1GRj1TKoLMzAkBeno9weDSObZCIm0B2TkmXcFQF0mkDwxQEAhqydEWERfjGB+O5ss/k1AqRW/uM67oFOcKlQAF6c6Vm/h4A3wUxegHlIB0AAAAASUVORK5CYII='); +} + +.tpay-amex-icon { + height: 22px; + width: 35px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAWCAYAAABKbiVHAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4KGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxNzo1MDowOCswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjU1OjMwKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzo1NTozMCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDowMzdkYmY4NS0zNzU1LTUzNDQtYjk5Yy1mNGQyNDUzNmM5YzE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6MDM3ZGJmODUtMzc1NS01MzQ0LWI5OWMtZjRkMjQ1MzZjOWMxPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MDM3ZGJmODUtMzc1NS01MzQ0LWI5OWMtZjRkMjQ1MzZjOWMxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjAzN2RiZjg1LTM3NTUtNTM0NC1iOTljLWY0ZDI0NTM2YzljMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzo1MDowOCswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjM1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg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'); +} + +.tpay-jcb-icon { + height: 23px; + width: 30px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAXCAYAAAAcP/9qAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4ImlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxNzo1MyswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjU2OjI2KzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzo1NjoyNiswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDozZTE0OTFmMS05OGQ0LWFhNGEtYWMzNC1mZjA0MmM4MmI0M2Y8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6M2UxNDkxZjEtOThkNC1hYTRhLWFjMzQtZmYwNDJjODJiNDNmPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6M2UxNDkxZjEtOThkNC1hYTRhLWFjMzQtZmYwNDJjODJiNDNmPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjNlMTQ5MWYxLTk4ZDQtYWE0YS1hYzM0LWZmMDQyYzgyYjQzZjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzo1MyswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg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'); +} + +.tpay-mastercard-icon { + height: 23px; + width: 38px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAXCAYAAABnGz2mAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/hmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDowN2U4M2JlZS05MmFiLTExZTktOGVjZC1jNTU5MGM3MGZhMzM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6OWRmZGNjNmEtODI4Ny05ZjQxLTk0YzQtNjBmMzE0MjVlZmExPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPjk5RDAwMEY1OUMyNkNERDNGQjU1RUFCMDkzRkNDNkNCPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDoxY2ZkMzEyYy0zMTJkLTVlNGMtOGNhNi02MGI0M2I5YTE5MmQ8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDYtMTlUMTc6NTg6MjArMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gaW1hZ2UvanBlZyB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5kZXJpdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmNvbnZlcnRlZCBmcm9tIGltYWdlL2pwZWcgdG8gaW1hZ2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ZGZkY2M2YS04Mjg3LTlmNDEtOTRjNC02MGYzMTQyNWVmYTE8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDYtMTlUMTc6NTg6MjArMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6MWNmZDMxMmMtMzEyZC01ZTRjLThjYTYtNjBiNDNiOWExOTJkPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD45OUQwMDBGNTlDMjZDREQzRkI1NUVBQjA5M0ZDQzZDQjwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD45OUQwMDBGNTlDMjZDREQzRkI1NUVBQjA5M0ZDQzZDQjwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGUvPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxNzo0NzoxNiswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjU4OjIwKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzo1ODoyMCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8dGlmZjpJbWFnZVdpZHRoPjYwMDwvdGlmZjpJbWFnZVdpZHRoPgogICAgICAgICA8dGlmZjpJbWFnZUxlbmd0aD4zNTk8L3RpZmY6SW1hZ2VMZW5ndGg+CiAgICAgICAgIDx0aWZmOkJpdHNQZXJTYW1wbGU+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPjg8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT44PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+ODwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwvdGlmZjpCaXRzUGVyU2FtcGxlPgogICAgICAgICA8dGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPjI8L3RpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6U2FtcGxlc1BlclBpeGVsPjM8L3RpZmY6U2FtcGxlc1BlclBpeGVsPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6RXhpZlZlcnNpb24+MDIyMTwvZXhpZjpFeGlmVmVyc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+Mzg8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjM8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg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'); +} + +.tpay-maestro-icon { + height: 23px; + width: 38px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAXCAYAAABnGz2mAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4KGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxNzo0MzozMCswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjU5OjA0KzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzo1OTowNCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDoxNTYzOTVkZi0yMTY5LWRmNDEtOWNjZS1mMTZmZGQzZmNjMzU8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6MTU2Mzk1ZGYtMjE2OS1kZjQxLTljY2UtZjE2ZmRkM2ZjYzM1PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MTU2Mzk1ZGYtMjE2OS1kZjQxLTljY2UtZjE2ZmRkM2ZjYzM1PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjE1NjM5NWRmLTIxNjktZGY0MS05Y2NlLWYxNmZkZDNmY2MzNTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzo0MzozMCswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjM4PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg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'); +} + +.tpay-dinersclub-icon { + height: 23px; + width: 36px; + background-image: url('data:image/png;base64,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/GMzLdsAADskaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzEzMiA3OS4xNTkyODQsIDIwMTYvMDQvMTktMTM6MTM6NDAgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE5LTA2LTE5VDE4OjAwOjUxKzAyOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTktMDYtMTlUMTg6MDE6MjUrMDI6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA2LTE5VDE4OjAxOjI1KzAyOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjNmYjUxNGJjLWQ1ZTMtMWU0ZS1hY2Q3LTM1MzE0YWZiMDk1YTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjc2NTQyNGQ4LTkyYWItMTFlOS04ZWNkLWM1NTkwYzcwZmEzMzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjVmN2MwNzY1LWRiMDQtN2Y0NS05ZjUwLTQ2ZTNiODU4YzIxNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo1ZjdjMDc2NS1kYjA0LTdmNDUtOWY1MC00NmUzYjg1OGMyMTY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDYtMTlUMTg6MDA6NTErMDI6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjNmYjUxNGJjLWQ1ZTMtMWU0ZS1hY2Q3LTM1MzE0YWZiMDk1YTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxODowMToyNSswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+MzAwMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MzAwMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4zNjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yMzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+oqMipgAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAGUUlEQVR42pyWaWxcVxXHf/etM2/2GcdLvNQNThOCA2khjWjUhRDXAkSioqKqbI0QJS0SIBZRBYFKpUhhLaIqRS2CCGioqIXYKmhLSRu3qCWgOrSp4tpN48S7Hc94Fo9n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'); +} + +.tpay-unionpay-icon { + height: 23px; + width: 37px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAXCAYAAACMLIalAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4KGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxNzo1MjozOCswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE3OjU3OjEzKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xOVQxNzo1NzoxMyswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDozNzdkZWRlMS1jYTAwLWE5NDQtODg2OS1hNzU4NGNlNjhjYzE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6Mzc3ZGVkZTEtY2EwMC1hOTQ0LTg4NjktYTc1ODRjZTY4Y2MxPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6Mzc3ZGVkZTEtY2EwMC1hOTQ0LTg4NjktYTc1ODRjZTY4Y2MxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjM3N2RlZGUxLWNhMDAtYTk0NC04ODY5LWE3NTg0Y2U2OGNjMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xOVQxNzo1MjozOCswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjM3PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4Mek1cAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAe4SURBVHjajJZ7bFzFFcZ/M/exb++u7fiVuI4Tx847wdhxYgiQUIUmFJJW4pG2olWFWlRBES0ItfSlVqpoVSqVUlCriopIBZqGtlTikUZO/iBpEoKdmLSGxA4pcRy/1uu1d73r3b13pn/cxA5gA0e6utI9M+d895sz53xC8wVmTaKF4lL54E7HLP5BaqMMyAEawBWCmsI0o6bNVxc30xGtAq1BKz5iLqA0LLWgxgQBzLHsKvMRS9l0Nd8vRuLXznwVGpQUW/K2cVALjdAf2qUVEafAtqYbOVzZAJkEKAVCfDRFTkOTDSstmFTg4AH7OFMSfPlRM+O7KrMGDPF1U38UEEBFcZoD0SoOx6ogM+axNBcgR0NQQLUBU9pj7ZMAXWHFNXKm3/1gdkeItrnWe+fn0BWMgTRB5+YPXgTiEmwBRc2nNqmgaJ2QCMHMYxgr0CxzhoZQE5MIn407OoZKjmMYBkiDt4KxTw6ugKgJTh7GxmE8BZnMZTY+gTLDPWq6M9WnQYk2rRT+9hZQgsLpd7DXNiFDIayesyQsPycDUXCL8wfVgAFYRUpCYdobVhDz+znYe46R5DgEgx+zV0DROiaFkgglEa7EHR3faFSVU33kJUJ3bKc41UPloRco+c69hJI9nNY25/xhmEhDYhKkhEIRCo7HQNGFbAGkC06a53bdxmv33M19rc0MP/Zddl6zFoZHvMuhNLiuV5dX3oIEgpNSGAbCMBCmidLpNrtlDQDZv+3HCjRhREuY2vcKfop0hksh47KorpyNW9bAxQSW0lhKwUgKUSgiHMDIQ0WY25tW8O09L3LTz37pXRTLgqksIp3B1BqKDqQz+B0Xv98HDp1IN2tqXbzMuazTuOsDn93sgTpykNBtO3EGhlD5PJw4xUN1tbyz7wQLfZJ19ZU8ns7x3I92896lJD9/roNHd9/AhmW1vHyul9+8eQypNZ/b2MqDt97C673nqCiLc+Cn3yOZzfFa73s0V5ZzfjTJ1pWN7N77EuSdo8gIUmuJVhJVcJuliBHcdiOFvrPkGCN8106Kp3qINNRxqXQB6YFh2lfVsXZxJXmleeKB2/jzv7oIWgY/+PJNRCMBTvUN0VATZ/NnakEIBiYmeWR/B3/q7Ob25Y28cqaPbQ1L6E2M0V5fx6937eDM8CiZ/mEIGscIZJEGBqYwEUK2aCkpXriI3dDIko5/E7z786Qef5rg1nbGTp8hOZ5mMpNjUVWMvv4EQsCuzauYyhdRpmRiIksqkaY/l2bz0nqGJtN844nf8fc9f6FlQTmL4jG2NzYwMDnJkRNdLAqFSOamefiv/4CSSJZ84C2yQUwtHK8H+ayN0u9j9K77Cd97F/aqJoa23k3u8GF4uYnelMtvG9aTH5/gVE0Zezu6OXp2gG2blvPwT17gxg3LEK4gK10mz7mELR+/7+yG8lIIBfnhgUN0jiWpi8c49O5ZsGywLB59+VWYykE82oWaHgMQF8vXAZQo074gTF/UTY7iZIe8lmHGMRYspHbwFA/WX8eTZRvATcN0ASpj0DuI6bq0fO1mTh58m2hRYrXXEGz0ETRtuvv+R1lJhK3Ll9F5aQhHawzX5fzxTp5+5AGur1vE2h//Airi4PiewLEeRmhMQ0gU8loQUe0UkCVR7JLoTOswVQG3bCmnqhqgNAT5y47pAjRU8cfv38mu61fyUDzMjuZlrGpfxOn3hrlz9QqafvUU96xfw47Vy0lP51lYEiHvuLy6qZVbVzbxlT0vghTehDCdEwgNQiOVNFBSts3XzyLK4bwvxNuBKLiFWUc6x7VLqvli+wqe7+hGSMmaxhrOD49TF4vSN5bkQmKMW5oa6BlJoJTisf0H+e/IKN/a1Mq+k2/zxvn3IR71ZmPR7kRJcA2kdhTApvnaf9gpcDoQJeULgevMOkwDO+wnEvazo62Ra5ZUI21BaiLH0vJSnnrjKOWBALWlcRYEA4R9PoQ02LCwhqBpcvjiILgKpAFC9wB93tQWSCmUpaEVPc8QVi5dwSgYttd1wXtPF7hh3WKU1tzz+D5altWy93gnqWSKs+MpnjneyX3XtfFuYoxYKMQ/u7oRhQJ18SjPdnXz2pleME3v+JR8E8MF0wHTwdSGtR4hqpkDlYEGw6QzGPugQrs8UkYTaaQQjI1MMJVKs2XDaspsP50XLlLITfOllvUks1kWBAPcvHoF9ckUp0dGaSgpYTo5DpGwF1eZR3FsEF4O0V/R+oA25JMzLFxdT65DxjDZsPwmBv0Rb+rPiLgClTWl3NrWSP/IBANDk6zZspCElccsCt66NAjAwpIIlaEQCyJhhpPjdPznHW5uXsuxCwNM5XJgGADrEbp75p/7K1qe14axey5QtYUsr0er2N50g1dPV8tey4CJLAwmIRoBqWGdAVHD01DRKEznwXGgWPSGsM8Hfh9kpiAW9Qa61u/jWIuvPihTS3ndXIC4XE9HwuVg+sApfEjIuRD0wdJqT/pWm1BvQ0HPVkLAP3fceGxWeAnxJvqy6rwCCphf4GhF1rTBDsB0+uM1lAn4xSwo8Smkr9AwHn+WnB8Md9bVX932Ta31M0CW2dYIQKlb4H07yB31rfQE4xLlaOa6EVdOtcmCClPgas38KlgAfiCDkvejjb0fXvD/AQA3sTmFg+ae+QAAAABJRU5ErkJggg=='); +} + +.tpay-discover-icon { + height: 22px; + width: 62px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAAWCAYAAACYPi8fAAAACXBIWXMAAAsTAAALEwEAmpwYAAA58mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xOVQxODowMzo1NSswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTktMDYtMTlUMTg6MDM6NTUrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTE5VDE4OjAzOjU1KzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDplOWUwNDhiOC1lMmZlLTY0NDgtODgwOC01YTAwMjNmMGJmYWE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkNzAwNDA2Ni05MmFiLTExZTktOGVjZC1jNTU5MGM3MGZhMzM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDpkZmIzNjIyZS0zMjZmLTZkNGMtOGMyZC04ODhmZjUyODMzMDQ8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZGZiMzYyMmUtMzI2Zi02ZDRjLThjMmQtODg4ZmY1MjgzMzA0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA2LTE5VDE4OjAzOjU1KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZTllMDQ4YjgtZTJmZS02NDQ4LTg4MDgtNWEwMDIzZjBiZmFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA2LTE5VDE4OjAzOjU1KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NjI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PmrYaHUAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAACtpJREFUeNrsmOlXlPcBhe+7zj7DrCzDLjvIjlaMLBoXpCpRE7W2mtqYZpFEMUmbRm0w1TaLaU1jcmoaK2g1AkZNiKgRgnVBTUAIyKaAwrAjAsPs77y/fshp+z80Pv/Bc+4998OlCCH4MULjR8oj8UfiPxKo3KzsAJZlpDabHRmzMlx+/v7DDMsIPMuhsrIS09M2qBSKQI3Wh03PyBhY/dST7rHRMRwpKZ0pk8kCdHpda6DZ3Gfy9YNKrcbVK//C5MQk7ty5qw4LDZknkUr9rdbpb/Py85vS5jwG6b2boKfH4R7oUIjWoTxa4hNCvK5OzvXwgovlXTeDVuPggQ+j77a1ClteLuwKCwvF9LQNPC9BgNmMk2XlssMlh4MWL1o0qlSphOt1dUaVSiUCgNfrZQSv92FRUdH4mTNngttu32Zkcjk1d95jdpt1eig5NQU93T0JguDRskMDA3s4CZ80Mjzi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'); +} + +.tpay-card-icon { + position: absolute; + bottom: 12px; + right: 18px; +} + +#saved_icon { + margin-left: 5px; + display: inline-block; +} + +.tpay-new-card-section { + padding-top: 7px; +} + +.tpay-amPmCheckbox { + text-align: center; + padding-top: 16px; +} + +.tpay-amPmCheckbox input[type="checkbox"] { + display: none; +} + +.tpay-amPmCheckbox input[type="checkbox"] + label { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAiCAYAAABStIn6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4KGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xM1QxODoxMTo0MiswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTEzVDE4OjE1OjE4KzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xM1QxODoxNToxOCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo1NDhmMDUxZC1kNGQxLWViNDktYjczNC1mMjRhOTBkNDVjNWU8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6NTQ4ZjA1MWQtZDRkMS1lYjQ5LWI3MzQtZjI0YTkwZDQ1YzVlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NTQ4ZjA1MWQtZDRkMS1lYjQ5LWI3MzQtZjI0YTkwZDQ1YzVlPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjU0OGYwNTFkLWQ0ZDEtZWI0OS1iNzM0LWYyNGE5MGQ0NWM1ZTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xM1QxODoxMTo0MiswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj45NjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE4PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjM0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6Eq5g2AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAATuSURBVHja7JRdTFNnGMcfZRCJgAIKyeIFky1lMupcdPHGLJv7kJixCynKlzoEKRTwAxDITk9Lz3vOqdCRAFK6rMgunJqYzUxNlsWERQt+tECLtCAaUgcylTDdd0xb+t8FUmSBaBYv9ya/u/P+8pz3/89DJpOJTCYTGY1GYoyliqK4jTH2IWPsg4UQRfEjQRDekSQp0WQyUWNjIzU2NhLNimRZjjEYDMWiKB4VRVEQRdGwEJIkMcaYwBhLnycyGo0ky3J0c3Pzha6uLvT396Ovr29Rent7ce3aNZw4cQKSJBWGRIIgrKuvry+8ePEipqen8awTDAYBACMjI2hqajonyzI1NDQQ8Tz/nl6v5xwOBwDA5/Nhenp6UQKBAAKBACYmJtDe3u7U6/WrJEki4jjufZ7nebvdDgDPnCoYDCIYDGJiYgJtbW39HMfFC4JAxHHcVp7ntf9R1MdxXNz/oucXvZjURFHcKopiaKLn7dHdu3dhsVhcBoNhtdFoJMrOzk4rKCgo7u7uDrX2eZo9OjoKk8n0Q11d3RKdTke0fPlySklJiT958uSl69evw+PxwO12L8rg4CAGBgZw+fJl5OfnaxITE0mhUBBFRERQdHQ0JSUlvZyRkfGZRqOxFhUVWYqKitoXQq1WW3bv2dP29qaNWQmr4mnBs3nzZsrLy6PMzMxFyc7OpvT0dAoLW0pLloZTeOQKemlZNFFsbCxFRUWRSqUis9lMsiyTJEmLIkoytTRo6YiuaVXS3r6k1MIeSi3sITKbzWQ2m6mlpYUYYxmMMSbLMpMkybAQR2UmdLYfPZSnPf+touTWDWWZJ1JZ5qHQhpNluezUqVOw2+2LL7b+PtwZ6Udxgw1rCoagLHUirdRlSyt1RZMkScQYi2xtbbV5vd5nxm86O4nE3W68XuxEWqlrFifp9foInudfPX78+Njk5CT8fn+o3cFgcF7TxdNjiFHZodjvhFLjgrLUCUXJEJLVt8dJp9OFa7XatR0dHd7JyUkAwMM/Ajhjm8K9h76QRP/1OFaq7EgtcUGpcWG9xolX9t/CJo1tZPvhs4nE83w4x3FrrVar9/dfpwAAByxe0Ls27Pn8NoJBgJ0ex8osOzaUDyCt1IX1GhfW7HVjQ8lVCEJ9boNWTSFRR0eH97dHU6j44g5iMu3YeOAGErId2K4bRtKnfU+/BxJyerHDOI5LP3aBaQ8VH6mtmxN9d+Yrb67xBmKynHijZOaCUuPCmt29WKd2QvlkktW7HPhYPwxfAHC7ruJwZVVxbW3tnOib053eOuswYnc5/50I0kpdeKt8ALFZdmzXDeOxzw8AsNm6UV1dPV9ktVq9Ad8jNJ+/j/idDqzXzEneLBvAyiw7tmmH8NfjuRS7uxcW3Xn4y8xjt567h/idjlBCcTvt+MRwMySZrcQ8kcFgiNDr9a91dnaOP3jwAMDMR+YLP2NFlh1RO+zIkm/iz7/9IYnPN1OLK1euoKqqan9NTQ2RIAhUX18ffezYsatjY2PzWmz5fgq5pp/m/c5sUf1+P7q6ulBbW5tbXV1NpFAoKDk5mfbt21fd09ODwcHBJ7gxNjqE+2PDGB5yY/Cp5ebxeOBwOCBJ0gWVSrUsJydnbhclJCREbNmyJV+tVpsPHjxoKS8vNy9ERUVFe2Vl5ZcqlaomLi4uMSwsjCIjI4kAvBD+GQAie2TvjW1Y1AAAAABJRU5ErkJggg==') no-repeat scroll left top transparent; + padding-left: 30px; + font-family: 'Lato', sans-serif; + font-size: 14px; + color: #1B2257; + height: 17px; +} + +.tpay-amPmCheckbox input[type="checkbox"]:checked + label { + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAiCAYAAABStIn6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4KGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wNi0xM1QxODoxMTo0MiswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTEzVDE4OjE1OjE4KzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOS0wNi0xM1QxODoxNToxOCswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo1NDhmMDUxZC1kNGQxLWViNDktYjczNC1mMjRhOTBkNDVjNWU8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6NTQ4ZjA1MWQtZDRkMS1lYjQ5LWI3MzQtZjI0YTkwZDQ1YzVlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NTQ4ZjA1MWQtZDRkMS1lYjQ5LWI3MzQtZjI0YTkwZDQ1YzVlPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjU0OGYwNTFkLWQ0ZDEtZWI0OS1iNzM0LWYyNGE5MGQ0NWM1ZTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNi0xM1QxODoxMTo0MiswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj45NjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE4PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjM0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6Eq5g2AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAATuSURBVHja7JRdTFNnGMcfZRCJgAIKyeIFky1lMupcdPHGLJv7kJixCynKlzoEKRTwAxDITk9Lz3vOqdCRAFK6rMgunJqYzUxNlsWERQt+tECLtCAaUgcylTDdd0xb+t8FUmSBaBYv9ya/u/P+8pz3/89DJpOJTCYTGY1GYoyliqK4jTH2IWPsg4UQRfEjQRDekSQp0WQyUWNjIzU2NhLNimRZjjEYDMWiKB4VRVEQRdGwEJIkMcaYwBhLnycyGo0ky3J0c3Pzha6uLvT396Ovr29Rent7ce3aNZw4cQKSJBWGRIIgrKuvry+8ePEipqen8awTDAYBACMjI2hqajonyzI1NDQQ8Tz/nl6v5xwOBwDA5/Nhenp6UQKBAAKBACYmJtDe3u7U6/WrJEki4jjufZ7nebvdDgDPnCoYDCIYDGJiYgJtbW39HMfFC4JAxHHcVp7ntf9R1MdxXNz/oucXvZjURFHcKopiaKLn7dHdu3dhsVhcBoNhtdFoJMrOzk4rKCgo7u7uDrX2eZo9OjoKk8n0Q11d3RKdTke0fPlySklJiT958uSl69evw+PxwO12L8rg4CAGBgZw+fJl5OfnaxITE0mhUBBFRERQdHQ0JSUlvZyRkfGZRqOxFhUVWYqKitoXQq1WW3bv2dP29qaNWQmr4mnBs3nzZsrLy6PMzMxFyc7OpvT0dAoLW0pLloZTeOQKemlZNFFsbCxFRUWRSqUis9lMsiyTJEmLIkoytTRo6YiuaVXS3r6k1MIeSi3sITKbzWQ2m6mlpYUYYxmMMSbLMpMkybAQR2UmdLYfPZSnPf+touTWDWWZJ1JZ5qHQhpNluezUqVOw2+2LL7b+PtwZ6Udxgw1rCoagLHUirdRlSyt1RZMkScQYi2xtbbV5vd5nxm86O4nE3W68XuxEWqlrFifp9foInudfPX78+Njk5CT8fn+o3cFgcF7TxdNjiFHZodjvhFLjgrLUCUXJEJLVt8dJp9OFa7XatR0dHd7JyUkAwMM/Ajhjm8K9h76QRP/1OFaq7EgtcUGpcWG9xolX9t/CJo1tZPvhs4nE83w4x3FrrVar9/dfpwAAByxe0Ls27Pn8NoJBgJ0ex8osOzaUDyCt1IX1GhfW7HVjQ8lVCEJ9boNWTSFRR0eH97dHU6j44g5iMu3YeOAGErId2K4bRtKnfU+/BxJyerHDOI5LP3aBaQ8VH6mtmxN9d+Yrb67xBmKynHijZOaCUuPCmt29WKd2QvlkktW7HPhYPwxfAHC7ruJwZVVxbW3tnOib053eOuswYnc5/50I0kpdeKt8ALFZdmzXDeOxzw8AsNm6UV1dPV9ktVq9Ad8jNJ+/j/idDqzXzEneLBvAyiw7tmmH8NfjuRS7uxcW3Xn4y8xjt567h/idjlBCcTvt+MRwMySZrcQ8kcFgiNDr9a91dnaOP3jwAMDMR+YLP2NFlh1RO+zIkm/iz7/9IYnPN1OLK1euoKqqan9NTQ2RIAhUX18ffezYsatjY2PzWmz5fgq5pp/m/c5sUf1+P7q6ulBbW5tbXV1NpFAoKDk5mfbt21fd09ODwcHBJ7gxNjqE+2PDGB5yY/Cp5ebxeOBwOCBJ0gWVSrUsJydnbhclJCREbNmyJV+tVpsPHjxoKS8vNy9ERUVFe2Vl5ZcqlaomLi4uMSwsjCIjI4kAvBD+GQAie2TvjW1Y1AAAAABJRU5ErkJggg==') no-repeat scroll left bottom transparent; +} + +#card_payment_form input.wrong, +form select.wrong +{ + border: 1px solid #ff9696; + box-shadow: 0 1px 3px #dcdcdc; + background: #ffeeee; +} + +.tpay-panel-inside-content input.wrong + label +{ + color: #ff9696; +} + +#card_payment_form input.valid, form select.valid { + border: 1px solid #3BD16B; + box-shadow: 0 1px 3px #dcdcdc; + background: #f2fff6; +} + +.tpay-groups-wrapper { + text-align: center; + display: flex; + justify-content: center; + flex-wrap: wrap; + position: relative; + width: 102%; + margin-left: -1%; +} + +.tpay-groups-wrapper .tpay-group-holder { + vertical-align: top; + display: inline-block; + position: relative; + width: 23%; + margin: 5px 1%; + height: 75px; + background: #FFF; + border-radius: 6px; + border-color: #FFF; + transition: box-shadow 125ms ease-out, border-color 125ms ease-out, opacity 125ms ease-out; + -webkit-transition: box-shadow 125ms ease-out, border-color 125ms ease-out, opacity 125ms ease-out; + -moz-transition: box-shadow 125ms ease-out, border-color 125ms ease-out, opacity 125ms ease-out; + -o-transition: box-shadow 125ms ease-out, border-color 125ms ease-out, opacity 125ms ease-out; +} + +.tpay-groups-wrapper .tpay-group-holder { + opacity: 1; + cursor: pointer; + border: 2px solid transparent; + box-sizing: border-box; +} + +.tpay-groups-wrapper .tpay-group-holder:hover, +.tpay-groups-wrapper .tpay-group-holder.tpay-loading, +.tpay-groups-wrapper .tpay-group-holder.tpay-active { + border-color: #C4F1D2; + box-shadow: 0 5px 20px #DCDCDC; +} + +.tpay-groups-wrapper .tpay-group-holder.tpay-offline { + opacity: 0.85; +} + +.tpay-groups-wrapper .tpay-group-holder.tpay-offline:hover, +.tpay-groups-wrapper .tpay-group-holder.tpay-offline.tpay-loading, +.tpay-groups-wrapper .tpay-group-holder.tpay-offline.tpay-active { + cursor: not-allowed; + border-color: transparent; + box-shadow: none; +} + +.tpay-groups-wrapper .tpay-group-holder .tpay-offline-wrapper { + top: -8px; + right: -8px; + width: 60px; + height: 60px; +} + +.tpay-groups-wrapper .tpay-group-holder .tpay-offline-wrapper::before, +.tpay-groups-wrapper .tpay-group-holder .tpay-offline-wrapper::after { + border: 3px solid #AAA; +} + +.tpay-groups-wrapper .tpay-group-holder .tpay-offline-wrapper span { + left: -14px; + top: 12px; + background-color: #AAA; + width: 97px; +} + +.tpay-groups-wrapper .tpay-group-holder.tpay-active { + border-color: #3BD16B; +} + +.tpay-groups-wrapper .tpay-group-holder-content { + display: block; + height: 100%; + width: 100%; +} + +.tpay-groups-wrapper .tpay-group-name { + font-size: 12px; + font-weight: bold; + text-align: center; + padding: 0 12px; + display: table-cell; + height: 100%; + vertical-align: middle; +} + +.tpay-groups-wrapper .tpay-with-logo .tpay-group-name { + display: none; +} + +.tpay-groups-wrapper .tpay-group-logo-holder { + height: 100%; + width: 100%; + text-align: center; + vertical-align: middle; + display: block; +} + +.tpay-groups-wrapper .tpay-group-logo-holder img { + max-width: 80%; + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.tpay-groups-wrapper .tpay-line-preloader { + background-color: #FFF; +} + +.tpay-groups-wrapper .tpay-channels-helper { + height: 0; + position: absolute; + top: 0; + z-index: 1; + left: 1%; + width: 98%; + overflow: hidden; + padding-top: 7px; +} + +.tpay-groups-wrapper .tpay-channels-helper .tpay-channels-helper-arrow { + position: absolute; + top: 2px; + left: 330px; + background: #FFF; + width: 10px; + height: 10px; + transform: rotate(45deg); +} + +.tpay-groups-wrapper .tpay-channels-wrapper { + padding: 20px; +} + +.tpay-groups-wrapper .tpay-content-wrapper-class { + background: #FFF; + width: 100%; + padding: 0 20px 0 20px; + box-sizing: border-box; + overflow: hidden; + border-radius: 7px; +} + +.tpay-groups-wrapper .tpay-dev-info { + padding: 10px; + position: absolute; + right: 0; + background: #D4D9FF; + font-size: 24px; + z-index: 100; +} + +.tpay-groups-wrapper .tpay-dev-info:hover { + opacity: 0.7; +} + +.tpay-groups-wrapper .tpay-dev-info-content { + display: none; +} + +@media only screen and (max-width: 650px) { + .tpay-groups-wrapper .tpay-group-holder { + width: 31%; + } +} + +@media only screen and (max-width: 490px) { + .tpay-groups-wrapper .tpay-group-holder { + width: 48%; + } +} + +@media only screen and (max-width: 370px) { + .tpay-groups-wrapper .tpay-group-holder { + width: 98%; + } +} + +.tpay-header-wrapper { + position: relative; + background-color: #4B3AB0; + background-image: linear-gradient(to right, #4B3AB0, #182B6B); + background: -moz-linear-gradient(left, #4B3AB0, #182B6B); + background: -webkit-linear-gradient(left, #4B3AB0, #182B6B); + height: 95px; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + overflow: hidden; +} + +.tpay-header-wrapper .tpay-header-logo { + overflow: hidden; +} + +.tpay-header-wrapper .tpay-header-belt { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 4px; + background: #3ED36D; + background: -moz-linear-gradient(left, #3ED36D 0%, #4EDB7A 33%, #73EE99 66%, #90FDB1 100%); + background: -webkit-linear-gradient(left, #3ED36D 0%, #4EDB7A 33%, #73EE99 66%, #90FDB1 100%); + background: linear-gradient(to right, #3ED36D 0%, #4EDB7A 33%, #73EE99 66%, #90FDB1 100%); +} + +.tpay-logo { + height: 34px; + width: 90px; + padding-left: 4%; + padding-top: 30px; +} + +.tpay-panel-inside-content { + margin: 30px; + text-align: center; + padding-bottom: 20px; + background: #FFF; + border-radius: 7px; +} + +.tpay-buttons-holder { + margin-top: 25px; +} + +.tpay-pay-button { + border: 0; + outline: none; + color: #000000; + padding: 14px 13px; + font-family: 'Lato', sans-serif; + cursor: pointer; + opacity: 1; + -webkit-transition: opacity 0.3s; + transition: opacity 0.3s; + display: inline-block; + text-decoration: none; + font-size: 15px; + font-weight: bold; + text-align: center; + border-radius: 35px; + background-image: linear-gradient(270deg, #91FEB2 0%, #3ED36D 100%); + width: 500px; + height:50px; +} + +.tpay-channel-form-wrapper .tpay-info-text { + margin-bottom: 25px; + margin-top: 10px; + text-align: center; +} + +.tpay-channel-form-wrapper .tpay-form-wrapper { + overflow: hidden; + width: 102%; + margin-left: -1%; +} + +.tpay-channel-form-wrapper .tpay-col { + width: 48%; + margin: 0 1%; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper { + width: 100%; + margin-top: 10px; + margin-bottom: 20px; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper.tpay-expiration-date-input { + width: 47%; + display: inline-block; + padding-right: 4%; + margin-bottom: 10px; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper.tpay-cvv-input { + width: 47%; + display: inline-block; + margin-bottom: 10px; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper.tpay-postcode { + float: left; + width: 40%; + margin-right: 3%; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper.tpay-city { + float: left; + width: 57%; +} + +.tpay-channel-form-wrapper .tpay-input-wrapper .tpay-input-label { + background: #FFF; +} + +.tpay-channel-form-wrapper .tpay-button-wrapper { + margin-top: 10px; +} + +.tpay-channel-form-wrapper .tpay-button-wrapper .tpay-btn { + width: 100%; +} + +@media only screen and (max-width: 650px) { + .tpay-channel-form-wrapper .tpay-col { + width: 100%; + margin: 0; + } +} + +.tpay-input-wrapper { + position: relative; +} + +.tpay-input-value::placeholder { + font-family: 'Lato', sans-serif; + font-size: 15px; + color: rgba(103, 105, 134, 0.6); +} + +.tpay-select, +.tpay-input-wrapper .tpay-input-value { + background: transparent; + outline: none; + border: 1px solid #E8E8EE; + border-radius: 4px; + padding: 13px 20px; + max-width: 100%; + width: 100%; + box-sizing: border-box; + font-family: 'Lato', sans-serif; + font-size: 15px; + color: #1B2257; + height: 42px; +} + +.tpay-input-wrapper .tpay-input-value[disabled] { + color: #A6A7B8; +} + +.tpay-input-wrapper.tpay-error .tpay-input-value { + border-color: #D85B5B; +} + +.tpay-input-wrapper .tpay-input-value::-webkit-input-placeholder, +.tpay-input-wrapper .tpay-input-value::-moz-placeholder, +.tpay-input-wrapper .tpay-input-value:-ms-input-placeholder, +.tpay-input-wrapper .tpay-input-value:-moz-placeholder { + color: #A1A2B5; +} + +.tpay-input-wrapper .tpay-input-label { + position: absolute; + font-size: 10px; + font-weight: bold; + font-family: 'Lato', sans-serif; + color: #1B2257; + top: -8px; + left: 15px; + background: #F7F7FA; + padding: 0 5px; +} + +.tpay-input-wrapper .tpay-errors-holder { + position: absolute; + left: 2px; + bottom: -18px; + color: #D85B5B; + font-size: 12px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; + cursor: default; + text-align: left; +} + +.tpay-input-wrapper .tpay-info-wrapper { + width: 100%; + padding: 7px 15px; + padding-top: 7px; + background: #F7F7FA; + border: 1px solid #E8E8EE; + border-top: 0; + border-radius: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-sizing: border-box; + margin-top: -2px; + overflow: hidden; +} + +.tpay-input-wrapper .tpay-button-wrapper { + position: absolute; + top: 0; + right: 0; + height: 100%; +} + +.tpay-input-wrapper .tpay-button-wrapper .tpay-btn { + padding: 4px 8px; + font-size: 12px; + height: 25px; + top: 0; + bottom: 0; + margin: auto; + position: absolute; + right: 10px; +} + +.tpay-input-wrapper .tpay-button-wrapper .tpay-btn i { + display: none; +} + +.tpay-input-cvc { + cursor: help; +} + +.tpay-row { + overflow: hidden; +} + +.tpay-col { + float: left; +} + +.tpay-input-credit-card-number { + padding-left: 1%; + padding-right: 1%; + width: 98%; +} + +.tpay-input-blik-code { + padding: 0 25% 5px 25%; +} + +.tpay-cards-choice label, +.tpay-cards-choice { + padding-left: 20px; + text-align: left; + font-size: 15px; + font-family: 'Lato', sans-serif; + color: #1B2257; +} + +.tpay-select { + margin-bottom: 25px; +} + +.tpay-blik-input { + text-align: center; + letter-spacing: 10px; +} diff --git a/view/base/web/js/custom.js b/view/base/web/js/custom.js new file mode 100644 index 0000000..3e646d1 --- /dev/null +++ b/view/base/web/js/custom.js @@ -0,0 +1,5 @@ +/** + * Created by user on 05.04.2017. + */ + +var x=5; diff --git a/view/base/web/js/jquery.formance.min.js b/view/base/web/js/jquery.formance.min.js new file mode 100644 index 0000000..f771deb --- /dev/null +++ b/view/base/web/js/jquery.formance.min.js @@ -0,0 +1,1600 @@ +!function () { + var e, t, n, r, i, s, o, u, a, f, l, c, h, p, d, v, m, g, y, b, w, E, S, x, T, N, C, k, L, A, O, M, _, D, P, H, B, j, F, I, q, R, U, z, W, X, V, $, J, K, Q, G, Y, Z, et, tt, nt, rt, it, st, ot, ut, at, ft, lt = [].slice, ct = [].indexOf || function (e) { + for (var t = 0, n = this.length; t < n; t++) { + if (t in this && this[t] === e)return t + } + return -1 + }; + e = jQuery; + e.formance = {}; + e.formance.fn = {}; + e.fn.formance = function () { + var t, n; + n = arguments[0], t = 2 <= arguments.length ? lt.call(arguments, 1) : []; + return e.formance.fn[n].apply(this, t) + }; + tt = function (t) { + var n, r; + n = e(t.target); + if (t.metaKey || t.ctrlKey) { + return true + } + if (t.which === 32) { + return false + } + if (t.which === 0) { + return true + } + if (t.which < 33) { + return true + } + r = String.fromCharCode(t.which); + return !!/[\d\s]/.test(r) + }; + K = function (t) { + var n, r; + n = e(t.target); + if (t.metaKey || t.ctrlKey) { + return true + } + if (t.which === 32) { + return false + } + if (t.which === 0) { + return true + } + if (t.which < 33) { + return true + } + r = String.fromCharCode(t.which); + return !!/[\d\sA-Za-z]/.test(r) + }; + R = function (e) { + var t; + if (e.prop("selectionStart") != null && e.prop("selectionStart") !== e.prop("selectionEnd")) { + return true + } + if (typeof document !== "undefined" && document !== null ? (t = document.selection) != null ? typeof t.createRange === "function" ? t.createRange().text : void 0 : void 0 : void 0) { + return true + } + return false + }; + e.formance.fn.restrictNumeric = function () { + this.on("keypress", tt); + return this + }; + e.formance.fn.restrictAlphaNumeric = function () { + this.on("keypress", K); + return this + }; + e.formance.fn.hasTextSelected = R; + e = jQuery; + R = e.formance.fn.hasTextSelected; + i = /(\d{1,4})/g; + r = [{ + type: "maestro", + pattern: /^(5018|5020|5038|6304|6759|676[1-3])/, + format: i, + length: [12, 13, 14, 15, 16, 17, 18, 19], + cvcLength: [3], + luhn: true + }, { + type: "dinersclub", + pattern: /^(36|38|30[0-5])/, + format: i, + length: [14], + cvcLength: [3], + luhn: true + }, { + type: "laser", + pattern: /^(6706|6771|6709)/, + format: i, + length: [16, 17, 18, 19], + cvcLength: [3], + luhn: true + }, {type: "jcb", pattern: /^35/, format: i, length: [16], cvcLength: [3], luhn: true}, { + type: "unionpay", + pattern: /^62/, + format: i, + length: [16, 17, 18, 19], + cvcLength: [3], + luhn: false + }, { + type: "discover", + pattern: /^(6011|65|64[4-9]|622)/, + format: i, + length: [16], + cvcLength: [3], + luhn: true + }, {type: "mastercard", pattern: /^5[1-5]/, format: i, length: [16], cvcLength: [3], luhn: true}, { + type: "amex", + pattern: /^3[47]/, + format: /(\d{1,4})(\d{1,6})?(\d{1,5})?/, + length: [15], + cvcLength: [3, 4], + luhn: true + }, {type: "visa", pattern: /^4/, format: i, length: [13, 14, 15, 16], cvcLength: [3], luhn: true}]; + t = function (e) { + var t, n, i; + e = (e + "").replace(/\D/g, ""); + for (n = 0, i = r.length; n < i; n++) { + t = r[n]; + if (t.pattern.test(e)) { + return t + } + } + }; + n = function (e) { + var t, n, i; + for (n = 0, i = r.length; n < i; n++) { + t = r[n]; + if (t.type === e) { + return t + } + } + }; + Q = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + i = n.val() + r; + return i.length <= 4 + }; + e.formance.fn.format_credit_card_cvc = function () { + this.formance("restrictNumeric"); + this.on("keypress", Q); + return this + }; + e.formance.fn.validate_credit_card_cvc = function () { + var t, r, i, s; + r = e(this).data("credit_card_type"); + t = e(this).val(); + t = e.trim(t); + if (!/^\d+$/.test(t)) { + return false + } + if (r) { + return i = t.length, ct.call((s = n(r)) != null ? s.cvcLength : void 0, i) >= 0 + } else { + return t.length >= 3 && t.length <= 4 + } + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + et = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 6) { + return false + } + }; + b = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val() + r; + if (/^\d$/.test(i) && i !== "0" && i !== "1") { + t.preventDefault(); + return n.val("0" + i + " / ") + } else if (/^\d\d$/.test(i)) { + t.preventDefault(); + return n.val("" + i + " / ") + } + }; + S = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d\d$/.test(i)) { + return n.val("" + i + " / ") + } + }; + N = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (r !== "/") { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d$/.test(i) && i !== "0") { + return n.val("0" + i + " / ") + } + }; + a = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\/)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\/)*$/, "")) + } else if (/\s\/\s?\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\/\s?\d?$/, "")) + } + }; + e.formance.fn.format_credit_card_expiry = function () { + this.formance("restrictNumeric"); + this.on("keypress", et); + this.on("keypress", b); + this.on("keypress", N); + this.on("keypress", S); + this.on("keydown", a); + return this + }; + z = function (e) { + var t, n, r, i, s; + r = e.replace(/\s/g, ""); + s = r.split("/", 2), t = s[0], i = s[1]; + if ((i != null ? i.length : void 0) === 2 && /^\d+$/.test(i)) { + n = (new Date).getFullYear(); + n = n.toString().slice(0, 2); + i = n + i + } + t = parseInt(t, 10); + i = parseInt(i, 10); + return {month: t, year: i} + }; + e.formance.fn.val_credit_card_expiry = function () { + var e; + e = z(this.val()); + if (e.month == null || isNaN(e.month)) { + return false + } + if (e.year == null || isNaN(e.year)) { + return false + } + return new Date(e.year, e.month - 1) + }; + e.formance.fn.validate_credit_card_expiry = function () { + var t, n, r, i, s, o, u; + r = z(this.val()); + i = r.month; + o = r.year; + if (typeof i === "object" && "month" in i) { + u = i, i = u.month, o = u.year + } + if (!(i && o)) { + return false + } + i = e.trim(i); + o = e.trim(o); + if (!/^\d+$/.test(i)) { + return false + } + if (!/^\d+$/.test(o)) { + return false + } + if (!(parseInt(i, 10) <= 12)) { + return false + } + if (o.length === 2) { + s = (new Date).getFullYear(); + s = s.toString().slice(0, 2); + o = s + o + } + n = new Date(o, i); + t = new Date; + n.setMonth(n.getMonth() - 1); + n.setMonth(n.getMonth() + 1, 1); + return n > t + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + i = /(\d{1,4})/g; + r = [{ + type: "maestro", + pattern: /^(5018|5020|5038|6304|6759|676[1-3])/, + format: i, + length: [12, 13, 14, 15, 16, 17, 18, 19], + cvcLength: [3], + luhn: true + }, { + type: "dinersclub", + pattern: /^(36|38|30[0-5])/, + format: i, + length: [14], + cvcLength: [3], + luhn: true + }, { + type: "laser", + pattern: /^(6706|6771|6709)/, + format: i, + length: [16, 17, 18, 19], + cvcLength: [3], + luhn: true + }, {type: "jcb", pattern: /^35/, format: i, length: [16], cvcLength: [3], luhn: true}, { + type: "unionpay", + pattern: /^62/, + format: i, + length: [16, 17, 18, 19], + cvcLength: [3], + luhn: false + }, { + type: "discover", + pattern: /^(6011|65|64[4-9]|622)/, + format: i, + length: [16], + cvcLength: [3], + luhn: true + }, {type: "mastercard", pattern: /^5[1-5]/, format: i, length: [16], cvcLength: [3], luhn: true}, { + type: "amex", + pattern: /^3[47]/, + format: /(\d{1,4})(\d{1,6})?(\d{1,5})?/, + length: [15], + cvcLength: [3, 4], + luhn: true + }, {type: "visa", pattern: /^4/, format: i, length: [13, 14, 15, 16], cvcLength: [3], luhn: true}]; + t = function (e) { + var t, n, i; + e = (e + "").replace(/\D/g, ""); + for (n = 0, i = r.length; n < i; n++) { + t = r[n]; + if (t.pattern.test(e)) { + return t + } + } + }; + n = function (e) { + var t, n, i; + for (n = 0, i = r.length; n < i; n++) { + t = r[n]; + if (t.type === e) { + return t + } + } + }; + U = function (e) { + var t, n, r, i, s, o; + r = true; + i = 0; + n = (e + "").split("").reverse(); + for (s = 0, o = n.length; s < o; s++) { + t = n[s]; + t = parseInt(t, 10); + if (r = !r) { + t *= 2 + } + if (t > 9) { + t -= 9 + } + i += t + } + return i % 10 === 0 + }; + G = function (n) { + var r, i, s, o; + r = e(n.currentTarget); + s = String.fromCharCode(n.which); + if (!/^\d+$/.test(s)) { + return + } + if (R(r)) { + return + } + o = (r.val() + s).replace(/\D/g, ""); + i = t(o); + if (i) { + return o.length <= i.length[i.length.length - 1] + } else { + return o.length <= 16 + } + }; + $ = function (t) { + var n = this; + return setTimeout(function () { + var n, r; + n = e(t.currentTarget); + r = n.val(); + r = e.formance.formatCardNumber(r); + return n.val(r) + }) + }; + m = function (n) { + var r, i, s, o, u, a, f; + s = String.fromCharCode(n.which); + if (!/^\d+$/.test(s)) { + return + } + r = e(n.currentTarget); + f = r.val(); + i = t(f + s); + o = (f.replace(/\D/g, "") + s).length; + a = 16; + if (i) { + a = i.length[i.length.length - 1] + } + if (o >= a) { + return + } + if (r.prop("selectionStart") != null && r.prop("selectionStart") !== f.length) { + return + } + if (i && i.type === "amex") { + u = /^(\d{4}|\d{4}\s\d{6})$/ + } else { + u = /(?:^|\s)(\d{4})$/ + } + if (u.test(f)) { + n.preventDefault(); + return r.val(f + " " + s) + } else if (u.test(f + s)) { + n.preventDefault(); + return r.val(f + s + " ") + } + }; + s = function (t) { + var n, r; + n = e(t.currentTarget); + r = n.val(); + if (t.meta) { + return + } + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d\s$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d\s$/, "")) + } else if (/\s\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\d?$/, "")) + } + }; + ft = function (t) { + var n, i, s, o, u; + n = e(t.currentTarget); + u = n.val(); + o = e.formance.creditCardType(u) || "unknown"; + if (!n.hasClass(o)) { + i = function () { + var e, t, n; + n = []; + for (e = 0, t = r.length; e < t; e++) { + s = r[e]; + n.push(s.type) + } + return n + }(); + n.removeClass("unknown"); + n.removeClass(i.join(" ")); + n.addClass(o); + n.toggleClass("identified", o !== "unknown"); + return n.trigger("payment.cardType", o) + } + }; + e.formance.creditCardType = function (e) { + var n; + if (!e) { + return null + } + return ((n = t(e)) != null ? n.type : void 0) || null + }; + e.formance.formatCreditCardNumber = function (e) { + var n, r, i, s; + n = t(e); + if (!n) { + return e + } + i = n.length[n.length.length - 1]; + e = e.replace(/\D/g, ""); + e = e.slice(0, +i + 1 || 9e9); + if (n.format.global) { + return (s = e.match(n.format)) != null ? s.join(" ") : void 0 + } else { + r = n.format.exec(e); + if (r != null) { + r.shift() + } + return r != null ? r.join(" ") : void 0 + } + }; + e.formance.fn.format_credit_card_number = function () { + this.formance("restrictNumeric"); + this.on("keypress", G); + this.on("keypress", m); + this.on("keydown", s); + this.on("keyup", ft); + this.on("paste", $); + return this + }; + e.formance.fn.validate_credit_card_number = function () { + var n, r, i; + r = e(this).val(); + r = (r + "").replace(/\s+|-/g, ""); + if (!/^\d+$/.test(r)) { + return false + } + n = t(r); + if (!n) { + return false + } + return (i = r.length, ct.call(n.length, i) >= 0) && (n.luhn === false || U(r)) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + Y = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 8) { + return false + } + }; + g = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r; + if (/^\d$/.test(s) && r !== "0" && r !== "1" && r !== "2" && r !== "3") { + t.preventDefault(); + return n.val("0" + s + " / ") + } else if (/^\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " / ") + } else if (/^\d{2}\s\/\s\d$/.test(s) && r !== "0" && r !== "1") { + t.preventDefault(); + return n.val("" + i + "0" + r + " / ") + } else if (/^\d{2}\s\/\s\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " / ") + } + }; + w = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d{2}$/.test(i) || /^\d{2}\s\/\s\d{2}$/.test(i)) { + return n.val("" + i + " / ") + } + }; + x = function (t) { + var n, r, i, s, o, u, a, f, l; + a = String.fromCharCode(t.which); + if (a !== "/") { + return + } + n = e(t.currentTarget); + f = n.val(); + o = /^(\d)$/; + u = /^(\d{2})\s\/\s(\d)$/; + if (o.test(f) && f !== "0") { + return n.val("0" + f + " / ") + } else if (u.test(f)) { + l = f.match(u), r = l[0], i = l[1], s = l[2]; + if (s !== "0") { + return n.val("" + i + " / 0" + s + " / ") + } + } + }; + o = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\/)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\/)*$/, "")) + } else if (/\s\/\s?\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\/\s?\d?$/, "")) + } + }; + e.formance.fn.format_dd_mm_yyyy = function () { + this.formance("restrictNumeric"); + this.on("keypress", Y); + this.on("keypress", g); + this.on("keypress", x); + this.on("keypress", w); + this.on("keydown", o); + return this + }; + W = function (e) { + var t, n, r, i; + i = e != null ? e.replace(/\s/g, "").split("/", 3) : [NaN, NaN, NaN], t = i[0], n = i[1], r = i[2]; + if (!(r != null && r.length === 4)) { + r = NaN + } + t = parseInt(t, 10); + n = parseInt(n, 10); + r = parseInt(r, 10); + return {day: t, month: n, year: r} + }; + e.formance.fn.val_dd_mm_yyyy = function () { + var e; + e = W(this.val()); + if (e.day == null || isNaN(e.day)) { + return false + } + if (e.month == null || isNaN(e.month)) { + return false + } + if (e.year == null || isNaN(e.year)) { + return false + } + return new Date(e.year, e.month - 1, e.day) + }; + e.formance.fn.validate_dd_mm_yyyy = function () { + var e, t; + t = W(this.val()); + e = this.formance("val_dd_mm_yyyy"); + if (!(e != null && e instanceof Date)) { + return false + } + if (e.getDate() !== t.day) { + return false + } + if (e.getMonth() + 1 !== t.month) { + return false + } + if (e.getFullYear() !== t.year) { + return false + } + return true + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + e.formance.fn.format_email = function () { + return this + }; + e.formance.fn.validate_email = function () { + var t, n, r, i; + n = { + simple: /^\S+@\S+$/, + complex: /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\ ".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA -Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + }; + t = e(this); + r = t.val(); + if (r == null) { + return false + } + i = t.data("formance_algorithm"); + if (i != null && i in n) { + return n[i].test(r) + } + return n["simple"].test(r) + }; + e = jQuery; + e.formance.fn.format_number = function () { + var t; + t = e(this).data("formance_length"); + if (t != null) { + e(this).attr("maxLength", t) + } + this.formance("restrictNumeric"); + return this + }; + e.formance.fn.validate_number = function () { + var t, n, r; + t = e(this); + r = t.val(); + n = t.data("formance_length"); + if (n != null && typeof n === "number" && r.length !== n) { + return false + } + if (n != null && typeof n === "string" && n !== "") { + if (isNaN(parseInt(n, 10))) { + return false + } + if (r.length !== parseInt(n, 10)) { + return false + } + } + return /^\d+$/.test(r) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + nt = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/[^a-zA-Z\d]/g, ""); + if (i.length > 15) { + return false + } + }; + A = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r.toUpperCase(); + if (i === "") { + t.preventDefault(); + if (/^[A-Za-z]$/.test(s)) { + return n.val(s) + } + } else if (/^[A-Za-z]\d{0,3}$/.test(i)) { + t.preventDefault(); + if (/^[A-Za-z]\d{4}$/.test(s)) { + s = "" + s + " - " + } + if (/^[A-Za-z]\d{0,4}[\s|\-]*$/.test(s)) { + return n.val(s) + } + } else if (/^[A-Za-z]\d{4}[\s|\-]*\d{0,4}$/.test(i)) { + t.preventDefault(); + if (/^[A-Za-z]\d{4}[\s|\-]*\d{5}$/.test(s)) { + s = "" + s + " - " + } + if (/^[A-Za-z]\d{4}[\s|\-]*\d{0,5}[\s|\-]*$/.test(s)) { + return n.val(s) + } + } + }; + f = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\-)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\-)+$/, "")) + } + }; + _ = function (t) { + var n = this; + return setTimeout(function () { + var n, r, i, s, o, u, a; + n = e(t.currentTarget); + u = n.val(); + a = u.match(/^([A-Za-z\d]{5})[\s|\-]*(\d{5})[\s|\-]*(\d{5})$/), i = a[0], r = a[1], o = a[2], s = a[3]; + return n.val("" + r + " - " + o + " - " + s) + }) + }; + e.formance.fn.format_ontario_drivers_license_number = function () { + this.formance("restrictAlphaNumeric"); + this.on("keypress", nt); + this.on("keypress", A); + this.on("keydown", f); + this.on("paste", _); + return this + }; + e.formance.fn.validate_ontario_drivers_license_number = function () { + var t, n; + n = e(this).val(); + if (n == null) { + return false + } + n = n.replace(/[\s|\-]/g, ""); + if (!/^[a-zA-Z\d]+$/.test()) { + return false + } + t = /^[A-Za-z]\d{4}[\s|\-]*\d{5}[\s|\-]*\d{5}$/; + return t.test(n) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + rt = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 15) { + return false + } + }; + O = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = n.val() + r; + if (i === "") { + t.preventDefault(); + s = /^7$/.test(s) ? "708158 " : "708158 " + s; + return n.val(s) + } else if (/^\d{5}$/.test(i)) { + t.preventDefault(); + if (/^\d{6}$/.test(s)) { + s = "" + s + " " + } + if (/^\d{6}\s*$/.test(s)) { + return target.val(s) + } + } + }; + l = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/708158\s+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/708158\s+$/, "")) + } + }; + D = function (t) { + var n = this; + return setTimeout(function () { + var n, r, i, s, o, u; + n = e(t.currentTarget); + o = n.val(); + u = o.match(/^(\d{6})\s*(\d{9})$/), i = u[0], r = u[1], s = u[2]; + return n.val("" + r + " " + s) + }) + }; + e.formance.fn.format_ontario_outdoors_card_number = function () { + this.formance("restrictNumeric"); + this.on("keypress", rt); + this.on("keypress", O); + this.on("keydown", l); + this.on("paste", D); + return this + }; + e.formance.fn.validate_ontario_outdoors_card_number = function () { + var t, n; + n = e(this).val(); + if (n == null) { + return false + } + n = n.replace(/\s/g, ""); + if (!/^\d+$/.test(n)) { + return false + } + t = /^708158\s*\d{9}$/; + return t.test(n) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + it = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/[^a-zA-Z\d]/g, ""); + if (i.length > 12) { + return false + } + }; + M = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r.toUpperCase(); + if (/^\d{0,3}$/.test(i)) { + t.preventDefault(); + if (/^\d{4}$/.test(s)) { + s = "" + s + " - " + } + if (/^\d{0,4}[\s|\-]*$/.test(s)) { + return n.val(s) + } + } else if (/^\d{4}[\s|\-]*\d{0,2}$/.test(i)) { + t.preventDefault(); + if (/^\d{4}[\s|\-]*\d{3}$/.test(s)) { + s = "" + s + " - " + } + if (/^\d{4}[\s|\-]*\d{0,3}[\s|\-]*$/.test(s)) { + return n.val(s) + } + } else if (/^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{0,2}$/.test(i)) { + t.preventDefault(); + if (/^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{3}$/.test(s)) { + s = "" + s + " - " + } + if (/^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{0,3}[\s|\-]*$/.test(s)) { + return n.val(s) + } + } else if (/^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{3}[\s|\-]*[A-Za-z]{0,1}$/.test(i)) { + t.preventDefault(); + if (/^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{3}[\s|\-]*[A-Za-z]{0,2}$/.test(s)) { + return n.val(s) + } + } + }; + c = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\-)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\-)+$/, "")) + } + }; + P = function (t) { + var n = this; + return setTimeout(function () { + var n, r, i, s, o, u, a, f; + n = e(t.currentTarget); + a = n.val(); + f = a.match(/^(\d{4})[\s|\-]*(\d{3})[\s|\-]*(\d{3})[\s|\-]*([A-Za-z]{2})$/), i = f[0], r = f[1], o = f[2], u = f[3], s = f[4]; + return n.val("" + r + " - " + o + " - " + u + " - " + s) + }) + }; + e.formance.fn.format_ontario_photo_health_card_number = function () { + this.formance("restrictAlphaNumeric"); + this.on("keypress", it); + this.on("keypress", M); + this.on("keydown", c); + this.on("paste", P); + return this + }; + e.formance.fn.validate_ontario_photo_health_card_number = function () { + var t, n; + n = e(this).val(); + if (n == null) { + return false + } + n = n.replace(/[\s|\-]/g, ""); + if (!/^[a-zA-Z\d]+$/.test()) { + return false + } + t = /^\d{4}[\s|\-]*\d{3}[\s|\-]*\d{3}[\s|\-]*[A-Za-z]{2}$/; + return t.test(n) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + J = function (e) { + var t, n, r, i, s, o; + i = e.replace(/\D/g, "").match(/^(\d{0,3})?(\d{0,3})?(\d{0,4})?$/); + o = i, i = o[0], t = o[1], n = o[2], r = o[3]; + s = ""; + if (t != null) { + s += "(" + t + } + if ((t != null ? t.length : void 0) === 3) { + s += ") " + } + if (n != null) { + s += "" + n + } + if ((n != null ? n.length : void 0) === 3) { + s += " - " + } + if (r != null) { + s += "" + r + } + return s + }; + st = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 10) { + return false + } + }; + j = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + s = n.val() + r; + i = J(s); + t.preventDefault(); + return n.val(i) + }; + h = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\(\d$/.test(r)) { + t.preventDefault(); + return n.val("") + } else if (/\d\)(\s)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d\)(\s)*$/, "")) + } else if (/\d(\s|\-)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\-)+$/, "")) + } + }; + H = function (t) { + var n = this; + return setTimeout(function () { + var n, r, i; + n = e(t.currentTarget); + i = n.val(); + r = J(i); + return n.val(r) + }) + }; + e.formance.fn.format_phone_number = function () { + this.formance("restrictNumeric"); + this.on("keypress", st); + this.on("keypress", j); + this.on("keydown", h); + this.on("paste", H); + return this + }; + e.formance.fn.validate_phone_number = function () { + var t; + t = e(this).val(); + if (t == null) { + return false + } + t = t.replace(/\(|\)|\s+|-/g, ""); + if (!/^\d+$/.test(t)) { + return false + } + return t.replace(/\D/g, "").length === 10 + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + ot = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/[^a-zA-Z\d]/g, ""); + if (i.length > 6) { + return false + } + }; + F = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^[a-zA-Z\d]+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r.toUpperCase(); + if (i === "") { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY]$/.test(s)) { + return n.val(s) + } + } else if (/^[ABCEFGHJKLMNPRSTVXY]$/.test(i)) { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY][0-9]$/.test(s)) { + return n.val(s) + } + } else if (/^[ABCEFGHJKLMNPRSTVXY][0-9]$/.test(i)) { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]$/.test(s)) { + return n.val("" + s + " ") + } + } else if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s$/.test(i)) { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9]$/.test(s)) { + return n.val(s) + } + } else if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9]$/.test(i)) { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9][ABCEFGHJKLMNPRSTVWXYZ]$/.test(s)) { + return n.val(s) + } + } else if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9][ABCEFGHJKLMNPRSTVWXYZ]$/.test(i)) { + t.preventDefault(); + if (/^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9][ABCEFGHJKLMNPRSTVWXYZ][0-9]$/.test(s)) { + return n.val(s) + } + } + }; + p = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/[ABCEFGHJKLMNPRSTVWXYZ](\s)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/[ABCEFGHJKLMNPRSTVWXYZ](\s)*$/, "")) + } + }; + B = function (t) { + var n = this; + return setTimeout(function () { + var n, r, i, s, o, u; + n = e(t.currentTarget); + o = n.val(); + u = o.match(/^([ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ])\s?([0-9][ABCEFGHJKLMNPRSTVWXYZ][0-9])$/), i = u[0], r = u[1], s = u[2]; + return n.val("" + r + " " + s) + }) + }; + e.formance.fn.format_postal_code = function () { + this.formance("restrictAlphaNumeric"); + this.on("keypress", ot); + this.on("keypress", F); + this.on("keydown", p); + this.on("paste", B); + return this + }; + e.formance.fn.validate_postal_code = function () { + var t; + t = e(this).val(); + if (t == null) { + return false + } + t = t.replace(/\s+/g, ""); + if (!/^[a-zA-Z\d]+$/.test(t)) { + return false + } + t = t.replace(/[^a-zA-Z\d]/g, ""); + return /^[ABCEFGHJKLMNPRSTVXY][0-9][ABCEFGHJKLMNPRSTVWXYZ]\s?[0-9][ABCEFGHJKLMNPRSTVWXYZ][0-9]$/.test(t.toUpperCase()) + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + ut = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 4) { + return false + } + }; + I = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r; + if (/^\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " / ") + } else if (/^\d{2}\s\/\s\d{1}$/.test(s) && r !== "0" && r !== "1") { + t.preventDefault(); + return n.val("" + i + "0" + r) + } + }; + k = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d{2}$/.test(i)) { + return n.val("" + i + " / ") + } + }; + C = function (t) { + var n, r, i, s; + i = String.fromCharCode(t.which); + if (i !== "/") { + return + } + n = e(t.currentTarget); + s = n.val(); + r = /^(\d)$/; + if (r.test(s) && s.length === 2 || s.length === 1) { + return n.val("0" + s + " / ") + } + }; + d = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\/)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\/)*$/, "")) + } else if (/\s\/\s?\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\/\s?\d?$/, "")) + } + }; + e.formance.fn.format_time_yy_mm = function () { + this.formance("restrictNumeric"); + this.on("keypress", ut); + this.on("keypress", I); + this.on("keypress", k); + this.on("keypress", C); + this.on("keydown", d); + return this + }; + X = function (e) { + var t, n, r; + r = e != null ? e.replace(/\s/g, "").split("/", 2) : [NaN, NaN], n = r[0], t = r[1]; + t = parseInt(t, 10); + n = parseInt(n, 10); + return {years: n, months: t} + }; + e.formance.fn.val_time_yy_mm = function () { + var e; + e = X(this.val()); + if (e.years == null || isNaN(e.years)) { + return false + } + if (e.months == null || isNaN(e.months)) { + return false + } + return e + }; + e.formance.fn.validate_time_yy_mm = function () { + var t, n, r; + n = X(this.val()); + t = this.formance("val_time_yy_mm"); + r = e(this).val(); + if (t.months !== n.months) { + return false + } + if (t.years !== n.years) { + return false + } + if (/^(\d{1}[\d{1}]*)[\s\/]*(\d{1}[\d{1}]*)[\s\/]*$/.test(r)) { + return true + } + return false + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + at = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 6) { + return false + } + }; + L = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d{2}$/.test(i) || /^\d{2}\s\-\s\d{2}$/.test(i)) { + return n.val("" + i + " - ") + } + }; + v = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\-)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\-)+$/, "")) + } else if (/\s\-\s?\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\-\s?\d?$/, "")) + } + }; + q = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r; + if (/^\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " - ") + } else if (/^\d{2}\s\-\s\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " - ") + } + }; + e.formance.fn.format_uk_sort_code = function (e) { + this.formance("restrictNumeric"); + this.on("keypress", at); + this.on("keypress", q); + this.on("keypress", L); + this.on("keydown", v); + return this + }; + e.formance.fn.validate_uk_sort_code = function () { + var t; + t = e(this).val(); + if (/^(\d{2})[\s\-]*(\d{2})[\s\-]*(\d{2})[\s]*$/.test(t)) { + return true + } + return false + }; + e = jQuery; + R = e.formance.fn.hasTextSelected; + Z = function (t) { + var n, r, i; + n = e(t.currentTarget); + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + if (R(n)) { + return + } + i = n.val() + r; + i = i.replace(/\D/g, ""); + if (i.length > 8) { + return false + } + }; + y = function (t) { + var n, r, i, s; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + s = i + r; + if (/^\d{4}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " / ") + } else if (/^\d{4}\s\/\s\d$/.test(s) && r !== "0" && r !== "1") { + t.preventDefault(); + return n.val("" + i + "0" + r + " / ") + } else if (/^\d{4}\s\/\s\d{2}$/.test(s)) { + t.preventDefault(); + return n.val("" + s + " / ") + } else if (/^\d{4}\s\/\s\d{2}\s\/\s\d$/.test(s) && r !== "0" && r !== "1" && r !== "2" && r !== "3") { + t.preventDefault(); + return n.val("" + i + "0" + r) + } + }; + E = function (t) { + var n, r, i; + r = String.fromCharCode(t.which); + if (!/^\d+$/.test(r)) { + return + } + n = e(t.currentTarget); + i = n.val(); + if (/^\d{4}$/.test(i) || /^\d{4}\s\/\s\d{2}$/.test(i)) { + return n.val("" + i + " / ") + } + }; + T = function (t) { + var n, r, i, s, o, u, a, f; + o = String.fromCharCode(t.which); + if (o !== "/") { + return + } + n = e(t.currentTarget); + u = n.val(); + s = /^(\d{4})\s\/\s(\d)$/; + if (s.test(u)) { + f = u.match(s), r = f[0], a = f[1], i = f[2]; + if (i !== "0") { + return n.val("" + a + " / 0" + i + " / ") + } + } + }; + u = function (t) { + var n, r; + if (t.meta) { + return + } + n = e(t.currentTarget); + r = n.val(); + if (t.which !== 8) { + return + } + if (n.prop("selectionStart") != null && n.prop("selectionStart") !== r.length) { + return + } + if (/\d(\s|\/)+$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\d(\s|\/)*$/, "")) + } else if (/\s\/\s?\d?$/.test(r)) { + t.preventDefault(); + return n.val(r.replace(/\s\/\s?\d?$/, "")) + } + }; + e.formance.fn.format_yyyy_mm_dd = function () { + this.formance("restrictNumeric"); + this.on("keypress", Z); + this.on("keypress", y); + this.on("keypress", T); + this.on("keypress", E); + this.on("keydown", u); + return this + }; + V = function (e) { + var t, n, r, i; + i = e != null ? e.replace(/\s/g, "").split("/", 3) : [NaN, NaN, NaN], r = i[0], n = i[1], t = i[2]; + if (!(r != null && r.length === 4)) { + r = NaN + } + t = parseInt(t, 10); + n = parseInt(n, 10); + r = parseInt(r, 10); + return {day: t, month: n, year: r} + }; + e.formance.fn.val_yyyy_mm_dd = function () { + var e; + e = V(this.val()); + if (e.day == null || isNaN(e.day)) { + return false + } + if (e.month == null || isNaN(e.month)) { + return false + } + if (e.year == null || isNaN(e.year)) { + return false + } + return new Date(e.year, e.month - 1, e.day) + }; + e.formance.fn.validate_yyyy_mm_dd = function () { + var e, t; + t = V(this.val()); + e = this.formance("val_yyyy_mm_dd"); + if (!(e != null && e instanceof Date)) { + return false + } + if (e.getDate() !== t.day) { + return false + } + if (e.getMonth() + 1 !== t.month) { + return false + } + if (e.getFullYear() !== t.year) { + return false + } + return true + } +}.call(this) diff --git a/view/base/web/js/jquery.payment.min.js b/view/base/web/js/jquery.payment.min.js new file mode 100644 index 0000000..07bc87f --- /dev/null +++ b/view/base/web/js/jquery.payment.min.js @@ -0,0 +1 @@ +(function(){var t,e,n,r,a,o,i,l,u,s,c,h,p,g,v,f,d,m,y,C,T,w,$,D,S=[].slice,k=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=window.jQuery||window.Zepto||window.$,t.payment={},t.payment.fn={},t.fn.payment=function(){var e,n;return n=arguments[0],e=2<=arguments.length?S.call(arguments,1):[],t.payment.fn[n].apply(this,e)},a=/(\d{1,4})/g,t.payment.cards=r=[{type:"maestro",patterns:[5018,502,503,506,56,58,639,6220,67],format:a,length:[12,13,14,15,16,17,18,19],cvcLength:[3],luhn:!0},{type:"forbrugsforeningen",patterns:[600],format:a,length:[16],cvcLength:[3],luhn:!0},{type:"dankort",patterns:[5019],format:a,length:[16],cvcLength:[3],luhn:!0},{type:"visa",patterns:[4],format:a,length:[13,16],cvcLength:[3],luhn:!0},{type:"mastercard",patterns:[51,52,53,54,55,22,23,24,25,26,27],format:a,length:[16],cvcLength:[3],luhn:!0},{type:"amex",patterns:[34,37],format:/(\d{1,4})(\d{1,6})?(\d{1,5})?/,length:[15],cvcLength:[3,4],luhn:!0},{type:"dinersclub",patterns:[30,36,38,39],format:/(\d{1,4})(\d{1,6})?(\d{1,4})?/,length:[14],cvcLength:[3],luhn:!0},{type:"discover",patterns:[60,64,65,622],format:a,length:[16],cvcLength:[3],luhn:!0},{type:"unionpay",patterns:[62,88],format:a,length:[16,17,18,19],cvcLength:[3],luhn:!1},{type:"jcb",patterns:[35],format:a,length:[16],cvcLength:[3],luhn:!0}],e=function(t){var e,n,a,o,i,l,u,s;for(t=(t+"").replace(/\D/g,""),o=0,l=r.length;l>o;o++)for(e=r[o],s=e.patterns,i=0,u=s.length;u>i;i++)if(a=s[i],n=a+"",t.substr(0,n.length)===n)return e},n=function(t){var e,n,a;for(n=0,a=r.length;a>n;n++)if(e=r[n],e.type===t)return e},p=function(t){var e,n,r,a,o,i;for(r=!0,a=0,n=(t+"").split("").reverse(),o=0,i=n.length;i>o;o++)e=n[o],e=parseInt(e,10),(r=!r)&&(e*=2),e>9&&(e-=9),a+=e;return a%10===0},h=function(t){var e;return null!=t.prop("selectionStart")&&t.prop("selectionStart")!==t.prop("selectionEnd")?!0:null!=("undefined"!=typeof document&&null!==document&&null!=(e=document.selection)?e.createRange:void 0)&&document.selection.createRange().text?!0:!1},$=function(t,e){var n,r,a,o,i,l;try{r=e.prop("selectionStart")}catch(u){o=u,r=null}return i=e.val(),e.val(t),null!==r&&e.is(":focus")?(r===i.length&&(r=t.length),i!==t&&(l=i.slice(r-1,+r+1||9e9),n=t.slice(r-1,+r+1||9e9),a=t[r],/\d/.test(a)&&l===""+a+" "&&n===" "+a&&(r+=1)),e.prop("selectionStart",r),e.prop("selectionEnd",r)):void 0},m=function(t){var e,n,r,a,o,i,l,u;for(null==t&&(t=""),r="0123456789",a="0123456789",i="",e=t.split(""),l=0,u=e.length;u>l;l++)n=e[l],o=r.indexOf(n),o>-1&&(n=a[o]),i+=n;return i},d=function(e){var n;return n=t(e.currentTarget),setTimeout(function(){var t;return t=n.val(),t=m(t),t=t.replace(/\D/g,""),$(t,n)})},v=function(e){var n;return n=t(e.currentTarget),setTimeout(function(){var e;return e=n.val(),e=m(e),e=t.payment.formatCardNumber(e),$(e,n)})},l=function(n){var r,a,o,i,l,u,s;return o=String.fromCharCode(n.which),!/^\d+$/.test(o)||(r=t(n.currentTarget),s=r.val(),a=e(s+o),i=(s.replace(/\D/g,"")+o).length,u=16,a&&(u=a.length[a.length.length-1]),i>=u||null!=r.prop("selectionStart")&&r.prop("selectionStart")!==s.length)?void 0:(l=a&&"amex"===a.type?/^(\d{4}|\d{4}\s\d{6})$/:/(?:^|\s)(\d{4})$/,l.test(s)?(n.preventDefault(),setTimeout(function(){return r.val(s+" "+o)})):l.test(s+o)?(n.preventDefault(),setTimeout(function(){return r.val(s+o+" ")})):void 0)},o=function(e){var n,r;return n=t(e.currentTarget),r=n.val(),8!==e.which||null!=n.prop("selectionStart")&&n.prop("selectionStart")!==r.length?void 0:/\d\s$/.test(r)?(e.preventDefault(),setTimeout(function(){return n.val(r.replace(/\d\s$/,""))})):/\s\d?$/.test(r)?(e.preventDefault(),setTimeout(function(){return n.val(r.replace(/\d$/,""))})):void 0},f=function(e){var n;return n=t(e.currentTarget),setTimeout(function(){var e;return e=n.val(),e=m(e),e=t.payment.formatExpiry(e),$(e,n)})},u=function(e){var n,r,a;return r=String.fromCharCode(e.which),/^\d+$/.test(r)?(n=t(e.currentTarget),a=n.val()+r,/^\d$/.test(a)&&"0"!==a&&"1"!==a?(e.preventDefault(),setTimeout(function(){return n.val("0"+a+" / ")})):/^\d\d$/.test(a)?(e.preventDefault(),setTimeout(function(){var t,e;return t=parseInt(a[0],10),e=parseInt(a[1],10),e>2&&0!==t?n.val("0"+t+" / "+e):n.val(""+a+" / ")})):void 0):void 0},s=function(e){var n,r,a;return r=String.fromCharCode(e.which),/^\d+$/.test(r)?(n=t(e.currentTarget),a=n.val(),/^\d\d$/.test(a)?n.val(""+a+" / "):void 0):void 0},c=function(e){var n,r,a;return a=String.fromCharCode(e.which),"/"===a||" "===a?(n=t(e.currentTarget),r=n.val(),/^\d$/.test(r)&&"0"!==r?n.val("0"+r+" / "):void 0):void 0},i=function(e){var n,r;return n=t(e.currentTarget),r=n.val(),8!==e.which||null!=n.prop("selectionStart")&&n.prop("selectionStart")!==r.length?void 0:/\d\s\/\s$/.test(r)?(e.preventDefault(),setTimeout(function(){return n.val(r.replace(/\d\s\/\s$/,""))})):void 0},g=function(e){var n;return n=t(e.currentTarget),setTimeout(function(){var t;return t=n.val(),t=m(t),t=t.replace(/\D/g,"").slice(0,4),$(t,n)})},w=function(t){var e;return t.metaKey||t.ctrlKey?!0:32===t.which?!1:0===t.which?!0:t.which<33?!0:(e=String.fromCharCode(t.which),!!/[\d\s]/.test(e))},C=function(n){var r,a,o,i;return r=t(n.currentTarget),o=String.fromCharCode(n.which),/^\d+$/.test(o)&&!h(r)?(i=(r.val()+o).replace(/\D/g,""),a=e(i),a?i.length<=a.length[a.length.length-1]:i.length<=16):void 0},T=function(e){var n,r,a;return n=t(e.currentTarget),r=String.fromCharCode(e.which),/^\d+$/.test(r)&&!h(n)?(a=n.val()+r,a=a.replace(/\D/g,""),a.length>6?!1:void 0):void 0},y=function(e){var n,r,a;return n=t(e.currentTarget),r=String.fromCharCode(e.which),/^\d+$/.test(r)&&!h(n)?(a=n.val()+r,a.length<=4):void 0},D=function(e){var n,a,o,i,l;return n=t(e.currentTarget),l=n.val(),i=t.payment.cardType(l)||"unknown",n.hasClass(i)?void 0:(a=function(){var t,e,n;for(n=[],t=0,e=r.length;e>t;t++)o=r[t],n.push(o.type);return n}(),n.removeClass("unknown"),n.removeClass(a.join(" ")),n.addClass(i),n.toggleClass("identified","unknown"!==i),n.trigger("payment.cardType",i))},t.payment.fn.formatCardCVC=function(){return this.on("keypress",w),this.on("keypress",y),this.on("paste",g),this.on("change",g),this.on("input",g),this},t.payment.fn.formatCardExpiry=function(){return this.on("keypress",w),this.on("keypress",T),this.on("keypress",u),this.on("keypress",c),this.on("keypress",s),this.on("keydown",i),this.on("change",f),this.on("input",f),this},t.payment.fn.formatCardNumber=function(){return this.on("keypress",w),this.on("keypress",C),this.on("keypress",l),this.on("keydown",o),this.on("keyup",D),this.on("paste",v),this.on("change",v),this.on("input",v),this.on("input",D),this},t.payment.fn.restrictNumeric=function(){return this.on("keypress",w),this.on("paste",d),this.on("change",d),this.on("input",d),this},t.payment.fn.cardExpiryVal=function(){return t.payment.cardExpiryVal(t(this).val())},t.payment.cardExpiryVal=function(t){var e,n,r,a;return a=t.split(/[\s\/]+/,2),e=a[0],r=a[1],2===(null!=r?r.length:void 0)&&/^\d+$/.test(r)&&(n=(new Date).getFullYear(),n=n.toString().slice(0,2),r=n+r),e=parseInt(e,10),r=parseInt(r,10),{month:e,year:r}},t.payment.validateCardNumber=function(t){var n,r;return t=(t+"").replace(/\s+|-/g,""),/^\d+$/.test(t)?(n=e(t),n?(r=t.length,k.call(n.length,r)>=0&&(n.luhn===!1||p(t))):!1):!1},t.payment.validateCardExpiry=function(e,n){var r,a,o;return"object"==typeof e&&"month"in e&&(o=e,e=o.month,n=o.year),e&&n?(e=t.trim(e),n=t.trim(n),/^\d+$/.test(e)&&/^\d+$/.test(n)&&e>=1&&12>=e?(2===n.length&&(n=70>n?"20"+n:"19"+n),4!==n.length?!1:(a=new Date(n,e),r=new Date,a.setMonth(a.getMonth()-1),a.setMonth(a.getMonth()+1,1),a>r)):!1):!1},t.payment.validateCardCVC=function(e,r){var a,o;return e=t.trim(e),/^\d+$/.test(e)?(a=n(r),null!=a?(o=e.length,k.call(a.cvcLength,o)>=0):e.length>=3&&e.length<=4):!1},t.payment.cardType=function(t){var n;return t?(null!=(n=e(t))?n.type:void 0)||null:null},t.payment.formatCardNumber=function(n){var r,a,o,i;return n=n.replace(/\D/g,""),(r=e(n))?(o=r.length[r.length.length-1],n=n.slice(0,o),r.format.global?null!=(i=n.match(r.format))?i.join(" "):void 0:(a=r.format.exec(n),null!=a?(a.shift(),a=t.grep(a,function(t){return t}),a.join(" ")):void 0)):n},t.payment.formatExpiry=function(t){var e,n,r,a;return(n=t.match(/^\D*(\d{1,2})(\D+)?(\d{1,4})?/))?(e=n[1]||"",r=n[2]||"",a=n[3]||"",a.length>0?r=" / ":" /"===r?(e=e.substring(0,1),r=""):2===e.length||r.length>0?r=" / ":1===e.length&&"0"!==e&&"1"!==e&&(e="0"+e,r=" / "),e+r+a):""}}).call(this); diff --git a/view/base/web/js/jsencrypt.min.js b/view/base/web/js/jsencrypt.min.js new file mode 100644 index 0000000..d525906 --- /dev/null +++ b/view/base/web/js/jsencrypt.min.js @@ -0,0 +1,1069 @@ +var JSEncryptExports = {}; +(function (T) { + function e(a, b, c) { + null != a && ("number" == typeof a ? this.fromNumber(a, b, c) : null == b && "string" != typeof a ? this.fromString(a, 256) : this.fromString(a, b)) + } + + function l() { + return new e(null) + } + + function U(a, b, c, d, f, e) { + for (; 0 <= --e;) { + var g = b * this[a++] + c[d] + f; + f = Math.floor(g / 67108864); + c[d++] = g & 67108863 + } + return f + } + + function V(a, b, c, d, f, e) { + var g = b & 32767; + for (b >>= 15; 0 <= --e;) { + var h = this[a] & 32767, l = this[a++] >> 15, k = b * h + l * g, h = g * h + ((k & 32767) << 15) + c[d] + (f & 1073741823); + f = (h >>> 30) + (k >>> 15) + b * l + (f >>> 30); + c[d++] = h & 1073741823 + } + return f + } + + function W(a, b, c, d, f, e) { + var g = b & 16383; + for (b >>= 14; 0 <= --e;) { + var h = this[a] & 16383, l = this[a++] >> 14, k = b * h + l * g, h = g * h + ((k & 16383) << 14) + c[d] + f; + f = (h >> 28) + (k >> 14) + b * l; + c[d++] = h & 268435455 + } + return f + } + + function N(a, b) { + var c = F[a.charCodeAt(b)]; + return null == c ? -1 : c + } + + function w(a) { + var b = l(); + b.fromInt(a); + return b + } + + function G(a) { + var b = 1, c; + if (0 != (c = a >>> 16))a = c, b += 16; + if (0 != (c = a >> 8))a = c, b += 8; + if (0 != (c = a >> 4))a = c, b += 4; + if (0 != (c = a >> 2))a = c, b += 2; + 0 != a >> 1 && (b += 1); + return b + } + + function y(a) { + this.m = a + } + + function z(a) { + this.m = a; + this.mp = a.invDigit(); + this.mpl = this.mp & 32767; + this.mph = this.mp >> 15; + this.um = (1 << a.DB - 15) - 1; + this.mt2 = 2 * a.t + } + + function X(a, b) { + return a & b + } + + function I(a, b) { + return a | b + } + + function O(a, b) { + return a ^ b + } + + function P(a, b) { + return a & ~b + } + + function E() { + } + + function Q(a) { + return a + } + + function B(a) { + this.r2 = l(); + this.q3 = l(); + e.ONE.dlShiftTo(2 * a.t, this.r2); + this.mu = this.r2.divide(a); + this.m = a + } + + function J() { + this.j = this.i = 0; + this.S = [] + } + + function R(a) { + s[m++] ^= a & 255; + s[m++] ^= a >> 8 & 255; + s[m++] ^= a >> 16 & 255; + s[m++] ^= a >> 24 & 255; + m >= K && (m -= K) + } + + function L() { + } + + function t(a, b) { + return new e(a, + b) + } + + function p() { + this.n = null; + this.e = 0; + this.coeff = this.dmq1 = this.dmp1 = this.q = this.p = this.d = null + } + + function M(a) { + var b, c, d = ""; + for (b = 0; b + 3 <= a.length; b += 3)c = parseInt(a.substring(b, b + 3), 16), d += C.charAt(c >> 6) + C.charAt(c & 63); + b + 1 == a.length ? (c = parseInt(a.substring(b, b + 1), 16), d += C.charAt(c << 2)) : b + 2 == a.length && (c = parseInt(a.substring(b, b + 2), 16), d += C.charAt(c >> 2) + C.charAt((c & 3) << 4)); + for (; 0 < (d.length & 3);)d += S; + return d + } + + function Y(a) { + var b = "", c, d = 0, f; + for (c = 0; c < a.length && a.charAt(c) != S; ++c)v = C.indexOf(a.charAt(c)), + 0 > v || (0 == d ? (b += u.charAt(v >> 2), f = v & 3, d = 1) : 1 == d ? (b += u.charAt(f << 2 | v >> 4), f = v & 15, d = 2) : 2 == d ? (b += u.charAt(f), b += u.charAt(v >> 2), f = v & 3, d = 3) : (b += u.charAt(f << 2 | v >> 4), b += u.charAt(v & 15), d = 0)); + 1 == d && (b += u.charAt(f << 2)); + return b + } + + var k; + "Microsoft Internet Explorer" == navigator.appName ? (e.prototype.am = V, k = 30) : "Netscape" != navigator.appName ? (e.prototype.am = U, k = 26) : (e.prototype.am = W, k = 28); + e.prototype.DB = k; + e.prototype.DM = (1 << k) - 1; + e.prototype.DV = 1 << k; + e.prototype.FV = Math.pow(2, 52); + e.prototype.F1 = 52 - k; + e.prototype.F2 = 2 * k - + 52; + var u = "0123456789abcdefghijklmnopqrstuvwxyz", F = [], n; + k = 48; + for (n = 0; 9 >= n; ++n)F[k++] = n; + k = 97; + for (n = 10; 36 > n; ++n)F[k++] = n; + k = 65; + for (n = 10; 36 > n; ++n)F[k++] = n; + y.prototype.convert = function (a) { + return 0 > a.s || 0 <= a.compareTo(this.m) ? a.mod(this.m) : a + }; + y.prototype.revert = function (a) { + return a + }; + y.prototype.reduce = function (a) { + a.divRemTo(this.m, null, a) + }; + y.prototype.mulTo = function (a, b, c) { + a.multiplyTo(b, c); + this.reduce(c) + }; + y.prototype.sqrTo = function (a, b) { + a.squareTo(b); + this.reduce(b) + }; + z.prototype.convert = function (a) { + var b = + l(); + a.abs().dlShiftTo(this.m.t, b); + b.divRemTo(this.m, null, b); + 0 > a.s && 0 < b.compareTo(e.ZERO) && this.m.subTo(b, b); + return b + }; + z.prototype.revert = function (a) { + var b = l(); + a.copyTo(b); + this.reduce(b); + return b + }; + z.prototype.reduce = function (a) { + for (; a.t <= this.mt2;)a[a.t++] = 0; + for (var b = 0; b < this.m.t; ++b) { + var c = a[b] & 32767, d = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & a.DM, c = b + this.m.t; + for (a[c] += this.m.am(0, d, a, b, 0, this.m.t); a[c] >= a.DV;)a[c] -= a.DV, a[++c]++ + } + a.clamp(); + a.drShiftTo(this.m.t, a); + 0 <= a.compareTo(this.m) && + a.subTo(this.m, a) + }; + z.prototype.mulTo = function (a, b, c) { + a.multiplyTo(b, c); + this.reduce(c) + }; + z.prototype.sqrTo = function (a, b) { + a.squareTo(b); + this.reduce(b) + }; + e.prototype.copyTo = function (a) { + for (var b = this.t - 1; 0 <= b; --b)a[b] = this[b]; + a.t = this.t; + a.s = this.s + }; + e.prototype.fromInt = function (a) { + this.t = 1; + this.s = 0 > a ? -1 : 0; + 0 < a ? this[0] = a : -1 > a ? this[0] = a + DV : this.t = 0 + }; + e.prototype.fromString = function (a, b) { + var c; + if (16 == b)c = 4; else if (8 == b)c = 3; else if (256 == b)c = 8; else if (2 == b)c = 1; else if (32 == b)c = 5; else if (4 == b)c = 2; else { + this.fromRadix(a, + b); + return + } + this.s = this.t = 0; + for (var d = a.length, f = !1, j = 0; 0 <= --d;) { + var g = 8 == c ? a[d] & 255 : N(a, d); + 0 > g ? "-" == a.charAt(d) && (f = !0) : (f = !1, 0 == j ? this[this.t++] = g : j + c > this.DB ? (this[this.t - 1] |= (g & (1 << this.DB - j) - 1) << j, this[this.t++] = g >> this.DB - j) : this[this.t - 1] |= g << j, j += c, j >= this.DB && (j -= this.DB)) + } + 8 == c && 0 != (a[0] & 128) && (this.s = -1, 0 < j && (this[this.t - 1] |= (1 << this.DB - j) - 1 << j)); + this.clamp(); + f && e.ZERO.subTo(this, this) + }; + e.prototype.clamp = function () { + for (var a = this.s & this.DM; 0 < this.t && this[this.t - 1] == a;)--this.t + }; + e.prototype.dlShiftTo = + function (a, b) { + var c; + for (c = this.t - 1; 0 <= c; --c)b[c + a] = this[c]; + for (c = a - 1; 0 <= c; --c)b[c] = 0; + b.t = this.t + a; + b.s = this.s + }; + e.prototype.drShiftTo = function (a, b) { + for (var c = a; c < this.t; ++c)b[c - a] = this[c]; + b.t = Math.max(this.t - a, 0); + b.s = this.s + }; + e.prototype.lShiftTo = function (a, b) { + var c = a % this.DB, d = this.DB - c, f = (1 << d) - 1, e = Math.floor(a / this.DB), g = this.s << c & this.DM, h; + for (h = this.t - 1; 0 <= h; --h)b[h + e + 1] = this[h] >> d | g, g = (this[h] & f) << c; + for (h = e - 1; 0 <= h; --h)b[h] = 0; + b[e] = g; + b.t = this.t + e + 1; + b.s = this.s; + b.clamp() + }; + e.prototype.rShiftTo = function (a, + b) { + b.s = this.s; + var c = Math.floor(a / this.DB); + if (c >= this.t)b.t = 0; else { + var d = a % this.DB, f = this.DB - d, e = (1 << d) - 1; + b[0] = this[c] >> d; + for (var g = c + 1; g < this.t; ++g)b[g - c - 1] |= (this[g] & e) << f, b[g - c] = this[g] >> d; + 0 < d && (b[this.t - c - 1] |= (this.s & e) << f); + b.t = this.t - c; + b.clamp() + } + }; + e.prototype.subTo = function (a, b) { + for (var c = 0, d = 0, f = Math.min(a.t, this.t); c < f;)d += this[c] - a[c], b[c++] = d & this.DM, d >>= this.DB; + if (a.t < this.t) { + for (d -= a.s; c < this.t;)d += this[c], b[c++] = d & this.DM, d >>= this.DB; + d += this.s + } else { + for (d += this.s; c < a.t;)d -= a[c], b[c++] = d & + this.DM, d >>= this.DB; + d -= a.s + } + b.s = 0 > d ? -1 : 0; + -1 > d ? b[c++] = this.DV + d : 0 < d && (b[c++] = d); + b.t = c; + b.clamp() + }; + e.prototype.multiplyTo = function (a, b) { + var c = this.abs(), d = a.abs(), f = c.t; + for (b.t = f + d.t; 0 <= --f;)b[f] = 0; + for (f = 0; f < d.t; ++f)b[f + c.t] = c.am(0, d[f], b, f, 0, c.t); + b.s = 0; + b.clamp(); + this.s != a.s && e.ZERO.subTo(b, b) + }; + e.prototype.squareTo = function (a) { + for (var b = this.abs(), c = a.t = 2 * b.t; 0 <= --c;)a[c] = 0; + for (c = 0; c < b.t - 1; ++c) { + var d = b.am(c, b[c], a, 2 * c, 0, 1); + if ((a[c + b.t] += b.am(c + 1, 2 * b[c], a, 2 * c + 1, d, b.t - c - 1)) >= b.DV)a[c + b.t] -= b.DV, a[c + b.t + + 1] = 1 + } + 0 < a.t && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1)); + a.s = 0; + a.clamp() + }; + e.prototype.divRemTo = function (a, b, c) { + var d = a.abs(); + if (!(0 >= d.t)) { + var f = this.abs(); + if (f.t < d.t)null != b && b.fromInt(0), null != c && this.copyTo(c); else { + null == c && (c = l()); + var j = l(), g = this.s; + a = a.s; + var h = this.DB - G(d[d.t - 1]); + 0 < h ? (d.lShiftTo(h, j), f.lShiftTo(h, c)) : (d.copyTo(j), f.copyTo(c)); + d = j.t; + f = j[d - 1]; + if (0 != f) { + var k = f * (1 << this.F1) + (1 < d ? j[d - 2] >> this.F2 : 0), p = this.FV / k, k = (1 << this.F1) / k, m = 1 << this.F2, A = c.t, n = A - d, r = null == b ? l() : b; + j.dlShiftTo(n, r); + 0 <= c.compareTo(r) && + (c[c.t++] = 1, c.subTo(r, c)); + e.ONE.dlShiftTo(d, r); + for (r.subTo(j, j); j.t < d;)j[j.t++] = 0; + for (; 0 <= --n;) { + var q = c[--A] == f ? this.DM : Math.floor(c[A] * p + (c[A - 1] + m) * k); + if ((c[A] += j.am(0, q, c, n, 0, d)) < q) { + j.dlShiftTo(n, r); + for (c.subTo(r, c); c[A] < --q;)c.subTo(r, c) + } + } + null != b && (c.drShiftTo(d, b), g != a && e.ZERO.subTo(b, b)); + c.t = d; + c.clamp(); + 0 < h && c.rShiftTo(h, c); + 0 > g && e.ZERO.subTo(c, c) + } + } + } + }; + e.prototype.invDigit = function () { + if (1 > this.t)return 0; + var a = this[0]; + if (0 == (a & 1))return 0; + var b = a & 3, b = b * (2 - (a & 15) * b) & 15, b = b * (2 - (a & 255) * b) & 255, b = b * + (2 - ((a & 65535) * b & 65535)) & 65535, b = b * (2 - a * b % this.DV) % this.DV; + return 0 < b ? this.DV - b : -b + }; + e.prototype.isEven = function () { + return 0 == (0 < this.t ? this[0] & 1 : this.s) + }; + e.prototype.exp = function (a, b) { + if (4294967295 < a || 1 > a)return e.ONE; + var c = l(), d = l(), f = b.convert(this), j = G(a) - 1; + for (f.copyTo(c); 0 <= --j;)if (b.sqrTo(c, d), 0 < (a & 1 << j))b.mulTo(d, f, c); else var g = c, c = d, d = g; + return b.revert(c) + }; + e.prototype.toString = function (a) { + if (0 > this.s)return "-" + this.negate().toString(a); + if (16 == a)a = 4; else if (8 == a)a = 3; else if (2 == a)a = 1; else if (32 == + a)a = 5; else if (4 == a)a = 2; else return this.toRadix(a); + var b = (1 << a) - 1, c, d = !1, f = "", e = this.t, g = this.DB - e * this.DB % a; + if (0 < e--) { + if (g < this.DB && 0 < (c = this[e] >> g))d = !0, f = u.charAt(c); + for (; 0 <= e;)g < a ? (c = (this[e] & (1 << g) - 1) << a - g, c |= this[--e] >> (g += this.DB - a)) : (c = this[e] >> (g -= a) & b, 0 >= g && (g += this.DB, --e)), 0 < c && (d = !0), d && (f += u.charAt(c)) + } + return d ? f : "0" + }; + e.prototype.negate = function () { + var a = l(); + e.ZERO.subTo(this, a); + return a + }; + e.prototype.abs = function () { + return 0 > this.s ? this.negate() : this + }; + e.prototype.compareTo = function (a) { + var b = + this.s - a.s; + if (0 != b)return b; + var c = this.t, b = c - a.t; + if (0 != b)return 0 > this.s ? -b : b; + for (; 0 <= --c;)if (0 != (b = this[c] - a[c]))return b; + return 0 + }; + e.prototype.bitLength = function () { + return 0 >= this.t ? 0 : this.DB * (this.t - 1) + G(this[this.t - 1] ^ this.s & this.DM) + }; + e.prototype.mod = function (a) { + var b = l(); + this.abs().divRemTo(a, null, b); + 0 > this.s && 0 < b.compareTo(e.ZERO) && a.subTo(b, b); + return b + }; + e.prototype.modPowInt = function (a, b) { + var c; + c = 256 > a || b.isEven() ? new y(b) : new z(b); + return this.exp(a, c) + }; + e.ZERO = w(0); + e.ONE = w(1); + E.prototype.convert = + Q; + E.prototype.revert = Q; + E.prototype.mulTo = function (a, b, c) { + a.multiplyTo(b, c) + }; + E.prototype.sqrTo = function (a, b) { + a.squareTo(b) + }; + B.prototype.convert = function (a) { + if (0 > a.s || a.t > 2 * this.m.t)return a.mod(this.m); + if (0 > a.compareTo(this.m))return a; + var b = l(); + a.copyTo(b); + this.reduce(b); + return b + }; + B.prototype.revert = function (a) { + return a + }; + B.prototype.reduce = function (a) { + a.drShiftTo(this.m.t - 1, this.r2); + a.t > this.m.t + 1 && (a.t = this.m.t + 1, a.clamp()); + this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3); + for (this.m.multiplyLowerTo(this.q3, + this.m.t + 1, this.r2); 0 > a.compareTo(this.r2);)a.dAddOffset(1, this.m.t + 1); + for (a.subTo(this.r2, a); 0 <= a.compareTo(this.m);)a.subTo(this.m, a) + }; + B.prototype.mulTo = function (a, b, c) { + a.multiplyTo(b, c); + this.reduce(c) + }; + B.prototype.sqrTo = function (a, b) { + a.squareTo(b); + this.reduce(b) + }; + var q = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, + 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997], Z = 67108864 / q[q.length - 1]; + e.prototype.chunkSize = function (a) { + return Math.floor(Math.LN2 * + this.DB / Math.log(a)) + }; + e.prototype.toRadix = function (a) { + null == a && (a = 10); + if (0 == this.signum() || 2 > a || 36 < a)return "0"; + var b = this.chunkSize(a), b = Math.pow(a, b), c = w(b), d = l(), f = l(), e = ""; + for (this.divRemTo(c, d, f); 0 < d.signum();)e = (b + f.intValue()).toString(a).substr(1) + e, d.divRemTo(c, d, f); + return f.intValue().toString(a) + e + }; + e.prototype.fromRadix = function (a, b) { + this.fromInt(0); + null == b && (b = 10); + for (var c = this.chunkSize(b), d = Math.pow(b, c), f = !1, j = 0, g = 0, h = 0; h < a.length; ++h) { + var l = N(a, h); + 0 > l ? "-" == a.charAt(h) && 0 == this.signum() && + (f = !0) : (g = b * g + l, ++j >= c && (this.dMultiply(d), this.dAddOffset(g, 0), g = j = 0)) + } + 0 < j && (this.dMultiply(Math.pow(b, j)), this.dAddOffset(g, 0)); + f && e.ZERO.subTo(this, this) + }; + e.prototype.fromNumber = function (a, b, c) { + if ("number" == typeof b)if (2 > a)this.fromInt(1); else { + this.fromNumber(a, c); + this.testBit(a - 1) || this.bitwiseTo(e.ONE.shiftLeft(a - 1), I, this); + for (this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(b);)this.dAddOffset(2, 0), this.bitLength() > a && this.subTo(e.ONE.shiftLeft(a - 1), this) + } else { + c = []; + var d = a & 7; + c.length = + (a >> 3) + 1; + b.nextBytes(c); + c[0] = 0 < d ? c[0] & (1 << d) - 1 : 0; + this.fromString(c, 256) + } + }; + e.prototype.bitwiseTo = function (a, b, c) { + var d, f, e = Math.min(a.t, this.t); + for (d = 0; d < e; ++d)c[d] = b(this[d], a[d]); + if (a.t < this.t) { + f = a.s & this.DM; + for (d = e; d < this.t; ++d)c[d] = b(this[d], f); + c.t = this.t + } else { + f = this.s & this.DM; + for (d = e; d < a.t; ++d)c[d] = b(f, a[d]); + c.t = a.t + } + c.s = b(this.s, a.s); + c.clamp() + }; + e.prototype.changeBit = function (a, b) { + var c = e.ONE.shiftLeft(a); + this.bitwiseTo(c, b, c); + return c + }; + e.prototype.addTo = function (a, b) { + for (var c = 0, d = 0, f = Math.min(a.t, + this.t); c < f;)d += this[c] + a[c], b[c++] = d & this.DM, d >>= this.DB; + if (a.t < this.t) { + for (d += a.s; c < this.t;)d += this[c], b[c++] = d & this.DM, d >>= this.DB; + d += this.s + } else { + for (d += this.s; c < a.t;)d += a[c], b[c++] = d & this.DM, d >>= this.DB; + d += a.s + } + b.s = 0 > d ? -1 : 0; + 0 < d ? b[c++] = d : -1 > d && (b[c++] = this.DV + d); + b.t = c; + b.clamp() + }; + e.prototype.dMultiply = function (a) { + this[this.t] = this.am(0, a - 1, this, 0, 0, this.t); + ++this.t; + this.clamp() + }; + e.prototype.dAddOffset = function (a, b) { + if (0 != a) { + for (; this.t <= b;)this[this.t++] = 0; + for (this[b] += a; this[b] >= this.DV;)this[b] -= + this.DV, ++b >= this.t && (this[this.t++] = 0), ++this[b] + } + }; + e.prototype.multiplyLowerTo = function (a, b, c) { + var d = Math.min(this.t + a.t, b); + c.s = 0; + for (c.t = d; 0 < d;)c[--d] = 0; + var f; + for (f = c.t - this.t; d < f; ++d)c[d + this.t] = this.am(0, a[d], c, d, 0, this.t); + for (f = Math.min(a.t, b); d < f; ++d)this.am(0, a[d], c, d, 0, b - d); + c.clamp() + }; + e.prototype.multiplyUpperTo = function (a, b, c) { + --b; + var d = c.t = this.t + a.t - b; + for (c.s = 0; 0 <= --d;)c[d] = 0; + for (d = Math.max(b - this.t, 0); d < a.t; ++d)c[this.t + d - b] = this.am(b - d, a[d], c, 0, 0, this.t + d - b); + c.clamp(); + c.drShiftTo(1, c) + }; + e.prototype.modInt = function (a) { + if (0 >= a)return 0; + var b = this.DV % a, c = 0 > this.s ? a - 1 : 0; + if (0 < this.t)if (0 == b)c = this[0] % a; else for (var d = this.t - 1; 0 <= d; --d)c = (b * c + this[d]) % a; + return c + }; + e.prototype.millerRabin = function (a) { + var b = this.subtract(e.ONE), c = b.getLowestSetBit(); + if (0 >= c)return !1; + var d = b.shiftRight(c); + a = a + 1 >> 1; + a > q.length && (a = q.length); + for (var f = l(), j = 0; j < a; ++j) { + f.fromInt(q[Math.floor(Math.random() * q.length)]); + var g = f.modPow(d, this); + if (0 != g.compareTo(e.ONE) && 0 != g.compareTo(b)) { + for (var h = 1; h++ < c && 0 != g.compareTo(b);)if (g = + g.modPowInt(2, this), 0 == g.compareTo(e.ONE))return !1; + if (0 != g.compareTo(b))return !1 + } + } + return !0 + }; + e.prototype.clone = function () { + var a = l(); + this.copyTo(a); + return a + }; + e.prototype.intValue = function () { + if (0 > this.s) { + if (1 == this.t)return this[0] - this.DV; + if (0 == this.t)return -1 + } else { + if (1 == this.t)return this[0]; + if (0 == this.t)return 0 + } + return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0] + }; + e.prototype.byteValue = function () { + return 0 == this.t ? this.s : this[0] << 24 >> 24 + }; + e.prototype.shortValue = function () { + return 0 == this.t ? this.s : this[0] << + 16 >> 16 + }; + e.prototype.signum = function () { + return 0 > this.s ? -1 : 0 >= this.t || 1 == this.t && 0 >= this[0] ? 0 : 1 + }; + e.prototype.toByteArray = function () { + var a = this.t, b = []; + b[0] = this.s; + var c = this.DB - a * this.DB % 8, d, f = 0; + if (0 < a--) { + if (c < this.DB && (d = this[a] >> c) != (this.s & this.DM) >> c)b[f++] = d | this.s << this.DB - c; + for (; 0 <= a;)if (8 > c ? (d = (this[a] & (1 << c) - 1) << 8 - c, d |= this[--a] >> (c += this.DB - 8)) : (d = this[a] >> (c -= 8) & 255, 0 >= c && (c += this.DB, --a)), 0 != (d & 128) && (d |= -256), 0 == f && (this.s & 128) != (d & 128) && ++f, 0 < f || d != this.s)b[f++] = d + } + return b + }; + e.prototype.equals = + function (a) { + return 0 == this.compareTo(a) + }; + e.prototype.min = function (a) { + return 0 > this.compareTo(a) ? this : a + }; + e.prototype.max = function (a) { + return 0 < this.compareTo(a) ? this : a + }; + e.prototype.and = function (a) { + var b = l(); + this.bitwiseTo(a, X, b); + return b + }; + e.prototype.or = function (a) { + var b = l(); + this.bitwiseTo(a, I, b); + return b + }; + e.prototype.xor = function (a) { + var b = l(); + this.bitwiseTo(a, O, b); + return b + }; + e.prototype.andNot = function (a) { + var b = l(); + this.bitwiseTo(a, P, b); + return b + }; + e.prototype.not = function () { + for (var a = l(), b = 0; b < this.t; ++b)a[b] = + this.DM & ~this[b]; + a.t = this.t; + a.s = ~this.s; + return a + }; + e.prototype.shiftLeft = function (a) { + var b = l(); + 0 > a ? this.rShiftTo(-a, b) : this.lShiftTo(a, b); + return b + }; + e.prototype.shiftRight = function (a) { + var b = l(); + 0 > a ? this.lShiftTo(-a, b) : this.rShiftTo(a, b); + return b + }; + e.prototype.getLowestSetBit = function () { + for (var a = 0; a < this.t; ++a)if (0 != this[a]) { + var b = a * this.DB; + a = this[a]; + if (0 == a)a = -1; else { + var c = 0; + 0 == (a & 65535) && (a >>= 16, c += 16); + 0 == (a & 255) && (a >>= 8, c += 8); + 0 == (a & 15) && (a >>= 4, c += 4); + 0 == (a & 3) && (a >>= 2, c += 2); + 0 == (a & 1) && ++c; + a = c + } + return b + + a + } + return 0 > this.s ? this.t * this.DB : -1 + }; + e.prototype.bitCount = function () { + for (var a = 0, b = this.s & this.DM, c = 0; c < this.t; ++c) { + for (var d = this[c] ^ b, f = 0; 0 != d;)d &= d - 1, ++f; + a += f + } + return a + }; + e.prototype.testBit = function (a) { + var b = Math.floor(a / this.DB); + return b >= this.t ? 0 != this.s : 0 != (this[b] & 1 << a % this.DB) + }; + e.prototype.setBit = function (a) { + return this.changeBit(a, I) + }; + e.prototype.clearBit = function (a) { + return this.changeBit(a, P) + }; + e.prototype.flipBit = function (a) { + return this.changeBit(a, O) + }; + e.prototype.add = function (a) { + var b = l(); + this.addTo(a, b); + return b + }; + e.prototype.subtract = function (a) { + var b = l(); + this.subTo(a, b); + return b + }; + e.prototype.multiply = function (a) { + var b = l(); + this.multiplyTo(a, b); + return b + }; + e.prototype.divide = function (a) { + var b = l(); + this.divRemTo(a, b, null); + return b + }; + e.prototype.remainder = function (a) { + var b = l(); + this.divRemTo(a, null, b); + return b + }; + e.prototype.divideAndRemainder = function (a) { + var b = l(), c = l(); + this.divRemTo(a, b, c); + return [b, c] + }; + e.prototype.modPow = function (a, b) { + var c = a.bitLength(), d, f = w(1), e; + if (0 >= c)return f; + d = 18 > + c ? 1 : 48 > c ? 3 : 144 > c ? 4 : 768 > c ? 5 : 6; + e = 8 > c ? new y(b) : b.isEven() ? new B(b) : new z(b); + var g = [], h = 3, k = d - 1, p = (1 << d) - 1; + g[1] = e.convert(this); + if (1 < d) { + c = l(); + for (e.sqrTo(g[1], c); h <= p;)g[h] = l(), e.mulTo(c, g[h - 2], g[h]), h += 2 + } + for (var m = a.t - 1, n, q = !0, r = l(), c = G(a[m]) - 1; 0 <= m;) { + c >= k ? n = a[m] >> c - k & p : (n = (a[m] & (1 << c + 1) - 1) << k - c, 0 < m && (n |= a[m - 1] >> this.DB + c - k)); + for (h = d; 0 == (n & 1);)n >>= 1, --h; + if (0 > (c -= h))c += this.DB, --m; + if (q)g[n].copyTo(f), q = !1; else { + for (; 1 < h;)e.sqrTo(f, r), e.sqrTo(r, f), h -= 2; + 0 < h ? e.sqrTo(f, r) : (h = f, f = r, r = h); + e.mulTo(r, g[n], f) + } + for (; 0 <= + m && 0 == (a[m] & 1 << c);)e.sqrTo(f, r), h = f, f = r, r = h, 0 > --c && (c = this.DB - 1, --m) + } + return e.revert(f) + }; + e.prototype.modInverse = function (a) { + var b = a.isEven(); + if (this.isEven() && b || 0 == a.signum())return e.ZERO; + for (var c = a.clone(), d = this.clone(), f = w(1), j = w(0), g = w(0), h = w(1); 0 != c.signum();) { + for (; c.isEven();) { + c.rShiftTo(1, c); + if (b) { + if (!f.isEven() || !j.isEven())f.addTo(this, f), j.subTo(a, j); + f.rShiftTo(1, f) + } else j.isEven() || j.subTo(a, j); + j.rShiftTo(1, j) + } + for (; d.isEven();) { + d.rShiftTo(1, d); + if (b) { + if (!g.isEven() || !h.isEven())g.addTo(this, + g), h.subTo(a, h); + g.rShiftTo(1, g) + } else h.isEven() || h.subTo(a, h); + h.rShiftTo(1, h) + } + 0 <= c.compareTo(d) ? (c.subTo(d, c), b && f.subTo(g, f), j.subTo(h, j)) : (d.subTo(c, d), b && g.subTo(f, g), h.subTo(j, h)) + } + if (0 != d.compareTo(e.ONE))return e.ZERO; + if (0 <= h.compareTo(a))return h.subtract(a); + if (0 > h.signum())h.addTo(a, h); else return h; + return 0 > h.signum() ? h.add(a) : h + }; + e.prototype.pow = function (a) { + return this.exp(a, new E) + }; + e.prototype.gcd = function (a) { + var b = 0 > this.s ? this.negate() : this.clone(); + a = 0 > a.s ? a.negate() : a.clone(); + if (0 > b.compareTo(a)) { + var c = + b, b = a; + a = c + } + var c = b.getLowestSetBit(), d = a.getLowestSetBit(); + if (0 > d)return b; + c < d && (d = c); + 0 < d && (b.rShiftTo(d, b), a.rShiftTo(d, a)); + for (; 0 < b.signum();)0 < (c = b.getLowestSetBit()) && b.rShiftTo(c, b), 0 < (c = a.getLowestSetBit()) && a.rShiftTo(c, a), 0 <= b.compareTo(a) ? (b.subTo(a, b), b.rShiftTo(1, b)) : (a.subTo(b, a), a.rShiftTo(1, a)); + 0 < d && a.lShiftTo(d, a); + return a + }; + e.prototype.isProbablePrime = function (a) { + var b, c = this.abs(); + if (1 == c.t && c[0] <= q[q.length - 1]) { + for (b = 0; b < q.length; ++b)if (c[0] == q[b])return !0; + return !1 + } + if (c.isEven())return !1; + for (b = 1; b < q.length;) { + for (var d = q[b], e = b + 1; e < q.length && d < Z;)d *= q[e++]; + for (d = c.modInt(d); b < e;)if (0 == d % q[b++])return !1 + } + return c.millerRabin(a) + }; + e.prototype.square = function () { + var a = l(); + this.squareTo(a); + return a + }; + J.prototype.init = function (a) { + var b, c, d; + for (b = 0; 256 > b; ++b)this.S[b] = b; + for (b = c = 0; 256 > b; ++b)c = c + this.S[b] + a[b % a.length] & 255, d = this.S[b], this.S[b] = this.S[c], this.S[c] = d; + this.j = this.i = 0 + }; + J.prototype.next = function () { + var a; + this.i = this.i + 1 & 255; + this.j = this.j + this.S[this.i] & 255; + a = this.S[this.i]; + this.S[this.i] = + this.S[this.j]; + this.S[this.j] = a; + return this.S[a + this.S[this.i] & 255] + }; + var K = 256, H, s, m; + if (null == s) { + s = []; + m = 0; + if ("Netscape" == navigator.appName && "5" > navigator.appVersion && window.crypto) { + n = window.crypto.random(32); + for (k = 0; k < n.length; ++k)s[m++] = n.charCodeAt(k) & 255 + } + for (; m < K;)k = Math.floor(65536 * Math.random()), s[m++] = k >>> 8, s[m++] = k & 255; + m = 0; + R((new Date).getTime()) + } + L.prototype.nextBytes = function (a) { + var b; + for (b = 0; b < a.length; ++b) { + var c = a, d = b, e; + if (null == H) { + R((new Date).getTime()); + H = new J; + H.init(s); + for (m = 0; m < s.length; ++m)s[m] = + 0; + m = 0 + } + e = H.next(); + c[d] = e + } + }; + p.prototype.doPublic = function (a) { + return a.modPowInt(this.e, this.n) + }; + p.prototype.setPublic = function (a, b) { + null != a && null != b && 0 < a.length && 0 < b.length ? (this.n = t(a, 16), this.e = parseInt(b, 16)) : alert("Invalid RSA public key") + }; + p.prototype.encrypt = function (a) { + var b; + b = this.n.bitLength() + 7 >> 3; + if (b < a.length + 11)alert("Message too long for RSA"), b = null; else { + for (var c = [], d = a.length - 1; 0 <= d && 0 < b;) { + var f = a.charCodeAt(d--); + 128 > f ? c[--b] = f : 127 < f && 2048 > f ? (c[--b] = f & 63 | 128, c[--b] = f >> 6 | 192) : (c[--b] = + f & 63 | 128, c[--b] = f >> 6 & 63 | 128, c[--b] = f >> 12 | 224) + } + c[--b] = 0; + a = new L; + for (d = []; 2 < b;) { + for (d[0] = 0; 0 == d[0];)a.nextBytes(d); + c[--b] = d[0] + } + c[--b] = 2; + c[--b] = 0; + b = new e(c) + } + if (null == b)return null; + b = this.doPublic(b); + if (null == b)return null; + b = b.toString(16); + return 0 == (b.length & 1) ? b : "0" + b + }; + p.prototype.doPrivate = function (a) { + if (null == this.p || null == this.q)return a.modPow(this.d, this.n); + var b = a.mod(this.p).modPow(this.dmp1, this.p); + for (a = a.mod(this.q).modPow(this.dmq1, this.q); 0 > b.compareTo(a);)b = b.add(this.p); + return b.subtract(a).multiply(this.coeff).mod(this.p).multiply(this.q).add(a) + }; + p.prototype.setPrivate = function (a, b, c) { + null != a && null != b && 0 < a.length && 0 < b.length ? (this.n = t(a, 16), this.e = parseInt(b, 16), this.d = t(c, 16)) : alert("Invalid RSA private key") + }; + p.prototype.setPrivateEx = function (a, b, c, d, e, j, g, h) { + null != a && null != b && 0 < a.length && 0 < b.length ? (this.n = t(a, 16), this.e = parseInt(b, 16), this.d = t(c, 16), this.p = t(d, 16), this.q = t(e, 16), this.dmp1 = t(j, 16), this.dmq1 = t(g, 16), this.coeff = t(h, 16)) : alert("Invalid RSA private key") + }; + p.prototype.generate = function (a, b) { + var c = new L, d = a >> 1; + this.e = parseInt(b, + 16); + for (var f = new e(b, 16); ;) { + for (; !(this.p = new e(a - d, 1, c), 0 == this.p.subtract(e.ONE).gcd(f).compareTo(e.ONE) && this.p.isProbablePrime(10));); + for (; !(this.q = new e(d, 1, c), 0 == this.q.subtract(e.ONE).gcd(f).compareTo(e.ONE) && this.q.isProbablePrime(10));); + if (0 >= this.p.compareTo(this.q)) { + var j = this.p; + this.p = this.q; + this.q = j + } + var j = this.p.subtract(e.ONE), g = this.q.subtract(e.ONE), h = j.multiply(g); + if (0 == h.gcd(f).compareTo(e.ONE)) { + this.n = this.p.multiply(this.q); + this.d = f.modInverse(h); + this.dmp1 = this.d.mod(j); + this.dmq1 = + this.d.mod(g); + this.coeff = this.q.modInverse(this.p); + break + } + } + }; + p.prototype.decrypt = function (a) { + a = t(a, 16); + a = this.doPrivate(a); + if (null == a)return null; + a:{ + var b = this.n.bitLength() + 7 >> 3; + a = a.toByteArray(); + for (var c = 0; c < a.length && 0 == a[c];)++c; + if (a.length - c != b - 1 || 2 != a[c])a = null; else { + for (++c; 0 != a[c];)if (++c >= a.length) { + a = null; + break a + } + for (b = ""; ++c < a.length;) { + var d = a[c] & 255; + 128 > d ? b += String.fromCharCode(d) : 191 < d && 224 > d ? (b += String.fromCharCode((d & 31) << 6 | a[c + 1] & 63), ++c) : (b += String.fromCharCode((d & 15) << 12 | (a[c + 1] & 63) << + 6 | a[c + 2] & 63), c += 2) + } + a = b + } + } + return a + }; + var C = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", S = "="; + p.prototype.parseKey = function (a) { + a = this.prepareKey(a); + var b = this.structure(), c = 0, d = null, e = null, j = 0, g; + for (g in b)d = b[g], d.hasOwnProperty("offset") && (c += 2 * d.offset), j = "string" == typeof d.length ? this[d.length] : d.length, j *= 2, e = a.substr(c, j), d.hasOwnProperty("type") && ("int" == d.type ? e = parseInt(e, 16) : "bigint" == d.type && (e = t(e, 16))), c += j, this[g] = e + }; + p.prototype.char64ToHex = function (a) { + var b = ""; + a = + atob(a); + for (var c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c).toString(16); + 1 === d.length && (d = "0" + d); + b += d + } + return b + }; + p.prototype.prepareKey = function (a) { + a = a.replace(/^\s+|\s+$/g, ""); + a = a.split(/\r?\n/); + "-----BEGIN" == a[0].substring(0, 10) && (a = a.slice(1, a.length - 1)); + a = a.join(""); + return this.char64ToHex(a) + }; + p.prototype.getBaseKey = function () { + var a = "", b = this.structure(), c = null, d = null, e = 0, j; + for (j in b)c = b[j], c.variable && (d = this[j].toString(16), d.length % 2 && (d = "0" + d), c.hasOwnProperty("padded") && c.padded && (d = "00" + d), + e = d.length / 2, e = e.toString(16), e.length % 2 && (e = "0" + e), c.hasOwnProperty("extraspace") && (a += e), a += e, a += d, a += "02"); + return a.slice(0, -2) + }; + p.prototype.wordwrap = function (a, b) { + b = b || 64; + return !a ? a : a.match(RegExp("(.{1," + b + "})( +|$\n?)|(.{1," + b + "})", "g")).join("\n") + }; + p.prototype.getPrivateKey = function () { + var a = "-----BEGIN RSA PRIVATE KEY-----\n", b; + b = "3082025e02010002" + this.getBaseKey(); + a += this.wordwrap(M(b)) + "\n"; + return a + "-----END RSA PRIVATE KEY-----" + }; + p.prototype.getPublicKey = function () { + var a = "-----BEGIN PUBLIC KEY-----\n", + b; + b = "30819f300d06092a864886f70d010101050003818d0030818902" + this.getBaseKey(); + a += this.wordwrap(M(b)) + "\n"; + return a + "-----END PUBLIC KEY-----" + }; + var D = function (a) { + p.call(this); + a && this.parseKey(a) + }; + D.prototype = new p; + D.prototype.constructor = D; + D.prototype.structure = function () { + return { + header: {length: 4}, + versionlength: {length: 1, offset: 1, type: "int"}, + version: {length: "versionlength", type: "int"}, + n_length: {length: 1, offset: 2, type: "int"}, + n: {length: "n_length", type: "bigint", variable: !0, padded: !0, extraspace: !0}, + e_length: { + length: 1, + offset: 1, type: "int" + }, + e: {length: "e_length", type: "int", variable: !0}, + d_length: {length: 1, offset: 2, type: "int"}, + d: {length: "d_length", type: "bigint", variable: !0, padded: !0, extraspace: !0}, + p_length: {length: 1, offset: 1, type: "int"}, + p: {length: "p_length", type: "bigint", variable: !0, padded: !0}, + q_length: {length: 1, offset: 1, type: "int"}, + q: {length: "q_length", type: "bigint", variable: !0, padded: !0}, + dmp1_length: {length: 1, offset: 1, type: "int"}, + dmp1: {length: "dmp1_length", type: "bigint", variable: !0}, + dmq1_length: { + length: 1, offset: 1, + type: "int" + }, + dmq1: {length: "dmq1_length", type: "bigint", variable: !0, padded: !0}, + coeff_length: {length: 1, offset: 1, type: "int"}, + coeff: {length: "coeff_length", type: "bigint", variable: !0, padded: !0} + } + }; + var x = function (a) { + p.call(this); + a && ("string" == typeof a ? this.parseKey(a) : a.hasOwnProperty("n") && a.hasOwnProperty("e") && (this.n = a.n, this.e = a.e)) + }; + x.prototype = new p; + x.prototype.constructor = x; + x.prototype.structure = function () { + return { + header: {length: 25}, n_length: {length: 1, offset: 2, type: "int"}, n: { + length: "n_length", type: "bigint", + variable: !0, padded: !0, extraspace: !0 + }, e_length: {length: 1, offset: 1, type: "int"}, e: {length: "e_length", type: "int", variable: !0} + } + }; + k = function () { + this.pubkey = this.privkey = null + }; + k.prototype.setPrivateKey = function (a) { + this.privkey = new D(a); + this.pubkey = new x(this.privkey) + }; + k.prototype.setPublicKey = function (a) { + this.pubkey = new x(a) + }; + k.prototype.decrypt = function (a) { + return this.privkey ? this.privkey.decrypt(Y(a)) : !1 + }; + k.prototype.encrypt = function (a) { + var b = this.pubkey || this.privkey; + return b ? M(b.encrypt(a)) : !1 + }; + k.prototype.getPrivateKey = + function () { + this.privkey || (this.privkey = new D, this.privkey.generate(1024, "010001"), this.pubkey = new x(this.privkey)); + return this.privkey.getPrivateKey() + }; + k.prototype.getPublicKey = function () { + this.pubkey || (this.pubkey = new x, this.pubkey.generate(1024, "010001")); + return this.pubkey.getPublicKey() + }; + T.JSEncrypt = k +})(JSEncryptExports); +var JSEncrypt = JSEncryptExports.JSEncrypt; diff --git a/view/base/web/js/open_render_channels.js b/view/base/web/js/open_render_channels.js new file mode 100644 index 0000000..a33756d --- /dev/null +++ b/view/base/web/js/open_render_channels.js @@ -0,0 +1,149 @@ +/** + * + * @category payment gateway + * @package Tpaycom_Magento2.3 + * @author Tpay.com + * @copyright (https://tpay.com) + */ +require(['jquery', 'mage/translate'], function ($, $t) { + + var payButton = $('#tpaycom_magento2basic_submit'), + tos = $('#accept_tos'); + + function getBankTile(groupId, groupName, logoSrc) { + return ''; + } + + function inArray(needle, haystack) { + var length = haystack.length; + for (var i = 0; i < length; i++) { + if (haystack[i] == needle) return true; + } + return false; + } + + function doesAmountFitToInstallments(grandTotal, channelId) { + switch (channelId) { + case 167: //twisto + return grandTotal >= 1 && grandTotal <= 1500; + break; + case 169: //raty pekao + return grandTotal >= 100 && grandTotal <= 20000; + break; + case 109: //alior raty + return grandTotal >= 300 && grandTotal <= 9259; + break; + case 172: //paypo + return grandTotal >= 40 && grandTotal <= 3000; + break; + } + + return true; + } + + function ShowChannelsCombo() { + var str = '', + i, + str2 = '', + tile, + others = [157, 106, 109, 148, 104], + installmentsGroupId = [109, 169, 167, 172], + group, + id, + groupName, + logoSrc, + bank_selection_form = document.getElementById('bank-selection-form'); + for (i in tr_groups) { + group = tr_groups[i]; + id = group['id']; + groupName = group['name']; + logoSrc = group['img']; + + if (window.checkoutConfig.tpay.payment.blikStatus === true && id === '150') { + continue; + } + + if (inArray(id, installmentsGroupId) && !doesAmountFitToInstallments(parseFloat(window.checkoutConfig.tpay.payment.grandTotal), parseInt(id))) { + continue; + } + + tile = getBankTile(id, groupName, logoSrc); + + if (inArray(id, others) === false) { + str += tile; + } else { + str2 += tile; + } + } + + bank_selection_form.innerHTML = str + str2; + $('.tpay-group-holder').each(function () { + $(this).on('click', function () { + var input = $('#tpay-channel-input'), + active_bank_blocks = document.getElementsByClassName('tpay-active'), + that = $(this); + input.val(that.attr('id').substr(5)); + if (active_bank_blocks.length > 0) { + active_bank_blocks[0].className = active_bank_blocks[0].className.replace('tpay-active', ''); + } + this.className = this.className + ' tpay-active'; + if (input.val() > 0 && $('#blik_code').val().length === 0 && tos.is(':checked')) { + payButton.removeClass('disabled'); + } + }); + }); + } + + function checkBlikInput() { + if (window.checkoutConfig.tpay.payment.blikStatus !== true) { + $(".blik").hide(); + } + } + + function setBlikInputAction() { + const TRIGGER_EVENTS = 'input change blur'; + + $('#blik_code').on(TRIGGER_EVENTS, function () { + var that = $(this); + if (that.val().length > 0) { + $('#tpay-basic-main-payment').css('display', 'none'); + } else { + $('#tpay-basic-main-payment').css('display', 'block'); + } + if ( + (that.val().length === 6 || (that.val().length === 0 && $('#tpay-channel-input').val() > 0)) + && + tos.is(':checked') + ) { + payButton.removeClass('disabled'); + } + if (that.val().length > 0 && that.val().length !== 6) { + payButton.addClass('disabled'); + } + }); + } + + var tr_groups = window.checkoutConfig.tpay.payment.groups; + ShowChannelsCombo(); + checkBlikInput(); + setBlikInputAction(); + payButton.addClass('disabled'); + tos.on('change', function () { + var input = $('#tpay-channel-input'); + if (input.val() > 0 && $('#blik_code').val().length === 0 && tos.is(':checked')) { + payButton.removeClass('disabled'); + return; + } + + if ($('#blik_code').val().length === 6 && tos.is(':checked')) { + payButton.removeClass('disabled'); + return; + } + payButton.addClass('disabled'); + }); + } +); diff --git a/view/base/web/js/renderSavedCards.js b/view/base/web/js/renderSavedCards.js new file mode 100644 index 0000000..36a04dd --- /dev/null +++ b/view/base/web/js/renderSavedCards.js @@ -0,0 +1,81 @@ +/** + * + * @category payment gateway + * @package Tpaycom_Magento2.2 + * @author Tpay.com + * @copyright (https://tpay.com) + */ +require(['jquery', 'mage/translate'], function ($, $t) { + + function renderForm() { + var cards = generateHtml(); + if (cards === undefined) { + $('#card_form').css('display', 'block'); + $('#saved_card_payment').css('display', 'none'); + return; + } + $("#tpaycom_magento2cards_submit").removeClass('disabled'); + $('input[name=savedId]').each(function () { + if ($(this).val() !== 'new') { + $(this).click(function () { + if ($(this).is(":checked")) { + $('#card_form').css({opacity: 1.0}).animate({opacity: 0.0}, 500); + setTimeout( + function () { + $('#card_form').css({display: "none"}) + }, 500 + ); + $("#tpaycom_magento2cards_submit").removeClass('disabled'); + } + }); + } + }); + + $('#newCard').click(function () { + if ($(this).is(":checked")) { + $('#card_form').css({opacity: 0.0, display: "block"}).animate({opacity: 1.0}, 500); + var x = false, cn = $('#card_number').val(), ed = $('#expiry_date').val(), cvc = $('#cvc').val(); + $('input').each(function () { + if ($(this).hasClass('wrong')) { + x = true; + } + }); + if (cn.length === 0 || ed.length === 0 || cvc.length === 0) { + x = true; + } + if (x) { + $("#tpaycom_magento2cards_submit").addClass('disabled'); + } + } + }); + + } + + function generateHtml() { + var userTokens = window.checkoutConfig.tpaycards.payment.customerTokens, + divContent = '', + text = $t('Pay with saved card '); + + if (userTokens.length === 0) { + return; + } + + for (var i = 0; i < userTokens.length; i++) { + var card = userTokens[i]; + var cardCode = card.cardShortCode, cardId = card.id; + var vendor = card.vendor; + var img = ''; + divContent += (''); + divContent += ('
'); + } + + $('#saved_card_payment').prepend(divContent); + $('input[name=savedId]').first().prop('checked', "checked"); + return divContent; + } + + $('document').ready(function () { + renderForm(); + }); + +}); diff --git a/view/base/web/js/render_channels.js b/view/base/web/js/render_channels.js index 63508f3..8b89277 100644 --- a/view/base/web/js/render_channels.js +++ b/view/base/web/js/render_channels.js @@ -7,7 +7,8 @@ */ require(['jquery', 'mage/translate'], function ($, $t) { - var payButton = $('#tpaycom_magento2basic_submit'); + var payButton = $('#tpaycom_magento2basic_submit'), + tos = $('#accept_tos'); function getBankTile(groupId, groupName, logoSrc) { return ' + + + + + + +
+
+ + +
+
+
+
+ +
+
+ +
+
+ + +
+
+ +
+
+
+ + + + + + +
+ + + +
+
+ + + +
+
+
+