From b7eb749eb71ae802f9868e3b099aa362e23d7cc0 Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Sat, 06 Sep 2025 18:33:05 +0800
Subject: [PATCH] 1
---
src/views/C2C/c2cOrder/appeal/Appeal.vue | 241 +
src/assets/css/init.scss | 1
src/views/C2C/withdraw/withdrawalSecurityVerification.vue | 189
src/components/country-list/intl.css | 1598 ++++++
src/service/withdraw.js | 71
src/views/C2C/c2cOrder/components/footer/OrderFooter.vue | 89
src/views/C2C/c2c-trade/index.vue | 27
src/components/country-list/README.md | 5
src/views/C2C/components/buy.vue | 394 +
src/views/C2C/c2c-trade/page/TradeSuccessDetailSell.vue | 35
src/views/C2C/c2cOrder/components/order-generation/CancelSuccess.vue | 117
src/views/C2C/c2c-trade/components/TradeSuccess.vue | 50
src/views/C2C/c2cOrder/payment/components/TradeSuccessDetail.vue | 149
src/views/C2C/c2cOrder/components/trade-data/TradeData.vue | 147
src/views/C2C/c2c-trade/page/c2cBuy.vue | 279 +
src/views/C2C/c2cOrder/components/order-data/OrderData.vue | 127
src/views/orderList/index.vue | 187
src/views/orderList/items.vue | 157
src/views/C2C/c2c-order-list/components/Evaluation.vue | 45
src/service/userCenter.js | 10
src/views/C2C/quick/index.vue | 408 +
src/views/advertiserDetail/index.vue | 519 ++
src/views/C2C/c2cOrder/payment/PaymentBuy.vue | 261 +
src/views/C2C/c2cOrder/cancel-order/cancelOrder.vue | 193
src/views/C2C/c2cOrder/order-generation/help.vue | 28
src/views/C2C/withdraw/withdrawPage.vue | 442 +
src/router/index.js | 188
src/views/C2C/selectLegalCurrency/index.vue | 321 +
src/views/C2C/components/BuyInput.vue | 60
src/views/C2C/quick/EnterTrade.vue | 219
src/views/C2C/c2cOrder/appeal/index.vue | 102
src/views/C2C/c2c-trade/components/C2cTrade.vue | 218
src/views/C2C/c2cOrder/payment/index.vue | 194
src/views/C2C/c2c-trade/page/c2cHelp.vue | 93
src/components/country-list/utils.js | 443 +
src/views/C2C/c2cOrder/payment/ConfirmedPaid.vue | 430 +
src/views/C2C/wantBuy.vue | 400 +
src/views/C2C/c2cOrder/payment/Payment.vue | 178
src/views/cryptos/financialManagement/machineBuy.vue | 7
src/views/C2C/c2c-trade/page/c2cSell.vue | 407 +
src/views/C2C/c2cOrder/components/appeal/AppealSuccess.vue | 54
src/components/country-list/flags.png | 0
src/views/C2C/c2cOrder/order-generation/orderGeneration.vue | 171
src/assets/css/copy2.scss | 1191 ++++
src/components/normal-head/index.vue | 41
src/views/C2C/c2c-trade/page/TradeSuccessBuyer.vue | 48
src/views/cryptos/HelpCenter/index.vue | 6
src/components/country-list/index.vue | 131
src/views/C2C/c2cOrder/payment/PaymentDetail.vue | 154
src/views/C2C/c2c-order-list/SelectItem.vue | 38
src/views/cryptos/order/MiningMachineOrder/index.vue | 3
src/views/C2C/c2cOrder/components/appeal/AppealMsg.vue | 66
src/views/C2C/c2cOrder/payment/components/Question.vue | 73
src/views/C2C/withdraw/withdrawDetail.vue | 31
src/views/C2C/c2c-order-list/Unread.vue | 61
src/views/C2C/c2c-order-list/tradeOrderDetail.vue | 42
src/views/C2C/c2c-trade/components/c2cCollectionEmpty.vue | 13
src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue | 50
src/views/customerService/index.vue | 9
src/views/C2C/c2c-order-list/components/OrderData.vue | 128
src/views/cryptos/AboutUs/index.vue | 5
postcss.config.cjs | 9
src/service/otc.js | 32
src/components/country-list/countryList.js | 322 +
src/views/C2C/components/adScreening.vue | 204
src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue | 213
src/components/country-list/flags@2x.png | 0
src/views/C2C/c2c-trade/page/SellGenerate.vue | 281 +
src/views/chat/index.vue | 369 +
src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue | 215
src/views/C2C/c2cOrder/order-generation/index.vue | 19
src/views/C2C/c2cOrder/payment/components/Evaluation.vue | 44
src/views/C2C/components/C2cInput.vue | 74
src/views/C2C/withdraw/withdrawSumbit.vue | 33
src/views/cryptos/order/FinancialOrder/index.vue | 3
src/components/order-nav/OrderNav.vue | 84
src/views/C2C/c2c-trade/page/c2cCollection.vue | 135
src/views/cryptos/promote/SharePoster.vue | 6
src/views/homePage/index.vue | 2
src/utils/list-load-mixins.js | 40
src/views/C2C/c2c-trade/page/TradeSuccessDetailBuyer.vue | 27
src/views/C2C/c2c-trade/page/TradeSuccessSell.vue | 52
src/views/C2C/c2c-order-list/index.vue | 234
src/views/C2C/c2cOrder/order-generation/OrderBuy.vue | 13
src/components/otcCircle/index.vue | 159
src/assets/css/variable.scss | 22
src/components/loading/index.vue | 22
src/views/C2C/c2c-trade/page/tradeOrderDetail.vue | 41
src/views/C2C/c2c-trade/components/CarItem.vue | 74
src/views/cryptos/loan/index.vue | 6
src/views/C2C/components/SelectItem.vue | 115
src/views/payMentMethod/list.vue | 2
src/views/advertiserDetail/detail.vue | 119
src/views/cryptos/financialManagement/fundBuy.vue | 3
94 files changed, 14,230 insertions(+), 88 deletions(-)
diff --git a/postcss.config.cjs b/postcss.config.cjs
index 2522198..eb21dee 100644
--- a/postcss.config.cjs
+++ b/postcss.config.cjs
@@ -29,6 +29,15 @@
if(file.indexOf('src/views/trade')> -1 ){
return false
}
+ if(file.indexOf('src/views/C2C')> -1 ){
+ return false
+ }
+ if(file.indexOf('src/views/orderList')> -1 ){
+ return false
+ }
+ if(file.indexOf('src/views/chat')> -1 ){
+ return false
+ }
return true
}
},
diff --git a/src/assets/css/copy2.scss b/src/assets/css/copy2.scss
new file mode 100644
index 0000000..c743531
--- /dev/null
+++ b/src/assets/css/copy2.scss
@@ -0,0 +1,1191 @@
+
+/** ************************* overwrite ****************/
+
+*{
+ margin: 0;
+ padding: 0;
+ font-size: 1.6rem;
+}
+html,body{
+ // width: 8.28rem;
+ max-width: 828px;
+ margin: 0 auto;
+ height: 100%;
+ box-sizing: border-box;
+}
+
+body {
+ width: 100%;
+ height: 100%;
+ // overflow: hidden;
+ font-size:30px;
+ font-family: "微软雅黑";
+ font-weight: 400;
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ /*兼容 IOS>11.2*/
+ // font-size: .32rem;
+ // background: #9E9FA3;
+}
+@supports (bottom: constant(safe-area-inset-bottom)) {
+ body {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+}
+
+input::-webkit-input-placeholder {
+ color: #C0C4CC;
+}
+.doTouch {
+ touch-action: none;
+ }
+
+/* 颜色值 */
+$white:#ffffff;
+$black:#000000;
+$dark-black:#22262F;
+$grey:#868C9A;
+// $grey: #f3f3f3;
+$dark-grey: #868C9A;
+$light-grey:#C8CAD2;
+$border-grey:#E5E7ED;
+$blue:#2C78F8;
+$light-blue:#1199FA;
+$red:#F6465D;
+$green:#2EBD85;
+$purple:#9A4DFD;
+$night:#121212;
+// overwrite vant
+
+.mining-pledge {
+ .van-tabs__wrap {
+ height: 145px!important;
+ .van-tab {
+ &:first-child {
+ border-right: 1px solid $border-grey;
+ }
+ }
+ }
+}
+
+.c2cColor{
+ color: #333;
+}
+
+:root {
+ --theme-color: #2C78F8;
+}
+
+/***************** global use framework *****************/
+
+/* flex */
+.flex { display: flex; }
+.flex-row { flex-direction: row;}
+.flex-col { flex-direction: column; }
+.justify-between { justify-content: space-between; }
+.justify-around { justify-content:space-around; }
+.justify-evenly { justify-content: space-evenly;}
+.justify-start{ justify-content: flex-start;}
+.justify-end { justify-content: flex-end; }
+.justify-center {justify-content: center;}
+.items-start { align-items:flex-start;}
+.items-end { align-items: flex-end; }
+.items-center { align-items: center; }
+.items-stretch {align-items: stretch;}
+.flex-1 { flex: 1}
+.flex-wrap { flex-wrap: wrap;}
+.flex-nowrap { flex-wrap: nowrap;}
+.align-center{align-content:center;}
+
+/* display */
+.block { display: block;}
+
+/* position */
+.absolute { position: absolute; }
+.relative { position: relative; }
+.fixed { position: fixed; }
+.z-10 { z-index: 10;}
+
+/* font */
+.font-bold { font-weight: bold; }
+.font-normal { font-weight: normal; }
+
+/* text */
+.text-center { text-align: center;}
+.text-left { text-align: left;}
+.text-right { text-align: right;}
+.break-word{word-break: break-word}
+/* padding margin font */
+@for $i from 0 through 50 {
+
+ // font-weight
+ // font-size
+ // margin
+ .ml-#{$i} {
+ margin-left: #{$i}px
+ }
+ .mr-#{$i} {
+ margin-right: #{$i}px
+ }
+ .mt-#{$i} {
+ margin-top: #{$i}px
+ }
+ .mb-#{$i} {
+ margin-bottom: #{$i}px
+ }
+ .mx-#{$i} {
+ margin-left: #{$i}px;
+ margin-right: #{$i}px;
+ }
+ .my-#{$i} {
+ margin-top: #{$i}px;
+ margin-bottom: #{$i}px;
+ }
+ // padding
+ .pl-#{$i} {
+ padding-left: #{$i}px
+ }
+ .pr-#{$i} {
+ padding-right: #{$i}px
+ }
+ .pt-#{$i} {
+ padding-top: #{$i}px
+ }
+ .pb-#{$i} {
+ padding-bottom: #{$i}px
+ }
+ .px-#{$i} {
+ padding-left: #{$i}px;
+ padding-right: #{$i}px;
+ }
+ .py-#{$i} {
+ padding-top: #{$i}px;
+ padding-bottom: #{$i}px;
+ }
+ // width
+ .w-#{$i} {
+ width: #{$i}px
+ }
+ // height
+}
+
+@for $j from 1 through 100 {
+
+ // height
+ .h-#{$j} {
+ height: #{$j}px
+ }
+ //line-height
+ .lh-#{$j} {
+ line-height: #{$j}px
+ }
+}
+.w-half { width: 50%; }
+.w-full { width: 100%; }
+.w-screen { width: 100%;}
+.h-full { height: 100%;}
+.h-screen { height: 100%;}
+.h-1000 { height: 1000px;}
+
+/* background */
+.bg-white { background: $white; }
+.bg-black { background: #121212;}
+.bg-night{
+ background: $night;
+ color: #fff;
+}
+.bg-night1{
+ background: #242424;
+}
+.bg-grey { background: $grey;}
+.bg-dark-grey{ background:$dark-grey};
+.bg-light-grey{ background:$light-grey;}
+.bg-red { background: $red; }
+.bg-green { background: $green;}
+.bg-blue { background: $blue;}
+.bg-dark-blue {background: #6C52E6;}
+.bg-light-blue{background: #7F81FD;}
+.bg-f5 {background: #F5F5F5}
+
+.bg-none { background: none;}
+.bg-grey-f3 { background: $grey;}
+
+
+/* color */
+.text-white { color: $white; }
+.text-black { color: $black; }
+.text-dark-black{ color:$dark-black;}
+.text-grey { color: $dark-grey; }
+.text-blue{ color:$blue;}
+.text-light-blue{ color:$light-blue;}
+.text-red { color: $red; }
+.text-green { color: $green; }
+.text-purple { color: $purple; }
+.text-night{
+ color: $night;
+}
+
+/* border-color */
+.border-white { border-color: $white; }
+.border-black { border-color: $black; }
+.border-grey { border-color: $grey; }
+.border-light-grey{ border-color:$light-grey;}
+.border-red { border-color: $red; }
+.border-green { border-color: $green; }
+.border-blue { border-color: $blue; }
+.border-light-blue { border-color: $light-blue; }
+
+.border-solid { border-style: solid; border-color: $border-grey;}
+
+.border-b-grey { border-bottom: 1px solid $border-grey;}
+.border-r-grey { border-right: 1px solid $border-grey;}
+.border-t-grey { border-top: 1px solid $border-grey;}
+
+.border-solid-blue{ border:1px solid $blue;}
+.border-solid-grey{ border:1px solid $grey;}
+.border-solid-dark-grey{ border:1px solid $dark-grey;}
+.border-solid-light-grey{ border:1px solid $border-grey;}
+.border-b-dashed-black { border-bottom: 1px dashed #000; }
+// .border-b-grey { border-bottom: 1px solid #E5E7ED;}
+// .border-r-grey { border-right: 1px solid #E5E7ED;}
+.border-none { border: none; outline: none;}
+
+/* border radius */
+.rounded-sm { border-radius: 2px;}
+.rounded { border-radius: 4px;}
+.rounded-md { border-radius: 6px;}
+.rounded-lg { border-radius: 8px;}
+.rounded-xl { border-radius: 12px;}
+.rounded-2xl { border-radius: 16px;}
+.rounded-full { border-radius: 9999px; }
+
+/** box-sizing */
+.box-border { box-sizing: border-box; }
+
+/* border */
+.border { border-width: 1px; }
+
+/* 解决重复点击报错的问题 */
+//* { touch-action: pan-y; }
+//left
+.left-0 {
+ left: 0;
+}
+
+.left-22 {
+ left: 22px;
+}
+.left-24 {
+ left: 24px;
+}
+.left-25 {
+ left: 25px;
+}
+.left-28 {
+ left: 28px;
+}
+
+//right
+.right-0 {
+ right: 0;
+}
+
+.right-10 {
+ right: 10px;
+}
+.right-19 {
+ right: 19px;
+}
+.right-20 {
+ right: 20px;
+}
+.right-22 {
+ right: 22px;
+}
+.right-34 {
+ right: 34px;
+}
+
+//top
+.top-0 {
+ top: 0;
+}
+
+.top-97 {
+ top: 97px;
+}
+
+.top-20 {
+ top: 20px;
+}
+
+.top-10 {
+ top: 10px;
+}
+
+.top-46 {
+ top: 46px;
+}
+.top-122 {
+ top: 122px;
+}
+
+//bottom
+.bottom-0 {
+ bottom: 0;
+}
+.bottom-28 {
+ bottom: 28px;
+}
+.bottom-30 {
+ bottom: 30px;
+}
+.bottom-90 {
+ bottom: 30px;
+}
+.bottom-108 {
+ bottom: 108px;
+}
+
+//font-weight
+
+.font-400 {
+ font-weight: 400;
+}
+
+.font-500 {
+ font-weight: 500;
+}
+
+.font-600 {
+ font-weight: 600;
+}
+
+.font-700 {
+ font-weight: 700;
+}
+
+.font-800 {
+ font-weight: 800;
+}
+
+.font-900 {
+ font-weight: 900;
+}
+
+//font-size
+.font-20 {
+ font-size: 20px;
+}
+
+.font-22 {
+ font-size: 22px;
+}
+
+.font-24 {
+ font-size: 24px;
+}
+
+.font-25 {
+ font-size: 25px;
+}
+
+.font-26 {
+ font-size: 26px;
+}
+
+.font-27 {
+ font-size: 27px;
+}
+
+.font-28 {
+ font-size: 28px;
+}
+
+.font-30 {
+ font-size: 30px;
+}
+
+.font-31 {
+ font-size: 31px;
+}
+
+.font-32 {
+ font-size: 32px;
+}
+
+.font-34 {
+ font-size: 34px;
+}
+
+.font-35 {
+ font-size: 35px;
+}
+
+.font-36 {
+ font-size: 36px;
+}
+
+.font-38 {
+ font-size: 38px;
+}
+
+.font-39 {
+ font-size: 39px;
+}
+
+.font-40 {
+ font-size: 40px;
+}
+
+.font-44 {
+ font-size: 44px;
+}
+
+.font-45 {
+ font-size: 45px;
+}
+
+.font-45 {
+ font-size: 45px;
+}
+
+.font-48 {
+ font-size: 48px;
+}
+
+.font-50 {
+ font-size: 50px;
+}
+
+.font-52 {
+ font-size: 52px;
+}
+
+.font-54 {
+ font-size: 54px;
+}
+
+.font-55 {
+ font-size: 55px;
+}
+
+.font-56 {
+ font-size: 56px;
+}
+
+.font-60 {
+ font-size: 60px;
+}
+
+.font-64 {
+ font-size: 64px;
+}
+
+.font-66 {
+ font-size: 66px;
+}
+
+.font-68 {
+ font-size: 68px;
+}
+
+.font-70 {
+ font-size: 70px;
+}
+
+//margin-left
+.ml-60 {
+ margin-left: 60px;
+}
+
+.ml-62 {
+ margin-left: 62px;
+}
+
+.ml-100 {
+ margin-left: 100px;
+}
+
+.ml-110 {
+ margin-left: 110px;
+}
+
+//margin-right
+.mr-55 {
+ margin-right: 55px;
+}
+.mr-80 {
+ margin-right: 80px;
+}
+.mr-89 {
+ margin-right: 89px;
+}
+.mr-100 {
+ margin-right: 100px;
+}
+
+//margin-top
+.mt-50 {
+ margin-top: 50px;
+}
+
+.mt-51 {
+ margin-top: 51px;
+}
+
+.mt-52 {
+ margin-top: 52px;
+}
+
+.mt-53 {
+ margin-top: 53px;
+}
+
+.mt-54 {
+ margin-top: 54px;
+}
+
+.mt-55 {
+ margin-top: 55px;
+}
+
+.mt-56 {
+ margin-top: 56px;
+}
+
+.mt-60 {
+ margin-top: 60px;
+}
+
+.mt-62 {
+ margin-top: 62px;
+}
+
+.mt-64 {
+ margin-top: 64px;
+}
+
+.mt-68 {
+ margin-top: 68px;
+}
+
+.mt-70 {
+ margin-top: 70px;
+}
+
+.mt-71 {
+ margin-top: 71px;
+}
+
+.mt-75 {
+ margin-top: 75px;
+}
+.mt-76 {
+ margin-top: 76px;
+}
+
+.mt-78 {
+ margin-top: 78px;
+}
+
+.mt-71 {
+ margin-top: 71px;
+}
+
+.mt-75 {
+ margin-top: 75px;
+}
+
+.mt-78 {
+ margin-top: 78px;
+}
+.mt-80 {
+ margin-top: 80px;
+}
+.mt-82 {
+ margin-top: 82px;
+}
+
+.mt-83 {
+ margin-top: 83px;
+}
+
+.mt-84 {
+ margin-top: 84px;
+}
+
+.mt-88 {
+ margin-top: 88px;
+}
+
+.mt-90 {
+ margin-top: 90px;
+}
+.mt-92 {
+ margin-top: 92px;
+}
+
+.mt-94 {
+ margin-top: 94px;
+}
+
+.mt-96 {
+ margin-top: 96px;
+}
+
+.mt-109 {
+ margin-top: 109px;
+}
+
+.mt-116 {
+ margin-top: 116px;
+}
+
+.mt-120 {
+ margin-top: 120px;
+}
+
+.mt-142 {
+ margin-top: 142px;
+}
+
+.mt-144 {
+ margin-top: 144px;
+}
+.mt-184 {
+ margin-top: 184px;
+}
+.mt-193 {
+ margin-top: 193px;
+}
+
+.mt-266 {
+ margin-top: 266px;
+}
+.mt-492 {
+ margin-top: 492px;
+}
+
+// margin-bottom
+.mb-54 {
+ margin-bottom: 54px;
+}
+
+.mb-60 {
+ margin-bottom: 60px;
+}
+.mb-62 {
+ margin-bottom: 62px;
+}
+
+.mb-65 {
+ margin-bottom: 65px;
+}
+
+.mb-70 {
+ margin-bottom: 70px;
+}
+
+.mb-80 {
+ margin-bottom: 80px;
+}
+
+.mb-100 {
+ margin-bottom: 100px;
+}
+
+//margin-left margin-right
+.mx-52 {
+ margin-left: 52px;
+ margin-right: 52px;
+}
+
+//margin-top margin-bottom
+
+
+//padding
+.p-10 {
+ padding: 10px;
+}
+.p-32 {
+ padding: 32px;
+}
+.p-40 {
+ padding: 40px;
+}
+.p-50 {
+ padding: 50px;
+}
+
+//padding-left
+.pl-60 {
+ padding-left: 60px;
+}
+
+.pl-72 {
+ padding-left: 72px;
+}
+.pl-80 {
+ padding-left: 80px;
+}
+.pl-94 {
+ padding-left: 94px;
+}
+.pl-96 {
+ padding-left: 96px;
+}
+
+.pl-200 {
+ padding-left: 200px;
+}
+//padding-right
+.pr-62 {
+ padding-right: 62px;
+}
+.pr-140{
+ padding-right: 140px;
+}
+//padding-top
+.pt-54 {
+ padding-top: 54px;
+}
+
+.pt-58 {
+ padding-top: 58px;
+}
+
+.pt-60 {
+ padding-top: 60px;
+}
+.pt-64 {
+ padding-top: 64px;
+}
+.pt-80 {
+ padding-top: 80px;
+}
+
+.pt-82 {
+ padding-top: 82px;
+}
+
+.pt-100 {
+ padding-top: 100px;
+}
+
+.pt-110 {
+ padding-top: 110px;
+}
+
+.pt-124 {
+ padding-top: 124px;
+}
+
+.pt-185 {
+ padding-top: 185px;
+}
+
+//padding-bottom
+.pb-54 {
+ padding-bottom: 54px;
+}
+
+.pb-58 {
+ padding-bottom: 58px;
+}
+
+.pb-60 {
+ padding-bottom: 60px;
+}
+
+.pb-61 {
+ padding-bottom: 61px;
+}
+
+.pb-64 {
+ padding-bottom: 64px;
+}
+
+.pb-68 {
+ padding-bottom: 68px;
+}
+
+.pb-80 {
+ padding-bottom: 80px;
+}
+
+.pb-82 {
+ padding-bottom: 82px;
+}
+
+.pb-90 {
+ padding-bottom: 90px;
+}
+
+.pb-100 {
+ padding-bottom: 100px;
+}
+
+.pb-104 {
+ padding-bottom: 104px;
+}
+
+.pb-108 {
+ padding-bottom: 108px;
+}
+
+.pb-120 {
+ padding-bottom: 120px;
+}
+
+.pb-144 {
+ padding-bottom: 144px;
+}
+
+.pb-144 {
+ padding-bottom: 150px;
+}
+
+.pb-180 {
+ padding-bottom: 180px;
+}
+.pb-200 {
+ padding-bottom: 200px;
+}
+// padding-left padding-right
+.px-52 {
+ padding-left: 52px;
+ padding-right: 52px;
+}
+.px-52{
+ padding-left: 52px;
+ padding-right: 52px;
+}
+.px-60 {
+ padding-left: 60px;
+ padding-right: 60px;
+}
+// padding-top padding-bottom
+.py-28 {
+ padding-top: 28px;
+ padding-bottom: 28px
+}
+.py-300 {
+ padding-top: 300px;
+ padding-bottom: 300px
+}
+
+//width
+.w-52 {
+ width: 52px;
+}
+.w-54{
+ width: 54px;
+}
+.w-55 {
+ width: 55px;
+}
+.w-56 {
+ width: 56px;
+}
+.w-60 {
+ width: 60px;
+}
+
+.w-62 {
+ width: 62px;
+}
+
+.w-64 {
+ width: 64px;
+}
+
+.w-65 {
+ width: 65px;
+}
+
+.w-70 {
+ width: 70px;
+}
+
+.w-72 {
+ width: 72px;
+}
+
+.w-75 {
+ width: 75px;
+}
+
+.w-80 {
+ width: 80px;
+}
+
+.w-81 {
+ width: 81px;
+}
+
+.w-90 {
+ width: 90px;
+}
+
+.w-92 {
+ width: 92px;
+}
+
+.w-95 {
+ width: 95px;
+}
+
+.w-96 {
+ width: 96px;
+}
+
+.w-120 {
+ width: 120px;
+}
+
+.w-122 {
+ width: 122px;
+}
+
+.w-125 {
+ width: 125px;
+}
+
+.w-128 {
+ width: 128px;
+}
+
+.w-140 {
+ width: 140px;
+}
+.w-150 {
+ width: 150px;
+}
+.w-153 {
+ width: 153px;
+}
+
+.w-154 {
+ width: 154px;
+}
+
+.w-156 {
+ width: 156px;
+}
+
+.w-160 {
+ width: 160px;
+}
+
+.w-162 {
+ width: 162px;
+}
+
+.w-177 {
+ width: 177px;
+}
+
+.w-180 {
+ width: 180px;
+}
+
+.w-182 {
+ width: 182px;
+}
+
+.w-189 {
+ width: 189px;
+}
+
+.w-200 {
+ width: 200px;
+}
+
+.w-210 {
+ width: 210px;
+}
+.w-232 {
+ width: 232px;
+}
+.w-244 {
+ width: 244px;
+}
+.w-248 {
+ width: 248px;
+}
+
+.w-252 {
+ width: 252px;
+}
+
+.w-255 {
+ width: 255px;
+}
+
+.w-270 {
+ width: 270px;
+}
+
+.w-280 {
+ width: 280px;
+}
+
+.w-290 {
+ width: 290px;
+}
+
+.w-360 {
+ width: 360px;
+}
+
+.w-368 {
+ width: 368px;
+}
+
+.w-370 {
+ width: 370px;
+}
+
+.w-385 {
+ width: 385px;
+}
+
+.w-440 {
+ width: 440px;
+}
+
+.w-460 {
+ width: 460px;
+}
+
+.w-500 {
+ width: 500px;
+}
+
+.w-580 {
+ width: 580px;
+}
+.w-600 {
+ width: 600px;
+}
+.w-616 {
+ width: 616px;
+}
+.w-640 {
+ width: 640px;
+}
+
+.w-700 {
+ width: 700px;
+}
+.w-748 {
+ width: 748px;
+}
+.w-762 {
+ width: 762px;
+}
+
+.w-763 {
+ width: 763px;
+}
+
+.w-768 {
+ width: 768px;
+}
+
+.w-828 {
+ width: 828px;
+}
+
+//hight
+.h-101 {
+ height: 101px;
+}
+
+.h-102 {
+ height: 102px;
+}
+
+.h-110 {
+ height: 110px;
+}
+.h-120 {
+ height: 120px;
+}
+.h-122 {
+ height: 122px;
+}
+
+.h-127 {
+ height: 127px;
+}
+
+.h-128 {
+ height: 128px;
+}
+
+.h-130 {
+ height: 130px;
+}
+
+.h-150 {
+ height: 150px;
+}
+
+.h-152 {
+ height: 152px;
+}
+
+.h-154 {
+ height: 154px;
+}
+
+.h-156 {
+ height: 156px;
+}
+
+.h-158 {
+ height: 158px;
+}
+
+.h-170 {
+ height: 170px;
+}
+
+.h-180 {
+ height: 180px;
+}
+
+.h-200 {
+ height: 200px;
+}
+
+.h-220 {
+ height: 220px;
+}
+
+.h-229 {
+ height: 229px;
+}
+
+.h-240 {
+ height: 240px;
+}
+
+.h-260 {
+ height: 260px;
+}
+.h-304 {
+ height: 304px;
+}
+
+.h-828 {
+ height: 828px;
+}
+
+//line-height
+.lh-152 {
+ line-height: 152px;
+}
diff --git a/src/assets/css/init.scss b/src/assets/css/init.scss
index a2b623e..3e2e769 100644
--- a/src/assets/css/init.scss
+++ b/src/assets/css/init.scss
@@ -131,3 +131,4 @@
.w-30{
width: 60px;
}
+
diff --git a/src/assets/css/variable.scss b/src/assets/css/variable.scss
index b1fe88b..7c029c5 100644
--- a/src/assets/css/variable.scss
+++ b/src/assets/css/variable.scss
@@ -2,10 +2,10 @@
$mainTextColor: #fff;
$mainbgWhiteColor: #fff;
-$main_background:#131a2e; //主题色
+$main_background:#f7f7f7; //主题色
$main2_background:#1F233D; //主题浅色背景
-$text_color:#fff; //文字颜色
-$text_color1:#868D9A; //文字浅色
+$text_color:#333; //文字颜色
+$text_color1:#555; //文字浅色
$text_color2:#fff; // 白色文字
$text_color3:#CFD5EC; //
$text_color4:#333; //浅色标题背景文字颜色
@@ -25,18 +25,18 @@
$line_color: #393E49;
$bg_dark: #474B62;
$border_color: #212C4E;
-$divi_line: #151726; //分割线
+$divi_line: #ddd; //分割线
$bg_step: #868D9A;
$bg_Bottom:#313346;
$chat_bg: #474B62;
$upload_bg:#474B62;
-$grey_bg: #474B62;
+$grey_bg: #ccc;
$input_background1: #131a2e; //质押借币input
-$c2c_color: #fff;
-$c2c_background: #131a2e;
-$c2c_background1: #27293B;
-$c2c_tab_background:#27293B;
-$c2c_tip_background: #131a2e;
+$c2c_color: #333;
+$c2c_background: #aaa;
+$c2c_background1: #ccc;
+$c2c_tab_background:#ccc;
+$c2c_tip_background: #aaa;
// $selectSymbol_background: #131a2e; //自选与选择币种背景颜色
$selectSymbol_background: #f7f7f7; //自选与选择币种背景颜色
$US_tab_background: #1D2439;
@@ -51,7 +51,7 @@
$log-c: #282828;
$icon-bg:#dbdbdb;
$inp-b: #f7f7f7;
-$text_color:$log-c;
+// $text_color:$log-c;
.yellow-bg{
background: $bg_yellow;
}
diff --git a/src/components/country-list/README.md b/src/components/country-list/README.md
new file mode 100644
index 0000000..ae030c1
--- /dev/null
+++ b/src/components/country-list/README.md
@@ -0,0 +1,5 @@
+# IntlTelInput
+
+> International telephone area code selection component base on Vue.
+
+<img width="434" alt="2018-11-20 11 01 11" src="https://user-images.githubusercontent.com/9512362/48748981-b54fb100-ecb3-11e8-8225-08aca68e8e32.png">
diff --git a/src/components/country-list/countryList.js b/src/components/country-list/countryList.js
new file mode 100644
index 0000000..510d917
--- /dev/null
+++ b/src/components/country-list/countryList.js
@@ -0,0 +1,322 @@
+const countries = {
+ 'af': {'code': 'af', 'name': 'Afghanistan (افغانستان)', 'dialCode': 93, 'phoneFormat': '070 123 4567'},
+ 'al': {'code': 'al', 'name': 'Albania (Shqipëri)', 'dialCode': 355, 'phoneFormat': '066 123 4567'},
+ 'dz': {'code': 'dz', 'name': 'Algeria (الجزائر)', 'dialCode': 213, 'phoneFormat': '0551 23 45 67'},
+ 'as': {'code': 'as', 'name': 'American Samoa', 'dialCode': 1684, 'phoneFormat': '(684) 733-1234'},
+ 'ad': {'code': 'ad', 'name': 'Andorra', 'dialCode': 376, 'phoneFormat': '312 345'},
+ 'ao': {'code': 'ao', 'name': 'Angola', 'dialCode': 244, 'phoneFormat': '923 123 456'},
+ 'ai': {'code': 'ai', 'name': 'Anguilla', 'dialCode': 1264, 'phoneFormat': '(264) 235-1234'},
+ 'ag': {'code': 'ag', 'name': 'Antigua and Barbuda', 'dialCode': 1268, 'phoneFormat': '(268) 464-1234'},
+ 'ar': {'code': 'ar', 'name': 'Argentina', 'dialCode': 54, 'phoneFormat': '011 15-2345-6789'},
+ 'am': {'code': 'am', 'name': 'Armenia (Հայաստան)', 'dialCode': 374, 'phoneFormat': '077 123456'},
+ 'aw': {'code': 'aw', 'name': 'Aruba', 'dialCode': 297, 'phoneFormat': '560 1234'},
+ 'au': {'code': 'au', 'name': 'Australia', 'dialCode': 61, 'phoneFormat': '0412 345 678'},
+ 'at': {'code': 'at', 'name': 'Austria (Österreich)', 'dialCode': 43, 'phoneFormat': '0664 123456'},
+ 'az': {'code': 'az', 'name': 'Azerbaijan (Azərbaycan)', 'dialCode': 994, 'phoneFormat': '040 123 45 67'},
+ 'bs': {'code': 'bs', 'name': 'Bahamas', 'dialCode': 1242, 'phoneFormat': '(242) 359-1234'},
+ 'bh': {'code': 'bh', 'name': 'Bahrain (البحرين)', 'dialCode': 973, 'phoneFormat': '3600 1234'},
+ 'bd': {'code': 'bd', 'name': 'Bangladesh (বাংলাদেশ)', 'dialCode': 880, 'phoneFormat': '01812-345678'},
+ 'bb': {'code': 'bb', 'name': 'Barbados', 'dialCode': 1246, 'phoneFormat': '(246) 250-1234'},
+ 'by': {'code': 'by', 'name': 'Belarus (Беларусь)', 'dialCode': 375, 'phoneFormat': '8 029 491-19-11'},
+ 'be': {'code': 'be', 'name': 'Belgium (België)', 'dialCode': 32, 'phoneFormat': '0470 12 34 56'},
+ 'bz': {'code': 'bz', 'name': 'Belize', 'dialCode': 501, 'phoneFormat': '622-1234'},
+ 'bj': {'code': 'bj', 'name': 'Benin (Bénin)', 'dialCode': 229, 'phoneFormat': '90 01 12 34'},
+ 'bm': {'code': 'bm', 'name': 'Bermuda', 'dialCode': 1441, 'phoneFormat': '(441) 370-1234'},
+ 'bt': {'code': 'bt', 'name': 'Bhutan (འབྲུག)', 'dialCode': 975, 'phoneFormat': '17 12 34 56'},
+ 'bo': {'code': 'bo', 'name': 'Bolivia', 'dialCode': 591, 'phoneFormat': '71234567'},
+ 'ba': {
+ 'code': 'ba',
+ 'name': 'Bosnia and Herzegovina (Босна и Херцеговина)',
+ 'dialCode': 387,
+ 'phoneFormat': '061 123 456'
+ },
+ 'bw': {'code': 'bw', 'name': 'Botswana', 'dialCode': 267, 'phoneFormat': '71 123 456'},
+ 'br': {'code': 'br', 'name': 'Brazil (Brasil)', 'dialCode': 55, 'phoneFormat': '(11) 96123-4567'},
+ 'io': {'code': 'io', 'name': 'British Indian Ocean Territory', 'dialCode': 246, 'phoneFormat': '380 1234'},
+ 'vg': {'code': 'vg', 'name': 'British Virgin Islands', 'dialCode': 1284, 'phoneFormat': '(284) 300-1234'},
+ 'bn': {'code': 'bn', 'name': 'Brunei', 'dialCode': 673, 'phoneFormat': '712 3456'},
+ 'bg': {'code': 'bg', 'name': 'Bulgaria (България)', 'dialCode': 359, 'phoneFormat': '048 123 456'},
+ 'bf': {'code': 'bf', 'name': 'Burkina Faso', 'dialCode': 226, 'phoneFormat': '70 12 34 56'},
+ 'bi': {'code': 'bi', 'name': 'Burundi (Uburundi)', 'dialCode': 257, 'phoneFormat': '79 56 12 34'},
+ 'kh': {'code': 'kh', 'name': 'Cambodia (កម្ពុជា)', 'dialCode': 855, 'phoneFormat': '091 234 567'},
+ 'cm': {'code': 'cm', 'name': 'Cameroon (Cameroun)', 'dialCode': 237, 'phoneFormat': '6 71 23 45 67'},
+ 'ca': {'code': 'ca', 'name': 'Canada', 'dialCode': 1, 'phoneFormat': '(204) 234-5678'},
+ 'cv': {'code': 'cv', 'name': 'Cape Verde (Kabu Verdi)', 'dialCode': 238, 'phoneFormat': '991 12 34'},
+ 'bq': {'code': 'bq', 'name': 'Caribbean Netherlands', 'dialCode': 599, 'phoneFormat': '318 1234'},
+ 'ky': {'code': 'ky', 'name': 'Cayman Islands', 'dialCode': 1345, 'phoneFormat': '(345) 323-1234'},
+ 'cf': {
+ 'code': 'cf',
+ 'name': 'Central African Republic (République centrafricaine)',
+ 'dialCode': 236,
+ 'phoneFormat': '70 01 23 45'
+ },
+ 'td': {'code': 'td', 'name': 'Chad (Tchad)', 'dialCode': 235, 'phoneFormat': '63 01 23 45'},
+ 'cl': {'code': 'cl', 'name': 'Chile', 'dialCode': 56, 'phoneFormat': '09 6123 4567'},
+ 'cn': {'code': 'cn', 'name': 'China (中国)', 'dialCode': 86, 'phoneFormat': '131 2345 6789'},
+ 'cx': {'code': 'cx', 'name': 'Christmas Island', 'dialCode': 61, 'phoneFormat': '0412 345 678'},
+ 'cc': {'code': 'cc', 'name': 'Cocos (Keeling) Islands', 'dialCode': 61, 'phoneFormat': '0412 345 678'},
+ 'co': {'code': 'co', 'name': 'Colombia', 'dialCode': 57, 'phoneFormat': '321 1234567'},
+ 'km': {'code': 'km', 'name': 'Comoros (جزر القمر)', 'dialCode': 269, 'phoneFormat': '321 23 45'},
+ 'cd': {
+ 'code': 'cd',
+ 'name': 'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',
+ 'dialCode': 243,
+ 'phoneFormat': '0991 234 567'
+ },
+ 'cg': {
+ 'code': 'cg',
+ 'name': 'Congo (Republic) (Congo-Brazzaville)',
+ 'dialCode': 242,
+ 'phoneFormat': '06 123 4567'
+ },
+ 'ck': {'code': 'ck', 'name': 'Cook Islands', 'dialCode': 682, 'phoneFormat': '71 234'},
+ 'cr': {'code': 'cr', 'name': 'Costa Rica', 'dialCode': 506, 'phoneFormat': '8312 3456'},
+ 'ci': {'code': 'ci', 'name': 'Côte d’Ivoire', 'dialCode': 225, 'phoneFormat': '01 23 45 67'},
+ 'hr': {'code': 'hr', 'name': 'Croatia (Hrvatska)', 'dialCode': 385, 'phoneFormat': '091 234 5678'},
+ 'cu': {'code': 'cu', 'name': 'Cuba', 'dialCode': 53, 'phoneFormat': '05 1234567'},
+ 'cw': {'code': 'cw', 'name': 'Curaçao', 'dialCode': 599, 'phoneFormat': '9 518 1234'},
+ 'cy': {'code': 'cy', 'name': 'Cyprus (Κύπρος)', 'dialCode': 357, 'phoneFormat': '96 123456'},
+ 'cz': {'code': 'cz', 'name': 'Czech Republic (Česká republika)', 'dialCode': 420, 'phoneFormat': '601 123 456'},
+ 'dk': {'code': 'dk', 'name': 'Denmark (Danmark)', 'dialCode': 45, 'phoneFormat': '20 12 34 56'},
+ 'dj': {'code': 'dj', 'name': 'Djibouti', 'dialCode': 253, 'phoneFormat': '77 83 10 01'},
+ 'dm': {'code': 'dm', 'name': 'Dominica', 'dialCode': 1767, 'phoneFormat': '(767) 225-1234'},
+ 'do': {
+ 'code': 'do',
+ 'name': 'Dominican Republic (República Dominicana)',
+ 'dialCode': 1,
+ 'phoneFormat': '(809) 234-5678'
+ },
+ 'ec': {'code': 'ec', 'name': 'Ecuador', 'dialCode': 593, 'phoneFormat': '099 123 4567'},
+ 'eg': {'code': 'eg', 'name': 'Egypt (مصر)', 'dialCode': 20, 'phoneFormat': '0100 123 4567'},
+ 'sv': {'code': 'sv', 'name': 'El Salvador', 'dialCode': 503, 'phoneFormat': '7012 3456'},
+ 'gq': {
+ 'code': 'gq',
+ 'name': 'Equatorial Guinea (Guinea Ecuatorial)',
+ 'dialCode': 240,
+ 'phoneFormat': '222 123 456'
+ },
+ 'er': {'code': 'er', 'name': 'Eritrea', 'dialCode': 291, 'phoneFormat': '07 123 456'},
+ 'ee': {'code': 'ee', 'name': 'Estonia (Eesti)', 'dialCode': 372, 'phoneFormat': '5123 4567'},
+ 'et': {'code': 'et', 'name': 'Ethiopia', 'dialCode': 251, 'phoneFormat': '091 123 4567'},
+ 'fk': {'code': 'fk', 'name': 'Falkland Islands (Islas Malvinas)', 'dialCode': 500, 'phoneFormat': '51234'},
+ 'fo': {'code': 'fo', 'name': 'Faroe Islands (Føroyar)', 'dialCode': 298, 'phoneFormat': '211234'},
+ 'fj': {'code': 'fj', 'name': 'Fiji', 'dialCode': 679, 'phoneFormat': '701 2345'},
+ 'fi': {'code': 'fi', 'name': 'Finland (Suomi)', 'dialCode': 358, 'phoneFormat': '041 2345678'},
+ 'fr': {'code': 'fr', 'name': 'France', 'dialCode': 33, 'phoneFormat': '06 12 34 56 78'},
+ 'gf': {'code': 'gf', 'name': 'French Guiana (Guyane française)', 'dialCode': 594, 'phoneFormat': '0694 20 12 34'},
+ 'pf': {
+ 'code': 'pf',
+ 'name': 'French Polynesia (Polynésie française)',
+ 'dialCode': 689,
+ 'phoneFormat': '87 12 34 56'
+ },
+ 'ga': {'code': 'ga', 'name': 'Gabon', 'dialCode': 241, 'phoneFormat': '06 03 12 34'},
+ 'gm': {'code': 'gm', 'name': 'Gambia', 'dialCode': 220, 'phoneFormat': '301 2345'},
+ 'ge': {'code': 'ge', 'name': 'Georgia (საქართველო)', 'dialCode': 995, 'phoneFormat': '555 12 34 56'},
+ 'de': {'code': 'de', 'name': 'Germany (Deutschland)', 'dialCode': 49, 'phoneFormat': '01512 3456789'},
+ 'gh': {'code': 'gh', 'name': 'Ghana (Gaana)', 'dialCode': 233, 'phoneFormat': '023 123 4567'},
+ 'gi': {'code': 'gi', 'name': 'Gibraltar', 'dialCode': 350, 'phoneFormat': '57123456'},
+ 'gr': {'code': 'gr', 'name': 'Greece (Ελλάδα)', 'dialCode': 30, 'phoneFormat': '691 234 5678'},
+ 'gl': {'code': 'gl', 'name': 'Greenland (Kalaallit Nunaat)', 'dialCode': 299, 'phoneFormat': '22 12 34'},
+ 'gd': {'code': 'gd', 'name': 'Grenada', 'dialCode': 1473, 'phoneFormat': '(473) 403-1234'},
+ 'gp': {'code': 'gp', 'name': 'Guadeloupe', 'dialCode': 590, 'phoneFormat': '0690 30-1234'},
+ 'gu': {'code': 'gu', 'name': 'Guam', 'dialCode': 1671, 'phoneFormat': '(671) 300-1234'},
+ 'gt': {'code': 'gt', 'name': 'Guatemala', 'dialCode': 502, 'phoneFormat': '5123 4567'},
+ 'gg': {'code': 'gg', 'name': 'Guernsey', 'dialCode': 44, 'phoneFormat': '07781 123456'},
+ 'gn': {'code': 'gn', 'name': 'Guinea (Guinée)', 'dialCode': 224, 'phoneFormat': '601 12 34 56'},
+ 'gw': {'code': 'gw', 'name': 'Guinea-Bissau (Guiné Bissau)', 'dialCode': 245, 'phoneFormat': '955 012 345'},
+ 'gy': {'code': 'gy', 'name': 'Guyana', 'dialCode': 592, 'phoneFormat': '609 1234'},
+ 'ht': {'code': 'ht', 'name': 'Haiti', 'dialCode': 509, 'phoneFormat': '34 10 1234'},
+ 'hn': {'code': 'hn', 'name': 'Honduras', 'dialCode': 504, 'phoneFormat': '9123-4567'},
+ 'hk': {'code': 'hk', 'name': 'Hong Kong (香港)', 'dialCode': 852, 'phoneFormat': '5123 4567'},
+ 'hu': {'code': 'hu', 'name': 'Hungary (Magyarország)', 'dialCode': 36, 'phoneFormat': '(20) 123 4567'},
+ 'is': {'code': 'is', 'name': 'Iceland (Ísland)', 'dialCode': 354, 'phoneFormat': '611 1234'},
+ 'in': {'code': 'in', 'name': 'India (भारत)', 'dialCode': 91, 'phoneFormat': '099876 54321'},
+ 'id': {'code': 'id', 'name': 'Indonesia', 'dialCode': 62, 'phoneFormat': '0812-345-678'},
+ 'ir': {'code': 'ir', 'name': 'Iran (ایران)', 'dialCode': 98, 'phoneFormat': '0912 345 6789'},
+ 'iq': {'code': 'iq', 'name': 'Iraq (العراق)', 'dialCode': 964, 'phoneFormat': '0791 234 5678'},
+ 'ie': {'code': 'ie', 'name': 'Ireland', 'dialCode': 353, 'phoneFormat': '085 012 3456'},
+ 'im': {'code': 'im', 'name': 'Isle of Man', 'dialCode': 44, 'phoneFormat': '07924 123456'},
+ 'il': {'code': 'il', 'name': 'Israel (ישראל)', 'dialCode': 972, 'phoneFormat': '050-123-4567'},
+ 'it': {'code': 'it', 'name': 'Italy (Italia)', 'dialCode': 39, 'phoneFormat': '312 345 6789'},
+ 'jm': {'code': 'jm', 'name': 'Jamaica', 'dialCode': 1876, 'phoneFormat': '(876) 210-1234'},
+ 'jp': {'code': 'jp', 'name': 'Japan (日本)', 'dialCode': 81, 'phoneFormat': '090-1234-5678'},
+ 'je': {'code': 'je', 'name': 'Jersey', 'dialCode': 44, 'phoneFormat': '07797 123456'},
+ 'jo': {'code': 'jo', 'name': 'Jordan (الأردن)', 'dialCode': 962, 'phoneFormat': '07 9012 3456'},
+ 'kz': {'code': 'kz', 'name': 'Kazakhstan (Казахстан)', 'dialCode': 7, 'phoneFormat': '8 (771) 000 9998'},
+ 'ke': {'code': 'ke', 'name': 'Kenya', 'dialCode': 254, 'phoneFormat': '0712 123456'},
+ 'ki': {'code': 'ki', 'name': 'Kiribati', 'dialCode': 686, 'phoneFormat': '72012345'},
+ 'xk': {'code': 'xk', 'name': 'Kosovo', 'dialCode': 383, 'phoneFormat': ''},
+ 'kw': {'code': 'kw', 'name': 'Kuwait (الكويت)', 'dialCode': 965, 'phoneFormat': '500 12345'},
+ 'kg': {'code': 'kg', 'name': 'Kyrgyzstan (Кыргызстан)', 'dialCode': 996, 'phoneFormat': '0700 123 456'},
+ 'la': {'code': 'la', 'name': 'Laos (ລາວ)', 'dialCode': 856, 'phoneFormat': '020 23 123 456'},
+ 'lv': {'code': 'lv', 'name': 'Latvia (Latvija)', 'dialCode': 371, 'phoneFormat': '21 234 567'},
+ 'lb': {'code': 'lb', 'name': 'Lebanon (لبنان)', 'dialCode': 961, 'phoneFormat': '71 123 456'},
+ 'ls': {'code': 'ls', 'name': 'Lesotho', 'dialCode': 266, 'phoneFormat': '5012 3456'},
+ 'lr': {'code': 'lr', 'name': 'Liberia', 'dialCode': 231, 'phoneFormat': '077 012 3456'},
+ 'ly': {'code': 'ly', 'name': 'Libya (ليبيا)', 'dialCode': 218, 'phoneFormat': '091-2345678'},
+ 'li': {'code': 'li', 'name': 'Liechtenstein', 'dialCode': 423, 'phoneFormat': '660 234 567'},
+ 'lt': {'code': 'lt', 'name': 'Lithuania (Lietuva)', 'dialCode': 370, 'phoneFormat': '(8-612) 34567'},
+ 'lu': {'code': 'lu', 'name': 'Luxembourg', 'dialCode': 352, 'phoneFormat': '628 123 456'},
+ 'mo': {'code': 'mo', 'name': 'Macau (澳門)', 'dialCode': 853, 'phoneFormat': '6612 3456'},
+ 'mk': {'code': 'mk', 'name': 'Macedonia (FYROM) (Македонија)', 'dialCode': 389, 'phoneFormat': '072 345 678'},
+ 'mg': {'code': 'mg', 'name': 'Madagascar (Madagasikara)', 'dialCode': 261, 'phoneFormat': '032 12 345 67'},
+ 'mw': {'code': 'mw', 'name': 'Malawi', 'dialCode': 265, 'phoneFormat': '0991 23 45 67'},
+ 'my': {'code': 'my', 'name': 'Malaysia', 'dialCode': 60, 'phoneFormat': '012-345 6789'},
+ 'mv': {'code': 'mv', 'name': 'Maldives', 'dialCode': 960, 'phoneFormat': '771-2345'},
+ 'ml': {'code': 'ml', 'name': 'Mali', 'dialCode': 223, 'phoneFormat': '65 01 23 45'},
+ 'mt': {'code': 'mt', 'name': 'Malta', 'dialCode': 356, 'phoneFormat': '9696 1234'},
+ 'mh': {'code': 'mh', 'name': 'Marshall Islands', 'dialCode': 692, 'phoneFormat': '235-1234'},
+ 'mq': {'code': 'mq', 'name': 'Martinique', 'dialCode': 596, 'phoneFormat': '0696 20 12 34'},
+ 'mr': {'code': 'mr', 'name': 'Mauritania (موريتانيا)', 'dialCode': 222, 'phoneFormat': '22 12 34 56'},
+ 'mu': {'code': 'mu', 'name': 'Mauritius (Moris)', 'dialCode': 230, 'phoneFormat': '5251 2345'},
+ 'yt': {'code': 'yt', 'name': 'Mayotte', 'dialCode': 262, 'phoneFormat': '0639 12 34 56'},
+ 'mx': {'code': 'mx', 'name': 'Mexico (México)', 'dialCode': 52, 'phoneFormat': '044 222 123 4567'},
+ 'fm': {'code': 'fm', 'name': 'Micronesia', 'dialCode': 691, 'phoneFormat': '350 1234'},
+ 'md': {'code': 'md', 'name': 'Moldova (Republica Moldova)', 'dialCode': 373, 'phoneFormat': '0621 12 345'},
+ 'mc': {'code': 'mc', 'name': 'Monaco', 'dialCode': 377, 'phoneFormat': '06 12 34 56 78'},
+ 'mn': {'code': 'mn', 'name': 'Mongolia (Монгол)', 'dialCode': 976, 'phoneFormat': '8812 3456'},
+ 'me': {'code': 'me', 'name': 'Montenegro (Crna Gora)', 'dialCode': 382, 'phoneFormat': '067 622 901'},
+ 'ms': {'code': 'ms', 'name': 'Montserrat', 'dialCode': 1664, 'phoneFormat': '(664) 492-3456'},
+ 'ma': {'code': 'ma', 'name': 'Morocco (المغرب)', 'dialCode': 212, 'phoneFormat': '0650-123456'},
+ 'mz': {'code': 'mz', 'name': 'Mozambique (Moçambique)', 'dialCode': 258, 'phoneFormat': '82 123 4567'},
+ 'mm': {'code': 'mm', 'name': 'Myanmar (Burma) (မြန်မာ)', 'dialCode': 95, 'phoneFormat': '09 212 3456'},
+ 'na': {'code': 'na', 'name': 'Namibia (Namibië)', 'dialCode': 264, 'phoneFormat': '081 123 4567'},
+ 'nr': {'code': 'nr', 'name': 'Nauru', 'dialCode': 674, 'phoneFormat': '555 1234'},
+ 'np': {'code': 'np', 'name': 'Nepal (नेपाल)', 'dialCode': 977, 'phoneFormat': '984-1234567'},
+ 'nl': {'code': 'nl', 'name': 'Netherlands (Nederland)', 'dialCode': 31, 'phoneFormat': '06 12345678'},
+ 'nc': {'code': 'nc', 'name': 'New Caledonia (Nouvelle-Calédonie)', 'dialCode': 687, 'phoneFormat': '75.12.34'},
+ 'nz': {'code': 'nz', 'name': 'New Zealand', 'dialCode': 64, 'phoneFormat': '021 123 4567'},
+ 'ni': {'code': 'ni', 'name': 'Nicaragua', 'dialCode': 505, 'phoneFormat': '8123 4567'},
+ 'ne': {'code': 'ne', 'name': 'Niger (Nijar)', 'dialCode': 227, 'phoneFormat': '93 12 34 56'},
+ 'ng': {'code': 'ng', 'name': 'Nigeria', 'dialCode': 234, 'phoneFormat': '0802 123 4567'},
+ 'nu': {'code': 'nu', 'name': 'Niue', 'dialCode': 683, 'phoneFormat': '1234'},
+ 'nf': {'code': 'nf', 'name': 'Norfolk Island', 'dialCode': 672, 'phoneFormat': '3 81234'},
+ 'kp': {'code': 'kp', 'name': 'North Korea (조선 민주주의 인민 공화국)', 'dialCode': 850, 'phoneFormat': '0192 123 4567'},
+ 'mp': {'code': 'mp', 'name': 'Northern Mariana Islands', 'dialCode': 1670, 'phoneFormat': '(670) 234-5678'},
+ 'no': {'code': 'no', 'name': 'Norway (Norge)', 'dialCode': 47, 'phoneFormat': '406 12 345'},
+ 'om': {'code': 'om', 'name': 'Oman (عُمان)', 'dialCode': 968, 'phoneFormat': '9212 3456'},
+ 'pk': {'code': 'pk', 'name': 'Pakistan (پاکستان)', 'dialCode': 92, 'phoneFormat': '0301 2345678'},
+ 'pw': {'code': 'pw', 'name': 'Palau', 'dialCode': 680, 'phoneFormat': '620 1234'},
+ 'ps': {'code': 'ps', 'name': 'Palestine (فلسطين)', 'dialCode': 970, 'phoneFormat': '0599 123 456'},
+ 'pa': {'code': 'pa', 'name': 'Panama (Panamá)', 'dialCode': 507, 'phoneFormat': '6001-2345'},
+ 'pg': {'code': 'pg', 'name': 'Papua New Guinea', 'dialCode': 675, 'phoneFormat': '681 2345'},
+ 'py': {'code': 'py', 'name': 'Paraguay', 'dialCode': 595, 'phoneFormat': '0961 456789'},
+ 'pe': {'code': 'pe', 'name': 'Peru (Perú)', 'dialCode': 51, 'phoneFormat': '912 345 678'},
+ 'ph': {'code': 'ph', 'name': 'Philippines', 'dialCode': 63, 'phoneFormat': '0905 123 4567'},
+ 'pl': {'code': 'pl', 'name': 'Poland (Polska)', 'dialCode': 48, 'phoneFormat': '512 345 678'},
+ 'pt': {'code': 'pt', 'name': 'Portugal', 'dialCode': 351, 'phoneFormat': '912 345 678'},
+ 'pr': {'code': 'pr', 'name': 'Puerto Rico', 'dialCode': 1, 'phoneFormat': '(787) 234-5678'},
+ 'qa': {'code': 'qa', 'name': 'Qatar (قطر)', 'dialCode': 974, 'phoneFormat': '3312 3456'},
+ 're': {'code': 're', 'name': 'Réunion (La Réunion)', 'dialCode': 262, 'phoneFormat': '0692 12 34 56'},
+ 'ro': {'code': 'ro', 'name': 'Romania (România)', 'dialCode': 40, 'phoneFormat': '0712 345 678'},
+ 'ru': {'code': 'ru', 'name': 'Russia (Россия)', 'dialCode': 7, 'phoneFormat': '8 (912) 345-67-89'},
+ 'rw': {'code': 'rw', 'name': 'Rwanda', 'dialCode': 250, 'phoneFormat': '0720 123 456'},
+ 'bl': {
+ 'code': 'bl',
+ 'name': 'Saint Barthélemy (Saint-Barthélemy)',
+ 'dialCode': 590,
+ 'phoneFormat': '0690 30-1234'
+ },
+ 'sh': {'code': 'sh', 'name': 'Saint Helena', 'dialCode': 290, 'phoneFormat': '51234'},
+ 'kn': {'code': 'kn', 'name': 'Saint Kitts and Nevis', 'dialCode': 1869, 'phoneFormat': '(869) 765-2917'},
+ 'lc': {'code': 'lc', 'name': 'Saint Lucia', 'dialCode': 1758, 'phoneFormat': '(758) 284-5678'},
+ 'mf': {
+ 'code': 'mf',
+ 'name': 'Saint Martin (Saint-Martin (partie française))',
+ 'dialCode': 590,
+ 'phoneFormat': '0690 30-1234'
+ },
+ 'pm': {
+ 'code': 'pm',
+ 'name': 'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',
+ 'dialCode': 508,
+ 'phoneFormat': '055 12 34'
+ },
+ 'vc': {
+ 'code': 'vc',
+ 'name': 'Saint Vincent and the Grenadines',
+ 'dialCode': 1784,
+ 'phoneFormat': '(784) 430-1234'
+ },
+ 'ws': {'code': 'ws', 'name': 'Samoa', 'dialCode': 685, 'phoneFormat': '601234'},
+ 'sm': {'code': 'sm', 'name': 'San Marino', 'dialCode': 378, 'phoneFormat': '66 66 12 12'},
+ 'st': {
+ 'code': 'st',
+ 'name': 'São Tomé and Príncipe (São Tomé e Príncipe)',
+ 'dialCode': 239,
+ 'phoneFormat': '981 2345'
+ },
+ 'sa': {
+ 'code': 'sa',
+ 'name': 'Saudi Arabia (المملكة العربية السعودية)',
+ 'dialCode': 966,
+ 'phoneFormat': '051 234 5678'
+ },
+ 'sn': {'code': 'sn', 'name': 'Senegal (Sénégal)', 'dialCode': 221, 'phoneFormat': '70 123 45 67'},
+ 'rs': {'code': 'rs', 'name': 'Serbia (Србија)', 'dialCode': 381, 'phoneFormat': '060 1234567'},
+ 'sc': {'code': 'sc', 'name': 'Seychelles', 'dialCode': 248, 'phoneFormat': '2 510 123'},
+ 'sl': {'code': 'sl', 'name': 'Sierra Leone', 'dialCode': 232, 'phoneFormat': '(025) 123456'},
+ 'sg': {'code': 'sg', 'name': 'Singapore', 'dialCode': 65, 'phoneFormat': '8123 4567'},
+ 'sx': {'code': 'sx', 'name': 'Sint Maarten', 'dialCode': 1721, 'phoneFormat': '(721) 520-5678'},
+ 'sk': {'code': 'sk', 'name': 'Slovakia (Slovensko)', 'dialCode': 421, 'phoneFormat': '0912 123 456'},
+ 'si': {'code': 'si', 'name': 'Slovenia (Slovenija)', 'dialCode': 386, 'phoneFormat': '031 234 567'},
+ 'sb': {'code': 'sb', 'name': 'Solomon Islands', 'dialCode': 677, 'phoneFormat': '74 21234'},
+ 'so': {'code': 'so', 'name': 'Somalia (Soomaaliya)', 'dialCode': 252, 'phoneFormat': '7 1123456'},
+ 'za': {'code': 'za', 'name': 'South Africa', 'dialCode': 27, 'phoneFormat': '071 123 4567'},
+ 'kr': {'code': 'kr', 'name': 'South Korea (대한민국)', 'dialCode': 82, 'phoneFormat': '010-0000-0000'},
+ 'ss': {'code': 'ss', 'name': 'South Sudan (جنوب السودان)', 'dialCode': 211, 'phoneFormat': '0977 123 456'},
+ 'es': {'code': 'es', 'name': 'Spain (España)', 'dialCode': 34, 'phoneFormat': '612 34 56 78'},
+ 'lk': {'code': 'lk', 'name': 'Sri Lanka (ශ්රී ලංකාව)', 'dialCode': 94, 'phoneFormat': '071 234 5678'},
+ 'sd': {'code': 'sd', 'name': 'Sudan (السودان)', 'dialCode': 249, 'phoneFormat': '091 123 1234'},
+ 'sr': {'code': 'sr', 'name': 'Suriname', 'dialCode': 597, 'phoneFormat': '741-2345'},
+ 'sj': {'code': 'sj', 'name': 'Svalbard and Jan Mayen', 'dialCode': 47, 'phoneFormat': '412 34 567'},
+ 'sz': {'code': 'sz', 'name': 'Swaziland', 'dialCode': 268, 'phoneFormat': '7612 3456'},
+ 'se': {'code': 'se', 'name': 'Sweden (Sverige)', 'dialCode': 46, 'phoneFormat': '070-123 45 67'},
+ 'ch': {'code': 'ch', 'name': 'Switzerland (Schweiz)', 'dialCode': 41, 'phoneFormat': '078 123 45 67'},
+ 'sy': {'code': 'sy', 'name': 'Syria (سوريا)', 'dialCode': 963, 'phoneFormat': '0944 567 890'},
+ 'tw': {'code': 'tw', 'name': 'Taiwan (台灣)', 'dialCode': 886, 'phoneFormat': '0912 345 678'},
+ 'tj': {'code': 'tj', 'name': 'Tajikistan', 'dialCode': 992, 'phoneFormat': '(8) 917 12 3456'},
+ 'tz': {'code': 'tz', 'name': 'Tanzania', 'dialCode': 255, 'phoneFormat': '0621 234 567'},
+ 'th': {'code': 'th', 'name': 'Thailand (ไทย)', 'dialCode': 66, 'phoneFormat': '081 234 5678'},
+ 'tl': {'code': 'tl', 'name': 'Timor-Leste', 'dialCode': 670, 'phoneFormat': '7721 2345'},
+ 'tg': {'code': 'tg', 'name': 'Togo', 'dialCode': 228, 'phoneFormat': '90 11 23 45'},
+ 'tk': {'code': 'tk', 'name': 'Tokelau', 'dialCode': 690, 'phoneFormat': '7290'},
+ 'to': {'code': 'to', 'name': 'Tonga', 'dialCode': 676, 'phoneFormat': '771 5123'},
+ 'tt': {'code': 'tt', 'name': 'Trinidad and Tobago', 'dialCode': 1868, 'phoneFormat': '(868) 291-1234'},
+ 'tn': {'code': 'tn', 'name': 'Tunisia (تونس)', 'dialCode': 216, 'phoneFormat': '20 123 456'},
+ 'tr': {'code': 'tr', 'name': 'Turkey (Türkiye)', 'dialCode': 90, 'phoneFormat': '0501 234 56 78'},
+ 'tm': {'code': 'tm', 'name': 'Turkmenistan', 'dialCode': 993, 'phoneFormat': '8 66 123456'},
+ 'tc': {'code': 'tc', 'name': 'Turks and Caicos Islands', 'dialCode': 1649, 'phoneFormat': '(649) 231-1234'},
+ 'tv': {'code': 'tv', 'name': 'Tuvalu', 'dialCode': 688, 'phoneFormat': '901234'},
+ 'us': {'code': 'us', 'name': 'United States', 'dialCode': 1, 'phoneFormat': '(201) 555-0123'},
+ 'gb': {'code': 'gb', 'name': 'United Kingdom', 'dialCode': 44, 'phoneFormat': '07400 123456'},
+ 'vi': {'code': 'vi', 'name': 'U.S. Virgin Islands', 'dialCode': 1340, 'phoneFormat': '(340) 642-1234'},
+ 'ug': {'code': 'ug', 'name': 'Uganda', 'dialCode': 256, 'phoneFormat': '0712 345678'},
+ 'ua': {'code': 'ua', 'name': 'Ukraine (Україна)', 'dialCode': 380, 'phoneFormat': '039 123 4567'},
+ 'ae': {
+ 'code': 'ae',
+ 'name': 'United Arab Emirates (الإمارات العربية المتحدة)',
+ 'dialCode': 971,
+ 'phoneFormat': '050 123 4567'
+ },
+ 'uy': {'code': 'uy', 'name': 'Uruguay', 'dialCode': 598, 'phoneFormat': '094 231 234'},
+ 'uz': {'code': 'uz', 'name': 'Uzbekistan (Oʻzbekiston)', 'dialCode': 998, 'phoneFormat': '8 91 234 56 78'},
+ 'vu': {'code': 'vu', 'name': 'Vanuatu', 'dialCode': 678, 'phoneFormat': '591 2345'},
+ 'va': {'code': 'va', 'name': 'Vatican City (Città del Vaticano)', 'dialCode': 39, 'phoneFormat': '312 345 6789'},
+ 've': {'code': 've', 'name': 'Venezuela', 'dialCode': 58, 'phoneFormat': '0412-1234567'},
+ 'vn': {'code': 'vn', 'name': 'Vietnam (Việt Nam)', 'dialCode': 84, 'phoneFormat': '091 234 56 78'},
+ 'wf': {'code': 'wf', 'name': 'Wallis and Futuna', 'dialCode': 681, 'phoneFormat': '50 12 34'},
+ 'eh': {
+ 'code': 'eh',
+ 'name': 'Western Sahara (الصحراء الغربية)',
+ 'dialCode': 212,
+ 'phoneFormat': '0650-123456'
+ },
+ 'ye': {'code': 'ye', 'name': 'Yemen (اليمن)', 'dialCode': 967, 'phoneFormat': '0712 345 678'},
+ 'zm': {'code': 'zm', 'name': 'Zambia', 'dialCode': 260, 'phoneFormat': '095 5123456'},
+ 'zw': {'code': 'zw', 'name': 'Zimbabwe', 'dialCode': 263, 'phoneFormat': '071 123 4567'},
+ 'ax': {'code': 'ax', 'name': 'Åland Islands', 'dialCode': 358, 'phoneFormat': '041 2345678'}
+}
+
+export default countries
diff --git a/src/components/country-list/flags.png b/src/components/country-list/flags.png
new file mode 100644
index 0000000..0ffa81a
--- /dev/null
+++ b/src/components/country-list/flags.png
Binary files differ
diff --git a/src/components/country-list/flags@2x.png b/src/components/country-list/flags@2x.png
new file mode 100644
index 0000000..3624e63
--- /dev/null
+++ b/src/components/country-list/flags@2x.png
Binary files differ
diff --git a/src/components/country-list/index.vue b/src/components/country-list/index.vue
new file mode 100644
index 0000000..88288b5
--- /dev/null
+++ b/src/components/country-list/index.vue
@@ -0,0 +1,131 @@
+<template>
+ <div class="intl-tel-input allow-dropdown">
+ <div class="flag-container">
+ <div
+ class="selected-flag"
+ :title="currentData.name + ': +' + currentData.dialCode"
+ @click="hideSubMenu = !hideSubMenu"
+ >
+ <div :class="'iti-flag ' + currentData.code"></div>
+ <div class="iti-arrow"></div>
+ </div>
+ <ul class="country-list" v-show="!hideSubMenu">
+ <li
+ v-for="item in frontCountriesArray"
+ :key="item.id"
+ :class="'country ' + (item.code == currentCode ? 'highlight' : '')"
+ @click="currentCode = item.code; hideSubMenu = true; setCountry(item);"
+ >
+ <div class="flag-box">
+ <div :class="'iti-flag ' + item.code"></div>
+ </div>
+ <span class="country-name">{{ item.name }}</span>
+ <span class="dial-code">+{{ item.dialCode }}</span>
+ </li>
+ <li class="divider"></li>
+ <li
+ v-for="item in countriesArray"
+ :key="item.id"
+ :class="'country ' + (item.code == currentCode ? 'highlight' : '')"
+ @click="currentCode = item.code; hideSubMenu = true; setCountry(item);"
+ >
+ <div class="flag-box">
+ <div :class="'iti-flag ' + item.code"></div>
+ </div>
+ <span class="country-name">{{ item.name }}</span>
+ <span class="dial-code">+{{ item.dialCode }}</span>
+ </li>
+ </ul>
+ </div>
+ </div>
+</template>
+
+
+<script>
+ import countries from './countryList'
+
+ export default {
+ props: {
+ toFront: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ countryCode: {
+ type: String,
+ default: Object.keys(countries)[0],
+ validator(code) {
+ var clearCode = String(code).toLowerCase()
+ return !!countries[clearCode]
+ }
+ }
+ },
+
+ data() {
+ return {
+ currentCode: this.countryCode,
+ hideSubMenu: true
+ }
+ },
+
+ computed: {
+ currentData() {
+ return countries[this.currentCode]
+ },
+ frontCountriesArray() {
+ const toFrontCodes = {}
+ this.toFront.forEach((code) => {
+ const stringCode = String(code)
+ const needObj = countries[stringCode]
+
+ if(needObj) {
+ toFrontCodes[stringCode] = needObj
+ }
+ })
+ return toFrontCodes
+ },
+ countriesArray() {
+ const countryCopie = { ...countries }
+ this.toFront.forEach((code) => {
+ delete countryCopie[code]
+ })
+ return countryCopie
+ }
+ },
+
+ watch: {
+ countryCode(newCode) {
+ this.setCountry(countries[newCode])
+ }
+ },
+
+ methods: {
+ setCountry(item) {
+ this.currentCode = item.code
+ this.toFront.push(String(item.code))
+ this.$emit('excountry', item)
+ }
+ },
+
+ mounted() {
+ this.$emit('excountry', countries[this.countryCode])
+ }
+ }
+</script>
+
+
+<style lang="scss" scoped>
+ @import "intl.css";
+
+ .intl-tel-input {
+ height: 40px;
+ color: #666;
+ font-size: 14px;
+ .country-list {
+ width: 335px;
+ height: 400px;
+ margin-top: 2px;
+ }
+ }
+</style>
diff --git a/src/components/country-list/intl.css b/src/components/country-list/intl.css
new file mode 100644
index 0000000..93aada1
--- /dev/null
+++ b/src/components/country-list/intl.css
@@ -0,0 +1,1598 @@
+.intl-tel-input {
+ position: relative;
+ display: inline-block;
+}
+
+.intl-tel-input * {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+.intl-tel-input .hide {
+ display: none;
+}
+
+.intl-tel-input .v-hide {
+ visibility: hidden;
+}
+
+.intl-tel-input input, .intl-tel-input input[type=text], .intl-tel-input input[type=tel] {
+ position: relative;
+ z-index: 0;
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ padding-right: 36px;
+ margin-right: 0;
+}
+
+.intl-tel-input .flag-container {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ padding: 1px;
+}
+
+.intl-tel-input .selected-flag {
+ z-index: 1;
+ position: relative;
+ width: 36px;
+ height: 100%;
+ padding: 0 0 0 2px;
+}
+
+.intl-tel-input .selected-flag .iti-flag {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+}
+
+.intl-tel-input .selected-flag .iti-arrow {
+ position: absolute;
+ top: 50%;
+ margin-top: -2px;
+ right: 10px;
+ width: 0;
+ height: 0;
+ border-left: 3px solid transparent;
+ border-right: 3px solid transparent;
+ border-top: 4px solid #555;
+}
+
+.intl-tel-input .selected-flag .iti-arrow.up {
+ border-top: none;
+ border-bottom: 4px solid #555;
+}
+
+.intl-tel-input .country-list {
+ position: absolute;
+ z-index: 2;
+ list-style: none;
+ text-align: left;
+ padding: 0;
+ margin: 0 0 0 -1px;
+ box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2);
+ background-color: white;
+ border: 1px solid #CCC;
+ white-space: nowrap;
+ max-height: 500px;
+ overflow-y: scroll;
+}
+
+.intl-tel-input .country-list.dropup {
+ bottom: 100%;
+ margin-bottom: -1px;
+}
+
+.intl-tel-input .country-list .flag-box {
+ display: inline-block;
+ width: 20px;
+}
+
+@media (max-width: 500px) {
+ .intl-tel-input .country-list {
+ white-space: normal;
+ }
+}
+
+.intl-tel-input .country-list .divider {
+ padding-bottom: 5px;
+ margin-bottom: 5px;
+ border-bottom: 1px solid #CCC;
+}
+
+.intl-tel-input .country-list .country {
+ padding: 5px 10px;
+}
+
+.intl-tel-input .country-list .country .dial-code {
+ color: #999;
+}
+
+.intl-tel-input .country-list .country.highlight {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.intl-tel-input .country-list .flag-box, .intl-tel-input .country-list .country-name, .intl-tel-input .country-list .dial-code {
+ vertical-align: middle;
+}
+
+.intl-tel-input .country-list .flag-box, .intl-tel-input .country-list .country-name {
+ margin-right: 6px;
+}
+
+.intl-tel-input.allow-dropdown input, .intl-tel-input.allow-dropdown input[type=text], .intl-tel-input.allow-dropdown input[type=tel], .intl-tel-input.separate-dial-code input, .intl-tel-input.separate-dial-code input[type=text], .intl-tel-input.separate-dial-code input[type=tel] {
+ padding-right: 6px;
+ padding-left: 52px;
+ margin-left: 0;
+}
+
+.intl-tel-input.allow-dropdown .flag-container, .intl-tel-input.separate-dial-code .flag-container {
+ right: auto;
+ left: 0;
+}
+
+.intl-tel-input.allow-dropdown .selected-flag, .intl-tel-input.separate-dial-code .selected-flag {
+ width: 45px;
+}
+
+.intl-tel-input.allow-dropdown .flag-container:hover {
+ cursor: pointer;
+}
+
+.intl-tel-input.allow-dropdown .flag-container:hover .selected-flag {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.intl-tel-input.allow-dropdown input[disabled] + .flag-container:hover, .intl-tel-input.allow-dropdown input[readonly] + .flag-container:hover {
+ cursor: default;
+}
+
+.intl-tel-input.allow-dropdown input[disabled] + .flag-container:hover .selected-flag, .intl-tel-input.allow-dropdown input[readonly] + .flag-container:hover .selected-flag {
+ background-color: transparent;
+}
+
+.intl-tel-input.separate-dial-code .selected-flag {
+ background-color: rgba(0, 0, 0, 0.05);
+ display: table;
+}
+
+.intl-tel-input.separate-dial-code .selected-dial-code {
+ display: table-cell;
+ vertical-align: middle;
+ padding-left: 28px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-2 input, .intl-tel-input.separate-dial-code.iti-sdc-2 input[type=text], .intl-tel-input.separate-dial-code.iti-sdc-2 input[type=tel] {
+ padding-left: 66px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-2 .selected-flag {
+ width: 60px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-2 input, .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-2 input[type=text], .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-2 input[type=tel] {
+ padding-left: 76px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-2 .selected-flag {
+ width: 70px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-3 input, .intl-tel-input.separate-dial-code.iti-sdc-3 input[type=text], .intl-tel-input.separate-dial-code.iti-sdc-3 input[type=tel] {
+ padding-left: 74px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-3 .selected-flag {
+ width: 68px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-3 input, .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-3 input[type=text], .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-3 input[type=tel] {
+ padding-left: 84px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-3 .selected-flag {
+ width: 78px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-4 input, .intl-tel-input.separate-dial-code.iti-sdc-4 input[type=text], .intl-tel-input.separate-dial-code.iti-sdc-4 input[type=tel] {
+ padding-left: 82px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-4 .selected-flag {
+ width: 76px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-4 input, .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-4 input[type=text], .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-4 input[type=tel] {
+ padding-left: 92px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-4 .selected-flag {
+ width: 86px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-5 input, .intl-tel-input.separate-dial-code.iti-sdc-5 input[type=text], .intl-tel-input.separate-dial-code.iti-sdc-5 input[type=tel] {
+ padding-left: 90px;
+}
+
+.intl-tel-input.separate-dial-code.iti-sdc-5 .selected-flag {
+ width: 84px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-5 input, .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-5 input[type=text], .intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-5 input[type=tel] {
+ padding-left: 100px;
+}
+
+.intl-tel-input.separate-dial-code.allow-dropdown.iti-sdc-5 .selected-flag {
+ width: 94px;
+}
+
+.intl-tel-input.iti-container {
+ position: absolute;
+ top: -1000px;
+ left: -1000px;
+ z-index: 1060;
+ padding: 1px;
+}
+
+.intl-tel-input.iti-container:hover {
+ cursor: pointer;
+}
+
+.iti-mobile .intl-tel-input.iti-container {
+ top: 30px;
+ bottom: 30px;
+ left: 30px;
+ right: 30px;
+ position: fixed;
+}
+
+.iti-mobile .intl-tel-input .country-list {
+ max-height: 100%;
+ width: 100%;
+}
+
+.iti-mobile .intl-tel-input .country-list .country {
+ padding: 10px 10px;
+ line-height: 1.5em;
+}
+
+.iti-flag {
+ width: 20px;
+}
+
+.iti-flag.be {
+ width: 18px;
+}
+
+.iti-flag.ch {
+ width: 15px;
+}
+
+.iti-flag.mc {
+ width: 19px;
+}
+
+.iti-flag.ne {
+ width: 18px;
+}
+
+.iti-flag.np {
+ width: 13px;
+}
+
+.iti-flag.va {
+ width: 15px;
+}
+
+@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
+ .iti-flag {
+ background-size: 5630px 15px;
+ }
+}
+
+.iti-flag.ac {
+ height: 10px;
+ background-position: 0px 0px;
+}
+
+.iti-flag.ad {
+ height: 14px;
+ background-position: -22px 0px;
+}
+
+.iti-flag.ae {
+ height: 10px;
+ background-position: -44px 0px;
+}
+
+.iti-flag.af {
+ height: 14px;
+ background-position: -66px 0px;
+}
+
+.iti-flag.ag {
+ height: 14px;
+ background-position: -88px 0px;
+}
+
+.iti-flag.ai {
+ height: 10px;
+ background-position: -110px 0px;
+}
+
+.iti-flag.al {
+ height: 15px;
+ background-position: -132px 0px;
+}
+
+.iti-flag.am {
+ height: 10px;
+ background-position: -154px 0px;
+}
+
+.iti-flag.ao {
+ height: 14px;
+ background-position: -176px 0px;
+}
+
+.iti-flag.aq {
+ height: 14px;
+ background-position: -198px 0px;
+}
+
+.iti-flag.ar {
+ height: 13px;
+ background-position: -220px 0px;
+}
+
+.iti-flag.as {
+ height: 10px;
+ background-position: -242px 0px;
+}
+
+.iti-flag.at {
+ height: 14px;
+ background-position: -264px 0px;
+}
+
+.iti-flag.au {
+ height: 10px;
+ background-position: -286px 0px;
+}
+
+.iti-flag.aw {
+ height: 14px;
+ background-position: -308px 0px;
+}
+
+.iti-flag.ax {
+ height: 13px;
+ background-position: -330px 0px;
+}
+
+.iti-flag.az {
+ height: 10px;
+ background-position: -352px 0px;
+}
+
+.iti-flag.ba {
+ height: 10px;
+ background-position: -374px 0px;
+}
+
+.iti-flag.bb {
+ height: 14px;
+ background-position: -396px 0px;
+}
+
+.iti-flag.bd {
+ height: 12px;
+ background-position: -418px 0px;
+}
+
+.iti-flag.be {
+ height: 15px;
+ background-position: -440px 0px;
+}
+
+.iti-flag.bf {
+ height: 14px;
+ background-position: -460px 0px;
+}
+
+.iti-flag.bg {
+ height: 12px;
+ background-position: -482px 0px;
+}
+
+.iti-flag.bh {
+ height: 12px;
+ background-position: -504px 0px;
+}
+
+.iti-flag.bi {
+ height: 12px;
+ background-position: -526px 0px;
+}
+
+.iti-flag.bj {
+ height: 14px;
+ background-position: -548px 0px;
+}
+
+.iti-flag.bl {
+ height: 14px;
+ background-position: -570px 0px;
+}
+
+.iti-flag.bm {
+ height: 10px;
+ background-position: -592px 0px;
+}
+
+.iti-flag.bn {
+ height: 10px;
+ background-position: -614px 0px;
+}
+
+.iti-flag.bo {
+ height: 14px;
+ background-position: -636px 0px;
+}
+
+.iti-flag.bq {
+ height: 14px;
+ background-position: -658px 0px;
+}
+
+.iti-flag.br {
+ height: 14px;
+ background-position: -680px 0px;
+}
+
+.iti-flag.bs {
+ height: 10px;
+ background-position: -702px 0px;
+}
+
+.iti-flag.bt {
+ height: 14px;
+ background-position: -724px 0px;
+}
+
+.iti-flag.bv {
+ height: 15px;
+ background-position: -746px 0px;
+}
+
+.iti-flag.bw {
+ height: 14px;
+ background-position: -768px 0px;
+}
+
+.iti-flag.by {
+ height: 10px;
+ background-position: -790px 0px;
+}
+
+.iti-flag.bz {
+ height: 14px;
+ background-position: -812px 0px;
+}
+
+.iti-flag.ca {
+ height: 10px;
+ background-position: -834px 0px;
+}
+
+.iti-flag.cc {
+ height: 10px;
+ background-position: -856px 0px;
+}
+
+.iti-flag.cd {
+ height: 15px;
+ background-position: -878px 0px;
+}
+
+.iti-flag.cf {
+ height: 14px;
+ background-position: -900px 0px;
+}
+
+.iti-flag.cg {
+ height: 14px;
+ background-position: -922px 0px;
+}
+
+.iti-flag.ch {
+ height: 15px;
+ background-position: -944px 0px;
+}
+
+.iti-flag.ci {
+ height: 14px;
+ background-position: -961px 0px;
+}
+
+.iti-flag.ck {
+ height: 10px;
+ background-position: -983px 0px;
+}
+
+.iti-flag.cl {
+ height: 14px;
+ background-position: -1005px 0px;
+}
+
+.iti-flag.cm {
+ height: 14px;
+ background-position: -1027px 0px;
+}
+
+.iti-flag.cn {
+ height: 14px;
+ background-position: -1049px 0px;
+}
+
+.iti-flag.co {
+ height: 14px;
+ background-position: -1071px 0px;
+}
+
+.iti-flag.cp {
+ height: 14px;
+ background-position: -1093px 0px;
+}
+
+.iti-flag.cr {
+ height: 12px;
+ background-position: -1115px 0px;
+}
+
+.iti-flag.cu {
+ height: 10px;
+ background-position: -1137px 0px;
+}
+
+.iti-flag.cv {
+ height: 12px;
+ background-position: -1159px 0px;
+}
+
+.iti-flag.cw {
+ height: 14px;
+ background-position: -1181px 0px;
+}
+
+.iti-flag.cx {
+ height: 10px;
+ background-position: -1203px 0px;
+}
+
+.iti-flag.cy {
+ height: 13px;
+ background-position: -1225px 0px;
+}
+
+.iti-flag.cz {
+ height: 14px;
+ background-position: -1247px 0px;
+}
+
+.iti-flag.de {
+ height: 12px;
+ background-position: -1269px 0px;
+}
+
+.iti-flag.dg {
+ height: 10px;
+ background-position: -1291px 0px;
+}
+
+.iti-flag.dj {
+ height: 14px;
+ background-position: -1313px 0px;
+}
+
+.iti-flag.dk {
+ height: 15px;
+ background-position: -1335px 0px;
+}
+
+.iti-flag.dm {
+ height: 10px;
+ background-position: -1357px 0px;
+}
+
+.iti-flag.do {
+ height: 13px;
+ background-position: -1379px 0px;
+}
+
+.iti-flag.dz {
+ height: 14px;
+ background-position: -1401px 0px;
+}
+
+.iti-flag.ea {
+ height: 14px;
+ background-position: -1423px 0px;
+}
+
+.iti-flag.ec {
+ height: 14px;
+ background-position: -1445px 0px;
+}
+
+.iti-flag.ee {
+ height: 13px;
+ background-position: -1467px 0px;
+}
+
+.iti-flag.eg {
+ height: 14px;
+ background-position: -1489px 0px;
+}
+
+.iti-flag.eh {
+ height: 10px;
+ background-position: -1511px 0px;
+}
+
+.iti-flag.er {
+ height: 10px;
+ background-position: -1533px 0px;
+}
+
+.iti-flag.es {
+ height: 14px;
+ background-position: -1555px 0px;
+}
+
+.iti-flag.et {
+ height: 10px;
+ background-position: -1577px 0px;
+}
+
+.iti-flag.eu {
+ height: 14px;
+ background-position: -1599px 0px;
+}
+
+.iti-flag.fi {
+ height: 12px;
+ background-position: -1621px 0px;
+}
+
+.iti-flag.fj {
+ height: 10px;
+ background-position: -1643px 0px;
+}
+
+.iti-flag.fk {
+ height: 10px;
+ background-position: -1665px 0px;
+}
+
+.iti-flag.fm {
+ height: 11px;
+ background-position: -1687px 0px;
+}
+
+.iti-flag.fo {
+ height: 15px;
+ background-position: -1709px 0px;
+}
+
+.iti-flag.fr {
+ height: 14px;
+ background-position: -1731px 0px;
+}
+
+.iti-flag.ga {
+ height: 15px;
+ background-position: -1753px 0px;
+}
+
+.iti-flag.gb {
+ height: 10px;
+ background-position: -1775px 0px;
+}
+
+.iti-flag.gd {
+ height: 12px;
+ background-position: -1797px 0px;
+}
+
+.iti-flag.ge {
+ height: 14px;
+ background-position: -1819px 0px;
+}
+
+.iti-flag.gf {
+ height: 14px;
+ background-position: -1841px 0px;
+}
+
+.iti-flag.gg {
+ height: 14px;
+ background-position: -1863px 0px;
+}
+
+.iti-flag.gh {
+ height: 14px;
+ background-position: -1885px 0px;
+}
+
+.iti-flag.gi {
+ height: 10px;
+ background-position: -1907px 0px;
+}
+
+.iti-flag.gl {
+ height: 14px;
+ background-position: -1929px 0px;
+}
+
+.iti-flag.gm {
+ height: 14px;
+ background-position: -1951px 0px;
+}
+
+.iti-flag.gn {
+ height: 14px;
+ background-position: -1973px 0px;
+}
+
+.iti-flag.gp {
+ height: 14px;
+ background-position: -1995px 0px;
+}
+
+.iti-flag.gq {
+ height: 14px;
+ background-position: -2017px 0px;
+}
+
+.iti-flag.gr {
+ height: 14px;
+ background-position: -2039px 0px;
+}
+
+.iti-flag.gs {
+ height: 10px;
+ background-position: -2061px 0px;
+}
+
+.iti-flag.gt {
+ height: 13px;
+ background-position: -2083px 0px;
+}
+
+.iti-flag.gu {
+ height: 11px;
+ background-position: -2105px 0px;
+}
+
+.iti-flag.gw {
+ height: 10px;
+ background-position: -2127px 0px;
+}
+
+.iti-flag.gy {
+ height: 12px;
+ background-position: -2149px 0px;
+}
+
+.iti-flag.hk {
+ height: 14px;
+ background-position: -2171px 0px;
+}
+
+.iti-flag.hm {
+ height: 10px;
+ background-position: -2193px 0px;
+}
+
+.iti-flag.hn {
+ height: 10px;
+ background-position: -2215px 0px;
+}
+
+.iti-flag.hr {
+ height: 10px;
+ background-position: -2237px 0px;
+}
+
+.iti-flag.ht {
+ height: 12px;
+ background-position: -2259px 0px;
+}
+
+.iti-flag.hu {
+ height: 10px;
+ background-position: -2281px 0px;
+}
+
+.iti-flag.ic {
+ height: 14px;
+ background-position: -2303px 0px;
+}
+
+.iti-flag.id {
+ height: 14px;
+ background-position: -2325px 0px;
+}
+
+.iti-flag.ie {
+ height: 10px;
+ background-position: -2347px 0px;
+}
+
+.iti-flag.il {
+ height: 15px;
+ background-position: -2369px 0px;
+}
+
+.iti-flag.im {
+ height: 10px;
+ background-position: -2391px 0px;
+}
+
+.iti-flag.in {
+ height: 14px;
+ background-position: -2413px 0px;
+}
+
+.iti-flag.io {
+ height: 10px;
+ background-position: -2435px 0px;
+}
+
+.iti-flag.iq {
+ height: 14px;
+ background-position: -2457px 0px;
+}
+
+.iti-flag.ir {
+ height: 12px;
+ background-position: -2479px 0px;
+}
+
+.iti-flag.is {
+ height: 15px;
+ background-position: -2501px 0px;
+}
+
+.iti-flag.it {
+ height: 14px;
+ background-position: -2523px 0px;
+}
+
+.iti-flag.je {
+ height: 12px;
+ background-position: -2545px 0px;
+}
+
+.iti-flag.jm {
+ height: 10px;
+ background-position: -2567px 0px;
+}
+
+.iti-flag.jo {
+ height: 10px;
+ background-position: -2589px 0px;
+}
+
+.iti-flag.jp {
+ height: 14px;
+ background-position: -2611px 0px;
+}
+
+.iti-flag.ke {
+ height: 14px;
+ background-position: -2633px 0px;
+}
+
+.iti-flag.kg {
+ height: 12px;
+ background-position: -2655px 0px;
+}
+
+.iti-flag.kh {
+ height: 13px;
+ background-position: -2677px 0px;
+}
+
+.iti-flag.ki {
+ height: 10px;
+ background-position: -2699px 0px;
+}
+
+.iti-flag.km {
+ height: 12px;
+ background-position: -2721px 0px;
+}
+
+.iti-flag.kn {
+ height: 14px;
+ background-position: -2743px 0px;
+}
+
+.iti-flag.kp {
+ height: 10px;
+ background-position: -2765px 0px;
+}
+
+.iti-flag.kr {
+ height: 14px;
+ background-position: -2787px 0px;
+}
+
+.iti-flag.kw {
+ height: 10px;
+ background-position: -2809px 0px;
+}
+
+.iti-flag.ky {
+ height: 10px;
+ background-position: -2831px 0px;
+}
+
+.iti-flag.kz {
+ height: 10px;
+ background-position: -2853px 0px;
+}
+
+.iti-flag.la {
+ height: 14px;
+ background-position: -2875px 0px;
+}
+
+.iti-flag.lb {
+ height: 14px;
+ background-position: -2897px 0px;
+}
+
+.iti-flag.lc {
+ height: 10px;
+ background-position: -2919px 0px;
+}
+
+.iti-flag.li {
+ height: 12px;
+ background-position: -2941px 0px;
+}
+
+.iti-flag.lk {
+ height: 10px;
+ background-position: -2963px 0px;
+}
+
+.iti-flag.lr {
+ height: 11px;
+ background-position: -2985px 0px;
+}
+
+.iti-flag.ls {
+ height: 14px;
+ background-position: -3007px 0px;
+}
+
+.iti-flag.lt {
+ height: 12px;
+ background-position: -3029px 0px;
+}
+
+.iti-flag.lu {
+ height: 12px;
+ background-position: -3051px 0px;
+}
+
+.iti-flag.lv {
+ height: 10px;
+ background-position: -3073px 0px;
+}
+
+.iti-flag.ly {
+ height: 10px;
+ background-position: -3095px 0px;
+}
+
+.iti-flag.ma {
+ height: 14px;
+ background-position: -3117px 0px;
+}
+
+.iti-flag.mc {
+ height: 15px;
+ background-position: -3139px 0px;
+}
+
+.iti-flag.md {
+ height: 10px;
+ background-position: -3160px 0px;
+}
+
+.iti-flag.me {
+ height: 10px;
+ background-position: -3182px 0px;
+}
+
+.iti-flag.mf {
+ height: 14px;
+ background-position: -3204px 0px;
+}
+
+.iti-flag.mg {
+ height: 14px;
+ background-position: -3226px 0px;
+}
+
+.iti-flag.mh {
+ height: 11px;
+ background-position: -3248px 0px;
+}
+
+.iti-flag.mk {
+ height: 10px;
+ background-position: -3270px 0px;
+}
+
+.iti-flag.ml {
+ height: 14px;
+ background-position: -3292px 0px;
+}
+
+.iti-flag.mm {
+ height: 14px;
+ background-position: -3314px 0px;
+}
+
+.iti-flag.mn {
+ height: 10px;
+ background-position: -3336px 0px;
+}
+
+.iti-flag.mo {
+ height: 14px;
+ background-position: -3358px 0px;
+}
+
+.iti-flag.mp {
+ height: 10px;
+ background-position: -3380px 0px;
+}
+
+.iti-flag.mq {
+ height: 14px;
+ background-position: -3402px 0px;
+}
+
+.iti-flag.mr {
+ height: 14px;
+ background-position: -3424px 0px;
+}
+
+.iti-flag.ms {
+ height: 10px;
+ background-position: -3446px 0px;
+}
+
+.iti-flag.mt {
+ height: 14px;
+ background-position: -3468px 0px;
+}
+
+.iti-flag.mu {
+ height: 14px;
+ background-position: -3490px 0px;
+}
+
+.iti-flag.mv {
+ height: 14px;
+ background-position: -3512px 0px;
+}
+
+.iti-flag.mw {
+ height: 14px;
+ background-position: -3534px 0px;
+}
+
+.iti-flag.mx {
+ height: 12px;
+ background-position: -3556px 0px;
+}
+
+.iti-flag.my {
+ height: 10px;
+ background-position: -3578px 0px;
+}
+
+.iti-flag.mz {
+ height: 14px;
+ background-position: -3600px 0px;
+}
+
+.iti-flag.na {
+ height: 14px;
+ background-position: -3622px 0px;
+}
+
+.iti-flag.nc {
+ height: 10px;
+ background-position: -3644px 0px;
+}
+
+.iti-flag.ne {
+ height: 15px;
+ background-position: -3666px 0px;
+}
+
+.iti-flag.nf {
+ height: 10px;
+ background-position: -3686px 0px;
+}
+
+.iti-flag.ng {
+ height: 10px;
+ background-position: -3708px 0px;
+}
+
+.iti-flag.ni {
+ height: 12px;
+ background-position: -3730px 0px;
+}
+
+.iti-flag.nl {
+ height: 14px;
+ background-position: -3752px 0px;
+}
+
+.iti-flag.no {
+ height: 15px;
+ background-position: -3774px 0px;
+}
+
+.iti-flag.np {
+ height: 15px;
+ background-position: -3796px 0px;
+}
+
+.iti-flag.nr {
+ height: 10px;
+ background-position: -3811px 0px;
+}
+
+.iti-flag.nu {
+ height: 10px;
+ background-position: -3833px 0px;
+}
+
+.iti-flag.nz {
+ height: 10px;
+ background-position: -3855px 0px;
+}
+
+.iti-flag.om {
+ height: 10px;
+ background-position: -3877px 0px;
+}
+
+.iti-flag.pa {
+ height: 14px;
+ background-position: -3899px 0px;
+}
+
+.iti-flag.pe {
+ height: 14px;
+ background-position: -3921px 0px;
+}
+
+.iti-flag.pf {
+ height: 14px;
+ background-position: -3943px 0px;
+}
+
+.iti-flag.pg {
+ height: 15px;
+ background-position: -3965px 0px;
+}
+
+.iti-flag.ph {
+ height: 10px;
+ background-position: -3987px 0px;
+}
+
+.iti-flag.pk {
+ height: 14px;
+ background-position: -4009px 0px;
+}
+
+.iti-flag.pl {
+ height: 13px;
+ background-position: -4031px 0px;
+}
+
+.iti-flag.pm {
+ height: 14px;
+ background-position: -4053px 0px;
+}
+
+.iti-flag.pn {
+ height: 10px;
+ background-position: -4075px 0px;
+}
+
+.iti-flag.pr {
+ height: 14px;
+ background-position: -4097px 0px;
+}
+
+.iti-flag.ps {
+ height: 10px;
+ background-position: -4119px 0px;
+}
+
+.iti-flag.pt {
+ height: 14px;
+ background-position: -4141px 0px;
+}
+
+.iti-flag.pw {
+ height: 13px;
+ background-position: -4163px 0px;
+}
+
+.iti-flag.py {
+ height: 11px;
+ background-position: -4185px 0px;
+}
+
+.iti-flag.qa {
+ height: 8px;
+ background-position: -4207px 0px;
+}
+
+.iti-flag.re {
+ height: 14px;
+ background-position: -4229px 0px;
+}
+
+.iti-flag.ro {
+ height: 14px;
+ background-position: -4251px 0px;
+}
+
+.iti-flag.rs {
+ height: 14px;
+ background-position: -4273px 0px;
+}
+
+.iti-flag.ru {
+ height: 14px;
+ background-position: -4295px 0px;
+}
+
+.iti-flag.rw {
+ height: 14px;
+ background-position: -4317px 0px;
+}
+
+.iti-flag.sa {
+ height: 14px;
+ background-position: -4339px 0px;
+}
+
+.iti-flag.sb {
+ height: 10px;
+ background-position: -4361px 0px;
+}
+
+.iti-flag.sc {
+ height: 10px;
+ background-position: -4383px 0px;
+}
+
+.iti-flag.sd {
+ height: 10px;
+ background-position: -4405px 0px;
+}
+
+.iti-flag.se {
+ height: 13px;
+ background-position: -4427px 0px;
+}
+
+.iti-flag.sg {
+ height: 14px;
+ background-position: -4449px 0px;
+}
+
+.iti-flag.sh {
+ height: 10px;
+ background-position: -4471px 0px;
+}
+
+.iti-flag.si {
+ height: 10px;
+ background-position: -4493px 0px;
+}
+
+.iti-flag.sj {
+ height: 15px;
+ background-position: -4515px 0px;
+}
+
+.iti-flag.sk {
+ height: 14px;
+ background-position: -4537px 0px;
+}
+
+.iti-flag.sl {
+ height: 14px;
+ background-position: -4559px 0px;
+}
+
+.iti-flag.sm {
+ height: 15px;
+ background-position: -4581px 0px;
+}
+
+.iti-flag.sn {
+ height: 14px;
+ background-position: -4603px 0px;
+}
+
+.iti-flag.so {
+ height: 14px;
+ background-position: -4625px 0px;
+}
+
+.iti-flag.sr {
+ height: 14px;
+ background-position: -4647px 0px;
+}
+
+.iti-flag.ss {
+ height: 10px;
+ background-position: -4669px 0px;
+}
+
+.iti-flag.st {
+ height: 10px;
+ background-position: -4691px 0px;
+}
+
+.iti-flag.sv {
+ height: 12px;
+ background-position: -4713px 0px;
+}
+
+.iti-flag.sx {
+ height: 14px;
+ background-position: -4735px 0px;
+}
+
+.iti-flag.sy {
+ height: 14px;
+ background-position: -4757px 0px;
+}
+
+.iti-flag.sz {
+ height: 14px;
+ background-position: -4779px 0px;
+}
+
+.iti-flag.ta {
+ height: 10px;
+ background-position: -4801px 0px;
+}
+
+.iti-flag.tc {
+ height: 10px;
+ background-position: -4823px 0px;
+}
+
+.iti-flag.td {
+ height: 14px;
+ background-position: -4845px 0px;
+}
+
+.iti-flag.tf {
+ height: 14px;
+ background-position: -4867px 0px;
+}
+
+.iti-flag.tg {
+ height: 13px;
+ background-position: -4889px 0px;
+}
+
+.iti-flag.th {
+ height: 14px;
+ background-position: -4911px 0px;
+}
+
+.iti-flag.tj {
+ height: 10px;
+ background-position: -4933px 0px;
+}
+
+.iti-flag.tk {
+ height: 10px;
+ background-position: -4955px 0px;
+}
+
+.iti-flag.tl {
+ height: 10px;
+ background-position: -4977px 0px;
+}
+
+.iti-flag.tm {
+ height: 14px;
+ background-position: -4999px 0px;
+}
+
+.iti-flag.tn {
+ height: 14px;
+ background-position: -5021px 0px;
+}
+
+.iti-flag.to {
+ height: 10px;
+ background-position: -5043px 0px;
+}
+
+.iti-flag.tr {
+ height: 14px;
+ background-position: -5065px 0px;
+}
+
+.iti-flag.tt {
+ height: 12px;
+ background-position: -5087px 0px;
+}
+
+.iti-flag.tv {
+ height: 10px;
+ background-position: -5109px 0px;
+}
+
+.iti-flag.tw {
+ height: 14px;
+ background-position: -5131px 0px;
+}
+
+.iti-flag.tz {
+ height: 14px;
+ background-position: -5153px 0px;
+}
+
+.iti-flag.ua {
+ height: 14px;
+ background-position: -5175px 0px;
+}
+
+.iti-flag.ug {
+ height: 14px;
+ background-position: -5197px 0px;
+}
+
+.iti-flag.um {
+ height: 11px;
+ background-position: -5219px 0px;
+}
+
+.iti-flag.us {
+ height: 11px;
+ background-position: -5241px 0px;
+}
+
+.iti-flag.uy {
+ height: 14px;
+ background-position: -5263px 0px;
+}
+
+.iti-flag.uz {
+ height: 10px;
+ background-position: -5285px 0px;
+}
+
+.iti-flag.va {
+ height: 15px;
+ background-position: -5307px 0px;
+}
+
+.iti-flag.vc {
+ height: 14px;
+ background-position: -5324px 0px;
+}
+
+.iti-flag.ve {
+ height: 14px;
+ background-position: -5346px 0px;
+}
+
+.iti-flag.vg {
+ height: 10px;
+ background-position: -5368px 0px;
+}
+
+.iti-flag.vi {
+ height: 14px;
+ background-position: -5390px 0px;
+}
+
+.iti-flag.vn {
+ height: 14px;
+ background-position: -5412px 0px;
+}
+
+.iti-flag.vu {
+ height: 12px;
+ background-position: -5434px 0px;
+}
+
+.iti-flag.wf {
+ height: 14px;
+ background-position: -5456px 0px;
+}
+
+.iti-flag.ws {
+ height: 10px;
+ background-position: -5478px 0px;
+}
+
+.iti-flag.xk {
+ height: 15px;
+ background-position: -5500px 0px;
+}
+
+.iti-flag.ye {
+ height: 14px;
+ background-position: -5522px 0px;
+}
+
+.iti-flag.yt {
+ height: 14px;
+ background-position: -5544px 0px;
+}
+
+.iti-flag.za {
+ height: 14px;
+ background-position: -5566px 0px;
+}
+
+.iti-flag.zm {
+ height: 14px;
+ background-position: -5588px 0px;
+}
+
+.iti-flag.zw {
+ height: 10px;
+ background-position: -5610px 0px;
+}
+
+.iti-flag {
+ width: 20px;
+ height: 15px;
+ box-shadow: 0px 0px 1px 0px #888;
+ background-image: url("flags.png");
+ background-repeat: no-repeat;
+ background-color: #DBDBDB;
+ background-position: 20px 0;
+}
+
+@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
+ .iti-flag {
+ background-image: url("flags@2x.png");
+ }
+}
+
+.iti-flag.np {
+ background-color: transparent;
+}
diff --git a/src/components/country-list/utils.js b/src/components/country-list/utils.js
new file mode 100644
index 0000000..ef723d2
--- /dev/null
+++ b/src/components/country-list/utils.js
@@ -0,0 +1,443 @@
+(function(){for(var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},l="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,m=["String","prototype","repeat"],n=0;n<m.length-1;n++){var p=m[n];p in l||(l[p]={});l=l[p]}
+var ba=m[m.length-1],r=l[ba],t=r?r:function(a){var b;if(null==this)throw new TypeError("The 'this' value for String.prototype.repeat must not be null or undefined");b=this+"";if(0>a||1342177279<a)throw new RangeError("Invalid count value");a|=0;for(var c="";a;)if(a&1&&(c+=b),a>>>=1)b+=b;return c};t!=r&&null!=t&&aa(l,ba,{configurable:!0,writable:!0,value:t});var ca=this;function u(a){return"string"==typeof a}
+function v(a,b){var c=a.split("."),d=ca;c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)c.length||void 0===b?d[e]?d=d[e]:d=d[e]={}:d[e]=b}function w(a,b){function c(){}c.prototype=b.prototype;a.aa=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.$=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};var x=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(u(a))return u(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function y(a,b){a.sort(b||da)}function da(a,b){return a>b?1:a<b?-1:0};function ea(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};function fa(a,b){this.a=a;this.h=!!b.i;this.b=b.c;this.m=b.type;this.l=!1;switch(this.b){case ga:case ha:case ia:case ja:case ka:case la:case ma:this.l=!0}this.g=b.defaultValue}var ma=1,la=2,ga=3,ha=4,ia=6,ja=16,ka=18;function na(a,b){this.b=a;this.a={};for(var c=0;c<b.length;c++){var d=b[c];this.a[d.a]=d}}function oa(a){a=ea(a.a);y(a,function(a,c){return a.a-c.a});return a};function A(){this.a={};this.g=this.f().a;this.b=this.h=null}A.prototype.has=function(a){return null!=this.a[a.a]};A.prototype.get=function(a,b){return B(this,a.a,b)};A.prototype.set=function(a,b){C(this,a.a,b)};
+function pa(a,b){for(var c=oa(a.f()),d=0;d<c.length;d++){var e=c[d],f=e.a;if(null!=b.a[f]){a.b&&delete a.b[e.a];var g=11==e.b||10==e.b;if(e.h)for(var e=D(b,f),h=0;h<e.length;h++){var k=a,q=f,z=g?e[h].clone():e[h];k.a[q]||(k.a[q]=[]);k.a[q].push(z);k.b&&delete k.b[q]}else e=E(b,f),g?(g=E(a,f))?pa(g,e):C(a,f,e.clone()):C(a,f,e)}}}A.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.a={},a.b&&(a.b={}),pa(a,this));return a};
+function E(a,b){var c=a.a[b];if(null==c)return null;if(a.h){if(!(b in a.b)){var d=a.h,e=a.g[b];if(null!=c)if(e.h){for(var f=[],g=0;g<c.length;g++)f[g]=d.a(e,c[g]);c=f}else c=d.a(e,c);return a.b[b]=c}return a.b[b]}return c}function B(a,b,c){var d=E(a,b);return a.g[b].h?d[c||0]:d}function F(a,b){var c;if(null!=a.a[b])c=B(a,b,void 0);else a:{c=a.g[b];if(void 0===c.g){var d=c.m;if(d===Boolean)c.g=!1;else if(d===Number)c.g=0;else if(d===String)c.g=c.l?"0":"";else{c=new d;break a}}c=c.g}return c}
+function D(a,b){return E(a,b)||[]}function G(a,b){return a.g[b].h?null!=a.a[b]?a.a[b].length:0:null!=a.a[b]?1:0}function C(a,b,c){a.a[b]=c;a.b&&(a.b[b]=c)}function H(a,b){var c=[],d;for(d in b)0!=d&&c.push(new fa(d,b[d]));return new na(a,c)};function I(){}I.prototype.b=function(a){new a.b;throw Error("Unimplemented");};I.prototype.a=function(a,b){if(11==a.b||10==a.b)return b instanceof A?b:this.b(a.m.prototype.f(),b);if(14==a.b){if(u(b)&&qa.test(b)){var c=Number(b);if(0<c)return c}return b}if(!a.l)return b;c=a.m;if(c===String){if("number"==typeof b)return String(b)}else if(c===Number&&u(b)&&("Infinity"===b||"-Infinity"===b||"NaN"===b||qa.test(b)))return Number(b);return b};var qa=/^-?[0-9]+$/;function J(){}w(J,I);J.prototype.b=function(a,b){var c=new a.b;c.h=this;c.a=b;c.b={};return c};function ra(){}w(ra,J);ra.prototype.a=function(a,b){return 8==a.b?!!b:I.prototype.a.apply(this,arguments)};function K(a,b){null!=a&&this.a.apply(this,arguments)}K.prototype.b="";K.prototype.set=function(a){this.b=""+a};K.prototype.a=function(a,b,c){this.b+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.b+=arguments[d];return this};K.prototype.toString=function(){return this.b};/*
+
+ Protocol Buffer 2 Copyright 2008 Google Inc.
+ All other code copyright its respective owners.
+ Copyright (C) 2010 The Libphonenumber Authors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+function L(){A.call(this)}w(L,A);var sa=null;function M(){A.call(this)}w(M,A);var ta=null;function N(){A.call(this)}w(N,A);var ua=null;
+L.prototype.f=function(){var a=sa;a||(sa=a=H(L,{0:{name:"NumberFormat",j:"i18n.phonenumbers.NumberFormat"},1:{name:"pattern",required:!0,c:9,type:String},2:{name:"format",required:!0,c:9,type:String},3:{name:"leading_digits_pattern",i:!0,c:9,type:String},4:{name:"national_prefix_formatting_rule",c:9,type:String},6:{name:"national_prefix_optional_when_formatting",c:8,defaultValue:!1,type:Boolean},5:{name:"domestic_carrier_code_formatting_rule",c:9,type:String}}));return a};L.f=L.prototype.f;
+M.prototype.f=function(){var a=ta;a||(ta=a=H(M,{0:{name:"PhoneNumberDesc",j:"i18n.phonenumbers.PhoneNumberDesc"},2:{name:"national_number_pattern",c:9,type:String},9:{name:"possible_length",i:!0,c:5,type:Number},10:{name:"possible_length_local_only",i:!0,c:5,type:Number},6:{name:"example_number",c:9,type:String}}));return a};M.f=M.prototype.f;
+N.prototype.f=function(){var a=ua;a||(ua=a=H(N,{0:{name:"PhoneMetadata",j:"i18n.phonenumbers.PhoneMetadata"},1:{name:"general_desc",c:11,type:M},2:{name:"fixed_line",c:11,type:M},3:{name:"mobile",c:11,type:M},4:{name:"toll_free",c:11,type:M},5:{name:"premium_rate",c:11,type:M},6:{name:"shared_cost",c:11,type:M},7:{name:"personal_number",c:11,type:M},8:{name:"voip",c:11,type:M},21:{name:"pager",c:11,type:M},25:{name:"uan",c:11,type:M},27:{name:"emergency",c:11,type:M},28:{name:"voicemail",c:11,type:M},
+24:{name:"no_international_dialling",c:11,type:M},9:{name:"id",required:!0,c:9,type:String},10:{name:"country_code",c:5,type:Number},11:{name:"international_prefix",c:9,type:String},17:{name:"preferred_international_prefix",c:9,type:String},12:{name:"national_prefix",c:9,type:String},13:{name:"preferred_extn_prefix",c:9,type:String},15:{name:"national_prefix_for_parsing",c:9,type:String},16:{name:"national_prefix_transform_rule",c:9,type:String},18:{name:"same_mobile_and_fixed_line_pattern",c:8,defaultValue:!1,
+type:Boolean},19:{name:"number_format",i:!0,c:11,type:L},20:{name:"intl_number_format",i:!0,c:11,type:L},22:{name:"main_country_for_code",c:8,defaultValue:!1,type:Boolean},23:{name:"leading_digits",c:9,type:String},26:{name:"leading_zero_possible",c:8,defaultValue:!1,type:Boolean}}));return a};N.f=N.prototype.f;function O(){A.call(this)}w(O,A);var va=null,wa={w:0,v:1,u:5,s:10,o:20};
+O.prototype.f=function(){var a=va;a||(va=a=H(O,{0:{name:"PhoneNumber",j:"i18n.phonenumbers.PhoneNumber"},1:{name:"country_code",required:!0,c:5,type:Number},2:{name:"national_number",required:!0,c:4,type:Number},3:{name:"extension",c:9,type:String},4:{name:"italian_leading_zero",c:8,type:Boolean},8:{name:"number_of_leading_zeros",c:5,defaultValue:1,type:Number},5:{name:"raw_input",c:9,type:String},6:{name:"country_code_source",c:14,defaultValue:0,type:wa},7:{name:"preferred_domestic_carrier_code",
+c:9,type:String}}));return a};O.ctor=O;O.ctor.f=O.prototype.f;/*
+
+ Copyright (C) 2010 The Libphonenumber Authors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+var P={1:"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "),7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],
+86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],
+253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],385:["HR"],386:["SI"],
+387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],
+692:["MH"],800:["001"],808:["001"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],870:["001"],878:["001"],880:["BD"],881:["001"],882:["001"],883:["001"],886:["TW"],888:["001"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],979:["001"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},xa={AC:[,[,,"[46]\\d{4}|[01589]\\d{5}",,,,,,,[5,6]],
+[,,"6[2-467]\\d{3}",,,,"62889",,,[5]],[,,"4\\d{4}",,,,"40123",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AC",247,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"[01589]\\d{5}",,,,"542011",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,"[16]\\d{5,8}|[37-9]\\d{5}",,,,,,,[6,8,9]],[,,"[78]\\d{5}",,,,"712345",,,[6]],[,,"(?:3\\d|6(?:[0-8]|90\\d{2}))\\d{4}",,,,"312345",,,[6,9]],[,,"180[02]\\d{4}",,,,"18001234",,,[8]],[,,"[19]\\d{5}",,,,"912345",,,[6]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AD",376,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1 $2",["[137-9]|6[0-8]"]],[,"(\\d{4})(\\d{4})","$1 $2",["180","180[02]"]],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["690"]]],,[,,,,,,,,,[-1]],,,[,,"1800\\d{4}",,,,"18000000",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,"[2-79]\\d{7,8}|800\\d{2,9}",,,,,,,[5,6,7,8,9,10,11,12]],[,,"[2-4679][2-8]\\d{6}",,,,"22345678",,,[8],[7]],[,,"5[024-68]\\d{7}",,,,"501234567",,,[9]],[,,"400\\d{6}|800\\d{2,9}",,,,"800123456"],[,,"900[02]\\d{5}",
+,,,"900234567",,,[9]],[,,"700[05]\\d{5}",,,,"700012345",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AE",971,"00","0",,,"0",,,,[[,"([2-4679])(\\d{3})(\\d{4})","$1 $2 $3",["[2-4679][2-8]"],"0$1"],[,"(5\\d)(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"],[,"([479]00)(\\d)(\\d{5})","$1 $2 $3",["[479]0"],"$1"],[,"([68]00)(\\d{2,9})","$1 $2",["60|8"],"$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"600[25]\\d{5}",,,,"600212345",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,"[2-7]\\d{8}",,,,,,,[9],[7]],[,,"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}",
+,,,"234567890",,,,[7]],[,,"7(?:[014-9]\\d|2[89]|30)\\d{6}",,,,"701234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AF",93,"00","0",,,"0",,,,[[,"([2-7]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,"[2589]\\d{9}",,,,,,,[10],[7]],[,,"268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}",,,,"2684601234",,,,[7]],[,,"268(?:464|7(?:2\\d|3[246]|64|7[0-689]|8[02-68]))\\d{4}",,,,"2684641234",,,,[7]],
+[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,"26848[01]\\d{4}",,,,"2684801234",,,,[7]],"AG",1,"011","1",,,"1",,,,,,[,,"26840[69]\\d{4}",,,,"2684061234",,,,[7]],,"268",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,"[2589]\\d{9}",,,,,,,[10],[7]],[,,"2644(?:6[12]|9[78])\\d{4}",,,,"2644612345",,,,[7]],[,,"264(?:235|476|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}",,,,"2642351234",
+,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"AI",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"264",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,"[2-57]\\d{7}|6\\d{8}|8\\d{5,7}|9\\d{5}",,,,,,,[6,7,8,9],[5]],[,,"(?:2(?:1(?:0[2-9]|[1-9]\\d)|[247]\\d{2}|[35][2-9]\\d|[68](?:0[2-9]|[1-9]\\d)|9(?:[089][2-9]|[1-7]\\d))|3(?:1(?:[04-9][2-9]|[1-3]\\d)|[2-6]\\d{2}|[79](?:[09][2-9]|[1-8]\\d)|8(?:0[2-9]|[1-9]\\d))|4\\d{3}|5(?:1(?:[05-9][2-9]|[1-4]\\d)|[2-578]\\d{2}|6(?:[06-9][2-9]|[1-5]\\d)|9(?:[089][2-9]|[1-7]\\d))|8(?:[19](?:[06-9][2-9]|[1-5]\\d)|[2-6]\\d{2}|[78](?:[089][2-9]|[1-7]\\d)))\\d{4}",
+,,,"22345678",,,[8],[5,6,7]],[,,"6(?:[689][2-9]|7[2-6])\\d{6}",,,,"662123456",,,[9]],[,,"800\\d{4}",,,,"8001234",,,[7]],[,,"900[1-9]\\d{2}",,,,"900123",,,[6]],[,,"808[1-9]\\d{2}",,,,"808123",,,[6]],[,,"700[2-9]\\d{4}",,,,"70021234",,,[8]],[,,,,,,,,,[-1]],"AL",355,"00","0",,,"0",,,,[[,"(4)(\\d{3})(\\d{4})","$1 $2 $3",["4[0-6]"],"0$1"],[,"(6\\d)(\\d{3})(\\d{4})","$1 $2 $3",["6"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4[7-9]"],"0$1"],[,"(\\d{3})(\\d{3,5})","$1 $2",["[235][16-9]|8[016-9]|[79]"],
+"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,"[1-9]\\d{7}",,,,,,,[8],[5,6]],[,,"(?:1[0-2]\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2|47\\d)\\d{5}",,,,"10123456",,,,[5,6]],[,,"(?:4[1349]|55|77|9[1-9])\\d{6}",,,,"77123456"],[,,"800\\d{5}",,,,"80012345"],[,,"90[016]\\d{5}",,,,"90012345"],[,,"80[1-4]\\d{5}",,,,"80112345"],[,,,,,,,,,[-1]],[,,"60(?:2[078]|[3-7]\\d|8[0-5])\\d{4}",,,,"60271234"],"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",
+["1|47"],"(0$1)"],[,"(\\d{2})(\\d{6})","$1 $2",["4[1349]|[5-7]|9[1-9]"],"0$1"],[,"(\\d{3})(\\d{5})","$1 $2",["[23]"],"(0$1)"],[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["8|90"],"0 $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,"[29]\\d{8}",,,,,,,[9]],[,,"2\\d(?:[26-9]\\d|\\d[26-9])\\d{5}",,,,"222123456"],[,,"9[1-49]\\d{7}",,,,"923123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AO",244,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})",
+"$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AR:[,[,,"11\\d{8}|[2368]\\d{9}|9\\d{10}",,,,,,,[10,11],[6,7,8]],[,,"11\\d{8}|(?:2(?:2(?:[013]\\d|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[067]\\d)|4(?:7[3-8]|9\\d)|6(?:[01346]\\d|2[24-6]|5[15-8])|80\\d|9(?:[0124789]\\d|3[1-6]|5[234]|6[2-46]))|3(?:3(?:2[79]|6\\d|8[2578])|4(?:[78]\\d|0[0124-9]|[1-35]\\d|4[24-7]|6[02-9]|9[123678])|5(?:[138]\\d|2[1245]|4[1-9]|6[2-4]|7[1-6])|6[24]\\d|7(?:[0469]\\d|1[1568]|2[013-9]|3[145]|5[14-8]|7[2-57]|8[0-24-9])|8(?:[013578]\\d|2[15-7]|4[13-6]|6[1-357-9]|9[124]))|670\\d)\\d{6}",
+,,,"1123456789",,,[10],[6,7,8]],[,,"675\\d{7}|9(?:11[2-9]\\d{7}|(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[12358]|5[138]|6[24]|7[069]|8[013578]))[2-9]\\d{6}|\\d{4}[2-9]\\d{5})",,,,"91123456789",,,,[6,7,8]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,"60[04579]\\d{7}",,,,"6001234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AR",54,"00","0",,,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))?15)?",
+"9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],[,"(\\d{2})(\\d{4})","$1-$2",["[2-9]"],"$1"],[,"(\\d{3})(\\d{4})","$1-$2",["[2-9]"],"$1"],[,"(\\d{4})(\\d{4})","$1-$2",["[2-9]"],"$1"],[,"(9)(11)(\\d{4})(\\d{4})","$2 15-$3-$4",["911"],"0$1"],[,"(9)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9(?:2[234689]|3[3-8])","9(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578]))","9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[456]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))",
+"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1239])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))"],"0$1"],[,"(9)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9[23]"],"0$1"],[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578])","2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[456]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))",
+"2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1239])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))"],"0$1",,1],[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"],"0$1",,1],[,"(\\d{3})","$1",["1[012]|911"],"$1"]],[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"],"0$1"],[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3-$4",["911"]],[,"(9)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3-$4",["9(?:2[234689]|3[3-8])","9(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578]))",
+"9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[456]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))","9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1239])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))"]],[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3-$4",["9[23]"]],[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"],"0$1",
+,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578])","2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[456]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))","2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1239])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))"],
+"0$1",,1],[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"],"0$1",,1]],[,,,,,,,,,[-1]],,,[,,"810\\d{7}",,,,"8101234567",,,[10]],[,,"810\\d{7}",,,,"8101234567",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,"[5689]\\d{9}",,,,,,,[10],[7]],[,,"6846(?:22|33|44|55|77|88|9[19])\\d{4}",,,,"6846221234",,,,[7]],[,,"684(?:2(?:5[2468]|72)|7(?:3[13]|70))\\d{4}",,,,"6847331234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",
+,,,"5002345678"],[,,,,,,,,,[-1]],"AS",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"684",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,"[1-9]\\d{3,12}",,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,"1\\d{3,12}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-8]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|63|7[1368]|8[2457])|5(?:12|2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[1-35-8]|5[468]|62)|7(?:2[1-8]|3[25]|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{3,10}",
+,,,"1234567890",,,,[3]],[,,"6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}",,,,"664123456",,,[7,8,9,10,11,12,13]],[,,"800\\d{6,10}",,,,"800123456",,,[9,10,11,12,13]],[,,"9(?:0[01]|3[019])\\d{6,10}",,,,"900123456",,,[9,10,11,12,13]],[,,"8(?:10\\d|2(?:[01]\\d|8\\d?))\\d{5,9}",,,,"810123456",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,"780\\d{6,10}",,,,"780123456",,,[9,10,11,12,13]],"AT",43,"00","0",,,"0",,,,[[,"(116\\d{3})","$1",["116"],"$1"],[,"(1)(\\d{3,12})","$1 $2",["1"],"0$1"],[,"(5\\d)(\\d{3,5})","$1 $2",
+["5[079]"],"0$1"],[,"(5\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["5[079]"],"0$1"],[,"(5\\d)(\\d{4})(\\d{4,7})","$1 $2 $3",["5[079]"],"0$1"],[,"(\\d{3})(\\d{3,10})","$1 $2",["316|46|51|732|6(?:5[0-3579]|[6-9])|7(?:[28]0)|[89]"],"0$1"],[,"(\\d{4})(\\d{3,9})","$1 $2",["2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-9]|5[468])|7(?:2[1-8]|35|4[1-8]|[5-79])"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"5(?:(?:0[1-9]|17)\\d{2,10}|[79]\\d{3,11})|720\\d{6,10}",,,,"50123",,,[5,6,7,8,9,10,11,12,13]],,,[,,,,
+,,,,,[-1]]],AU:[,[,,"1\\d{4,9}|[2-578]\\d{8}",,,,,,,[5,6,7,8,9,10]],[,,"[237]\\d{8}|8(?:[6-8]\\d{3}|9(?:[02-9]\\d{2}|1(?:[0-57-9]\\d|6[0135-9])))\\d{4}",,,,"212345678",,,[9],[8]],[,,"14(?:5\\d|71)\\d{5}|4(?:[0-3]\\d|4[47-9]|5[0-25-9]|6[6-9]|7[02-9]|8[147-9]|9[017-9])\\d{6}",,,,"412345678",,,[9]],[,,"180(?:0\\d{3}|2)\\d{3}",,,,"1800123456",,,[7,10]],[,,"19(?:0[0126]\\d|[679])\\d{5}",,,,"1900123456",,,[8,10]],[,,"13(?:00\\d{3}|45[0-4]|\\d)\\d{3}",,,,"1300123456",,,[6,8,10]],[,,"500\\d{6}",,,,"500123456",
+,,[9]],[,,"550\\d{6}",,,,"550123456",,,[9]],"AU",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011)|001[14-689]","0",,,"0",,"0011",,[[,"([2378])(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[45]|14"],"0$1"],[,"(16)(\\d{3,4})","$1 $2",["16"],"0$1"],[,"(16)(\\d{3})(\\d{2,4})","$1 $2 $3",["16"],"0$1"],[,"(1[389]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[38]0|90)","1(?:[38]00|90)"],"$1"],[,"(180)(2\\d{3})","$1 $2",["180","1802"],"$1"],[,"(19\\d)(\\d{3})","$1 $2",
+["19[13]"],"$1"],[,"(19\\d{2})(\\d{4})","$1 $2",["19[679]"],"$1"],[,"(13)(\\d{2})(\\d{2})","$1 $2 $3",["13[1-9]"],"$1"]],,[,,"16\\d{3,7}",,,,"1612345",,,[5,6,7,8,9]],1,,[,,"1(?:3(?:00\\d{3}|45[0-4]|\\d)\\d{3}|80(?:0\\d{6}|2\\d{3}))",,,,"1300123456",,,[6,7,8,10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,"[25-9]\\d{6}",,,,,,,[7]],[,,"5(?:2\\d|8[1-9])\\d{4}",,,,"5212345"],[,,"(?:5(?:6\\d|9[2-478])|6(?:[039]0|22|4[01]|6[0-2])|7[34]\\d|9(?:6[45]|9[4-8]))\\d{4}",,,,"5601234"],[,,"800\\d{4}",,,,"8001234"],
+[,,"900\\d{4}",,,,"9001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"28\\d{5}|501\\d{4}",,,,"5011234"],"AW",297,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,"[15]\\d{6,9}|2\\d{4,9}|3\\d{5,9}|4\\d{7,10}|[67]\\d{7,9}|8\\d{7,8}",,,,,,,[5,6,7,8,9,10,11]],[,,"18[1-8]\\d{4,6}",,,,"181234567",,,[7,8,9]],[,,"4(?:[0-8]\\d{6,8}|9\\d{9})|50\\d{6,8}",,,,"412345678",,,[8,9,10,11]],[,,"800\\d{5,6}",,,,"800123456",,,[8,9]],[,,"[67]00\\d{5,6}",
+,,,"600123456",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AX",358,"00|99(?:[02469]|5(?:11|33|5[59]|88|9[09]))","0",,,"0",,"00",,,,[,,,,,,,,,[-1]],,,[,,"100\\d{4,6}|20(?:0\\d{4,6}|2[023]\\d{4,5}|9[89]\\d{1,6})|300\\d{3,7}|60(?:[12]\\d{5,6}|6\\d{7})|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{5,6})",,,,"1001234",,,[5,6,7,8,9,10]],[,,"10(?:0\\d{4,6}|[1-9]\\d{5,7})|2(?:0(?:0\\d{4,6}|[13-8]\\d{5,7}|2(?:[023]\\d{4,5}|[14-9]\\d{4,6})|9(?:[0-7]\\d{4,6}|[89]\\d{1,6}))|9\\d{6,8})|3(?:0(?:0\\d{3,7}|[1-57-9]\\d{5,7}|6(?:\\d{3}|\\d{5,7}))|93\\d{5,7})|60(?:[12]\\d{5,6}|6\\d{7})|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{5,6})",
+,,,"10112345",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],AZ:[,[,,"[1-9]\\d{8}",,,,,,,[9],[7]],[,,"(?:1[28]\\d{3}|2(?:02|1[24]|2[2-4]|33|[45]2|6[23])\\d{2}|365(?:[0-46-9]\\d|5[0-35-9]))\\d{4}",,,,"123123456",,,,[7]],[,,"(?:36554|(?:4[04]|5[015]|60|7[07])\\d{3})\\d{4}",,,,"401234567"],[,,"88\\d{7}",,,,"881234567"],[,,"900200\\d{3}",,,,"900200123"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AZ",994,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["(?:1[28]|2(?:[45]2|[0-36])|365)"],
+"(0$1)"],[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[4-8]"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,"[3-9]\\d{7,8}",,,,,,,[8,9],[6]],[,,"(?:[35]\\d|49)\\d{6}",,,,"30123456",,,[8],[6]],[,,"6(?:0(?:3\\d|40)|[1-356]\\d|44[0-6]|71[137])\\d{5}",,,,"61123456"],[,,"8[08]\\d{6}",,,,"80123456",,,[8]],[,,"9[0246]\\d{6}",,,,"90123456",,,[8]],[,,"8[12]\\d{6}",,,,"82123456",,,[8]],[,,,,,,,,,
+[-1]],[,,,,,,,,,[-1]],"BA",387,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3",["[3-5]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["6[1-356]|[7-9]"],"0$1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["6[047]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"70[23]\\d{5}",,,,"70223456",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,"[2589]\\d{9}",,,,,,,[10],[7]],[,,"246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7(?:37|57)|9(?:1[89]|63))\\d{4}",
+,,,"2464123456",,,,[7]],[,,"246(?:2(?:[356]\\d|4[0-57-9]|8[0-79])|45\\d|8(?:[2-5]\\d|83))\\d{4}",,,,"2462501234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900\\d{7}|246976\\d{4}",,,,"9002123456",,,,[7]],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,"24631\\d{5}",,,,"2463101234",,,,[7]],"BB",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"246",[,,,,,,,,,[-1]],[,,"246(?:292|367|4(?:1[7-9]|3[01]|44|67)|736)\\d{4}",,,,"2464301234",,,,[7]],,,[,,,,,
+,,,,[-1]]],BD:[,[,,"[2-79]\\d{5,9}|1\\d{9}|8[0-7]\\d{4,8}",,,,,,,[6,7,8,9,10]],[,,"2(?:[45]\\d{3}|7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|[139][1-6]|2[0157-9]|41|6[1-35]|7[1-5]|8[1-8]|90)|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0167]|7[15]|8[0146-9]))\\d{4}|3(?:12?[5-7]\\d{2}|0(?:2(?:[025-79]\\d|[348]\\d{1,2})|3(?:[2-4]\\d|[56]\\d?))|2(?:1\\d{2}|2(?:[12]\\d|[35]\\d{1,2}|4\\d?))|3(?:1\\d{2}|2(?:[2356]\\d|4\\d{1,2}))|4(?:1\\d{2}|2(?:2\\d{1,2}|[47]|5\\d{2}))|5(?:1\\d{2}|29)|[67]1\\d{2}|8(?:1\\d{2}|2(?:2\\d{2}|3|4\\d)))\\d{3}|4(?:0(?:2(?:[09]\\d|7)|33\\d{2})|1\\d{3}|2(?:1\\d{2}|2(?:[25]\\d?|[348]\\d|[67]\\d{1,2}))|3(?:1\\d{2}(?:\\d{2})?|2(?:[045]\\d|[236-9]\\d{1,2})|32\\d{2})|4(?:[18]\\d{2}|2(?:[2-46]\\d{2}|3)|5[25]\\d{2})|5(?:1\\d{2}|2(?:3\\d|5))|6(?:[18]\\d{2}|2(?:3(?:\\d{2})?|[46]\\d{1,2}|5\\d{2}|7\\d)|5(?:3\\d?|4\\d|[57]\\d{1,2}|6\\d{2}|8))|71\\d{2}|8(?:[18]\\d{2}|23\\d{2}|54\\d{2})|9(?:[18]\\d{2}|2[2-5]\\d{2}|53\\d{1,2}))\\d{3}|5(?:02[03489]\\d{2}|1\\d{2}|2(?:1\\d{2}|2(?:2(?:\\d{2})?|[457]\\d{2}))|3(?:1\\d{2}|2(?:[37](?:\\d{2})?|[569]\\d{2}))|4(?:1\\d{2}|2[46]\\d{2})|5(?:1\\d{2}|26\\d{1,2})|6(?:[18]\\d{2}|2|53\\d{2})|7(?:1|24)\\d{2}|8(?:1|26)\\d{2}|91\\d{2})\\d{3}|6(?:0(?:1\\d{2}|2(?:3\\d{2}|4\\d{1,2}))|2(?:2[2-5]\\d{2}|5(?:[3-5]\\d{2}|7)|8\\d{2})|3(?:1|2[3478])\\d{2}|4(?:1|2[34])\\d{2}|5(?:1|2[47])\\d{2}|6(?:[18]\\d{2}|6(?:2(?:2\\d|[34]\\d{2})|5(?:[24]\\d{2}|3\\d|5\\d{1,2})))|72[2-5]\\d{2}|8(?:1\\d{2}|2[2-5]\\d{2})|9(?:1\\d{2}|2[2-6]\\d{2}))\\d{3}|7(?:(?:02|[3-589]1|6[12]|72[24])\\d{2}|21\\d{3}|32)\\d{3}|8(?:(?:4[12]|[5-7]2|1\\d?)|(?:0|3[12]|[5-7]1|217)\\d)\\d{4}|9(?:[35]1|(?:[024]2|81)\\d|(?:1|[24]1)\\d{2})\\d{3}",
+,,,"27111234",,,[6,7,8,9]],[,,"(?:1[13-9]\\d|(?:3[78]|44)[02-9]|6(?:44|6[02-9]))\\d{7}",,,,"1812345678",,,[10]],[,,"80[03]\\d{7}",,,,"8001234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"96(?:0[49]|1[0-4]|6[69])\\d{6}",,,,"9604123456",,,[10]],"BD",880,"00","0",,,"0",,,,[[,"(2)(\\d{7,8})","$1-$2",["2"],"0$1"],[,"(\\d{2})(\\d{4,6})","$1-$2",["[3-79]1"],"0$1"],[,"(\\d{4})(\\d{3,6})","$1-$2",["1|3(?:0|[2-58]2)|4(?:0|[25]2|3[23]|[4689][25])|5(?:[02-578]2|6[25])|6(?:[0347-9]2|[26][25])|7[02-9]2|8(?:[023][23]|[4-7]2)|9(?:[02][23]|[458]2|6[016])"],
+"0$1"],[,"(\\d{3})(\\d{3,7})","$1-$2",["[3-79][2-9]|8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,"[1-9]\\d{7,8}",,,,,,,[8,9]],[,,"(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\d{6}|80[2-8]\\d{5}",,,,"12345678",,,[8]],[,,"4(?:6[0135-8]|[79]\\d|8[3-9])\\d{6}",,,,"470123456",,,[9]],[,,"800\\d{5}",,,,"80012345",,,[8]],[,,"(?:70[2-467]|90[0-79])\\d{5}",,,,"90123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BE",32,"00","0",,,
+"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[6-9]"],"0$1"],[,"(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|4[23]|9[2-4]"],"0$1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[156]|7[018]|8(?:0[1-9]|[1-79])"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"78\\d{6}",,,,"78123456",,,[8]],,,[,,,,,,,,,[-1]]],BF:[,[,,"[25-7]\\d{7}",,,,,,,[8]],[,,"2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}",
+,,,"20491234"],[,,"(?:5[1568]\\d|[67]\\d{2})\\d{5}",,,,"70123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BF",226,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,"[23567]\\d{5,7}|[489]\\d{6,8}",,,,,,,[6,7,8,9],[4,5]],[,,"2\\d{5,7}|(?:[36]\\d|5[1-9]|8[1-6]|9[1-7])\\d{5,6}|(?:4(?:[124-7]\\d|3[1-6])|7(?:0[1-9]|[1-9]\\d))\\d{4,5}",,,,"2123456",,,[6,7,8],[4,5]],[,,"(?:8[7-9]\\d|9(?:8\\d|99))\\d{6}|4(?:3[0789]|8\\d)\\d{5}",
+,,,"48123456",,,[8,9]],[,,"800\\d{5}",,,,"80012345",,,[8]],[,,"90\\d{6}",,,,"90123456",,,[8]],[,,,,,,,,,[-1]],[,,"700\\d{5}",,,,"70012345",,,[8]],[,,,,,,,,,[-1]],"BG",359,"00","0",,,"0",,,,[[,"(2)(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["2"],"0$1"],[,"(2)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"],"0$1"],[,"(\\d{3})(\\d{4})","$1 $2",["43[124-7]|70[1-9]"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["43[124-7]|70[1-9]"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[78]00"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3})",
+"$1 $2 $3",["999"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["48|8[7-9]|9[08]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,"[136-9]\\d{7}",,,,,,,[8]],[,,"(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9])|9[69][69])|7(?:1(?:11|78)|7\\d{2}))\\d{4}",,,,"17001234"],[,,"(?:3(?:[1-4679]\\d|5[013-69]|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:[69]\\d|3[03-9]|7[0-6])))\\d{4}",
+,,,"36001234"],[,,"80\\d{6}",,,,"80123456"],[,,"(?:87|9[014578])\\d{6}",,,,"90123456"],[,,"84\\d{6}",,,,"84123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BH",973,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,"[267]\\d{7}",,,,,,,[8]],[,,"22\\d{6}",,,,"22201234"],[,,"(?:29|6[189]|7[124-9])\\d{6}",,,,"79561234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BI",257,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,"[2689]\\d{7}|7\\d{3}",,,,,,,[4,8]],[,,"2(?:02|1[037]|2[45]|3[68])\\d{5}",,,,"20211234",,,[8]],[,,"(?:6[1-8]|9[03-9])\\d{6}",,,,"90011234",,,[8]],[,,"7[3-5]\\d{2}",,,,"7312",,,[4]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"857[58]\\d{4}",,,,"85751234",,,[8]],"BJ",229,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"81\\d{6}",,,,"81123456",
+,,[8]],,,[,,,,,,,,,[-1]]],BL:[,[,,"[56]\\d{8}",,,,,,,[9]],[,,"590(?:2[7-9]|5[12]|87)\\d{4}",,,,"590271234"],[,,"690(?:0[05-9]|[1-9]\\d)\\d{4}",,,,"690001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BL",590,"00","0",,,"0",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,"[4589]\\d{9}",,,,,,,[10],[7]],[,,"441(?:2(?:02|23|61|[3479]\\d)|[46]\\d{2}|5(?:4\\d|60|89)|824)\\d{4}",,,,"4412345678",,,,[7]],[,,"441(?:[37]\\d|5[0-39])\\d{5}",
+,,,"4413701234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"BM",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"441",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,"[2-578]\\d{6}",,,,,,,[7]],[,,"2(?:[013-9]\\d|2[0-7])\\d{4}|[3-5]\\d{6}",,,,"2345678"],[,,"22[89]\\d{4}|[78]\\d{6}",,,,"7123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,
+,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BN",673,"00",,,,,,,,[[,"([2-578]\\d{2})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,"[23467]\\d{7}",,,,,,,[8],[7]],[,,"(?:2(?:2\\d{2}|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d{2}|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:2\\d|3[234]|4[248]|5[24]|6[2-6]|7\\d))|4(?:4\\d{2}|6(?:11|[24689]\\d|72)))\\d{4}",,,,"22123456",,,,[7]],[,,"[67]\\d{7}",,,,"71234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BO",591,"00(1\\d)?","0",,,"0(1\\d)?",,,,[[,"([234])(\\d{7})","$1 $2",["[234]"],,"0$CC $1"],[,"([67]\\d{7})","$1",["[67]"],,"0$CC $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,"[347]\\d{6}",,,,,,,[7]],[,,"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|50)\\d)\\d{3}",,,,"7151234"],[,,"(?:31(?:8[14-8]|9[14578])|416[145-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}",,,,"3181234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BQ",599,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,"[1-46-9]\\d{7,10}|5(?:[0-4]\\d{7,9}|5(?:[2-8]\\d{7}|9\\d{7,8}))",,,,,,,[8,9,10,11]],[,,"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}",,,,"1123456789",,,[10],[8]],[,,"(?:[189][1-9]|2[12478])(?:7|9\\d)\\d{7}|(?:3[1-578]|[46][1-9]|5[13-5]|7[13-579])(?:[6-8]|9\\d?)\\d{7}",,,,"11961234567",,,[10,11],[8]],[,,"800\\d{6,7}",,,,"800123456",,,[9,10]],[,,"(?:300|[59]00\\d?)\\d{6}",
+,,,"300123456",,,[9,10]],[,,"(?:300\\d(?:\\d{2})?|40(?:0\\d|20))\\d{4}",,,,"40041234",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BR",55,"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","0",,,"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?","$2",,,[[,"(\\d{4})(\\d{4})","$1-$2",["(?:300|40[02])","(?:300|40(?:0|20))"]],[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"],"0$1"],[,"(\\d{3,5})","$1",["1[125689]"],"$1"],[,"(\\d{4})(\\d{4})","$1-$2",["[2-9](?:[1-9]|0[1-9])"],"$1"],[,"(\\d{5})(\\d{4})",
+"$1-$2",["9(?:[1-9]|0[1-9])"],"$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"],"($1)","0 $CC ($1)"],[,"(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[1-9][1-9]9"],"($1)","0 $CC ($1)"]],[[,"(\\d{4})(\\d{4})","$1-$2",["(?:300|40[02])","(?:300|40(?:0|20))"]],[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"],"0$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"],"($1)","0 $CC ($1)"],[,"(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3",["[1-9][1-9]9"],"($1)","0 $CC ($1)"]],[,,,,,,,,,[-1]],,,[,,"(?:300\\d|40(?:0\\d|20))\\d{4}",
+,,,"40041234",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,"[2589]\\d{9}",,,,,,,[10],[7]],[,,"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3467]|8[0-4]|9[2-467])|461|502|6(?:0[1-3]|12|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}",,,,"2423456789",,,,[7]],[,,"242(?:3(?:5[79]|[79]5)|4(?:[2-4][1-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|99))\\d{4}",,,,"2423591234",,,,[7]],[,,"242300\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456",,,,[7]],
+[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"BS",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"242",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BT:[,[,,"[1-8]\\d{6,7}",,,,,,,[7,8],[6]],[,,"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}",,,,"2345678",,,[7],[6]],[,,"(?:1[67]|77)\\d{6}",,,,"17123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BT",975,"00",,,,,,,
+,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1|77"]],[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,"[2-79]\\d{6,7}",,,,,,,[7,8]],[,,"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[01])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}",,,,"2401234",,,[7]],[,,"7(?:[1-6]\\d|7[014-8])\\d{5}",,,,"71123456",,,[8]],[,,,,,,,,,[-1]],[,,"90\\d{5}",
+,,,"9012345",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"79[12][01]\\d{4}",,,,"79101234",,,[8]],"BW",267,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"]],[,"(7\\d)(\\d{3})(\\d{3})","$1 $2 $3",["7"]],[,"(90)(\\d{5})","$1 $2",["9"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,"[1-4]\\d{8}|800\\d{3,7}|[89]\\d{9,10}",,,,,,,[6,7,8,9,10,11],[5]],[,,"(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d{2})|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}",
+,,,"152450911",,,[9],[5,6,7]],[,,"(?:2(?:5[5679]|9[1-9])|33\\d|44\\d)\\d{6}",,,,"294911911",,,[9]],[,,"8(?:0[13]|20\\d)\\d{7}|800\\d{3,7}",,,,"8011234567"],[,,"(?:810|902)\\d{7}",,,,"9021234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"249\\d{6}",,,,"249123456",,,[9]],"BY",375,"810","8",,,"8?0?",,"8~10",,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["17[0-3589]|2[4-9]|[34]","17(?:[02358]|1[0-2]|9[0189])|2[4-9]|[34]"],"8 0$1"],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4",["1(?:5[24]|6[235]|7[467])|2(?:1[246]|2[25]|3[26])",
+"1(?:5[24]|6(?:2|3[04-9]|5[0346-9])|7(?:[46]|7[37-9]))|2(?:1[246]|2[25]|3[26])"],"8 0$1"],[,"(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],[,"([89]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8[01]|9"],"8 $1"],[,"(82\\d)(\\d{4})(\\d{4})","$1 $2 $3",["82"],"8 $1"],[,"(800)(\\d{3})","$1 $2",["800"],"8 $1"],[,"(800)(\\d{2})(\\d{2,4})","$1 $2 $3",["800"],"8 $1"]],,[,,
+,,,,,,,[-1]],,,[,,"8(?:0[13]|10|20\\d)\\d{7}|800\\d{3,7}|902\\d{7}",,,,"82012345678"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,"[2-8]\\d{6}|0\\d{10}",,,,,,,[7,11]],[,,"(?:2(?:[02]\\d|36)|[3-58][02]\\d|7(?:[02]\\d|32))\\d{4}",,,,"2221234",,,[7]],[,,"6[0-35-7]\\d{5}",,,,"6221234",,,[7]],[,,"0800\\d{7}",,,,"08001234123",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"BZ",501,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1-$2",["[2-8]"]],[,"(0)(800)(\\d{4})(\\d{3})","$1-$2-$3-$4",["0"]]],
+,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,"[2-9]\\d{9}|3\\d{6}",,,,,,,[7,10]],[,,"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}|310\\d{4}",,,,"2042345678",,,[10],[7]],[,,"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:0[04]|13|22|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}",
+,,,"2042345678",,,[10],[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}|310\\d{4}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456",,,[10]],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678",,,[10]],[,,,,,,,,,[-1]],"CA",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CC:[,[,,"[1458]\\d{5,9}",,,,,,,[6,7,9,10],[8]],[,,"89162\\d{4}",,,,"891621234",,,[9],[8]],[,,"14(?:5\\d|71)\\d{5}|4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-25-9]|6[6-9]|7[02-9]|8[147-9]|9[017-9])\\d{6}",
+,,,"412345678",,,[9]],[,,"180(?:0\\d{3}|2)\\d{3}",,,,"1800123456",,,[7,10]],[,,"190[0126]\\d{6}",,,,"1900123456",,,[10]],[,,"13(?:00\\d{2})?\\d{4}",,,,"1300123456",,,[6,10]],[,,"500\\d{6}",,,,"500123456",,,[9]],[,,"550\\d{6}",,,,"550123456",,,[9]],"CC",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,"[2-6]\\d{6}|[18]\\d{6,8}|9\\d{8}",,,,,,,[7,9]],[,,"1(?:2\\d{7}|\\d{6})|[2-6]\\d{6}",,,,"1234567"],
+[,,"8(?:[0-2459]\\d{2}|8)\\d{5}|9[017-9]\\d{7}",,,,"991234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CD",243,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["12"],"0$1"],[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8[0-2459]|9"],"0$1"],[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["88"],"0$1"],[,"(\\d{2})(\\d{5})","$1 $2",["[1-6]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,"[278]\\d{7}",,,,,,,[8]],[,,"2[12]\\d{6}",
+,,,"21612345"],[,,"7[0257]\\d{6}",,,,"70012345"],[,,,,,,,,,[-1]],[,,"8776\\d{4}",,,,"87761234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CF",236,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,"[028]\\d{8}",,,,,,,[9]],[,,"222[1-589]\\d{5}",,,,"222123456"],[,,"0[14-6]\\d{7}",,,,"061234567"],[,,,,,,,,,[-1]],[,,"80(?:0\\d{2}|11[01])\\d{4}",,,,"800123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,
+[-1]],"CG",242,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["801"]],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[02]"]],[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["800"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,"[2-9]\\d{8}|860\\d{9}",,,,,,,[9,12]],[,,"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}",,,,"212345678",,,[9]],[,,"7[5-9]\\d{7}",,,,"781234567",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"90[016]\\d{6}",,,,"900123456",,,[9]],[,
+,"84[0248]\\d{6}",,,,"840123456",,,[9]],[,,"878\\d{6}",,,,"878123456",,,[9]],[,,,,,,,,,[-1]],"CH",41,"00","0",,,"0",,,,[[,"([2-9]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]|[89]1"],"0$1"],[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["860"],"0$1"]],,[,,"74[0248]\\d{6}",,,,"740123456",,,[9]],,,[,,,,,,,,,[-1]],[,,"5[18]\\d{7}",,,,"581234567",,,[9]],,,[,,"860\\d{9}",,,,"860123456789",,,[12]]],CI:[,[,,"[02-8]\\d{7}",
+,,,,,,[8]],[,,"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\d{5}",,,,"21234567"],[,,"(?:0[1-9]|4\\d|5[14-9]|6[015-79]|[78][4-9])\\d{6}",,,,"01234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CI",225,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CK:[,[,,"[2-8]\\d{4}",,,,,,,[5]],[,,"(?:2\\d|3[13-7]|4[1-5])\\d{3}",,,,"21234"],[,,"[5-8]\\d{4}",
+,,,"71234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CK",682,"00",,,,,,,,[[,"(\\d{2})(\\d{3})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,"(?:[2-9]|600|123)\\d{7,8}",,,,,,,[9,10,11],[7,8]],[,,"2(?:1962\\d{4}|2\\d{7}|32[0-2467]\\d{5})|(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|9[3-9])\\d{7}",,,,"221234567",,,[9],[7,8]],[,,"2(?:1962\\d{4}|2\\d{7}|32[0-2467]\\d{5})|(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|9[3-9])\\d{7}",
+,,,"961234567",,,[9],[8]],[,,"800\\d{6}|1230\\d{7}",,,,"800123456",,,[9,11]],[,,,,,,,,,[-1]],[,,"600\\d{7,8}",,,,"6001234567",,,[10,11]],[,,,,,,,,,[-1]],[,,"44\\d{7}",,,,"441234567",,,[9]],"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,1,[[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[23]"],"($1)","$CC ($1)"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"],"($1)","$CC ($1)"],[,"(9)(\\d{4})(\\d{4})","$1 $2 $3",
+["9"],"0$1"],[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"],"0$1"],[,"([68]00)(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"],"$1"],[,"(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"],"$1"],[,"(1230)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"$1"],[,"(\\d{5})(\\d{4})","$1 $2",["219"],"($1)","$CC ($1)"],[,"(\\d{4,5})","$1",["[1-9]"],"$1"]],[[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["2[23]"],"($1)","$CC ($1)"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"],"($1)","$CC ($1)"],[,"(9)(\\d{4})(\\d{4})",
+"$1 $2 $3",["9"],"0$1"],[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"],"0$1"],[,"([68]00)(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"],"$1"],[,"(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"],"$1"],[,"(1230)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"$1"],[,"(\\d{5})(\\d{4})","$1 $2",["219"],"($1)","$CC ($1)"]],[,,,,,,,,,[-1]],,,[,,"600\\d{7,8}",,,,"6001234567",,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,"[2368]\\d{7,8}",,,,,,,[8,9]],[,,"2(?:22|33|4[23])\\d{6}",,,,"222123456",,,[9]],[,,"6[5-9]\\d{7}",
+,,,"671234567",,,[9]],[,,"88\\d{6}",,,,"88012345",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CM",237,"00",,,,,,,,[[,"([26])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[26]"]],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|88"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,"[1-7]\\d{6,11}|8[0-357-9]\\d{6,9}|9\\d{7,10}",,,,,,,[7,8,9,10,11,12],[5,6]],[,,"21(?:100\\d{2}|95\\d{3,4}|\\d{8,10})|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98))(?:100\\d{2}|95\\d{3,4}|\\d{8})|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-4689]|6[2368]|9[02-9])|8(?:078|1[236-8]|2[5-7]|3\\d|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100\\d{2}|95\\d{3,4}|\\d{7})|80(?:29|6[03578]|7[018]|81)\\d{4}",
+,,,"1012345678",,,,[5,6]],[,,"1(?:[38]\\d|4[57]|5[0-35-9]|7[0-35-8])\\d{8}",,,,"13123456789",,,[11]],[,,"(?:10)?800\\d{7}",,,,"8001234567",,,[10,12]],[,,"16[08]\\d{5}",,,,"16812345",,,[8]],[,,"400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[4789]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[3678]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}",
+,,,"4001234567",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CN",86,"(1(?:[129]\\d{3}|79\\d{2}))?00","0",,,"(1(?:[129]\\d{3}|79\\d{2}))|0",,"00",,[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"],"0$1","$CC $1",1],[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"]],[,"(\\d{5,6})","$1",["100|95"]],[,"(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2\\d)[19]","(?:10|2\\d)(?:10|9[56])","(?:10|2\\d)(?:100|9[56])"],"0$1","$CC $1"],[,"(\\d{3})(\\d{5,6})","$1 $2",["[3-9]","[3-9]\\d{2}[19]","[3-9]\\d{2}(?:10|9[56])"],
+"0$1","$CC $1"],[,"(\\d{3,4})(\\d{4})","$1 $2",["[2-9]"]],[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"],"0$1","$CC $1",1],[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"],"0$1","$CC $1",1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"],
+"0$1","$CC $1",1],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98)"],"0$1","$CC $1",1],[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["807","8078"],"0$1","$CC $1",1],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-578]"],,"$CC $1"],[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]],[,"(\\d{3})(\\d{7,8})","$1 $2",["950"]]],[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"],"0$1","$CC $1",1],[,"([48]00)(\\d{3})(\\d{4})",
+"$1 $2 $3",["[48]00"]],[,"(\\d{2})(\\d{5,6})","$1 $2",["(?:10|2\\d)[19]","(?:10|2\\d)(?:10|9[56])","(?:10|2\\d)(?:100|9[56])"],"0$1","$CC $1"],[,"(\\d{3})(\\d{5,6})","$1 $2",["[3-9]","[3-9]\\d{2}[19]","[3-9]\\d{2}(?:10|9[56])"],"0$1","$CC $1"],[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"],"0$1","$CC $1",1],[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"],"0$1","$CC $1",1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"],
+"0$1","$CC $1",1],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98)"],"0$1","$CC $1",1],[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["807","8078"],"0$1","$CC $1",1],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["1[3-578]"],,"$CC $1"],[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]],[,"(\\d{3})(\\d{7,8})","$1 $2",["950"]]],[,,,,,,,,,[-1]],,,[,,"(?:4|(?:10)?8)00\\d{7}|950\\d{7,8}",,,,"4001234567",
+,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,"(?:[13]\\d{0,3}|[24-8])\\d{7}",,,,,,,[8,10,11],[7]],[,,"[124-8][2-9]\\d{6}",,,,"12345678",,,[8],[7]],[,,"3(?:0[0-5]|1\\d|2[0-3]|5[01])\\d{7}",,,,"3211234567",,,[10]],[,,"1800\\d{7}",,,,"18001234567",,,[11]],[,,"19(?:0[01]|4[78])\\d{7}",,,,"19001234567",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CO",57,"00(?:4(?:[14]4|56)|[579])","0",,,"0([3579]|4(?:44|56))?",,,,[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"],
+"($1)","0$CC $1"],[,"(\\d{3})(\\d{7})","$1 $2",["3"],,"0$CC $1"],[,"(1)(\\d{3})(\\d{7})","$1-$2-$3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"],"0$1"]],[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"],"($1)","0$CC $1"],[,"(\\d{3})(\\d{7})","$1 $2",["3"],,"0$CC $1"],[,"(1)(\\d{3})(\\d{7})","$1 $2 $3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,"[24-9]\\d{7,9}",,
+,,,,,[8,10]],[,,"2[0-24-7]\\d{6}",,,,"22123456",,,[8]],[,,"5(?:0[01]|7[0-3])\\d{5}|6(?:[0-4]\\d{3}|500[01])\\d{3}|(?:7[0-3]|8[3-9])\\d{6}",,,,"83123456",,,[8]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,"90[059]\\d{7}",,,,"9001234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"210[0-6]\\d{4}|4\\d{7}|5100\\d{4}",,,,"40001234",,,[8]],"CR",506,"00",,,,"(19(?:0[012468]|1[09]|20|66|77|99))",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24-7]|8[3-9]"],,"$CC $1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]0"],
+,"$CC $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,"[2-57]\\d{5,7}",,,,,,,[6,7,8],[4,5]],[,,"2[1-4]\\d{5,6}|3(?:1\\d{6}|[23]\\d{4,6})|4(?:[125]\\d{5,6}|[36]\\d{6}|[78]\\d{4,6})|7\\d{6,7}",,,,"71234567",,,,[4,5]],[,,"5\\d{7}",,,,"51234567",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CU",53,"119","0",,,"0",,,,[[,"(\\d)(\\d{6,7})","$1 $2",["7"],"(0$1)"],[,"(\\d{2})(\\d{4,6})","$1 $2",["[2-4]"],"(0$1)"],[,"(\\d)(\\d{7})",
+"$1 $2",["5"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,"[259]\\d{6}",,,,,,,[7]],[,,"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}",,,,"2211234"],[,,"(?:9\\d|59)\\d{5}",,,,"9911234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CV",238,"0",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,"[169]\\d{6,7}",,,,,,,[7,8]],[,,"9(?:[48]\\d{2}|50\\d|7(?:2[0-24]|[34]\\d|6[35-7]|77|8[7-9]))\\d{4}",
+,,,"94151234",,,[8]],[,,"9(?:5(?:[12467]\\d|3[01])|6(?:[15-9]\\d|3[01]))\\d{4}",,,,"95181234",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"60[0-2]\\d{4}",,,,"6001234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"CW",599,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[13-7]"]],[,"(9)(\\d{3})(\\d{4})","$1 $2 $3",["9"]]],,[,,"955\\d{5}",,,,"95581234",,,[8]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,"[1458]\\d{5,9}",,,,,,,[6,7,8,9,10]],[,,"89164\\d{4}",,,,"891641234",,,[9],[8]],[,,"14(?:5\\d|71)\\d{5}|4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-25-9]|6[6-9]|7[02-9]|8[147-9]|9[017-9])\\d{6}",
+,,,"412345678",,,[9]],[,,"180(?:0\\d{3}|2)\\d{3}",,,,"1800123456",,,[7,10]],[,,"190[0126]\\d{6}",,,,"1900123456",,,[10]],[,,"13(?:00\\d{2})?\\d{4}",,,,"1300123456",,,[6,8,10]],[,,"500\\d{6}",,,,"500123456",,,[9]],[,,"550\\d{6}",,,,"550123456",,,[9]],"CX",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,"[257-9]\\d{7}",,,,,,,[8]],[,,"2[2-6]\\d{6}",,,,"22345678"],[,,"9[4-79]\\d{6}",,,,"96123456"],
+[,,"800\\d{5}",,,,"80001234"],[,,"90[09]\\d{5}",,,,"90012345"],[,,"80[1-9]\\d{5}",,,,"80112345"],[,,"700\\d{5}",,,,"70012345"],[,,,,,,,,,[-1]],"CY",357,"00",,,,,,,,[[,"(\\d{2})(\\d{6})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"(?:50|77)\\d{6}",,,,"77123456"],,,[,,,,,,,,,[-1]]],CZ:[,[,,"[2-8]\\d{8}|9\\d{8,11}",,,,,,,[9,10,11,12]],[,,"2\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\d{7}",,,,"212345678",,,[9]],[,,"(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}",,,,"601123456",,,[9]],[,,"800\\d{6}",,,,"800123456",
+,,[9]],[,,"9(?:0[05689]|76)\\d{6}",,,,"900123456",,,[9]],[,,"8[134]\\d{7}",,,,"811234567",,,[9]],[,,"70[01]\\d{6}",,,,"700123456",,,[9]],[,,"9[17]0\\d{6}",,,,"910123456",,,[9]],"CZ",420,"00",,,,,,,,[[,"([2-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],[,"(96\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["96"]],[,"(9\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9[36]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"9(?:5\\d|7[234])\\d{6}",,,,"972123456",,,[9]],,,[,,"9(?:3\\d{9}|6\\d{7,10})",,,
+,"93123456789"]],DE:[,[,,"[1-35-9]\\d{3,14}|4(?:[0-8]\\d{3,12}|9(?:[0-37]\\d|4(?:[1-35-8]|4\\d?)|5\\d{1,2}|6[1-8]\\d?)\\d{2,8})",,,,,,,[4,5,6,7,8,9,10,11,12,13,14,15],[3]],[,,"2\\d{5,13}|3(?:0\\d{3,13}|2\\d{9}|[3-9]\\d{4,13})|4(?:0\\d{3,12}|\\d{5,13})|5(?:0[2-8]|[1256]\\d|[38][0-8]|4\\d{0,2}|[79][0-7])\\d{3,11}|6(?:\\d{5,13}|9\\d{3,12})|7(?:0[2-8]|[1-9]\\d)\\d{3,10}|8(?:0[2-9]|[1-8]\\d|9\\d?)\\d{3,10}|9(?:0[6-9]\\d{3,10}|1\\d{4,12}|[2-9]\\d{4,11})",,,,"30123456",,,[5,6,7,8,9,10,11,12,13,14,15],[3,
+4]],[,,"1(?:5[0-25-9]\\d{8}|6[023]\\d{7,8}|7\\d{8,9})",,,,"15123456789",,,[10,11]],[,,"800\\d{7,12}",,,,"8001234567890",,,[10,11,12,13,14,15]],[,,"137[7-9]\\d{6}|900(?:[135]\\d{6}|9\\d{7})",,,,"9001234567",,,[10,11]],[,,"1(?:3(?:7[1-6]\\d{6}|8\\d{4})|80\\d{5,11})",,,,"18012345",,,[7,8,9,10,11,12,13,14]],[,,"700\\d{8}",,,,"70012345678",,,[11]],[,,,,,,,,,[-1]],"DE",49,"00","0",,,"0",,,,[[,"(1\\d{2})(\\d{7,8})","$1 $2",["1[67]"],"0$1"],[,"(15\\d{3})(\\d{6})","$1 $2",["15[0568]"],"0$1"],[,"(1\\d{3})(\\d{7})",
+"$1 $2",["15"],"0$1"],[,"(\\d{2})(\\d{3,11})","$1 $2",["3[02]|40|[68]9"],"0$1"],[,"(\\d{3})(\\d{3,11})","$1 $2",["2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)"],"0$1"],[,"(\\d{4})(\\d{2,11})","$1 $2",["[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|4[1246]|6[1-4]|7[1346]|8[13568]|9[1246])|6(?:0[356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))"],
+"0$1"],[,"(3\\d{4})(\\d{1,10})","$1 $2",["3"],"0$1"],[,"(800)(\\d{7,12})","$1 $2",["800"],"0$1"],[,"(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["(?:18|90)0|137","1(?:37|80)|900[1359]"],"0$1"],[,"(1\\d{2})(\\d{5,11})","$1 $2",["181"],"0$1"],[,"(18\\d{3})(\\d{6})","$1 $2",["185","1850","18500"],"0$1"],[,"(18\\d{2})(\\d{7})","$1 $2",["18[68]"],"0$1"],[,"(18\\d)(\\d{8})","$1 $2",["18[2-579]"],"0$1"],[,"(700)(\\d{4})(\\d{4})","$1 $2 $3",["700"],"0$1"],[,"(138)(\\d{4})","$1 $2",["138"],"0$1"],[,"(15[013-68])(\\d{2})(\\d{8})",
+"$1 $2 $3",["15[013-68]"],"0$1"],[,"(15[279]\\d)(\\d{2})(\\d{7})","$1 $2 $3",["15[279]"],"0$1"],[,"(1[67]\\d)(\\d{2})(\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"]],,[,,"16(?:4\\d{1,10}|[89]\\d{1,11})",,,,"16412345",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,"18(?:1\\d{5,11}|[2-9]\\d{8})",,,,"18500123456",,,[8,9,10,11,12,13,14]],,,[,,"1(?:5(?:(?:2\\d55|7\\d99|9\\d33)\\d{7}|(?:[034568]00|113)\\d{8})|6(?:013|255|399)\\d{7,8}|7(?:[015]13|[234]55|[69]33|[78]99)\\d{7,8})",,,,"177991234567",
+,,[12,13]]],DJ:[,[,,"[27]\\d{7}",,,,,,,[8]],[,,"2(?:1[2-5]|7[45])\\d{5}",,,,"21360003"],[,,"77\\d{6}",,,,"77831001"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"DJ",253,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,"[2-9]\\d{7}",,,,,,,[8]],[,,"(?:[2-7]\\d|8[126-9]|9[1-36-9])\\d{6}",,,,"32123456"],[,,"(?:[2-7]\\d|8[126-9]|9[1-36-9])\\d{6}",,,,"20123456"],[,,"80\\d{6}",
+,,,"80123456"],[,,"90\\d{6}",,,,"90123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"DK",45,"00",,,,,,,1,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,"[57-9]\\d{9}",,,,,,,[10],[7]],[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4]|70[1-3])\\d{4}",,,,"7674201234",,,,[7]],[,,"767(?:2(?:[234689]5|7[5-7])|31[5-7]|61[2-7])\\d{4}",,,,"7672251234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],
+[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"DM",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"767",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DO:[,[,,"[589]\\d{9}",,,,,,,[10],[7]],[,,"8(?:[04]9[2-9]\\d{6}|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d{2}|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9]))\\d{4})",
+,,,"8092345678",,,,[7]],[,,"8[024]9[2-9]\\d{6}",,,,"8092345678",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"DO",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"8[024]9",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,"(?:[1-4]|[5-9]\\d)\\d{7}",,,,,,,[8,9]],[,,"(?:1\\d|2[013-79]|3[0-8]|4[0135689])\\d{6}|9619\\d{5}",,,,"12345678"],[,,"(?:5[4-6]|7[7-9])\\d{7}|6(?:[569]\\d|7[0-6])\\d{6}",
+,,,"551234567",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"80[3-689]1\\d{5}",,,,"808123456",,,[9]],[,,"80[12]1\\d{5}",,,,"801123456",,,[9]],[,,,,,,,,,[-1]],[,,"98[23]\\d{6}",,,,"983123456",,,[9]],"DZ",213,"00","0",,,"0",,,,[[,"([1-4]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],[,"([5-8]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"],[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],
+EC:[,[,,"1\\d{9,10}|[2-8]\\d{7}|9\\d{8}",,,,,,,[8,9,10,11],[7]],[,,"[2-7][2-7]\\d{6}",,,,"22123456",,,[8],[7]],[,,"9(?:(?:39|[45][89]|7[7-9]|[89]\\d)\\d|6(?:[017-9]\\d|2[0-4]))\\d{5}",,,,"991234567",,,[9]],[,,"1800\\d{6,7}",,,,"18001234567",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"[2-7]890\\d{4}",,,,"28901234",,,[8]],"EC",593,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[247]|[356][2-8]"],"(0$1)"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],[,"(1800)(\\d{3})(\\d{3,4})",
+"$1 $2 $3",["1"],"$1"]],[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[247]|[356][2-8]"]],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"],"0$1"],[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"],"$1"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,"1\\d{3,4}|[3-9]\\d{6,7}|800\\d{6,7}",,,,,,,[4,5,7,8,10]],[,,"(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}",,,,"3212345",,,[7]],[,,"(?:5\\d|8[1-5])\\d{6}|5(?:[02]\\d{2}|1(?:[0-8]\\d|95)|5[0-478]\\d|64[0-4]|65[1-589])\\d{3}",,,,"51234567",
+,,[7,8]],[,,"800(?:0\\d{3}|1\\d|[2-9])\\d{3}",,,,"80012345",,,[7,8,10]],[,,"(?:40\\d{2}|900)\\d{4}",,,,"9001234",,,[7,8]],[,,,,,,,,,[-1]],[,,"70[0-2]\\d{5}",,,,"70012345",,,[8]],[,,,,,,,,,[-1]],"EE",372,"00",,,,,,,,[[,"([3-79]\\d{2})(\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]"]],[,"(70)(\\d{2})(\\d{4})","$1 $2 $3",["70"]],[,"(8000)(\\d{3})(\\d{3})","$1 $2 $3",["800","8000"]],[,"([458]\\d{3})(\\d{3,4})",
+"$1 $2",["40|5|8(?:00|[1-5])","40|5|8(?:00[1-9]|[1-5])"]]],,[,,,,,,,,,[-1]],,,[,,"1\\d{3,4}|800[2-9]\\d{3}",,,,"8002123",,,[4,5,7]],[,,"1(?:2[01245]|3[0-6]|4[1-489]|5[0-59]|6[1-46-9]|7[0-27-9]|8[189]|9[012])\\d{1,2}",,,,"12123",,,[4,5]],,,[,,,,,,,,,[-1]]],EG:[,[,,"1\\d{4,9}|[2456]\\d{8}|3\\d{7}|[89]\\d{8,9}",,,,,,,[5,8,9,10],[7]],[,,"(?:1(?:3[23]\\d|5(?:[23]|9\\d))|2[2-4]\\d{2}|3\\d{2}|4(?:0[2-5]|[578][23]|64)\\d|5(?:0[2-7]|[57][23])\\d|6[24-689]3\\d|8(?:2[2-57]|4[26]|6[237]|8[2-4])\\d|9(?:2[27]|3[24]|52|6[2356]|7[2-4])\\d)\\d{5}|1[69]\\d{3}",
+,,,"234567890",,,[5,8,9],[7]],[,,"1(?:0[0-269]|1[0-245]|2[0-278])\\d{7}",,,,"1001234567",,,[10]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,"900\\d{7}",,,,"9001234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"EG",20,"00","0",,,"0",,,,[[,"(\\d)(\\d{7,8})","$1 $2",["[23]"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1[012]|[89]00"],"0$1"],[,"(\\d{2})(\\d{6,7})","$1 $2",["1[35]|[4-6]|[89][2-9]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,
+,"[5-9]\\d{8}",,,,,,,[9]],[,,"528[89]\\d{5}",,,,"528812345"],[,,"(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[07][07]|6[12]))\\d{6}",,,,"650123456"],[,,"80\\d{7}",,,,"801234567"],[,,"89\\d{7}",,,,"891234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"5924[01]\\d{4}",,,,"592401234"],"EH",212,"00","0",,,"0",,,,,,[,,,,,,,,,[-1]],,"528[89]",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,"[178]\\d{6}",,,,,,,[7],[6]],[,,"1(?:1[12568]|20|40|55|6[146])\\d{4}|8\\d{6}",,,,"8370362",,,,[6]],[,,"17[1-3]\\d{4}|7\\d{6}",
+,,,"7123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ER",291,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,"[5-9]\\d{8}",,,,,,,[9]],[,,"8(?:[1356]\\d|[28][0-8]|[47][1-9])\\d{6}|9(?:[135]\\d{7}|[28][0-8]\\d{6}|4[1-9]\\d{6}|6(?:[0-8]\\d{6}|9(?:0(?:[0-57-9]\\d{4}|6(?:0[0-8]|1[1-9]|[2-9]\\d)\\d{2})|[1-9]\\d{5}))|7(?:[124-9]\\d{2}|3(?:[0-8]\\d|9[1-9]))\\d{4})",,,,"810123456"],
+[,,"(?:6\\d{6}|7[1-48]\\d{5}|9(?:6906(?:09|10)|7390\\d{2}))\\d{2}",,,,"612345678"],[,,"[89]00\\d{6}",,,,"800123456"],[,,"80[367]\\d{6}",,,,"803123456"],[,,"90[12]\\d{6}",,,,"901123456"],[,,"70\\d{7}",,,,"701234567"],[,,,,,,,,,[-1]],"ES",34,"00",,,,,,,,[[,"([89]00)(\\d{3})(\\d{3})","$1 $2 $3",["[89]00"]],[,"([5-9]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[568]|[79][0-8]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"51\\d{7}",,,,"511234567"],,,[,,,,,,,,,[-1]]],ET:[,[,,"[1-59]\\d{8}",,,,,,,[9],[7]],
+[,,"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:18|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}",
+,,,"111112345",,,,[7]],[,,"9(?:[1-46-8]\\d|5[89])\\d{6}",,,,"911234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ET",251,"00","0",,,"0",,,,[[,"([1-59]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,"[16]\\d{6,9}|2\\d{4,9}|[35]\\d{5,9}|4\\d{7,10}|7\\d{7,9}|[89]\\d{6,8}",,,,,,,[5,6,7,8,9,10,11]],[,,"1[3-79][1-8]\\d{4,6}|[235689][1-8]\\d{5,7}",,,,"131234567",,,[7,8,9]],[,,"4(?:[0-8]\\d{6,8}|9\\d{9})|50\\d{4,8}",
+,,,"412345678",,,[6,7,8,9,10,11]],[,,"800\\d{5,6}",,,,"800123456",,,[8,9]],[,,"[67]00\\d{5,6}",,,,"600123456",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"FI",358,"00|99(?:[02469]|5(?:11|33|5[59]|88|9[09]))","0",,,"0",,"00",,[[,"(\\d{3})(\\d{3,7})","$1 $2",["(?:[1-3]00|[6-8]0)"],"0$1"],[,"(116\\d{3})","$1",["116"],"$1"],[,"(\\d{2})(\\d{3,9})","$1 $2",["1(?:0[1-9]|[3-9])|2(?:0[1-9]|9)|30[1-9]|4|50|7(?:[13]|5[03-9])"],"0$1"],[,"(75\\d{3})","$1",["75[12]"],"0$1"],[,"(\\d)(\\d{5,9})","$1 $2",
+["[235689][1-8]"],"0$1"],[,"(39\\d)(\\d{3})(\\d{3})","$1 $2 $3",["39"],"0$1"]],[[,"(\\d{3})(\\d{3,7})","$1 $2",["(?:[1-3]00|[6-8]0)"],"0$1"],[,"(116\\d{3})","$1",["116"],"$1"],[,"(\\d{2})(\\d{3,9})","$1 $2",["1(?:0[1-9]|[3-9])|2(?:0[1-9]|9)|30[1-9]|4|50|7(?:[13]|5[03-9])"],"0$1"],[,"(\\d)(\\d{5,9})","$1 $2",["[235689][1-8]"],"0$1"],[,"(39\\d)(\\d{3})(\\d{3})","$1 $2 $3",["39"],"0$1"]],[,,,,,,,,,[-1]],1,,[,,"100\\d{4,6}|20(?:0\\d{4,6}|2[023]\\d{4,5}|9[89]\\d{1,6})|300\\d{3,7}|60(?:[12]\\d{5,6}|6\\d{7})|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{5,6})",
+,,,"1001234",,,[5,6,7,8,9,10]],[,,"10(?:0\\d{4,6}|[1-9]\\d{5,7})|2(?:0(?:0\\d{4,6}|[13-8]\\d{5,7}|2(?:[023]\\d{4,5}|[14-9]\\d{4,6})|9(?:[0-7]\\d{4,6}|[89]\\d{1,6}))|9\\d{6,8})|3(?:0(?:0\\d{3,7}|[1-57-9]\\d{5,7}|6(?:\\d{3}|\\d{5,7}))|93\\d{5,7})|60(?:[12]\\d{5,6}|6\\d{7})|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{5,6})",,,,"10112345",,,[5,6,7,8,9,10]],,,[,,,,,,,,,[-1]]],FJ:[,[,,"[35-9]\\d{6}|0\\d{10}",,,,,,,[7,11]],[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}",,,,"3212345",,,[7]],[,,"(?:5[018]|[79]\\d|8[034679])\\d{5}",
+,,,"7012345",,,[7]],[,,"0800\\d{7}",,,,"08001234567",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"FJ",679,"0(?:0|52)",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1 $2",["[35-9]"]],[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,"[2-7]\\d{4}",,,,,,,[5]],[,,"[2-47]\\d{4}",,,,"31234"],[,,"[56]\\d{4}",,,,"51234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"FK",500,"00",
+,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,"[39]\\d{6}",,,,,,,[7]],[,,"3[2357]0[1-9]\\d{3}|9[2-6]\\d{5}",,,,"3201234"],[,,"3[2357]0[1-9]\\d{3}|9[2-7]\\d{5}",,,,"3501234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"FM",691,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,"[2-9]\\d{5}",,,,,,,[6]],[,,"(?:20|[3-4]\\d|8[19])\\d{4}",,,,"201234"],[,,"(?:[27][1-9]|5\\d)\\d{4}",
+,,,"211234"],[,,"80[257-9]\\d{3}",,,,"802123"],[,,"90(?:[1345][15-7]|2[125-7]|99)\\d{2}",,,,"901123"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:6[0-36]|88)\\d{4}",,,,"601234"],"FO",298,"00",,,,"(10(?:01|[12]0|88))",,,,[[,"(\\d{6})","$1",,,"$CC $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,"[1-9]\\d{8}",,,,,,,[9]],[,,"[1-5]\\d{8}",,,,"123456789"],[,,"(?:6\\d|7[3-9])\\d{7}",,,,"612345678"],[,,"80[0-5]\\d{6}",,,,"801234567"],[,,"89[1-37-9]\\d{6}",,,,"891123456"],[,
+,"8(?:1[0-29]|2[0156]|84|90)\\d{6}",,,,"810123456"],[,,,,,,,,,[-1]],[,,"9\\d{8}",,,,"912345678"],"FR",33,"00","0",,,"0",,,,[[,"([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"],[,"(1\\d{2})(\\d{3})","$1 $2",["11"],"$1"],[,"(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"]],[[,"([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"],[,"(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"],"0 $1"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"80[6-9]\\d{6}",
+,,,"806123456"],,,[,,,,,,,,,[-1]]],GA:[,[,,"0?\\d{7}",,,,,,,[7,8]],[,,"01\\d{6}",,,,"01441234",,,[8]],[,,"0?[2-7]\\d{6}",,,,"06031234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GA",241,"00",,,,,,,,[[,"(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,"\\d{7,10}",,,,,,,[7,9,10],[4,5,6,8]],[,,"2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{7}|1(?:1(?:3[0-48]|[46][0-4]|5[0-26-9]|[78][0-49])|21[0-7]|31[0-8]|[4-69]1\\d)\\d{6}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)|3(?:0\\d|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[28][02-57-9]|[37]\\d|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|5[03-9]|6\\d|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\\d|9[2-57]))\\d{6}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[345])))|3(?:638[2-5]|647[23]|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[123]))|5(?:24(?:3[2-79]|6\\d)|276\\d|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[567]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|955[0-4])|7(?:26(?:6[13-9]|7[0-7])|442\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|84(?:3[2-58]))|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}|176888[2-46-8]\\d{2}|16977[23]\\d{3}",
+,,,"1212345678",,,[9,10],[4,5,6,7,8]],[,,"7(?:[1-3]\\d{3}|4(?:[0-46-9]\\d{2}|5(?:[0-689]\\d|7[0-57-9]))|5(?:0[0-8]|[13-9]\\d|2[0-35-9])\\d|7(?:0(?:0[01]|[1-9]\\d)|[1-7]\\d{2}|8[02-9]\\d|9[0-689]\\d)|8(?:[014-9]\\d|[23][0-8])\\d|9(?:[024-9]\\d{2}|1(?:[02-9]\\d|1[028])|3[0-689]\\d))\\d{5}",,,,"7400123456",,,[10]],[,,"80(?:0(?:1111|\\d{6,7})|8\\d{7})|500\\d{6}",,,,"8001234567"],[,,"(?:87[123]|9(?:[01]\\d|8[2349]))\\d{7}",,,,"9012345678",,,[10]],[,,"8(?:4(?:5464\\d|[2-5]\\d{7})|70\\d{7})",,,,"8431234567",
+,,[7,10]],[,,"70\\d{8}",,,,"7012345678",,,[10]],[,,"56\\d{8}",,,,"5612345678",,,[10]],"GB",44,"00","0"," x",,"0",,,,[[,"(7\\d{3})(\\d{6})","$1 $2",["7(?:[1-57-9]|62)","7(?:[1-57-9]|624)"],"0$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["2|5[56]|7[06]"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:1|\\d1)|3|9[018]"],"0$1"],[,"(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:387|5(?:24|39)|697|768|946)","1(?:3873|5(?:242|39[456])|697[347]|768[347]|9467)"],"0$1"],[,"(1\\d{3})(\\d{5,6})",
+"$1 $2",["1"],"0$1"],[,"(800)(\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],[,"(845)(46)(4\\d)","$1 $2 $3",["845","8454","84546","845464"],"0$1"],[,"(8\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["8(?:4[2-5]|7[0-3])"],"0$1"],[,"(80\\d)(\\d{3})(\\d{4})","$1 $2 $3",["80"],"0$1"],[,"([58]00)(\\d{6})","$1 $2",["[58]00"],"0$1"]],,[,,"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}",,,,"7640123456",,,[10]],1,,[,,,,,,,,,[-1]],[,,"(?:3[0347]|55)\\d{8}",,,,"5512345678",,,[10]],,,[,
+,,,,,,,,[-1]]],GD:[,[,,"[4589]\\d{9}",,,,,,,[10],[7]],[,,"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|68|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}",,,,"4732691234",,,,[7]],[,,"473(?:4(?:0[2-79]|1[04-9]|20|58)|5(?:2[01]|3[3-8])|901)\\d{4}",,,,"4734031234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"GD",1,"011","1",,,"1",,,,,,[,
+,,,,,,,,[-1]],,"473",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,"[34578]\\d{8}",,,,,,,[9],[6]],[,,"(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}",,,,"322123456",,,,[6]],[,,"5(?:[14]4|5[0157-9]|68|7[0147-9]|9[0-35-9])\\d{6}",,,,"555123456"],[,,"800\\d{6}",,,,"800123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"706\\d{6}",,,,"706123456"],"GE",995,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"],
+[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5"],"$1"]],,[,,,,,,,,,[-1]],,,[,,"706\\d{6}",,,,"706123456"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,"[56]\\d{8}",,,,,,,[9]],[,,"594(?:10|2[012457-9]|3[0-57-9]|4[3-9]|5[7-9]|6[0-3]|9[014])\\d{4}",,,,"594101234"],[,,"694(?:[0249]\\d|1[2-9]|3[0-48])\\d{4}",,,,"694201234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GF",594,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,"[135789]\\d{6,9}",,,,,,,[7,9,10],[6]],[,,"1481[25-9]\\d{5}",,,,"1481256789",,,[10],[6]],[,,"7(?:781\\d|839\\d|911[17])\\d{5}",,,,"7781123456",,,[10]],[,,"80(?:0(?:1111|\\d{6,7})|8\\d{7})|500\\d{6}",,,,"8001234567"],[,,"(?:87[123]|9(?:[01]\\d|8[0-3]))\\d{7}",,,,"9012345678",,,[10]],[,,"8(?:4(?:5464\\d|[2-5]\\d{7})|70\\d{7})",,,,"8431234567",,,[7,10]],[,,"70\\d{8}",,,,"7012345678",,,[10]],[,,"56\\d{8}",
+,,,"5612345678",,,[10]],"GG",44,"00","0",,,"0",,,,,,[,,"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}",,,,"7640123456",,,[10]],,,[,,,,,,,,,[-1]],[,,"(?:3[0347]|55)\\d{8}",,,,"5512345678",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,"[235]\\d{8}|8\\d{7}",,,,,,,[8,9],[7]],[,,"3(?:0(?:[237]\\d|80)|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}",,,,"302345678",,,[9],[7]],[,,"(?:2[034678]\\d|5(?:[0457]\\d|6[01]))\\d{6}",
+,,,"231234567",,,[9]],[,,"800\\d{5}",,,,"80012345",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GH",233,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"],"0$1"],[,"(\\d{3})(\\d{5})","$1 $2",["8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,"800\\d{5}",,,,"80012345",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,"[256]\\d{7}",,,,,,,[8]],[,,"2(?:00\\d{2}|1(?:6[24-7]\\d|90[0-2])|2(?:2[2457]\\d|50[0-2]))\\d{3}",,,,"20012345"],[,,"(?:5[46-8]|62)\\d{6}",,,,"57123456"],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GI",350,"00",,,,,,,,[[,"(\\d{3})(\\d{5})","$1 $2",["2"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,"[1-689]\\d{5}",,,,,,,[6]],[,,"(?:19|3[1-6]|6[14689]|8[14-79]|9\\d)\\d{4}",,,,"321000"],[,,"[245][2-9]\\d{4}",,,,"221234"],[,,"80\\d{4}",,,,"801234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"3[89]\\d{4}",,,,"381234"],"GL",299,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3"]],
+,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,"[2-9]\\d{6}",,,,,,,[7]],[,,"(?:4(?:[23]\\d{2}|4(?:1[024679]|[6-9]\\d))|5(?:54[0-7]|6(?:[67]\\d)|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}",,,,"5661234"],[,,"[23679]\\d{6}",,,,"3012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GM",220,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,"[367]\\d{7,8}",,,,,,,[8,
+9]],[,,"30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\d{4}",,,,"30241234",,,[8]],[,,"6[02356]\\d{7}",,,,"601123456",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"722\\d{6}",,,,"722123456",,,[9]],"GN",224,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["3"]],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[67]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,"[56]\\d{8}",,,,,,,[9]],[,,"590(?:0[13468]|1[012]|2[0-68]|3[28]|4[0-8]|5[579]|6[0189]|70|8[0-689]|9\\d)\\d{4}",
+,,,"590201234"],[,,"690(?:0[05-9]|[1-9]\\d)\\d{4}",,,,"690001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GP",590,"00","0",,,"0",,,,[[,"([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,"0$1"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,"[23589]\\d{8}",,,,,,,[9]],[,,"3(?:3(?:3\\d[7-9]|[0-24-9]\\d[46])|5\\d{2}[7-9])\\d{4}",,,,"333091234"],[,,"(?:222|55[15])\\d{6}",,,,"222123456"],[,,"80\\d[1-9]\\d{5}",,,,"800123456"],[,,"90\\d[1-9]\\d{5}",
+,,,"900123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GQ",240,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[235]"]],[,"(\\d{3})(\\d{6})","$1 $2",["[89]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,"[26-9]\\d{9}",,,,,,,[10]],[,,"2(?:1\\d{2}|2(?:2[1-46-9]|3[1-8]|4[1-7]|5[1-4]|6[1-8]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|3[1245]|4[1-7]|5[13-9]|[269][1-6]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}",
+,,,"2123456789"],[,,"69\\d{8}",,,,"6912345678"],[,,"800\\d{7}",,,,"8001234567"],[,,"90[19]\\d{7}",,,,"9091234567"],[,,"8(?:0[16]|12|25)\\d{7}",,,,"8011234567"],[,,"70\\d{8}",,,,"7012345678"],[,,,,,,,,,[-1]],"GR",30,"00",,,,,,,,[[,"([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["21|7"]],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2[2-9]1|[689]"]],[,"(2\\d{3})(\\d{6})","$1 $2",["2[2-9][02-9]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GT:[,[,,"[2-7]\\d{7}|1[89]\\d{9}",,,,,,,[8,11]],
+[,,"[267][2-9]\\d{6}",,,,"22456789",,,[8]],[,,"[345]\\d{7}",,,,"51234567",,,[8]],[,,"18[01]\\d{8}",,,,"18001112222",,,[11]],[,,"19\\d{9}",,,,"19001112222",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GT",502,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[2-7]"]],[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,"[5689]\\d{9}",,,,,,,[10],[7]],[,,"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[5-9])|7(?:[079]7|2[0167]|3[45]|47|8[789])|8(?:[2-5789]8|6[48])|9(?:2[29]|6[79]|7[179]|8[789]|9[78]))\\d{4}",
+,,,"6713001234",,,,[7]],[,,"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[5-9])|7(?:[079]7|2[0167]|3[45]|47|8[789])|8(?:[2-5789]8|6[48])|9(?:2[29]|6[79]|7[179]|8[789]|9[78]))\\d{4}",,,,"6713001234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"GU",1,"011","1",,,"1",,,1,,,[,,,,,,,,,[-1]],
+,"671",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,"(?:4(?:0\\d{5}|4\\d{7})|9\\d{8})",,,,,,,[7,9]],[,,"443\\d{6}",,,,"443201234",,,[9]],[,,"9(?:5(?:5\\d|6[0-2])|6(?:5[0-2]|6\\d|9[012])|77\\d)\\d{5}",,,,"955012345",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"40\\d{5}",,,,"4012345",,,[7]],"GW",245,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["44|9[567]"]],[,"(\\d{3})(\\d{4})","$1 $2",["40"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,
+,[,,,,,,,,,[-1]]],GY:[,[,,"[2-46-9]\\d{6}",,,,,,,[7]],[,,"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}",,,,"2201234"],[,,"6\\d{6}",,,,"6091234"],[,,"(?:289|862)\\d{4}",,,,"2891234"],[,,"9008\\d{3}",,,,"9008123"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"GY",592,"001",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,"[235-7]\\d{7}|8\\d{7,8}|9\\d{4,10}",,,,,,,[5,
+6,7,8,9,11]],[,,"(?:2(?:[13-8]\\d|2[013-9]|9[0-24-9])|3(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69]|89)|58[01])\\d{5}",,,,"21234567",,,[8]],[,,"(?:5(?:[1-59][0-46-9]|6[0-4689]|7[0-2469])|6(?:0[1-9]|[1459]\\d|[2368][0-57-9]|7[0-79])|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\d))\\d{5}",,,,"51234567",,,[8]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"900(?:[0-24-9]\\d{7}|3\\d{1,4})",,,,"90012345678",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,"8(?:1[1-4679]|2[0-367]|3[02-47])\\d{5}",,,,"81123456",,,[8]],[,,,,,,,,,[-1]],
+"HK",852,"00(?:[126-9]|30|5[09])?",,,,,,"00",,[[,"(\\d{4})(\\d{4})","$1 $2",["[235-7]|[89](?:0[1-9]|[1-9])"]],[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["800"]],[,"(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["900"]],[,"(900)(\\d{2,5})","$1 $2",["900"]]],,[,,"7(?:1[0-369]|[23][0-37-9]|47|5[1578]|6[0235]|7[278]|8[236-9]|9[025-9])\\d{5}",,,,"71234567",,,[8]],,,[,,,,,,,,,[-1]],[,,"30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}",,,,"30161234",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,"[237-9]\\d{7}",,,,,,,[8]],[,,"2(?:2(?:0[019]|1[1-36]|[23]\\d|4[04-6]|5[57]|7[01389]|8[0146-9]|9[012])|4(?:07|2[3-59]|3[13-689]|4[0-68]|5[1-35])|5(?:16|4[03-5]|5\\d|6[4-6]|74)|6(?:[056]\\d|17|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034])|8(?:79|8[0-35789]|9[1-57-9]))\\d{4}",
+,,,"22123456"],[,,"[37-9]\\d{7}",,,,"91234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"HN",504,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1-$2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,"[1-7]\\d{5,8}|[89]\\d{6,8}",,,,,,,[6,7,8,9]],[,,"1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}",,,,"12345678",,,[8,9],[6,7]],[,,"9(?:01\\d|[1259]\\d{2}|7(?:[0679]\\d|51)|8\\d{1,2})\\d{5}",,,,"921234567",,,[8,9]],[,,"80[01]\\d{4,6}",,,,
+"800123456",,,[7,8,9]],[,,"6(?:[01]\\d{0,2}|[459]\\d{2})\\d{4}",,,,"611234",,,[6,7,8]],[,,,,,,,,,[-1]],[,,"7[45]\\d{6}",,,,"74123456",,,[8]],[,,,,,,,,,[-1]],"HR",385,"00","0",,,"0",,,,[[,"(1)(\\d{4})(\\d{3})","$1 $2 $3",["1"],"0$1"],[,"([2-5]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],[,"(9\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"],[,"(6[01])(\\d{2})(\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],[,"([67]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],[,"(80[01])(\\d{2})(\\d{2,3})","$1 $2 $3",
+["8"],"0$1"],[,"(80[01])(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"(?:62\\d?|72)\\d{6}",,,,"62123456",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,"[2-489]\\d{7}",,,,,,,[8]],[,,"2(?:2\\d|5[1-5]|81|9[149])\\d{5}",,,,"22453300"],[,,"[34]\\d{7}",,,,"34101234"],[,,"8\\d{7}",,,,"80012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:9(?:[67][0-4]|8[0-3589]|9\\d))\\d{5}",,,,"98901234"],"HT",509,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3"]],,[,,,,,,,,,[-1]],
+,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,"[1-9]\\d{7,8}",,,,,,,[8,9],[6]],[,,"(?:1\\d|2[2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|7[2-9]|8[2-57-9]|9[2-69])\\d{6}",,,,"12345678",,,[8],[6]],[,,"(?:[257]0|3[01])\\d{7}",,,,"201234567",,,[9]],[,,"[48]0\\d{6}",,,,"80123456",,,[8]],[,,"9[01]\\d{6}",,,,"90123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"21\\d{7}",,,,"211234567",,,[9]],"HU",36,"00","06",,,"06",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"($1)"],[,"(\\d{2})(\\d{3})(\\d{3,4})",
+"$1 $2 $3",["[2-9]"],"($1)"]],,[,,,,,,,,,[-1]],,,[,,"[48]0\\d{6}",,,,"80123456",,,[8]],[,,"38\\d{7}",,,,"381234567",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,"(?:[1-79]\\d{6,10}|8\\d{7,11})",,,,,,,[7,8,9,10,11,12],[5,6]],[,,"2(?:1(?:14\\d{3}|[0-8]\\d{6,7}|500\\d{3}|9\\d{6})|2\\d{6,8}|4\\d{7,8})|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:19?|[25]\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}",
+,,,"612345678",,,[7,8,9,10,11],[5,6]],[,,"(?:2(?:1(?:3[145]|4[01]|5[1-469]|60|8[0359]|9\\d)|2(?:88|9[1256])|3[1-4]9|4(?:36|91)|5(?:1[349]|[2-4]9)|6[0-7]9|7(?:[1-36]9|4[39])|8[1-5]9|9[1-48]9)|3(?:19[1-3]|2[12]9|3[13]9|4(?:1[69]|39)|5[14]9|6(?:1[69]|2[89])|709)|4[13]19|5(?:1(?:19|8[39])|4[129]9|6[12]9)|6(?:19[12]|2(?:[23]9|77))|7(?:1[13]9|2[15]9|419|5(?:1[89]|29)|6[15]9|7[178]9))\\d{5,6}|8[1-35-9]\\d{7,10}",,,,"812345678",,,[9,10,11,12]],[,,"177\\d{6,8}|800\\d{5,7}",,,,"8001234567",,,[8,9,10,11]],[,
+,"809\\d{7}",,,,"8091234567",,,[10]],[,,"804\\d{7}",,,,"8041234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ID",62,"0(?:0[1789]|10(?:00|1[67]))","0",,,"0",,,,[[,"(\\d{2})(\\d{5,8})","$1 $2",["2[124]|[36]1"],"(0$1)"],[,"(\\d{3})(\\d{5,8})","$1 $2",["[4579]|2[035-9]|[36][02-9]"],"(0$1)"],[,"(8\\d{2})(\\d{3,4})(\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],[,"(8\\d{2})(\\d{4})(\\d{4,5})","$1-$2-$3",["8[1-35-9]"],"0$1"],[,"(1)(500)(\\d{3})","$1 $2 $3",["15"],"$1"],[,"(177)(\\d{6,8})","$1 $2",["17"],"0$1"],
+[,"(800)(\\d{5,7})","$1 $2",["800"],"0$1"],[,"(804)(\\d{3})(\\d{4})","$1 $2 $3",["804"],"0$1"],[,"(80\\d)(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["80[79]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,"8071\\d{6}",,,,"8071123456",,,[10]],[,,"1500\\d{3}|8071\\d{6}",,,,"8071123456",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,"[124-9]\\d{6,9}",,,,,,,[7,8,9,10],[5,6]],[,,"1\\d{7,8}|2(?:1\\d{6,7}|3\\d{7}|[24-9]\\d{5})|4(?:0[24]\\d{5}|[1-469]\\d{7}|5\\d{6}|7\\d{5}|8[0-46-9]\\d{7})|5(?:0[45]\\d{5}|1\\d{6}|[23679]\\d{7}|8\\d{5})|6(?:1\\d{6}|[237-9]\\d{5}|[4-6]\\d{7})|7[14]\\d{7}|9(?:1\\d{6}|[04]\\d{7}|[35-9]\\d{5})",
+,,,"2212345",,,,[5,6]],[,,"8(?:22\\d{6}|[35-9]\\d{7})",,,,"850123456",,,[9]],[,,"1800\\d{6}",,,,"1800123456",,,[10]],[,,"15(?:1[2-8]|[2-8]0|9[089])\\d{6}",,,,"1520123456",,,[10]],[,,"18[59]0\\d{6}",,,,"1850123456",,,[10]],[,,"700\\d{6}",,,,"700123456",,,[9]],[,,"76\\d{7}",,,,"761234567",,,[9]],"IE",353,"00","0",,,"0",,,,[[,"(1)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"],"(0$1)"],[,"(\\d{2})(\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],[,"(\\d{3})(\\d{5})","$1 $2",["40[24]|50[45]"],"(0$1)"],
+[,"(48)(\\d{4})(\\d{4})","$1 $2 $3",["48"],"(0$1)"],[,"(818)(\\d{3})(\\d{3})","$1 $2 $3",["81"],"(0$1)"],[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[24-69]|7[14]"],"(0$1)"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["76|8[35-9]"],"0$1"],[,"(8\\d)(\\d)(\\d{3})(\\d{4})","$1 $2 $3 $4",["8[35-9]5"],"0$1"],[,"(700)(\\d{3})(\\d{3})","$1 $2 $3",["70"],"0$1"],[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:8[059]|5)","1(?:8[059]0|5)"],"$1"]],,[,,,,,,,,,[-1]],,,[,,"18[59]0\\d{6}",,,,"1850123456",,,[10]],[,,"818\\d{6}",
+,,,"818123456",,,[9]],,,[,,"8[35-9]5\\d{7}",,,,"8551234567",,,[10]]],IL:[,[,,"1\\d{6,11}|[2-589]\\d{3}(?:\\d{3,6})?|6\\d{3}|7\\d{6,9}",,,,,,,[4,7,8,9,10,11,12]],[,,"(?:153\\d{1,2}|[2-489])\\d{7}",,,,"21234567",,,[8,11,12],[7]],[,,"5(?:[0-47-9]\\d{2}|5(?:01|2[23]|3[2-4]|4[45]|5[5689]|6[6-8]|7[0178]|8[6-9]|9[2-9])|6[2-9]\\d)\\d{5}",,,,"501234567",,,[9]],[,,"1(?:80[019]\\d{3}|255)\\d{3}",,,,"1800123456",,,[7,10]],[,,"1(?:212|(?:9(?:0[01]|19)|200)\\d{2})\\d{4}",,,,"1919123456",,,[8,9,10]],[,,"1700\\d{6}",
+,,,"1700123456",,,[10]],[,,,,,,,,,[-1]],[,,"7(?:18\\d|2[23]\\d|3[237]\\d|47\\d|6[58]\\d|7\\d{2}|8(?:2\\d|33|55|77|81)|9[2579]\\d)\\d{5}",,,,"771234567",,,[9]],"IL",972,"0(?:0|1[2-9])","0",,,"0",,,,[[,"([2-489])(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],[,"([57]\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[57]"],"0$1"],[,"(153)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["153"],"$1"],[,"(1)([7-9]\\d{2})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"],"$1"],[,"(1255)(\\d{3})","$1-$2",["125"],"$1"],[,"(1200)(\\d{3})(\\d{3})",
+"$1-$2-$3",["120"],"$1"],[,"(1212)(\\d{2})(\\d{2})","$1-$2-$3",["121"],"$1"],[,"(1599)(\\d{6})","$1-$2",["1599"],"$1"],[,"(151)(\\d{1,2})(\\d{3})(\\d{4})","$1-$2 $3-$4",["151"],"$1"],[,"(\\d{4})","*$1",["[2-689]"],"$1"]],,[,,,,,,,,,[-1]],,,[,,"1700\\d{6}|[2-689]\\d{3}",,,,"1700123456",,,[4,10]],[,,"[2-689]\\d{3}|1599\\d{6}",,,,"1599123456",,,[4,10]],,,[,,"151\\d{8,9}",,,,"15112340000",,,[11,12]]],IM:[,[,,"[135789]\\d{6,9}",,,,,,,[10],[6]],[,,"1624[5-8]\\d{5}",,,,"1624756789",,,,[6]],[,,"7(?:4576|[59]24\\d|624[2-4])\\d{5}",
+,,,"7924123456"],[,,"808162\\d{4}",,,,"8081624567"],[,,"(?:872299|90[0167]624)\\d{4}",,,,"9016247890"],[,,"8(?:4(?:40[49]06|5624\\d)|70624\\d)\\d{3}",,,,"8456247890"],[,,"70\\d{8}",,,,"7012345678"],[,,"56\\d{8}",,,,"5612345678"],"IM",44,"00","0",,,"0",,,,,,[,,"7624[01689]\\d{5}",,,,"7624012345"],,,[,,,,,,,,,[-1]],[,,"3(?:08162\\d|3\\d{5}|4(?:40[49]06|5624\\d)|7(?:0624\\d|2299\\d))\\d{3}|55\\d{8}",,,,"5512345678"],,,[,,,,,,,,,[-1]]],IN:[,[,,"008\\d{9}|1\\d{7,12}|[2-9]\\d{9,10}",,,,,,,[8,9,10,11,12,
+13],[6,7]],[,,"(?:11|2[02]|33|4[04]|79)[2-7]\\d{7}|80[2-467]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|[36][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|[57][2-689]|6[24-578]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-7]\\d{5}",
+,,,"1123456789",,,[10],[6,7,8]],[,,"(?:600[1-3]\\d|7(?:0\\d{3}|19[0-5]\\d|2(?:[0235679]\\d{2}|[14][017-9]\\d|8(?:[0-59]\\d|[678][089]))|3(?:[05-8]\\d{2}|1(?:[089]\\d|11|7[5-8])|2(?:[0-49][089]|[5-8]\\d)|3[017-9]\\d|4(?:[07-9]\\d|11)|9(?:[016-9]\\d|[2-5][089]))|4(?:0\\d{2}|1(?:[015-9]\\d|[23][089]|4[089])|2(?:0[089]|[1-7][089]|[89]\\d)|3(?:[0-8][089]|9\\d)|4(?:[089]\\d|11|7[02-8])|[56]\\d[089]|7(?:[089]\\d|11|7[02-8])|8(?:[0-24-7][089]|[389]\\d)|9(?:[0-6][089]|7[089]|[89]\\d))|5(?:[0346-8]\\d{2}|1(?:[07-9]\\d|11)|2(?:[04-9]\\d|[123][089])|5[017-9]\\d|9(?:[0-6][089]|[7-9]\\d))|6(?:0(?:[0-47]\\d|[5689][089])|(?:1[0-257-9]|[6-9]\\d)\\d|2(?:[0-4]\\d|[5-9][089])|3(?:[02-8][089]|[19]\\d)|4\\d[089]|5(?:[0-367][089]|[4589]\\d))|7(?:0(?:0[02-9]|[13-6][089]|[289]\\d|7[89])|[1-9]\\d{2})|8(?:[0-79]\\d{2}|8(?:[089]\\d|11|7[02-9]))|9(?:[089]\\d{2}|313|7(?:[02-8]\\d|9[07-9])))|8(?:0(?:[01589]\\d{2}|6[67]\\d|7(?:[02-8]\\d|9[05-9]))|1(?:[02-57-9]\\d{2}|1(?:[0-35-9]\\d|4[0-46-9])|6(?:[089]\\d|7[02-8]))|2(?:0(?:[089]\\d|7[02])|[14](?:[089]\\d|7[02-8])|[235-9]\\d{2})|3(?:[0357-9]\\d{2}|1(?:[089]\\d|7[02-6])|2(?:[09]\\d|77|8[0-689])|4(?:0[1-7]|[1-9]\\d)|6(?:[089]\\d|7[02-7]))|[45]\\d{3}|6(?:[02457-9]\\d{2}|1(?:[089]\\d|7[02-8])|3(?:[089]\\d|7[02-8])|6(?:[08]\\d|7[02-8]|9\\d))|7(?:0[07-9]\\d|[1-69]\\d{2}|[78](?:[089]\\d|7[02-8]))|8(?:[0-25-9]\\d{2}|3(?:[089]\\d|7[02-8])|4(?:[0489]\\d|7[02-68]))|9(?:[02-9]\\d{2}|1(?:[0289]\\d|7[2-6])))|9\\d{4})\\d{5}",
+,,,"8123456789",,,[10]],[,,"00800\\d{7}|1(?:600\\d{6}|80(?:0\\d{4,9}|3\\d{9}))",,,,"1800123456"],[,,"186[12]\\d{9}",,,,"1861123456789",,,[13]],[,,"1860\\d{7}",,,,"18603451234",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"IN",91,"00","0",,,"0",,,,[[,"(\\d{5})(\\d{5})","$1 $2",["600|7(?:[02-8]|19|9[037-9])|8(?:0[015-9]|[1-9])|9","600|7(?:[078]|19[0-5]|2(?:[02356-9]|[14][017-9]|9[389])|3(?:[025-9]|1[017-9]|[34][017-9])|4(?:[0-35689]|[47][017-9])|5(?:[02346-9]|1[017-9]|5[017-9])|6(?:[02-9]|1[0-257-9])|9(?:[089]|31|7[02-9]))|8(?:0(?:[01589]|6[67]|7[02-9])|1(?:[0-57-9]|6[07-9])|2(?:0[07-9]|[14][07-9]|[235-9])|3(?:[03-57-9]|[126][07-9])|[45]|6(?:[02457-9]|[136][07-9])|7(?:[078][07-9]|[1-69])|8(?:[0-25-9]|3[07-9]|4[047-9])|9(?:[02-9]|1[027-9]))|9",
+"600|7(?:0|19[0-5]|2(?:[0235679]|[14][017-9]|8(?:[0-569]|[78][089])|9[389])|3(?:[05-8]|1(?:[0189]|7[5-9])|2(?:[5-8]|[0-49][089])|3[017-9]|4(?:[07-9]|11)|9(?:[01689]|[2345][089]|40|7[0189]))|4(?:[056]|1(?:[0135-9]|[23][089]|2[089]|4[089])|2(?:0[089]|[1-7][089]|[89])|3(?:[0-8][089]|9)|4(?:[089]|11|7[02-8])|7(?:[089]|11|7[02-8])|8(?:[0-24-7][089]|[389])|9(?:[0-7][089]|[89]))|5(?:[0346-9]|1[017-9]|2(?:[03-9]|[12][089])|5[017-9])|6(?:[0346-9]|1[0-257-9]|2(?:[0-4]\\d|[5-9][089])|5(?:[0-367][089]|[4589]))|7(?:0(?:[02-9]|1[089])|[1-9])|8(?:[0-79]|8(?:0[0189]|11|8[013-9]|9))|9(?:[089]|313|7(?:[02-8]|9[07-9])))|8(?:0(?:[01589]|6[67]|7(?:[02-8]|9[05-9]))|1(?:[02-57-9]|1(?:[0-35-9]|4[0-46-9])|6(?:[089]|7[02-8]))|2(?:0(?:[089]|7[02])|[14](?:[089]|7[02-8])|[235-9])|3(?:[0357-9]|1(?:[089]|7[02-6])|2(?:[09]|77|8[0-689])|4(?:0[1-7]|[1-9])|6(?:[089]|7[02-7]))|[45]|6(?:[02457-9]|1(?:[089]|7[02-8])|3(?:[089]|7[02-8])|6(?:[08]|7[02-8]|9\\d))|7(?:0[07-9]|[1-69]|7(?:[089]|7[02-8])|8(?:[089]|7[02-8]))|8(?:[0-25-9]|3(?:[089]|7[02-8])|4(?:[0489]|7[02-68]))|9(?:[02-9]|1(?:[0289]|7[2-6])))|9"],
+"0$1",,1],[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-9]|80[2-46]"],"0$1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[59][14]|7[1257]|[68][1-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|[36][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)"],
+"0$1",,1],[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[23579]|[468][1-9])|[2-8]"],"0$1",,1],[,"(\\d{2})(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3 $4",["008"],"0$1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["140"],"$1",,1],[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3",["160","1600"],"$1",,1],[,"(\\d{4})(\\d{4,5})","$1 $2",["180","1800"],"$1",,1],[,"(\\d{4})(\\d{2,4})(\\d{4})","$1 $2 $3",["180","1800"],"$1",,1],[,"(\\d{4})(\\d{3,4})(\\d{4})","$1 $2 $3",["186","1860"],"$1",,1],[,"(\\d{4})(\\d{3})(\\d{3})(\\d{3})",
+"$1 $2 $3 $4",["18[06]"],"$1",,1]],,[,,,,,,,,,[-1]],,,[,,"00800\\d{7}|1(?:600\\d{6}|8(?:0(?:0\\d{4,9}|3\\d{9})|6(?:0\\d{7}|[12]\\d{9})))",,,,"1800123456"],[,,"140\\d{7}",,,,"1409305260",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,"3\\d{6}",,,,,,,[7]],[,,"37\\d{5}",,,,"3709100"],[,,"38\\d{5}",,,,"3801234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"IO",246,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],
+IQ:[,[,,"[1-7]\\d{7,9}",,,,,,,[8,9,10],[6,7]],[,,"1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}",,,,"12345678",,,[8,9],[6,7]],[,,"7[3-9]\\d{8}",,,,"7912345678",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"IQ",964,"00","0",,,"0",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],[,"([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],[,"(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+,,[,,,,,,,,,[-1]]],IR:[,[,,"[1-8]\\d{5,9}|9(?:[0-4]\\d{8}|9\\d{8})",,,,,,,[6,7,10],[4,5,8]],[,,"(?:(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:\\d{8}|(?:[16]|[289]\\d?)\\d{3}))|94(?:000|11[1-7]|2\\d{2}|440)\\d{5}",,,,"2123456789",,,,[4,5,8]],[,,"9(?:0[1-3]\\d{2}|[1-3]\\d{3}|9(?:0\\d{2}|44\\d|810|9(?:00|11|9[89])))\\d{5}",,,,"9123456789",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:[2-6]0\\d|993)\\d{7}",,,,"9932123456",,,[10]],"IR",98,"00",
+"0",,,"0",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-8]"],"0$1"],[,"(\\d{2})(\\d{4,5})","$1 $2",["[1-8]"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["9"],"0$1"]],,[,,"943\\d{7}",,,,"9432123456",,,[10]],,,[,,"(?:9411[1-7]|94440)\\d{5}",,,,"9411110000",,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IS:[,[,,"[4-9]\\d{6}|38\\d{7}",,,,,,,[7,9]],[,,"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-245]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-79]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|87[23])\\d{4}",
+,,,"4101234",,,[7]],[,,"38[589]\\d{6}|(?:6(?:1[1-8]|2[0-6]|3[027-9]|4[014679]|5[0159]|[67][0-69]|9\\d)|7(?:5[057]|[6-8]\\d)|8(?:2[0-59]|3[0-4]|[469]\\d|5[1-9]|88))\\d{4}",,,,"6111234"],[,,"800\\d{4}",,,,"8001234",,,[7]],[,,"90\\d{5}",,,,"9011234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"49\\d{5}",,,,"4921234",,,[7]],"IS",354,"1(?:0(?:01|10|20)|100)|00",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1 $2",["[4-9]"]],[,"(3\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["3"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"809\\d{4}",
+,,,"8091234",,,[7]],,,[,,"(?:6(?:2[78]|49|8\\d)|8(?:7[0189]|80)|95[48])\\d{4}",,,,"6271234",,,[7]]],IT:[,[,,"[01589]\\d{5,10}|3(?:[12457-9]\\d{8}|[36]\\d{7,9})",,,,,,,[6,7,8,9,10,11]],[,,"0(?:[26]\\d{4,9}|(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2346]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[34578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7})",
+,,,"0212345678"],[,,"3(?:[12457-9]\\d{8}|6\\d{7,8}|3\\d{7,9})",,,,"3123456789",,,[9,10,11]],[,,"80(?:0\\d{6}|3\\d{3})",,,,"800123456",,,[6,9]],[,,"0878\\d{5}|1(?:44|6[346])\\d{6}|89(?:2\\d{3}|4(?:[0-4]\\d{2}|[5-9]\\d{4})|5(?:[0-4]\\d{2}|[5-9]\\d{6})|9\\d{6})",,,,"899123456",,,[6,8,9,10]],[,,"84(?:[08]\\d{6}|[17]\\d{3})",,,,"848123456",,,[6,9]],[,,"1(?:78\\d|99)\\d{6}",,,,"1781234567",,,[9,10]],[,,"55\\d{8}",,,,"5512345678",,,[10]],"IT",39,"00",,,,,,,,[[,"(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]|55"]],
+[,"(0[26])(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"]],[,"(0[26])(\\d{4,6})","$1 $2",["0[26]"]],[,"(0\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0[13-57-9][0159]"]],[,"(\\d{3})(\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[245])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))"]],[,"(0\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["0[13-57-9][2-46-8]"]],[,"(0\\d{3})(\\d{2,6})","$1 $2",["0[13-57-9][2-46-8]"]],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13]|8(?:00|4[08]|9[59])","[13]|8(?:00|4[08]|9(?:5[5-9]|9))"]],
+[,"(\\d{4})(\\d{4})","$1 $2",["894","894[5-9]"]],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3"]]],,[,,,,,,,,,[-1]],1,,[,,"848\\d{6}",,,,"848123456",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JE:[,[,,"[135789]\\d{6,9}",,,,,,,[10],[6]],[,,"1534[0-24-8]\\d{5}",,,,"1534456789",,,,[6]],[,,"7(?:509\\d|7(?:00[378]|97[7-9])|829\\d|937\\d)\\d{5}",,,,"7797712345"],[,,"80(?:07(?:35|81)|8901)\\d{4}",,,,"8007354567"],[,,"(?:871206|90(?:066[59]|1810|71(?:07|55)))\\d{4}",,,,"9018105678"],[,,"8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|70002)\\d{4}",
+,,,"8447034567"],[,,"701511\\d{4}",,,,"7015115678"],[,,"56\\d{8}",,,,"5612345678"],"JE",44,"00","0",,,"0",,,,,,[,,"76(?:0[012]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}",,,,"7640123456"],,,[,,,,,,,,,[-1]],[,,"3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))\\d{4}|55\\d{8}",,,,"5512345678"],,,[,,,,,,,,,[-1]]],JM:[,[,,"[589]\\d{9}",,,,,,,[10],[7]],[,,"876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[027-9]|[23]\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468]))\\d{4}",
+,,,"8765123456",,,,[7]],[,,"876(?:2[14-9]\\d|[348]\\d{2}|5(?:0[3-9]|[2-57-9]\\d|6[0-24-9])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}",,,,"8762101234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"JM",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"876",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],JO:[,[,,"[235-9]\\d{7,8}",,,,,,,[8,
+9]],[,,"(?:2(?:6(?:2[0-35-9]|3[0-57-8]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[57][023]|6[03])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2[50]0|3(?:00|33)|4(?:0[0125]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[17-8]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[02-39]))|87(?:[02]0|7[08]|90))\\d{4}",,,,"62001234",,,[8]],[,,"7(?:55|7[025-9]|8[0-25-9]|9[0-25-9])\\d{6}",
+,,,"790123456",,,[9]],[,,"80\\d{6}",,,,"80012345",,,[8]],[,,"900\\d{5}",,,,"90012345",,,[8]],[,,"85\\d{6}",,,,"85012345",,,[8]],[,,"70\\d{7}",,,,"700123456",,,[9]],[,,,,,,,,,[-1]],"JO",962,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],[,"(7)(\\d{4})(\\d{4})","$1 $2 $3",["7[457-9]"],"0$1"],[,"(\\d{2})(\\d{7})","$1 $2",["70"],"0$1"],[,"(\\d{3})(\\d{5,6})","$1 $2",["8[0158]|9"],"0$1"]],,[,,"74(?:66|77)\\d{5}",,,,"746612345",,,[9]],,,[,,,,,,,,,[-1]],[,,"8(?:10|8\\d)\\d{5}",
+,,,"88101234",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,"[1-9]\\d{8,9}|00(?:[36]\\d{7,14}|7\\d{5,7}|8\\d{7})",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|2[2-9]\\d|[36][1-9]\\d|4(?:6[02-8]|[2-578]\\d|9[2-59])|5(?:6[1-9]|7[2-8]|[2-589]\\d)|7(?:3[4-9]|4[02-9]|[25-9]\\d)|8(?:3[2-9]|4[5-9]|5[1-9]|8[03-9]|[2679]\\d)|9(?:[679][1-9]|[2-58]\\d))\\d{6}",,,,"312345678",,,[9]],[,,"[7-9]0[1-9]\\d{7}",,,,"9012345678",,,[10]],[,,"120\\d{6}|800\\d{7}|00(?:37\\d{6,13}|66\\d{6,13}|777(?:[01]\\d{2}|5\\d{3}|8\\d{4})|882[1245]\\d{4})",
+,,,"120123456"],[,,"990\\d{6}",,,,"990123456",,,[9]],[,,,,,,,,,[-1]],[,,"60\\d{7}",,,,"601234567",,,[9]],[,,"50[1-9]\\d{7}",,,,"5012345678",,,[10]],"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],[,"(\\d{4})(\\d{4})","$1-$2",["0077"],"$1"],[,"(\\d{4})(\\d{2})(\\d{3,4})","$1-$2-$3",["0077"],"$1"],[,"(\\d{4})(\\d{2})(\\d{4})","$1-$2-$3",["0088"],"$1"],[,"(\\d{4})(\\d{3})(\\d{3,4})","$1-$2-$3",["00(?:37|66)"],
+"$1"],[,"(\\d{4})(\\d{4})(\\d{4,5})","$1-$2-$3",["00(?:37|66)"],"$1"],[,"(\\d{4})(\\d{5})(\\d{5,6})","$1-$2-$3",["00(?:37|66)"],"$1"],[,"(\\d{4})(\\d{6})(\\d{6,7})","$1-$2-$3",["00(?:37|66)"],"$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[2579]0|80[1-9]"],"0$1"],[,"(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|5(?:76|97)|499|746|8(?:3[89]|63|47|51)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))",
+"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:7[2-6]|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|[4-7]))",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6[56]))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6(?:5[25]|60)))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"],
+"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:[2-589]|39)|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93)","1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93[34])","1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93(?:31|4))"],
+"0$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["2(?:9[14-79]|74|[34]7|[56]9)|82|993"],"0$1"],[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["3|4(?:2[09]|7[01])|6[1-9]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479][1-9]"],"0$1"]],[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"],"0$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[2579]0|80[1-9]"],"0$1"],[,"(\\d{4})(\\d)(\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|5(?:76|97)|499|746|8(?:3[89]|63|47|51)|9(?:49|80|9[16])",
+"1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:7[2-6]|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|[4-7]))",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6[56]))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))",
+"1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6(?:5[25]|60)))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"],
+"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:[2-589]|39)|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93)","1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93[34])","1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93(?:31|4))"],
+"0$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["2(?:9[14-79]|74|[34]7|[56]9)|82|993"],"0$1"],[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["3|4(?:2[09]|7[01])|6[1-9]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479][1-9]"],"0$1"]],[,,"20\\d{8}",,,,"2012345678",,,[10]],,,[,,"00(?:37\\d{6,13}|66\\d{6,13}|777(?:[01]\\d{2}|5\\d{3}|8\\d{4})|882[1245]\\d{4})",,,,"00777012"],[,,"570\\d{6}",,,,"570123456",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,"20\\d{6,7}|[4-9]\\d{6,9}",,,,,,,[7,8,9,10]],[,,"20\\d{6,7}|4(?:0\\d{6,7}|[136]\\d{7}|[245]\\d{5,7})|5(?:[08]\\d{7}|[1-79]\\d{5,7})|6(?:[01457-9]\\d{5,7}|2\\d{7}|6\\d{6,7})",
+,,,"202012345",,,[7,8,9]],[,,"7(?:[0-3679]\\d|4[0-4679]|5[0-6]|8[0-25-9])\\d{6}",,,,"712123456",,,[9]],[,,"800[24-8]\\d{5,6}",,,,"800223456",,,[9,10]],[,,"900[02-9]\\d{5}",,,,"900223456",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KE",254,"000","0",,,"005|0",,,,[[,"(\\d{2})(\\d{5,7})","$1 $2",["[24-6]"],"0$1"],[,"(\\d{3})(\\d{6})","$1 $2",["7"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,
+,"[235-8]\\d{8,9}",,,,,,,[9,10],[5,6]],[,,"(?:3(?:1(?:[256]\\d|3[1-9]|47)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}",,,,"312123456",,,[9],[5,6]],[,,"(?:20[0-35]|5[0-24-7]\\d|7[07]\\d)\\d{6}",,,,"700123456",,,[9]],[,,"800\\d{6,7}",,,,"800123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KG",996,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",
+["[25-7]|31[25]"],"0$1"],[,"(\\d{4})(\\d{5})","$1 $2",["3(?:1[36]|[2-9])"],"0$1"],[,"(\\d{3})(\\d{3})(\\d)(\\d{3})","$1 $2 $3 $4",["8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,"[1-9]\\d{7,9}",,,,,,,[8,9,10],[6,7]],[,,"(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:[237-9]|4[56]|5\\d|6\\d?)\\d{5}|23(?:4[234]|8\\d{2})\\d{4}",,,,"23756789",,,[8,9],[6,7]],[,,"(?:1(?:[013-79]\\d|[28]\\d{1,2})|2[3-6]48|3(?:[18]\\d{2}|[2-6]48)|4[2-4]48|5[2-5]48|6(?:[016-9]\\d|[2-5]48)|7(?:[07-9]\\d|[16]\\d{2}|[2-5]48)|8(?:[013-79]\\d|8\\d{2})|9(?:6\\d{2}|7\\d{1,2}|[0-589]\\d))\\d{5}",
+,,,"91234567",,,[8,9]],[,,"1800(?:1\\d|2[019])\\d{4}",,,,"1800123456",,,[10]],[,,"1900(?:1\\d|2[09])\\d{4}",,,,"1900123456",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KH",855,"00[14-9]","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["1\\d[1-9]|[2-9]"],"0$1"],[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1[89]0"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,"[2458]\\d{4}|3\\d{4,7}|7\\d{7}",,,,,,,[5,8]],[,,"(?:[24]\\d|3[1-9]|50|8[0-5])\\d{3}|7(?:27|31|5[0-4])\\d{5}",
+,,,"31234"],[,,"7[23]0\\d{5}",,,,"72012345",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"30(?:0[01]\\d{2}|12(?:11|20))\\d{2}",,,,"30010000",,,[8]],"KI",686,"00",,,,"0",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,"[3478]\\d{6}",,,,,,,[7]],[,,"7[4-7]\\d{5}",,,,"7712345"],[,,"[34]\\d{6}",,,,"3212345"],[,,,,,,,,,[-1]],[,,"(?:39[01]|8\\d{2})\\d{4}",,,,"8001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KM",269,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})",
+"$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,"[589]\\d{9}",,,,,,,[10],[7]],[,,"869(?:2(?:29|36)|302|4(?:6[015-9]|70))\\d{4}",,,,"8692361234",,,,[7]],[,,"869(?:5(?:5[6-8]|6[5-7])|66\\d|76[02-7])\\d{4}",,,,"8697652917",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"KN",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],
+,"869",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,"1\\d{9}|[28]\\d{7}",,,,,,,[8,10],[6,7]],[,,"2\\d{7}|85\\d{6}",,,,"21234567",,,[8],[6,7]],[,,"19[123]\\d{7}",,,,"1921234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KP",850,"00|99","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1"],"0$1"],[,"(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,"2(?:[0-24-9]\\d{2}|3(?:[0-79]\\d|8[02-9]))\\d{4}",
+,,,"23821234",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,"007\\d{9,11}|[1-7]\\d{3,9}|8\\d{8}",,,,,,,[4,5,6,8,9,10,12,13,14],[3,7]],[,,"(?:2|3[1-3]|[46][1-4]|5[1-5])(?:1\\d{2,3}|[1-9]\\d{6,7})",,,,"22123456",,,[4,5,6,8,9,10],[3,7]],[,,"1[0-26-9]\\d{7,8}",,,,"1000000000",,,[9,10]],[,,"(?:00798\\d{0,2}|80)\\d{7}",,,,"801234567",,,[9,12,13,14]],[,,"60[2-9]\\d{6}",,,,"602345678",,,[9]],[,,,,,,,,,[-1]],[,,"50\\d{8}",,,,"5012345678",,,[10]],[,,"70\\d{8}",,,,"7012345678",,,[10]],"KR",82,"00(?:[124-68]|3\\d{2}|7(?:[0-8]\\d|9[0-79]))",
+"0",,,"0(8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{5})(\\d{3,4})(\\d{4})","$1 $2 $3",["00798"],"$1","0$CC-$1"],[,"(\\d{5})(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["00798"],"$1","0$CC-$1"],[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["1(?:[01]|5[1-4]|6[2-8]|[7-9])|[68]0|[3-6][1-9][1-9]","1(?:[01]|5(?:[1-3]|4[56])|6[2-8]|[7-9])|[68]0|[3-6][1-9][1-9]"],"0$1","0$CC-$1"],[,"(\\d{3})(\\d)(\\d{4})",
+"$1-$2-$3",["131","1312"],"0$1","0$CC-$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"],"0$1","0$CC-$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"],"0$1","0$CC-$1"],[,"(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2[1-9]"],"0$1","0$CC-$1"],[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1(?:[0-46-9])"],"0$1","0$CC-$1"],[,"(\\d{4})(\\d{4})",
+"$1-$2",["1(?:5[246-9]|6[04678]|8[03579])","1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))"],"$1","0$CC-$1"]],[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3",["1(?:[01]|5[1-4]|6[2-8]|[7-9])|[68]0|[3-6][1-9][1-9]","1(?:[01]|5(?:[1-3]|4[56])|6[2-8]|[7-9])|[68]0|[3-6][1-9][1-9]"],"0$1","0$CC-$1"],[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"],"0$1",
+"0$CC-$1"],[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"],"0$1","0$CC-$1"],[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"],"0$1","0$CC-$1"],[,"(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3",["2[1-9]"],"0$1","0$CC-$1"],[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"],"0$1","0$CC-$1"],[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1(?:[0-46-9])"],"0$1","0$CC-$1"],[,"(\\d{4})(\\d{4})","$1-$2",["1(?:5[246-9]|6[04678]|8[03579])",
+"1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))"],"$1","0$CC-$1"]],[,,"15\\d{7,8}",,,,"1523456789",,,[9,10]],,,[,,"00798\\d{7,9}",,,,"007981234567",,,[12,13,14]],[,,"1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))\\d{4}",,,,"15441234",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,"[12569]\\d{6,7}",,,,,,,[7,8]],[,,"(?:18\\d|2(?:[23]\\d{2}|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7])))\\d{4}",,,,"22345678"],[,,"(?:5(?:[05]\\d{2}|1[0-7]\\d|2(?:22|5[25])|6[56]\\d)|6(?:0[034679]\\d|222|5[015-9]\\d|6\\d{2}|7[067]\\d|9[0369]\\d)|9(?:0[09]\\d|22\\d|4[01479]\\d|55\\d|6[0679]\\d|[79]\\d{2}|8[057-9]\\d))\\d{4}",
+,,,"50012345",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"KW",965,"00",,,,,,,,[[,"(\\d{4})(\\d{3,4})","$1 $2",["[16]|2(?:[0-35-9]|4[0-35-9])|9[024-9]|52[25]"]],[,"(\\d{3})(\\d{5})","$1 $2",["244|5(?:[015]|6[56])"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,"[3589]\\d{9}",,,,,,,[10],[7]],[,,"345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\d{4}",,,,"3452221234",,,,[7]],
+[,,"345(?:32[1-9]|5(?:1[67]|2[5-7]|4[6-8]|76)|9(?:1[67]|2[2-9]|3[689]))\\d{4}",,,,"3453231234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}|345976\\d{4}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"KY",1,"011","1",,,"1",,,,,,[,,"345849\\d{4}",,,,"3458491234"],,"345",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,"(?:33\\d|7\\d{2}|80[09])\\d{7}",,,,,,,[10]],[,,"33622\\d{5}|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[234]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[234]\\d|5[139])|4(?:2\\d|3[1235-9]|59)|5(?:[23]\\d|4[01246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59)))\\d{5}",
+,,,"7123456789"],[,,"7(?:0[012578]|47|6[02-4]|7[15-8]|85)\\d{7}",,,,"7710009998"],[,,"800\\d{7}",,,,"8001234567"],[,,"809\\d{7}",,,,"8091234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"751\\d{7}",,,,"7511234567"],"KZ",7,"810","8",,,"8",,"8~10",,,,[,,,,,,,,,[-1]],,,[,,"751\\d{7}",,,,"7511234567"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,"[2-8]\\d{7,9}",,,,,,,[8,9,10],[6]],[,,"(?:2[13]|3(?:0\\d|[14])|[5-7][14]|41|8[1468])\\d{6}",,,,"21212862",,,[8,9],[6]],[,,"20(?:2[2389]|5[24-689]|7[6-8]|9[125-9])\\d{6}",
+,,,"2023123456",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LA",856,"00","0",,,"0",,,,[[,"(20)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["20"],"0$1"],[,"([2-8]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],[,"(30)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["30"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LB:[,[,,"[13-9]\\d{6,7}",,,,,,,[7,8]],[,,"(?:[14-6]\\d{2}|7(?:[2-57]\\d|62|8[0-7]|9[04-9])|8[02-9]\\d|9\\d{2})\\d{4}",
+,,,"1123456",,,[7]],[,,"(?:3\\d|7(?:[01]\\d|6[013-9]|8[89]|9[1-3])|81\\d)\\d{5}",,,,"71123456"],[,,,,,,,,,[-1]],[,,"9[01]\\d{6}",,,,"90123456",,,[8]],[,,"80\\d{6}",,,,"80123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LB",961,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]|9"],"0$1"],[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[013-9]|8[89]|9[1-3])"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,
+[,,"[5789]\\d{9}",,,,,,,[10],[7]],[,,"758(?:4(?:30|5[0-9]|6[2-9]|8[0-2])|57[0-2]|638)\\d{4}",,,,"7584305678",,,,[7]],[,,"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2[0-8]))\\d{4}",,,,"7582845678",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"LC",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"758",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,
+,,,,,,[-1]]],LI:[,[,,"6\\d{8}|[23789]\\d{6}",,,,,,,[7,9]],[,,"(?:2(?:01|1[27]|3\\d|6[02-578]|96)|3(?:7[0135-7]|8[048]|9[0269]))\\d{4}",,,,"2345678",,,[7]],[,,"6(?:5(?:09|1\\d|20)|6(?:0[0-6]|10|2[06-9]|39))\\d{5}|7(?:[37-9]\\d|42|56)\\d{4}",,,,"660234567"],[,,"80(?:02[28]|9\\d{2})\\d{2}",,,,"8002222",,,[7]],[,,"90(?:02[258]|1(?:23|3[14])|66[136])\\d{2}",,,,"9002222",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LI",423,"00","0",,,"0|10(?:01|20|66)",,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",
+["[23789]"]],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6[56]"]],[,"(69)(7\\d{2})(\\d{4})","$1 $2 $3",["697"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"870(?:28|87)\\d{2}",,,,"8702812",,,[7]],,,[,,"697(?:42|56|[78]\\d)\\d{4}",,,,"697861234",,,[9]]],LK:[,[,,"[1-9]\\d{8}",,,,,,,[9],[7]],[,,"(?:[189]1|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}",,,,"112345678",,,,[7]],[,,"7[0125-8]\\d{7}",,,,"712345678"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LK",94,"00",
+"0",,,"0",,,,[[,"(\\d{2})(\\d{1})(\\d{6})","$1 $2 $3",["[1-689]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LR:[,[,,"2\\d{7,8}|[378]\\d{8}|4\\d{6}|5\\d{6,8}",,,,,,,[7,8,9]],[,,"(?:2\\d{3}|33333)\\d{4}",,,,"21234567",,,[8,9]],[,,"(?:20\\d{2}|330\\d|4[67]|5(?:55)?\\d|77\\d{2}|88\\d{2})\\d{5}",,,,"770123456",,,[7,9]],[,,,,,,,,,[-1]],[,,"332(?:02|[2-5]\\d)\\d{4}",,,,"332021234",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],"LR",231,"00","0",,,"0",,,,[[,"(2\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],[,"([4-5])(\\d{3})(\\d{3})","$1 $2 $3",["[45]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23578]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,"[2568]\\d{7}",,,,,,,[8]],[,,"2\\d{7}",,,,"22123456"],[,,"[56]\\d{7}",,,,"50123456"],[,,"800[256]\\d{4}",,,,"80021234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LS",266,"00",,,,,,,,[[,"(\\d{4})(\\d{4})",
+"$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,"[3-9]\\d{7}",,,,,,,[8]],[,,"(?:3[1478]|4[124-6]|52)\\d{6}",,,,"31234567"],[,,"6\\d{7}",,,,"61234567"],[,,"800\\d{5}",,,,"80012345"],[,,"9(?:0[0239]|10)\\d{5}",,,,"90012345"],[,,"808\\d{5}",,,,"80812345"],[,,"700\\d{5}",,,,"70012345"],[,,,,,,,,,[-1]],"LT",370,"00","8",,,"[08]",,,,[[,"([34]\\d)(\\d{6})","$1 $2",["37|4(?:1|5[45]|6[2-4])"],"(8-$1)",,1],[,"([3-6]\\d{2})(\\d{5})","$1 $2",["3[148]|4(?:[24]|6[09])|528|6"],
+"(8-$1)",,1],[,"([7-9]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",,1],[,"(5)(2\\d{2})(\\d{4})","$1 $2 $3",["52[0-79]"],"(8-$1)",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"70[67]\\d{5}",,,,"70712345"],,,[,,,,,,,,,[-1]]],LU:[,[,,"[24-9]\\d{3,10}|3(?:[0-46-9]\\d{2,9}|5[013-9]\\d{1,8})",,,,,,,[4,5,6,7,8,9,10,11]],[,,"(?:2[2-9]\\d{2,9}|(?:[3457]\\d{2}|8(?:0[2-9]|[13-9]\\d)|9(?:0[89]|[2-579]\\d))\\d{1,8})",,,,"27123456"],[,,"6[25-79][18]\\d{6}",,,,"628123456",,,[9]],[,,"800\\d{5}",,,,"80012345",
+,,[8]],[,,"90[015]\\d{5}",,,,"90012345",,,[8]],[,,"801\\d{5}",,,,"80112345",,,[8]],[,,"70\\d{6}",,,,"70123456",,,[8]],[,,"20(?:1\\d{5}|[2-689]\\d{1,7})",,,,"20201234",,,[4,5,6,7,8,9,10]],"LU",352,"00",,,,"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d)",,,,[[,"(\\d{2})(\\d{3})","$1 $2",["[2-5]|7[1-9]|[89](?:[1-9]|0[2-9])"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[2-5]|7[1-9]|[89](?:[1-9]|0[2-9])"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})",
+"$1 $2 $3 $4",["2(?:[0367]|4[3-8])"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"],,"$CC $1"],[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,4})","$1 $2 $3 $4",["2(?:[12589]|4[12])|[3-5]|7[1-9]|8(?:[1-9]|0[2-9])|9(?:[1-9]|0[2-46-9])"],,"$CC $1"],[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["70|80[01]|90[015]"],,"$CC $1"],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"],,"$CC $1"]],,[,,,,,,,,,[-1]],
+,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,"[2689]\\d{7}",,,,,,,[8]],[,,"6\\d{7}",,,,"63123456"],[,,"2\\d{7}",,,,"21234567"],[,,"80\\d{6}",,,,"80123456"],[,,"90\\d{6}",,,,"90123456"],[,,"81\\d{6}",,,,"81123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LV",371,"00",,,,,,,,[[,"([2689]\\d)(\\d{3})(\\d{3})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LY:[,[,,"[25679]\\d{8}",,,,,,,[9],[7]],[,,"(?:2[1345]|5[1347]|6[123479]|71)\\d{7}",,,,"212345678",,,,[7]],
+[,,"9[1-6]\\d{7}",,,,"912345678"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"LY",218,"00","0",,,"0",,,,[[,"([25679]\\d)(\\d{7})","$1-$2",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,"[5-9]\\d{8}",,,,,,,[9]],[,,"5(?:2(?:[015-79]\\d|2[02-9]|3[2-57]|4[2-8]|8[235-7])\\d|3(?:[0-48]\\d|[57][2-9]|6[2-8]|9[3-9])\\d|4[067]\\d{2}|5[03]\\d{2})\\d{4}",,,,"520123456"],[,,"(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[07][07]|6[12]))\\d{6}",,,
+,"650123456"],[,,"80\\d{7}",,,,"801234567"],[,,"89\\d{7}",,,,"891234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"5924[01]\\d{4}",,,,"592401234"],"MA",212,"00","0",,,"0",,,,[[,"([5-7]\\d{2})(\\d{6})","$1-$2",["5(?:2[015-7]|3[0-4])|[67]"],"0$1"],[,"([58]\\d{3})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|92)|892","5(?:2(?:[2-48]|9[0-7])|3(?:[5-79]|8[0-7])|924)|892"],"0$1"],[,"(5\\d{4})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]"],"0$1"],[,"([5]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5(?:4[067]|5[03])"],
+"0$1"],[,"(8[09])(\\d{7})","$1-$2",["8(?:0|9[013-9])"],"0$1"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,"[34689]\\d{7,8}",,,,,,,[8,9]],[,,"870\\d{5}|9[2-47-9]\\d{6}",,,,"99123456",,,[8]],[,,"3\\d{7}|4(?:4\\d|5[1-9])\\d{5}|6\\d{8}",,,,"612345678"],[,,"90\\d{6}",,,,"90123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MC",377,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[39]"],"$1"],[,"(\\d{2})(\\d{3})(\\d{3})",
+"$1 $2 $3",["4"],"0$1"],[,"(6)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3",["8"],"$1"]],,[,,,,,,,,,[-1]],,,[,,"870\\d{5}",,,,"87012345",,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,"[235-9]\\d{7}",,,,,,,[8]],[,,"(?:2[1-9]\\d|3[1-79]\\d|5(?:33|5[257]))\\d{5}",,,,"22212345"],[,,"(?:562|6\\d{2}|7(?:[189]\\d|6[07]|7[457-9]))\\d{5}",,,,"62112345"],[,,"800\\d{5}",,,,"80012345"],[,,"90[056]\\d{5}",,,,"90012345"],[,,"808\\d{5}",,,,"80812345"],
+[,,,,,,,,,[-1]],[,,"3[08]\\d{6}",,,,"30123456"],"MD",373,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["22|3"],"0$1"],[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["2[13-9]|[5-7]"],"0$1"],[,"([89]\\d{2})(\\d{5})","$1 $2",["[89]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"803\\d{5}",,,,"80312345"],,,[,,,,,,,,,[-1]]],ME:[,[,,"[2-9]\\d{7,8}",,,,,,,[8],[6]],[,,"(?:20[2-8]|3(?:0[2-7]|[12][235-7]|3[24-7])|4(?:0[2-467]|1[267])|5(?:0[2467]|1[267]|2[2367]))\\d{5}",,,,"30234567",,,,[6]],
+[,,"6(?:00\\d|3[024]\\d|6[0-25]\\d|[7-9]\\d{2})\\d{4}",,,,"67622901"],[,,"80[0-258]\\d{5}",,,,"80080002"],[,,"(?:9(?:4[1568]|5[178]))\\d{5}",,,,"94515151"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"78[1-49]\\d{5}",,,,"78108780"],"ME",382,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2-57-9]|6[036-9]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"77[1-9]\\d{5}",,,,"77273012"],,,[,,,,,,,,,[-1]]],MF:[,[,,"[56]\\d{8}",,,,,,,[9]],[,,"590(?:[02][79]|13|5[0-268]|[78]7)\\d{4}",,,,"590271234"],
+[,,"690(?:0[05-9]|[1-9]\\d)\\d{4}",,,,"690001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MF",590,"00","0",,,"0",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,"[23]\\d{8}",,,,,,,[9],[7]],[,,"20(?:2\\d{2}|4[47]\\d|5[3467]\\d|6[279]\\d|7(?:2[29]|[35]\\d)|8[268]\\d|9[245]\\d)\\d{4}",,,,"202123456",,,,[7]],[,,"3[2-49]\\d{7}",,,,"321234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"22\\d{7}",,,,"221234567"],
+"MG",261,"00","0",,,"0",,,,[[,"([23]\\d)(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,"[2-6]\\d{6}",,,,,,,[7]],[,,"(?:247|528|625)\\d{4}",,,,"2471234"],[,,"(?:235|329|45[56]|545)\\d{4}",,,,"2351234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"635\\d{4}",,,,"6351234"],"MH",692,"011","1",,,"1",,,,[[,"(\\d{3})(\\d{4})","$1-$2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],
+MK:[,[,,"[2-578]\\d{7}",,,,,,,[8],[6,7]],[,,"(?:2(?:[23]\\d|5[124578]|6[01])|3(?:1[3-6]|[23][2-6]|4[2356])|4(?:[23][2-6]|4[3-6]|5[256]|6[25-8]|7[24-6]|8[4-6]))\\d{5}",,,,"22212345",,,,[6,7]],[,,"7(?:[0-25-8]\\d{2}|32\\d|421|9[23]\\d)\\d{4}",,,,"72345678"],[,,"800\\d{5}",,,,"80012345"],[,,"5[02-9]\\d{6}",,,,"50012345"],[,,"8(?:0[1-9]|[1-9]\\d)\\d{5}",,,,"80123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MK",389,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"],"0$1"],[,"([347]\\d)(\\d{3})(\\d{3})",
+"$1 $2 $3",["[347]"],"0$1"],[,"([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,"[246-9]\\d{7}",,,,,,,[8]],[,,"(?:2(?:0(?:2\\d|7[0-8])|1(?:2[5-7]|[3-689]\\d))|44[1239]\\d)\\d{4}",,,,"20212345"],[,,"(?:2(?:079|17\\d)|[679]\\d{3}|8[239]\\d{2})\\d{4}",,,,"65012345"],[,,"80\\d{6}",,,,"80012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ML",223,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4",["[246-9]"]],[,"(\\d{4})","$1",["67|74"]]],[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[246-9]"]]],[,,,,,,,,,[-1]],,,[,,"80\\d{6}",,,,"80012345"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,"[178]\\d{5,7}|[24-6]\\d{5,8}|9(?:[279]\\d{0,2}|5|[34]\\d{1,2}|6(?:\\d{1,2})?|8(?:\\d{2})?)\\d{6}",,,,,,,[6,7,8,9,10],[5]],[,,"1(?:2\\d{1,2}|[35]\\d|4(?:\\d|2[236]|39)|6\\d?|[89][0-6]\\d)\\d{4}|2(?:2(?:000\\d{3}|\\d{4})|3\\d{4}|4(?:0\\d{5}|26\\d{4}|39\\d{4}|\\d{4})|5(?:1\\d{3,6}|[02-9]\\d{3,5})|[6-9]\\d{4})|4(?:2[245-8]|3(?:2(?:02)?|[346]|56?)|[46][2-6]|5[3-5])\\d{4}|5(?:2(?:2(?:\\d{1,2})?|[3-8])|3[2-68]|4(?:21?|[4-8])|5[23]|6[2-4]|7[2-8]|8[24-7]|9[2-7])\\d{4}|6(?:0[23]|1(?:2(?:0|4\\d)?|[356])|2[2-6]|3[24-6]|4(?:2(?:4\\d)?|[3-6])|5[2-4]|6[2-8]|7(?:[2367]|4(?:\\d|39)|5\\d?|8[145]\\d)|8[245]|9(?:20?|4))\\d{4}|7(?:[04][24-8]|1(?:20?|[3-7])|22|3[2-4]|5[2-7])\\d{4}|8(?:1(?:2\\d{1,2}|[3-689]\\d)|2(?:2\\d|3(?:\\d|20)|[4-8]\\d)|3[24]\\d|4[24-7]\\d|5[245]\\d|6[23]\\d)\\d{3}",
+,,,"1234567",,,[6,7,8,9],[5]],[,,"17[01]\\d{4}|9(?:2(?:[0-4]|5\\d{2}|6[0-5]\\d)|3(?:[0-36]|4[069])\\d|4(?:0[0-4]\\d|[1379]\\d|2\\d{2}|4[0-589]\\d|5\\d{2}|88)|5[0-6]|6(?:1\\d|9\\d{2}|\\d)|7(?:3\\d|[6-9]\\d{2})|8(?:\\d|9\\d{2})|9(?:1\\d|[5-7]\\d{2}|[089]))\\d{5}",,,,"92123456",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"1333\\d{4}",,,,"13331234",,,[8]],"MM",95,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["1|2[245]"],"0$1"],[,"(2)(\\d{4})(\\d{4})",
+"$1 $2 $3",["251"],"0$1"],[,"(\\d)(\\d{2})(\\d{3})","$1 $2 $3",["16|2"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["432|67|81"],"0$1"],[,"(\\d{2})(\\d{2})(\\d{3,4})","$1 $2 $3",["[4-8]"],"0$1"],[,"(9)(\\d{3})(\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],[,"(9)([34]\\d{4})(\\d{4})","$1 $2 $3",["9(?:3[0-36]|4[0-57-9])"],"0$1"],[,"(9)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["92[56]"],"0$1"],[,"(9)(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3 $4",["93"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,
+,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,"[12]\\d{7,9}|[57-9]\\d{7}",,,,,,,[8,9,10],[6,7]],[,,"[12](?:1\\d|2(?:[1-3]\\d?|7\\d)|3[2-8]\\d{1,2}|4[2-68]\\d{1,2}|5[1-4689]\\d{1,2})\\d{5}|5[0568]\\d{6}",,,,"50123456",,,,[6,7]],[,,"(?:8(?:[05689]\\d|3[01])|9[013-9]\\d)\\d{5}",,,,"88123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"7[05-8]\\d{6}",,,,"75123456",,,[8]],"MN",976,"001","0",,,"0",,,,[[,"([12]\\d)(\\d{2})(\\d{4})","$1 $2 $3",["[12]1"],"0$1"],[,"([12]2\\d)(\\d{5,6})",
+"$1 $2",["[12]2[1-3]"],"0$1"],[,"([12]\\d{3})(\\d{5})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)2"],"0$1"],[,"(\\d{4})(\\d{4})","$1 $2",["[57-9]"],"$1"],[,"([12]\\d{4})(\\d{4,5})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)[4-9]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,"[268]\\d{7}",,,,,,,[8]],[,,"(?:28[2-57-9]|8[2-57-9]\\d)\\d{5}",,,,"28212345"],[,,"6(?:[2356]\\d|8[158])\\d{5}",,,,"66123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MO",853,"00",,,,,,,,[[,"([268]\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,"[5689]\\d{9}",,,,,,,[10],[7]],[,,"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}",,,,"6702345678",,,,[7]],[,,"670(?:2(?:3[3-7]|56|8[5-8])|32[1238]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}",,,,"6702345678",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",
+,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"MP",1,"011","1",,,"1",,,1,,,[,,,,,,,,,[-1]],,"670",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,"[56]\\d{8}",,,,,,,[9]],[,,"596(?:0[2-5]|[12]0|3[05-9]|4[024-8]|[5-7]\\d|89|9[4-8])\\d{4}",,,,"596301234"],[,,"696(?:[0-47-9]\\d|5[0-6]|6[0-4])\\d{4}",,,,"696201234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+"MQ",596,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,"[2-48]\\d{7}",,,,,,,[8]],[,,"25[08]\\d{5}|35\\d{6}|45[1-7]\\d{5}",,,,"35123456"],[,,"[234][0-46-9]\\d{6}",,,,"22123456"],[,,"800\\d{5}",,,,"80012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MR",222,"00",,,,,,,,[[,"([2-48]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,
+,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,"[5689]\\d{9}",,,,,,,[10],[7]],[,,"664491\\d{4}",,,,"6644912345",,,,[7]],[,,"66449[2-6]\\d{4}",,,,"6644923456",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"MS",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"664",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,"[2357-9]\\d{7}",,,,,,,[8]],[,,"2(?:0(?:1[0-6]|3[1-4]|[69]\\d)|[1-357]\\d{2})\\d{4}",
+,,,"21001234"],[,,"(?:7(?:210|[79]\\d{2})|9(?:2(?:1[01]|31)|696|8(?:1[1-3]|89|97)|9\\d{2}))\\d{4}",,,,"96961234"],[,,"800[3467]\\d{4}",,,,"80071234"],[,,"5(?:0(?:0(?:37|43)|6\\d{2}|70\\d|9[0168]\\d)|[12]\\d0[1-5])\\d{3}",,,,"50037123"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"3550\\d{4}",,,,"35501234"],"MT",356,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2"]],,[,,"7117\\d{4}",,,,"71171234"],,,[,,,,,,,,,[-1]],[,,"501\\d{5}",,,,"50112345"],,,[,,,,,,,,,[-1]]],MU:[,[,,"[2-9]\\d{6,7}",,,,,,,[7,8]],[,,"(?:2(?:[03478]\\d|1[0-7]|6[1-69])|4(?:[013568]\\d|2[4-7])|5(?:44\\d|471)|6\\d{2}|8(?:14|3[129]))\\d{4}",
+,,,"2012345"],[,,"5(?:2[59]\\d|4(?:2[1-389]|4\\d|7[1-9]|9\\d)|7\\d{2}|8(?:[0-25689]\\d|4[3479]|7[15-8])|9[0-8]\\d)\\d{4}",,,,"52512345",,,[8]],[,,"80[012]\\d{4}",,,,"8001234",,,[7]],[,,"30\\d{5}",,,,"3012345",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"3(?:20|9\\d)\\d{4}",,,,"3201234",,,[7]],"MU",230,"0(?:0|[2-7]0|33)",,,,,,"020",,[[,"([2-46-9]\\d{2})(\\d{4})","$1 $2",["[2-46-9]"]],[,"(5\\d{3})(\\d{4})","$1 $2",["5"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,"[346-8]\\d{6,9}|9(?:00\\d{7}|\\d{6})",
+,,,,,,[7,10]],[,,"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024568]|8[024689]|90))\\d{4}",,,,"6701234",,,[7]],[,,"(?:46[46]|7[3-9]\\d|9[15-9]\\d)\\d{4}",,,,"7712345",,,[7]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,"900\\d{7}",,,,"9001234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MV",960,"0(?:0|19)",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1-$2",["[3467]|9(?:[1-9]|0[1-9])"]],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"]]],,[,,"781\\d{4}",,,,"7812345",,,[7]],,,[,,,,,,,,,[-1]],[,,"4[05]0\\d{4}",
+,,,"4001234",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,"(?:1(?:\\d{2})?|[2789]\\d{2})\\d{6}",,,,,,,[7,9]],[,,"(?:1[2-9]|21\\d{2})\\d{5}",,,,"1234567"],[,,"(?:111|77\\d|88\\d|99\\d)\\d{6}",,,,"991234567",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"MW",265,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1"],"0$1"],[,"(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1789]"],"0$1"]],,[,,,,,,,,,[-1]],
+,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,"[1-9]\\d{9,10}",,,,,,,[10,11],[7,8]],[,,"(?:33|55|81)\\d{8}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-8]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7}",
+,,,"2221234567",,,[10],[7,8]],[,,"1(?:(?:33|55|81)\\d{8}|(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-8]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7})",,,,"12221234567",,,[11]],[,,"8(?:00|88)\\d{7}",
+,,,"8001234567",,,[10]],[,,"900\\d{7}",,,,"9001234567",,,[10]],[,,"300\\d{7}",,,,"3001234567",,,[10]],[,,"500\\d{7}",,,,"5001234567",,,[10]],[,,,,,,,,,[-1]],"MX",52,"0[09]","01",,,"0[12]|04[45](\\d{10})","1$1",,,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"],"01 $1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]"],"01 $1",,1],[,"(1)([358]\\d)(\\d{4})(\\d{4})","044 $2 $3 $4",["1(?:33|55|81)"],"$1",,1],[,"(1)(\\d{3})(\\d{3})(\\d{4})","044 $2 $3 $4",
+["1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])"],"$1",,1]],[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"],"01 $1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-2457-9]|5[089]|8[02-9]|9[0-35-9]"],"01 $1",,1],[,"(1)([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3 $4",["1(?:33|55|81)"]],[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[2467]|3[0-2457-9]|5[089]|8[2-9]|9[1-35-9])"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,"[13-9]\\d{7,9}",,,,,,,[8,9,
+10],[6,7]],[,,"(?:3[2-9]\\d|[4-9][2-9])\\d{6}",,,,"323456789",,,[8,9],[6,7]],[,,"1(?:1[1-6]\\d{2}|[02-4679][2-9]\\d|59\\d{2}|8(?:1[23]|[2-9]\\d))\\d{5}",,,,"123456789",,,[9,10]],[,,"1[378]00\\d{6}",,,,"1300123456",,,[10]],[,,"1600\\d{6}",,,,"1600123456",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"154\\d{7}",,,,"1541234567",,,[10]],"MY",60,"00","0",,,"0",,,,[[,"([4-79])(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],[,"(3)(\\d{4})(\\d{4})","$1-$2 $3",["3"],"0$1"],[,"([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3",
+["1[02-46-9][1-9]|8"],"0$1"],[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]0"]],[,"(11)(\\d{4})(\\d{4})","$1-$2 $3",["11"],"0$1"],[,"(15[49])(\\d{3})(\\d{4})","$1-$2 $3",["15"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,"[28]\\d{7,8}",,,,,,,[8,9]],[,,"2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}",,,,"21123456",,,[8]],[,,"8[2-7]\\d{7}",,,,"821234567",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,
+,,[-1]],"MZ",258,"00",,,,,,,,[[,"([28]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[2-7]"]],[,"(80\\d)(\\d{3})(\\d{3})","$1 $2 $3",["80"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,"[68]\\d{7,8}",,,,,,,[8,9]],[,,"6(?:1(?:17|2(?:[0189]\\d|[2-6]|7\\d?)|3(?:[01378]|2\\d)|4(?:[024]|10?|3[15]?)|69|7[014])|2(?:17|5(?:[0-36-8]|4\\d?)|69|70)|3(?:17|2(?:[0237]\\d?|[14-689])|34|6[289]|7[01]|81)|4(?:17|2(?:[012]|7\\d?)|4(?:[06]|1\\d?)|5(?:[01357]|[25]\\d?)|69|7[01])|5(?:17|2(?:[0459]|[23678]\\d?)|69|7[01])|6(?:17|2(?:5|6\\d?)|38|42|69|7[01])|7(?:17|2(?:[569]|[234]\\d?)|3(?:0\\d?|[13])|6[89]|7[01]))\\d{4}",
+,,,"61221234"],[,,"(?:60|8[125])\\d{7}",,,,"811234567",,,[9]],[,,,,,,,,,[-1]],[,,"8701\\d{5}",,,,"870123456",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"8(?:3\\d{2}|86)\\d{5}",,,,"88612345"],"NA",264,"00","0",,,"0",,,,[[,"(8\\d)(\\d{3})(\\d{4})","$1 $2 $3",["8[1235]"],"0$1"],[,"(6\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["6"],"0$1"],[,"(88)(\\d{3})(\\d{3})","$1 $2 $3",["88"],"0$1"],[,"(870)(\\d{3})(\\d{3})","$1 $2 $3",["870"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],
+NC:[,[,,"[2-57-9]\\d{5}",,,,,,,[6]],[,,"(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}",,,,"201234"],[,,"(?:5[0-4]|[79]\\d|8[0-79])\\d{4}",,,,"751234"],[,,,,,,,,,[-1]],[,,"36\\d{4}",,,,"366711"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NC",687,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3",["[2-46-9]|5[0-4]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NE:[,[,,"[0289]\\d{7}",,,,,,,[8]],[,,"2(?:0(?:20|3[1-7]|4[134]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}",
+,,,"20201234"],[,,"(?:8[089]|9\\d)\\d{6}",,,,"93123456"],[,,"08\\d{6}",,,,"08123456"],[,,"09\\d{6}",,,,"09123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NE",227,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[289]|09"]],[,"(08)(\\d{3})(\\d{3})","$1 $2 $3",["08"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,,"[13]\\d{5}",,,,,,,[6],[5]],[,,"(?:1(?:06|17|28|39)|3[012]\\d)\\d{3}",,,,"106609",,,,[5]],[,,"3[58]\\d{4}",,,,"381234",,,,[5]],[,
+,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NF",672,"00",,,,,,,,[[,"(\\d{2})(\\d{4})","$1 $2",["1"]],[,"(\\d)(\\d{5})","$1 $2",["3"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,"[1-6]\\d{5,8}|9\\d{5,9}|[78]\\d{5,13}",,,,,,,[7,8,10,11,12,13,14],[5,6]],[,,"[12]\\d{6,7}|9(?:0[3-9]|[1-9]\\d)\\d{5}|(?:3\\d|4[023568]|5[02368]|6[02-469]|7[4-69]|8[2-9])\\d{6}|(?:4[47]|5[14579]|6[1578]|7[0-357])\\d{5,6}|(?:78|41)\\d{5}",,,,"12345678",,
+,[7,8],[5,6]],[,,"(?:1(?:7[34]\\d|8(?:04|[124579]\\d|8[0-3])|95\\d)|287[0-7]|3(?:18[1-8]|88[0-7]|9(?:8[5-9]|6[1-5]))|4(?:28[0-2]|6(?:7[1-9]|8[02-47])|88[0-2])|5(?:2(?:7[7-9]|8\\d)|38[1-79]|48[0-7]|68[4-7])|6(?:2(?:7[7-9]|8\\d)|4(?:3[7-9]|[68][129]|7[04-69]|9[1-8])|58[0-2]|98[7-9])|7(?:38[0-7]|69[1-8]|78[2-4])|8(?:28[3-9]|38[0-2]|4(?:2[12]|3[147-9]|5[346]|7[4-9]|8[014-689]|90)|58[1-8]|78[2-9]|88[5-7])|98[07]\\d)\\d{4}|(?:70(?:[1-689]\\d|7[0-3])|8(?:0(?:1[01]|[2-9]\\d)|1(?:[0-8]\\d|9[01]))|90[235-9]\\d)\\d{6}",
+,,,"8021234567",,,[8,10]],[,,"800\\d{7,11}",,,,"80017591759",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NG",234,"009","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-6]|7(?:[1-79]|0[1-9])|8[2-9]"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["70|8[01]|90[235-9]"],"0$1"],[,"([78]00)(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]00"],"0$1"],[,"([78]00)(\\d{5})(\\d{5,6})","$1 $2 $3",
+["[78]00"],"0$1"],[,"(78)(\\d{2})(\\d{3})","$1 $2 $3",["78"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"700\\d{7,11}",,,,"7001234567",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,"[12578]\\d{7}",,,,,,,[8]],[,,"2\\d{7}",,,,"21234567"],[,,"5(?:5[0-7]\\d{5}|[78]\\d{6})|7[5-8]\\d{6}|8\\d{7}",,,,"81234567"],[,,"1800\\d{4}",,,,"18001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NI",505,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,
+,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,"1\\d{4,8}|[2-7]\\d{8}|[89]\\d{6,9}",,,,,,,[5,6,7,8,9,10]],[,,"(?:1[0135-8]|2[02-69]|3[0-68]|4[0135-9]|[57]\\d|8[478])\\d{7}",,,,"101234567",,,[9]],[,,"6[1-58]\\d{7}",,,,"612345678",,,[9]],[,,"800\\d{4,7}",,,,"8001234",,,[7,8,9,10]],[,,"90[069]\\d{4,7}",,,,"9061234",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:6760|85\\d{2})\\d{5}",,,,"851234567",,,[9]],"NL",31,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[4578]"],
+"0$1"],[,"([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],[,"(6)(\\d{8})","$1 $2",["6[0-57-9]"],"0$1"],[,"(66)(\\d{7})","$1 $2",["66"],"0$1"],[,"(14)(\\d{3,4})","$1 $2",["14"],"$1"],[,"([89]0\\d)(\\d{4,7})","$1 $2",["80|9"],"0$1"]],,[,,"66\\d{7}",,,,"662345678",,,[9]],,,[,,"14\\d{3,4}",,,,"14123",,,[5,6]],[,,"140(?:1(?:[035]|[16-8]\\d)|2(?:[0346]|[259]\\d)|3(?:[03568]|[124]\\d)|4(?:[0356]|[17-9]\\d)|5(?:[0358]|[124679]\\d)|7\\d|8[458])",,,,"14020",,,[5,
+6]],,,[,,,,,,,,,[-1]]],NO:[,[,,"0\\d{4}|[2-9]\\d{7}",,,,,,,[5,8]],[,,"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}",,,,"21234567",,,[8]],[,,"(?:4[015-8]|5[89]|87|9\\d)\\d{6}",,,,"40612345",,,[8]],[,,"80[01]\\d{5}",,,,"80012345",,,[8]],[,,"82[09]\\d{5}",,,,"82012345",,,[8]],[,,"810(?:0[0-6]|[2-8]\\d)\\d{3}",,,,"81021234",,,[8]],[,,"880\\d{5}",,,,"88012345",,,[8]],[,,"85[0-5]\\d{5}",,,,"85012345",,,[8]],"NO",47,"00",,,,,,,,[[,"([489]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[489]"]],[,"([235-7]\\d)(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4",["[235-7]"]]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,"0\\d{4}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}",,,,"01234"],,,[,,"81[23]\\d{5}",,,,"81212345",,,[8]]],NP:[,[,,"[1-8]\\d{7}|9(?:[1-69]\\d{6,8}|7[2-6]\\d{5,7}|8\\d{8})",,,,,,,[8,10],[6,7]],[,,"(?:1[0-6]\\d|2[13-79][2-6]|3[135-8][2-6]|4[146-9][2-6]|5[135-7][2-6]|6[13-9][2-6]|7[15-9][2-6]|8[1-46-9][2-6]|9[1-79][2-6])\\d{5}",,,,"14567890",,,[8],[6,7]],[,,"9(?:6[013]|7[245]|8[0-24-6])\\d{7}",,,,"9841234567",,,[10]],[,,,,,,,,,[-1]],[,,,,,
+,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NP",977,"00","0",,,"0",,,,[[,"(1)(\\d{7})","$1-$2",["1[2-6]"],"0$1"],[,"(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-69]|7[15-9])"],"0$1"],[,"(9\\d{2})(\\d{7})","$1-$2",["9(?:6[013]|7[245]|8)"],"$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,"[458]\\d{6}",,,,,,,[7]],[,,"(?:444|888)\\d{4}",,,,"4441234"],[,,"55[5-9]\\d{4}",,,,"5551234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,
+,,,,,,,,[-1]],"NR",674,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NU:[,[,,"[1-5]\\d{3}",,,,,,,[4]],[,,"[34]\\d{3}",,,,"4002"],[,,"[125]\\d{3}",,,,"1234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"NU",683,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NZ:[,[,,"6[235-9]\\d{6}|[2-57-9]\\d{7,9}",,,,,,,[8,9,10],[7]],[,,"(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{6}|24099\\d{3}",
+,,,"32345678",,,[8],[7]],[,,"2(?:[028]\\d{7,8}|1(?:[03]\\d{5,7}|[12457]\\d{5,6}|[689]\\d{5})|[79]\\d{7})",,,,"211234567"],[,,"508\\d{6,7}|80\\d{6,8}",,,,"800123456"],[,,"90\\d{6,7}",,,,"900123456",,,[8,9]],[,,,,,,,,,[-1]],[,,"70\\d{7}",,,,"701234567",,,[9]],[,,,,,,,,,[-1]],"NZ",64,"0(?:0|161)","0",,,"0",,"00",,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["240|[346]|7[2-57-9]|9[1-9]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["21"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3",["2(?:1[1-9]|[69]|7[0-35-9])|70|86"],
+"0$1"],[,"(2\\d)(\\d{3,4})(\\d{4})","$1 $2 $3",["2[028]"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["90"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:10|74)|5|[89]0"],"0$1"]],,[,,"[28]6\\d{6,7}",,,,"26123456",,,[8,9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],OM:[,[,,"(?:5|[279]\\d)\\d{6}|800\\d{5,6}",,,,,,,[7,8,9]],[,,"2[2-6]\\d{6}",,,,"23123456",,,[8]],[,,"7[19]\\d{6}|9(?:0[1-9]|[1-9]\\d)\\d{5}",,,,"92123456",,,[8]],[,,"8007\\d{4,5}|500\\d{4}",,,,"80071234"],[,,"900\\d{5}",
+,,,"90012345",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"OM",968,"00",,,,,,,,[[,"(2\\d)(\\d{6})","$1 $2",["2"]],[,"([79]\\d{3})(\\d{4})","$1 $2",["[79]"]],[,"([58]00)(\\d{4,6})","$1 $2",["[58]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,"[1-9]\\d{6,7}",,,,,,,[7,8]],[,,"(?:1(?:0[0-8]|1[49]|2[37]|3[0137]|4[147]|5[05]|6[58]|7[0167]|8[58]|9[139])|2(?:[0235679]\\d|1[0-7]|4[04-9]|8[028])|3(?:[09]\\d|1[014-7]|2[0-3]|3[03]|4[03-57]|55|6[068]|7[06-8]|8[06-9])|4(?:3[013-69]|4\\d|7[0-589])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-267]|3[06]|[469]0|5[06-9]|7[0-24-79]|8[7-9])|8(?:09|[34]\\d|5[0134]|8[02])|9(?:0[6-9]|1[016-8]|2[036-8]|3[3679]|40|5[0489]|6[06-9]|7[046-9]|8[36-8]|9[1-9]))\\d{4}",
+,,,"2001234",,,[7]],[,,"(?:1[16]1|21[89]|8(?:1[01]|7[23]))\\d{4}|6(?:[024-9]\\d|1[0-5]|3[0-24-9])\\d{5}",,,,"60012345"],[,,"80[09]\\d{4}",,,,"8001234",,,[7]],[,,"(?:779|8(?:55|60|7[78])|9(?:00|81))\\d{4}",,,,"8601234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PA",507,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1-$2",["[1-57-9]"]],[,"(\\d{4})(\\d{4})","$1-$2",["6"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,"[14-9]\\d{7,8}",,,,,,,[8,9],[6,7]],[,,"(?:1\\d|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])\\d{6}",
+,,,"11234567",,,[8],[6,7]],[,,"9\\d{8}",,,,"912345678",,,[9]],[,,"800\\d{5}",,,,"80012345",,,[8]],[,,"805\\d{5}",,,,"80512345",,,[8]],[,,"801\\d{5}",,,,"80112345",,,[8]],[,,"80[24]\\d{5}",,,,"80212345",,,[8]],[,,,,,,,,,[-1]],"PE",51,"19(?:1[124]|77|90)00","0"," Anexo ",,"0",,,,[[,"(1)(\\d{7})","$1 $2",["1"],"(0$1)"],[,"([4-8]\\d)(\\d{6})","$1 $2",["[4-7]|8[2-4]"],"(0$1)"],[,"(\\d{3})(\\d{5})","$1 $2",["80"],"(0$1)"],[,"(9\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,
+,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,"4\\d{5,7}|8\\d{7}",,,,,,,[6,8]],[,,"4(?:[09][45689]\\d|4)\\d{4}",,,,"40412345"],[,,"8[79]\\d{6}",,,,"87123456",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PF",689,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[09]|8[79]"]],[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["44"]]],,[,,,,,,,,,[-1]],,,[,,"44\\d{4}",,,,"441234",,,[6]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PG:[,[,,"[1-9]\\d{6,7}",,
+,,,,,[7,8]],[,,"(?:3[0-2]\\d|4[257]\\d|5[34]\\d|64[1-9]|77(?:[0-24]\\d|30)|85[02-46-9]|9[78]\\d)\\d{4}",,,,"3123456",,,[7]],[,,"7(?:[0-689]\\d|75)\\d{5}",,,,"70123456",,,[8]],[,,"180\\d{4}",,,,"1801234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"2(?:0[0-47]|7[568])\\d{4}",,,,"2751234",,,[7]],"PG",675,"140[1-3]|00",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1 $2",["[13-689]|27"]],[,"(\\d{4})(\\d{4})","$1 $2",["20|7"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,
+[,,"2\\d{5,7}|[3-9]\\d{7,9}|1800\\d{7,9}",,,,,,,[6,8,9,10,11,12,13],[5,7]],[,,"2\\d{5}(?:\\d{2})?|(?:3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\d{7}|88(?:22\\d{6}|42\\d{4})",,,,"21234567",,,[6,8,9,10],[5,7]],[,,"(?:81[37]|9(?:0[5-9]|1[024-9]|2[0-35-9]|3[02-9]|4[235-9]|5[056]|6[5-7]|7[34-79]|89|9[4-9]))\\d{7}",,,,"9051234567",,,[10]],[,,"1800\\d{7,9}",,,,"180012345678",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PH",63,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})",
+"$1 $2 $3",["2"],"(0$1)"],[,"(2)(\\d{5})","$1 $2",["2"],"(0$1)"],[,"(\\d{4})(\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],[,"(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],[,"([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[3-8]"],"(0$1)"],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["81|9"],
+"0$1"],[,"(1800)(\\d{3})(\\d{4})","$1 $2 $3",["1"]],[,"(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,"1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))",,,,,,,[8,9,10,11,12],[6,7]],[,,"(?:21|42)[2-9]\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}|58[126]\\d{7}",
+,,,"2123456789",,,[9,10],[6,7,8]],[,,"3(?:[014]\\d|2[0-5]|3[0-7]|55|64)\\d{7}",,,,"3012345678",,,[10]],[,,"800\\d{5}",,,,"80012345",,,[8]],[,,"900\\d{5}",,,,"90012345",,,[8]],[,,,,,,,,,[-1]],[,,"122\\d{6}",,,,"122044444",,,[9]],[,,,,,,,,,[-1]],"PK",92,"00","0",,,"0",,,,[[,"(\\d{2})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)11","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)111"],"(0$1)"],
+[,"(\\d{3})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["2[349]|45|54|60|72|8[2-5]|9[2-9]","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d1","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d11","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d111"],"(0$1)"],[,"(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],[,"(\\d{3})(\\d{6,7})","$1 $2",["2[349]|45|5(?:4|8[12])|60|72|8[2-5]|9[2-9]","(?:2[349]|45|5(?:4|8[12])|60|72|8[2-5]|9[2-9])\\d[2-9]"],"(0$1)"],[,"(3\\d{2})(\\d{7})","$1 $2",
+["3"],"0$1"],[,"(1\\d{3})(\\d{5,6})","$1 $2",["1"],"$1"],[,"(586\\d{2})(\\d{5})","$1 $2",["586"],"(0$1)"],[,"([89]00)(\\d{3})(\\d{2})","$1 $2 $3",["[89]00"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}",,,,"21111825888",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,"[12]\\d{6,8}|[3-57-9]\\d{8}|6\\d{5,8}",
+,,,,,,[6,7,8,9]],[,,"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])\\d{7}|[12]2\\d{5}",,,,"123456789",,,[7,9]],[,,"(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}",,,,"512345678",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"70\\d{7}",,,,"701234567",,,[9]],[,,"801\\d{6}",,,,"801234567",,,[9]],[,,,,,,,,,[-1]],[,,"39\\d{7}",,,,"391234567",,,[9]],"PL",48,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["26|39|45|5[0137]|6[0469]|7[02389]|8[08]"]],[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4",["[14]|2[0-57-9]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]"]],[,"(\\d{2})(\\d{1})(\\d{4})","$1 $2 $3",["[12]2"]],[,"(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3",["64"]],[,"(\\d{3})(\\d{3})","$1 $2",["64"]]],,[,,"64\\d{4,7}",,,,"641234567"],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PM:[,[,,"[45]\\d{5}",,,,,,,[6]],[,,"41\\d{4}",,,,"411234"],[,,"(?:40|55)\\d{4}",,,,"551234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PM",508,"00","0",,
+,"0",,,,[[,"([45]\\d)(\\d{2})(\\d{2})","$1 $2 $3",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,"[5789]\\d{9}",,,,,,,[10],[7]],[,,"(?:787|939)[2-9]\\d{6}",,,,"7872345678",,,,[7]],[,,"(?:787|939)[2-9]\\d{6}",,,,"7872345678",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"PR",1,"011","1",,,"1",,,1,,,[,,,,,,,,,[-1]],
+,"787|939",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,"1\\d{9}|[24589]\\d{7,8}",,,,,,,[8,9,10],[7]],[,,"(?:22[234789]|42[45]|82[01458]|92[369])\\d{5}",,,,"22234567",,,[8],[7]],[,,"5[69]\\d{7}",,,,"599123456",,,[9]],[,,"1800\\d{6}",,,,"1800123456",,,[10]],[,,,,,,,,,[-1]],[,,"1700\\d{6}",,,,"1700123456",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PS",970,"00","0",,,"0",,,,[[,"([2489])(2\\d{2})(\\d{4})","$1 $2 $3",["[2489]"],"0$1"],[,"(5[69]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["5"],"0$1"],
+[,"(1[78]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"],"$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,"[2-46-9]\\d{8}",,,,,,,[9]],[,,"2(?:[12]\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\d{6}",,,,"212345678"],[,,"9(?:[1236]\\d{2}|480)\\d{5}",,,,"912345678"],[,,"80[02]\\d{6}",,,,"800123456"],[,,"6(?:0[178]|4[68])\\d{6}|76(?:0[1-57]|1[2-47]|2[237])\\d{5}",,,,"760123456"],[,,"80(?:8\\d|9[1579])\\d{5}",,,,"808123456"],[,,"884[0-4689]\\d{5}",,,,"884123456"],
+[,,"30\\d{7}",,,,"301234567"],"PT",351,"00",,,,,,,,[[,"(2\\d)(\\d{3})(\\d{4})","$1 $2 $3",["2[12]"]],[,"([2-46-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2[3-9]|[346-9]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"7(?:0(?:7\\d|8[17]))\\d{5}",,,,"707123456"],,,[,,"600\\d{6}",,,,"600110000"]],PW:[,[,,"[2-8]\\d{6}",,,,,,,[7]],[,,"2552255|(?:277|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76))\\d{4}",,,,"2771234"],[,,"(?:6[234689]0|77[45789])\\d{4}",,,,"6201234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"PW",680,"01[12]",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,"5[0-5]\\d{4,7}|[2-46-9]\\d{5,8}",,,,,,,[6,7,8,9],[5]],[,,"(?:[26]1|3[289]|4[124678]|7[123]|8[1236])\\d{5,7}|(?:2(?:2[4568]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51)|4(?:18|2[45]|3[12]|5[13]|64|71|9[1-47])|5(?:[1-4]\\d|5[0234])|6(?:3[1-3]|44|7[1-4678])|7(?:17|4[0-4]|6[1-578]|75|8[0-8])|858)\\d{5,6}",,,,"212345678",,,[7,
+8,9],[5,6]],[,,"9(?:6[12]|[78][1-6]|9[1-5])\\d{6}",,,,"961456789",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"8700[0-4]\\d{4}",,,,"870012345",,,[9]],"PY",595,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{5})","$1 $2",["(?:[26]1|3[289]|4[124678]|7[123]|8[1236])"],"(0$1)"],[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["(?:[26]1|3[289]|4[124678]|7[123]|8[1236])"],"(0$1)"],[,"(\\d{3})(\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],[,"(\\d{3})(\\d{6})","$1 $2",["9[1-9]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})",
+"$1 $2 $3",["8700"]],[,"(\\d{3})(\\d{4,5})","$1 $2",["[2-8][1-9]"],"(0$1)"],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[2-8][1-9]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"[2-9]0\\d{4,7}",,,,"201234567"],,,[,,,,,,,,,[-1]]],QA:[,[,,"[2-8]\\d{6,7}",,,,,,,[7,8]],[,,"4[04]\\d{6}",,,,"44123456",,,[8]],[,,"[3567]\\d{7}",,,,"33123456",,,[8]],[,,"800\\d{4}",,,,"8001234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"QA",974,"00",,,,,,,,[[,"([28]\\d{2})(\\d{4})","$1 $2",["[28]"]],
+[,"([3-7]\\d{3})(\\d{4})","$1 $2",["[3-7]"]]],,[,,"2(?:[12]\\d|61)\\d{4}",,,,"2123456",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,"[268]\\d{8}",,,,,,,[9]],[,,"262\\d{6}",,,,"262161234"],[,,"69(?:2\\d{2}|3(?:0[0-46]|1[013]|2[0-2]|3[039]|4[0-7]|5[05]|6[06]|7[07]|8[0-38]|9[0-479]))\\d{4}",,,,"692123456"],[,,"80\\d{7}",,,,"801234567"],[,,"89[1-37-9]\\d{6}",,,,"891123456"],[,,"8(?:1[019]|2[0156]|84|90)\\d{6}",,,,"810123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"RE",262,"00","0",,,
+"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1"]],,[,,,,,,,,,[-1]],1,"262|69|8",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,"[23]\\d{5,8}|[7-9]\\d{8}",,,,,,,[6,9]],[,,"2(?:1(?:\\d{7}|9\\d{3})|[3-6](?:\\d{7}|\\d9\\d{2}))|3(?:1\\d{4}(?:\\d{3})?|[3-6]\\d{7})",,,,"211234567"],[,,"7(?:[0-8]\\d{2}|99\\d)\\d{5}",,,,"712345678",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"90[036]\\d{6}",,,,"900123456",,,[9]],[,,"801\\d{6}",,,,"801123456",,,[9]],[,,,,,,,,,[-1]],[,,
+,,,,,,,[-1]],"RO",40,"00","0"," int ",,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[23]1"],"0$1"],[,"(\\d{2})(\\d{4})","$1 $2",["[23]1"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23][3-7]|[7-9]"],"0$1"],[,"(2\\d{2})(\\d{3})","$1 $2",["2[3-6]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"37\\d{7}",,,,"372123456",,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,"[126-9]\\d{4,11}|3(?:[0-79]\\d{3,10}|8[2-9]\\d{2,9})",,,,,,,[6,7,8,9,10,11,12],[5]],[,,"(?:1(?:[02-9][2-9]|1[1-9])\\d|2(?:[0-24-7][2-9]\\d|[389](?:0[2-9]|[2-9]\\d))|3(?:[0-8][2-9]\\d|9(?:[2-9]\\d|0[2-9])))\\d{3,8}",
+,,,"10234567",,,[7,8,9,10,11,12],[5,6]],[,,"6(?:[0-689]|7\\d)\\d{6,7}",,,,"601234567",,,[8,9,10]],[,,"800\\d{3,9}",,,,"80012345"],[,,"(?:90[0169]|78\\d)\\d{3,7}",,,,"90012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"RS",381,"00","0",,,"0",,,,[[,"([23]\\d{2})(\\d{4,9})","$1 $2",["(?:2[389]|39)0"],"0$1"],[,"([1-3]\\d)(\\d{5,10})","$1 $2",["1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])"],"0$1"],[,"(6\\d)(\\d{6,8})","$1 $2",["6"],"0$1"],[,"([89]\\d{2})(\\d{3,9})","$1 $2",["[89]"],"0$1"],[,"(7[26])(\\d{4,9})",
+"$1 $2",["7[26]"],"0$1"],[,"(7[08]\\d)(\\d{4,9})","$1 $2",["7[08]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"7[06]\\d{4,10}",,,,"700123456"],,,[,,,,,,,,,[-1]]],RU:[,[,,"[3489]\\d{9}",,,,,,,[10]],[,,"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}",,,,"3011234567"],[,,"9\\d{9}",,,,"9123456789"],[,,"80[04]\\d{7}",,,,"8001234567"],[,,"80[39]\\d{7}",,,,"8091234567"],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"RU",7,"810","8",,,"8",,"8~10",,[[,"(\\d{3})(\\d{2})(\\d{2})","$1-$2-$3",["[1-79]"],"$1",,1],[,"([3489]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[34689]"],"8 ($1)",,1],[,"(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",,1]],[[,"([3489]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[34689]"],"8 ($1)",,1],[,"(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"],"8 ($1)",,1]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,"[027-9]\\d{7,8}",
+,,,,,,[8,9]],[,,"2[258]\\d{7}|06\\d{6}",,,,"250123456"],[,,"7[238]\\d{7}",,,,"720123456",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"900\\d{6}",,,,"900123456",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"RW",250,"00","0",,,"0",,,,[[,"(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"],"$1"],[,"([7-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],[,"(0\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,"1\\d{7,8}|(?:[2-467]|92)\\d{7}|5\\d{8}|8\\d{9}",
+,,,,,,[8,9,10],[7]],[,,"11\\d{7}|1?(?:2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}",,,,"112345678",,,[8,9],[7]],[,,"(?:5(?:[013-689]\\d|7[0-36-8])|811\\d)\\d{6}",,,,"512345678",,,[9,10]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,,,,,,,,[-1]],[,,"92[05]\\d{6}",,,,"920012345",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SA",966,"00","0",,,"0",,,,[[,"([1-467])(\\d{3})(\\d{4})","$1 $2 $3",["[1-467]"],"0$1"],[,"(1\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1[1-467]"],"0$1"],[,"(5\\d)(\\d{3})(\\d{4})","$1 $2 $3",["5"],
+"0$1"],[,"(92\\d{2})(\\d{5})","$1 $2",["92"],"$1"],[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"],"$1"],[,"(811)(\\d{3})(\\d{3,4})","$1 $2 $3",["81"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SB:[,[,,"[1-9]\\d{4,6}",,,,,,,[5,7]],[,,"(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}",,,,"40123",,,[5]],[,,"48\\d{3}|7(?:30|[46-8]\\d|5[025-9]|9[0-5])\\d{4}|8[4-9]\\d{5}|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8])\\d{4}",,,,"7421234"],[,,"1[38]\\d{3}",
+,,,"18123",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"5[12]\\d{3}",,,,"51123",,,[5]],"SB",677,"0[01]",,,,,,,,[[,"(\\d{2})(\\d{5})","$1 $2",["[7-9]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,"[24689]\\d{5,6}",,,,,,,[7]],[,,"4[2-46]\\d{5}",,,,"4217123"],[,,"2[5-8]\\d{5}",,,,"2510123"],[,,"8000\\d{3}",,,,"8000000"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:64\\d|971)\\d{4}",,,,"6412345"],"SC",248,"0(?:[02]|10?)",,,,,,"00",,[[,"(\\d)(\\d{3})(\\d{3})",
+"$1 $2 $3",["[246]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,"[19]\\d{8}",,,,,,,[9]],[,,"1(?:[125]\\d|8[3567])\\d{6}",,,,"121231234"],[,,"9[0-3569]\\d{7}",,,,"911231234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SD",249,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,"[1-35-9]\\d{5,11}|4\\d{6,8}",,,,,,,[6,7,8,9,10,12]],[,
+,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0[1-9]\\d{4,6}|(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\d{5,6})",
+,,,"8123456",,,[7,8,9]],[,,"7[02369]\\d{7}",,,,"701234567",,,[9]],[,,"20\\d{4,7}",,,,"20123456",,,[6,7,8,9]],[,,"649\\d{6}|9(?:00|39|44)[1-8]\\d{3,6}",,,,"9001234567",,,[7,8,9,10]],[,,"77(?:0\\d{3}(?:\\d{3})?|[1-7]\\d{6})",,,,"771234567",,,[6,9]],[,,"75[1-8]\\d{6}",,,,"751234567",,,[9]],[,,,,,,,,,[-1]],"SE",46,"00","0",,,"0",,,,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1-$2 $3 $4",["8"],"0$1"],[,"([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90"],"0$1"],
+[,"([1-469]\\d)(\\d{3})(\\d{2})","$1-$2 $3",["1[136]|2[136]|3[356]|4[0246]|6[03]|90"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])"],"0$1"],[,"(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])"],"0$1"],[,"(7\\d)(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4",["7"],"0$1"],[,"(77)(\\d{2})(\\d{2})",
+"$1-$2$3",["7"],"0$1"],[,"(20)(\\d{2,3})(\\d{2})","$1-$2 $3",["20"],"0$1"],[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4",["9[034]"],"0$1"],[,"(9[034]\\d)(\\d{4})","$1-$2",["9[034]"],"0$1"],[,"(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4 $5",["25[245]|67[3-6]"],"0$1"]],[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4",["8"]],[,"([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90"]],[,"([1-469]\\d)(\\d{3})(\\d{2})","$1 $2 $3",["1[136]|2[136]|3[356]|4[0246]|6[03]|90"]],
+[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])"]],[,"(\\d{3})(\\d{2,3})(\\d{2})","$1 $2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])"]],[,"(7\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7"]],[,"(77)(\\d{2})(\\d{2})","$1 $2 $3",["7"]],[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3",["20"]],[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})",
+"$1 $2 $3 $4",["9[034]"]],[,"(9[034]\\d)(\\d{4})","$1 $2",["9[034]"]],[,"(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["25[245]|67[3-6]"]]],[,,"74[02-9]\\d{6}",,,,"740123456",,,[9]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,"(?:25[245]|67[3-6])\\d{9}",,,,"254123456789",,,[12]]],SG:[,[,,"[36]\\d{7}|[17-9]\\d{7,10}",,,,,,,[8,10,11]],[,,"6[1-9]\\d{6}",,,,"61234567",,,[8]],[,,"(?:8[1-8]|9[0-8])\\d{6}",,,,"81234567",,,[8]],[,,"1?800\\d{7}",,,,"18001234567",,,[10,11]],[,,"1900\\d{7}",,,,"19001234567",
+,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"3[12]\\d{6}",,,,"31234567",,,[8]],"SG",65,"0[0-3]\\d",,,,,,,,[[,"([3689]\\d{3})(\\d{4})","$1 $2",["[369]|8[1-9]"]],[,"(1[89]00)(\\d{3})(\\d{4})","$1 $2 $3",["1[89]"]],[,"(7000)(\\d{4})(\\d{3})","$1 $2 $3",["70"]],[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"7000\\d{7}",,,,"70001234567",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,"[256]\\d{4}",,,,,,,[4,5]],[,,"2(?:[0-57-9]\\d|6[4-9])\\d{2}",,,,"22158"],[,,"[56]\\d{4}",,,,"51234",
+,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"262\\d{2}",,,,"26212",,,[5]],"SH",290,"00",,,,,,,,,,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,"[1-7]\\d{6,7}|[89]\\d{4,7}",,,,,,,[5,6,7,8]],[,,"(?:1\\d|[25][2-8]|3[24-8]|4[24-8]|7[3-8])\\d{6}",,,,"11234567",,,[8],[7]],[,,"(?:[37][01]\\d|4[0139]\\d|51\\d|6(?:[48]\\d|9[69]))\\d{5}",,,,"31234567",,,[8]],[,,"80\\d{4,6}",,,,"80123456",,,[6,7,8]],[,,"90\\d{4,6}|89[1-3]\\d{2,5}",,,,"90123456"],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"(?:59|8[1-3])\\d{6}",,,,"59012345",,,[8]],"SI",386,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[12]|3[24-8]|4[24-8]|5[2-8]|7[3-8]"],"(0$1)"],[,"([3-7]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],[,"([89][09])(\\d{3,6})","$1 $2",["[89][09]"],"0$1"],[,"([58]\\d{2})(\\d{5})","$1 $2",["59|8[1-3]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,"0\\d{4}|[45789]\\d{7}",,,,,,,[5,8]],[,
+,"79\\d{6}",,,,"79123456",,,[8]],[,,"(?:4[015-8]|5[89]|9\\d)\\d{6}",,,,"41234567",,,[8]],[,,"80[01]\\d{5}",,,,"80012345",,,[8]],[,,"82[09]\\d{5}",,,,"82012345",,,[8]],[,,"810(?:0[0-6]|[2-8]\\d)\\d{3}",,,,"81021234",,,[8]],[,,"880\\d{5}",,,,"88012345",,,[8]],[,,"85[0-5]\\d{5}",,,,"85012345",,,[8]],"SJ",47,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"0\\d{4}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}",,,,"01234"],,,[,,"81[23]\\d{5}",,,,"81212345",,,[8]]],SK:[,[,,"(?:[2-68]\\d{5,8}|9\\d{6,8})",,,,,
+,,[6,7,9]],[,,"2(?:1(?:6\\d{3,4}|7\\d{3})|[2-9]\\d{7})|[3-5][1-8](?:1(?:6\\d{2,3}|7\\d{3})|\\d{7})",,,,"221234567"],[,,"9(?:0(?:[1-8]\\d|9[1-9])|(?:1[0-24-9]|[45]\\d)\\d)\\d{5}",,,,"912123456",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"9(?:[78]\\d{7}|00\\d{6})",,,,"900123456",,,[9]],[,,"8[5-9]\\d{7}",,,,"850123456",,,[9]],[,,,,,,,,,[-1]],[,,"6(?:02|5[0-4]|9[0-6])\\d{6}",,,,"690123456",,,[9]],"SK",421,"00","0",,,"0",,,,[[,"(2)(1[67])(\\d{3,4})","$1 $2 $3",["21[67]"],"0$1"],[,"([3-5]\\d)(1[67])(\\d{2,3})",
+"$1 $2 $3",["[3-5]"],"0$1"],[,"(2)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"],"0$1"],[,"([3-5]\\d)(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"],[,"([689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"],"0$1"],[,"(9090)(\\d{3})","$1 $2",["9090"],"0$1"]],,[,,"9090\\d{3}",,,,"9090123",,,[7]],,,[,,"(?:602|8(?:00|[5-9]\\d)|9(?:00|[78]\\d))\\d{6}|9090\\d{3}",,,,"800123456",,,[7,9]],[,,"96\\d{7}",,,,"961234567",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,"[2-9]\\d{7}",,,,,,,[8],[6]],[,,"[235]2[2-4][2-9]\\d{4}",
+,,,"22221234",,,,[6]],[,,"(?:2[15]|3[03-5]|4[04]|5[05]|66|7[6-9]|8[08]|99)\\d{6}",,,,"25123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SL",232,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",,"(0$1)"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,"[05-7]\\d{7,9}",,,,,,,[8,10],[6]],[,,"0549(?:8[0157-9]|9\\d)\\d{4}",,,,"0549886377",,,[10],[6]],[,,"6[16]\\d{6}",,,,"66661212",,,[8]],[,,,,,,,,,[-1]],[,,"7[178]\\d{6}",,,,"71123456",
+,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"5[158]\\d{6}",,,,"58001110",,,[8]],"SM",378,"00",,,,"(?:0549)?([89]\\d{5})","0549$1",,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],[,"(0549)(\\d{6})","$1 $2",["0"]],[,"(\\d{6})","0549 $1",["[89]"]]],[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]],[,"(0549)(\\d{6})","($1) $2",["0"]],[,"(\\d{6})","(0549) $1",["[89]"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,"[3789]\\d{8}",,,,,,,[9]],[,
+,"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}",,,,"301012345"],[,,"7(?:[06-8]\\d|21|90)\\d{6}",,,,"701234567"],[,,"800\\d{6}",,,,"800123456"],[,,"88[4689]\\d{6}",,,,"884123456"],[,,"81[02468]\\d{6}",,,,"810123456"],[,,,,,,,,,[-1]],[,,"39[01]\\d{6}|3392\\d{5}|93330\\d{4}",,,,"933301234"],"SN",221,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[379]"]],[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,
+,,[-1]]],SO:[,[,,"[1-9]\\d{5,8}",,,,,,,[6,7,8,9]],[,,"(?:1\\d{1,2}|2[0-79]\\d|3[0-46-8]?\\d|4[0-7]?\\d|59\\d|8[125])\\d{4}",,,,"4012345",,,[6,7]],[,,"(?:15\\d|2(?:4\\d|8)|3[59]\\d{2}|4[89]\\d{2}|6[1-9]?\\d{2}|7(?:[1-8]\\d|9\\d{1,2})|8[08]\\d{2}|9(?:0[67]|[2-9])\\d)\\d{5}",,,,"71123456",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SO",252,"00","0",,,"0",,,,[[,"(\\d{6})","$1",["[134]"]],[,"(\\d)(\\d{6})","$1 $2",["2[0-79]|[13-5]"]],[,"(\\d)(\\d{7})","$1 $2",
+["24|[67]"]],[,"(\\d{2})(\\d{4})","$1 $2",["8[125]"]],[,"(\\d{2})(\\d{5,7})","$1 $2",["15|28|6[1-35-9]|799|9[2-9]"]],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["3[59]|4[89]|6[24-6]|79|8[08]|90"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,"[2-8]\\d{5,6}",,,,,,,[6,7]],[,,"(?:2[1-3]|3[0-7]|4\\d|5[2-58]|68\\d)\\d{4}",,,,"211234"],[,,"(?:7[124-7]|8[1-9])\\d{5}",,,,"7412345",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"56\\d{4}",,,,"561234",
+,,[6]],"SR",597,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1-$2",["[2-4]|5[2-58]"]],[,"(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3",["56"]],[,"(\\d{3})(\\d{4})","$1-$2",["[6-8]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,"[19]\\d{8}",,,,,,,[9]],[,,"18\\d{7}",,,,"181234567"],[,,"(?:12|9[1257])\\d{7}",,,,"977123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SS",211,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"0$1"]],,[,,
+,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,"[29]\\d{6}",,,,,,,[7]],[,,"22\\d{5}",,,,"2221234"],[,,"9(?:0(?:0[5-9]|[1-9]\\d)|[89]\\d{2})\\d{3}",,,,"9812345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ST",239,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,"[267]\\d{7}|[89]\\d{6}(?:\\d{4})?",,,,,,,[7,8,11]],[,,"2[1-6]\\d{6}",,,,"21234567",,,[8]],[,,"[67]\\d{7}",
+,,,"70123456",,,[8]],[,,"800\\d{4}(?:\\d{4})?",,,,"8001234",,,[7,11]],[,,"900\\d{4}(?:\\d{4})?",,,,"9001234",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SV",503,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[267]"]],[,"(\\d{3})(\\d{4})","$1 $2",["[89]"]],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,"[5789]\\d{9}",,,,,,,[10],[7]],[,,"7215(?:4[2-8]|8[239]|9[056])\\d{4}",,,,"7215425678",,,,[7]],[,,"7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}",
+,,,"7215205678",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002123456"],[,,"900[2-9]\\d{6}",,,,"9002123456"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"SX",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"721",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,"[1-59]\\d{7,8}",,,,,,,[8,9],[6,7]],[,,"(?:1(?:1\\d?|4\\d|[2356])|2(?:1\\d?|[235])|3(?:[13]\\d|4)|4[13]|5[1-3])\\d{6}",,,,"112345678",,,,[6,7]],[,,"9(?:22|[3-589]\\d|6[024-9])\\d{6}",
+,,,"944567890",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"SY",963,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",,1],[,"(9\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9"],"0$1",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,"[027]\\d{7}",,,,,,,[8]],[,,"2[2-5]\\d{6}",,,,"22171234"],[,,"7[6-8]\\d{6}",,,,"76123456"],[,,"0800\\d{4}",,,,"08001234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,
+,,,,,,,[-1]],"SZ",268,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[027]"]]],,[,,,,,,,,,[-1]],,,[,,"0800\\d{4}",,,,"08001234"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,"8\\d{3}",,,,,,,[4]],[,,"8\\d{3}",,,,"8999"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TA",290,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,"[5689]\\d{9}",,,,,,,[10],[7]],[,,"649(?:712|9(?:4\\d|50))\\d{4}",,,,"6497121234",,,,[7]],[,
+,"649(?:2(?:3[129]|4[1-7])|3(?:3[1-389]|4[1-8])|4[34][1-3])\\d{4}",,,,"6492311234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,"64971[01]\\d{4}",,,,"6497101234",,,,[7]],"TC",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"649",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,"[2679]\\d{7}",,,,,,,[8]],[,,"22(?:[3789]0|5[0-5]|6[89])\\d{4}",,,,"22501234"],[,,"(?:6[023568]\\d|77\\d|9\\d{2})\\d{5}",
+,,,"63012345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TD",235,"00|16",,,,,,"00",,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,"[29]\\d{7}",,,,,,,[8]],[,,"2(?:2[2-7]|3[23]|44|55|66|77)\\d{5}",,,,"22212345"],[,,"9[0-36-9]\\d{6}",,,,"90112345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TG",228,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2 $3 $4",["[29]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,"[2-9]\\d{7,8}|1\\d{3}(?:\\d{5,6})?",,,,,,,[4,8,9,10]],[,,"(?:2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}",,,,"21234567",,,[8]],[,,"(?:14|6[1-6]|[89]\\d)\\d{7}",,,,"812345678",,,[9]],[,,"1800\\d{6}",,,,"1800123456",,,[10]],[,,"1900\\d{6}",,,,"1900123456",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"6[08]\\d{7}",,,,"601234567",,,[9]],"TH",66,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"],
+"0$1"],[,"([13-9]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["14|[3-9]"],"0$1"],[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"],"$1"]],,[,,,,,,,,,[-1]],,,[,,"1\\d{3}",,,,"1100",,,[4]],[,,"1\\d{3}",,,,"1100",,,[4]],,,[,,,,,,,,,[-1]]],TJ:[,[,,"[3-57-9]\\d{8}",,,,,,,[9],[3,5,7]],[,,"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}",,,,"372123456",,,,[3,5,7]],[,,"(?:41[18]|(?:5[05]|77|88|9[0-35-9])\\d)\\d{6}",,,,"917123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,
+,,,,,,[-1]],"TJ",992,"810","8",,,"8",,"8~10",,[[,"([349]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"],"$1",,1],[,"([457-9]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[148]|[578]|9(?:1[59]|[0235-9])"],"$1",,1],[,"(331700)(\\d)(\\d{2})","$1 $2 $3",["331","3317","33170","331700"],"$1",,1],[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]","3(?:[1245]|3(?:[02-9]|1[0-589]))"],"$1",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TK:[,[,,"[2-47]\\d{3,6}",,,,,,,[4,5,6,7]],[,,"(?:2[2-4]|[34]\\d)\\d{2,5}",
+,,,"3101"],[,,"7[2-4]\\d{2,5}",,,,"7290"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TK",690,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,"[2-489]\\d{6}|7\\d{6,7}",,,,,,,[7,8]],[,,"(?:2[1-5]|3[1-9]|4[1-4])\\d{5}",,,,"2112345",,,[7]],[,,"7[3-8]\\d{6}",,,,"77212345",,,[8]],[,,"80\\d{5}",,,,"8012345",,,[7]],[,,"90\\d{5}",,,,"9012345",,,[7]],[,,,,,,,,,[-1]],[,,"70\\d{5}",,,,"7012345",,,[7]],[,,,,,,,,,[-1]],"TL",670,"00",
+,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-489]|70"]],[,"(\\d{4})(\\d{4})","$1 $2",["7[3-8]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,"[1-6]\\d{7}",,,,,,,[8]],[,,"(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}",,,,"12345678"],[,,"6[1-9]\\d{6}",,,,"66123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TM",993,"810","8",,,"8",,"8~10",,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})",
+"$1 $2-$3-$4",["12"],"(8 $1)"],[,"(\\d{2})(\\d{6})","$1 $2",["6"],"8 $1"],[,"(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4",["13|[2-5]"],"(8 $1)"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,"[2-57-9]\\d{7}",,,,,,,[8]],[,,"3(?:[012]\\d|6[0-4]|91)\\d{5}|7\\d{7}|81200\\d{3}",,,,"71234567"],[,,"(?:[259]\\d|4[0-6])\\d{6}",,,,"20123456"],[,,"8010\\d{4}",,,,"80101234"],[,,"88\\d{6}",,,,"88123456"],[,,"8[12]10\\d{4}",,,,"81101234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TN",216,
+"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,"[02-8]\\d{4,6}",,,,,,,[5,7]],[,,"(?:2\\d|3[1-8]|4[1-4]|[56]0|7[0149]|8[05])\\d{3}",,,,"20123",,,[5]],[,,"(?:7[578]|8[47-9])\\d{5}",,,,"7715123",,,[7]],[,,"0800\\d{3}",,,,"0800222",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TO",676,"00",,,,,,,,[[,"(\\d{2})(\\d{3})","$1-$2",["[1-6]|7[0-4]|8[05]"]],[,"(\\d{3})(\\d{4})","$1 $2",["7[5-9]|8[47-9]"]],
+[,"(\\d{4})(\\d{3})","$1 $2",["0"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,"[2-589]\\d{9}|444\\d{4}",,,,,,,[7,10]],[,,"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}",,,,"2123456789",,,[10]],[,,"5(?:(?:0[1-7]|22|[34]\\d|5[1-59]|9[246])\\d{2}|6161)\\d{5}",,,,"5012345678",,,[10]],[,,"800\\d{7}",,,,"8001234567",,,[10]],[,,"900\\d{7}",,,,"9001234567",,,[10]],[,,,,,,,,,[-1]],[,,
+,,,,,,,[-1]],[,,,,,,,,,[-1]],"TR",90,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|4(?:[0-35-9]|4[0-35-9])"],"(0$1)",,1],[,"(\\d{3})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["5[02-69]"],"0$1",,1],[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["51|[89]"],"0$1",,1],[,"(444)(\\d{1})(\\d{3})","$1 $2 $3",["444"]]],,[,,"512\\d{7}",,,,"5123456789",,,[10]],,,[,,"444\\d{4}",,,,"4441444",,,[7]],[,,"444\\d{4}|850\\d{7}",,,,"4441444"],,,[,,,,,,,,,[-1]]],TT:[,[,,"[589]\\d{9}",,,,,,,[10],
+[7]],[,,"868(?:2(?:01|[23]\\d)|6(?:0[79]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}",,,,"8682211234",,,,[7]],[,,"868(?:2(?:6[6-9]|[789]\\d)|3(?:0[1-9]|1[02-9]|[2-9]\\d)|4[6-9]\\d|6(?:20|78|8\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\d))\\d{4}",,,,"8682911234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"TT",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"868",[,
+,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,"868619\\d{4}",,,,"8686191234",,,,[7]]],TV:[,[,,"[279]\\d{4,6}",,,,,,,[5,6,7]],[,,"2[02-9]\\d{3}",,,,"20123",,,[5]],[,,"(?:70\\d|90)\\d{4}",,,,"901234",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"TV",688,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,"2\\d{6,8}|[3-689]\\d{7,8}|7\\d{7,9}",,,,,,,[7,8,9,10]],[,,"2(?:[235-8]\\d{7}|4\\d{6,7})|[3-8]\\d{7,8}",,,,"221234567",,,[8,9]],
+[,,"9\\d{8}",,,,"912345678",,,[9]],[,,"800\\d{6}",,,,"800123456",,,[9]],[,,"20(?:2|[013-9]\\d{2})\\d{4}",,,,"203123456",,,[7,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"70\\d{8}",,,,"7012345678",,,[10]],"TW",886,"0(?:0[25679]|19)","0","#",,"0",,,,[[,"(20)(\\d)(\\d{4})","$1 $2 $3",["202"],"0$1"],[,"(20)(\\d{3})(\\d{4})","$1 $2 $3",["20[013-9]"],"0$1"],[,"([2-8])(\\d{3,4})(\\d{4})","$1 $2 $3",["2[23-8]|[3-6]|[78][1-9]"],"0$1"],[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["80|9"],"0$1"],[,"(70)(\\d{4})(\\d{4})",
+"$1 $2 $3",["70"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TZ:[,[,,"\\d{9}",,,,,,,[7,9]],[,,"2[2-8]\\d{7}",,,,"222345678"],[,,"(?:6[2-9]|7[13-9])\\d{7}",,,,"621234567",,,[9]],[,,"80[08]\\d{6}",,,,"800123456",,,[9]],[,,"90\\d{7}",,,,"900123456",,,[9]],[,,"8(?:40|6[01])\\d{6}",,,,"840123456",,,[9]],[,,,,,,,,,[-1]],[,,"41\\d{7}",,,,"412345678",,,[9]],"TZ",255,"00[056]","0",,,"0",,,,[[,"([24]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[24]"],"0$1"],[,"([67]\\d{2})(\\d{3})(\\d{3})",
+"$1 $2 $3",["[67]"],"0$1"],[,"([89]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,"(?:8(?:[04]0|6[01])|90\\d)\\d{6}",,,,"800123456",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,"[3-9]\\d{8}",,,,,,,[9],[5,6,7]],[,,"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}",,,,"311234567",,,,[5,6,7]],[,,"(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}",,,,"391234567"],[,,"800\\d{6}",,,,"800123456"],[,,"900[2-49]\\d{5}",,,,"900212345"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"89\\d{7}",,,,"891234567"],
+"UA",380,"00","0",,,"0",,"0~0",,[[,"([3-9]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[38]9|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|7|9[1-9]","[38]9|4(?:[45][0-5]|87)|5(?:0|6(?:3[14-7]|7)|7[37])|6[36-8]|7|9[1-9]"],"0$1"],[,"([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["3[1-8]2|4[13678]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8[0-8]|90","3(?:[1-46-8]2[013-9]|52)|4(?:[1378]2|62[013-9])|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8[0-8]|90"],"0$1"],[,"([3-6]\\d{3})(\\d{5})","$1 $2",["3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])",
+"3(?:5[013-9]|[1-46-8](?:22|[013-9]))|4(?:[137][013-9]|6(?:[013-9]|22)|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6(?:3[02389]|[015689])|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,"\\d{9}",,,,,,,[9],[5,6,7]],[,,"20(?:[0147]\\d{2}|2(?:40|[5-9]\\d)|3(?:0[0-4]|[23]\\d)|5[0-4]\\d|6[035-9]\\d|8[0-2]\\d)\\d{4}|[34]\\d{8}",,,,"312345678",,,,[5,6,7]],[,,"7(?:(?:0[0-7]|[15789]\\d|30|4[0-4])\\d|2(?:[03]\\d|60))\\d{5}",,,,
+"712345678"],[,,"800[123]\\d{5}",,,,"800123456"],[,,"90[123]\\d{6}",,,,"901123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"UG",256,"00[057]","0",,,"0",,,,[[,"(\\d{3})(\\d{6})","$1 $2",["[7-9]|20(?:[013-8]|2[5-9])|4(?:6[45]|[7-9])"],"0$1"],[,"(\\d{2})(\\d{7})","$1 $2",["3|4(?:[1-5]|6[0-36-9])"],"0$1"],[,"(2024)(\\d{5})","$1 $2",["2024"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,"[2-9]\\d{9}",,,,,,,[10],[7]],[,,"(?:2(?:0[1-35-9]|1[02-9]|2[04589]|3[149]|4[08]|5[1-46]|6[0279]|7[026]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[0457]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[0459]))[2-9]\\d{6}",
+,,,"2015550123",,,,[7]],[,,"(?:2(?:0[1-35-9]|1[02-9]|2[04589]|3[149]|4[08]|5[1-46]|6[0279]|7[026]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[16]|5[017]|6[0-279]|78|8[012])|7(?:0[1-46-8]|1[02-9]|2[0457]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[014678]|4[0179]|5[12469]|7[0-3589]|8[0459]))[2-9]\\d{6}",
+,,,"2015550123",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"US",1,"011","1",,,"1",,,1,[[,"(\\d{3})(\\d{4})","$1-$2",,,,1],[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,,,1]],[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3"]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,"[2489]\\d{6,7}",,,,,,,[7,8]],[,,"2\\d{7}|4[2-7]\\d{6}",,
+,,"21231234",,,[8],[7]],[,,"9[1-9]\\d{6}",,,,"94231234",,,[8]],[,,"80[05]\\d{4}",,,,"8001234",,,[7]],[,,"90[0-8]\\d{4}",,,,"9001234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"UY",598,"0(?:1[3-9]\\d|0)","0"," int. ",,"0",,"00",,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]"]],[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["9[1-9]"],"0$1"],[,"(\\d{3})(\\d{4})","$1 $2",["[89]0"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,"[679]\\d{8}",,,,,,,[9],[7]],[,,"(?:6(?:1(?:22|3[124]|4[1-4]|5[123578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d{2}|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[12456]|9[135-8])|1[12]\\d|2(?:22|3[1345789]|4[123579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}",
+,,,"662345678",,,,[7]],[,,"6(?:1(?:2(?:98|2[01])|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:11\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4])|7\\d{2})|5(?:19[01]|2(?:27|9[26])|30\\d|59\\d|7\\d{2})|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|3[79]\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79])|9[0-3]\\d)|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|5\\d|3[01]|7[0-4])|5[67]\\d|6(?:2[0-26]|8\\d)|7\\d{2}))\\d{4}|7(?:0\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|33\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078])|9[4-6]\\d)|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0127]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[05629]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07])))\\d{4}|9[0-57-9]\\d{7}",
+,,,"912345678"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"UZ",998,"810","8",,,"8",,"8~10",,[[,"([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8 $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,"(?:0(?:878\\d{5}|6698\\d{5})|[1589]\\d{5,10}|3(?:[12457-9]\\d{8}|[36]\\d{7,9}))",,,,,,,[6,8,9,10,11]],[,,"06698\\d{5}",,,,"0669812345",,,[10]],[,,"3(?:[12457-9]\\d{8}|6\\d{7,8}|3\\d{7,9})",,,,"3123456789",,,[9,10,11]],[,,"80(?:0\\d{6}|3\\d{3})",
+,,,"800123456",,,[6,9]],[,,"0878\\d{5}|1(?:44|6[346])\\d{6}|89(?:2\\d{3}|4(?:[0-4]\\d{2}|[5-9]\\d{4})|5(?:[0-4]\\d{2}|[5-9]\\d{6})|9\\d{6})",,,,"899123456",,,[6,8,9,10]],[,,"84(?:[08]\\d{6}|[17]\\d{3})",,,,"848123456",,,[6,9]],[,,"1(?:78\\d|99)\\d{6}",,,,"1781234567",,,[9,10]],[,,"55\\d{8}",,,,"5512345678",,,[10]],"VA",39,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,"848\\d{6}",,,,"848123456",,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VC:[,[,,"[5789]\\d{9}",,,,,,,[10],[7]],[,,"784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}",
+,,,"7842661234",,,,[7]],[,,"784(?:4(?:3[0-4]|5[45]|89|9[0-58])|5(?:2[6-9]|3[0-4]))\\d{4}",,,,"7844301234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"VC",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"784",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,"[24589]\\d{9}",,,,,,,[10],[7]],[,,"(?:2(?:12|3[457-9]|[58][1-9]|[467]\\d|9[1-6])|50[01])\\d{7}",
+,,,"2121234567",,,,[7]],[,,"4(?:1[24-8]|2[46])\\d{7}",,,,"4121234567"],[,,"800\\d{7}",,,,"8001234567"],[,,"900\\d{7}",,,,"9001234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"VE",58,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1","$CC $1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VG:[,[,,"[2589]\\d{9}",,,,,,,[10],[7]],[,,"284(?:(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\d{4}|496[0-5]\\d{3})",,,,"2842291234",,,,[7]],[,,"284(?:(?:3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|54[0-57])\\d{4}|496[6-9]\\d{3})",
+,,,"2843001234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"VG",1,"011","1",,,"1",,,,,,[,,,,,,,,,[-1]],,"284",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,"[3589]\\d{9}",,,,,,,[10],[7]],[,,"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-589]|27|7\\d)|884|998)\\d{4}",,,,"3406421234",
+,,,[7]],[,,"340(?:2(?:01|2[0678]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-589]|27|7\\d)|884|998)\\d{4}",,,,"3406421234",,,,[7]],[,,"8(?:00|33|44|55|66|77|88)[2-9]\\d{6}",,,,"8002345678"],[,,"900[2-9]\\d{6}",,,,"9002345678"],[,,,,,,,,,[-1]],[,,"5(?:00|22|33|44|66|77|88)[2-9]\\d{6}",,,,"5002345678"],[,,,,,,,,,[-1]],"VI",1,"011","1",,,"1",,,1,,,[,,,,,,,,,[-1]],,"340",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,"[167]\\d{6,9}|[2-59]\\d{7,9}|8\\d{6,8}",
+,,,,,,[7,8,9,10]],[,,"(?:2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|[48][2-7]|5[124-9]|6[0-39]|7[0-7]|9[0-4679])|4\\d|5(?:0[01]|[5-9])|6(?:[0-46-8]|5[01])|7[0235])\\d{7}|8(?:[2-5]\\d|6[236]|7[13])\\d{6}",,,,"2101234567",,,[9,10]],[,,"(?:9\\d|1(?:2\\d|6[2-9]|8[68]|99))\\d{7}|8(?:6[89]|8\\d|9[89])\\d{6}",,,,"912345678",,,[9,10]],[,,"1800\\d{4,6}",,,,"1800123456",,,[8,9,10]],[,,"1900\\d{4,6}",,,,"1900123456",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"VN",84,"00","0",,,"0",,,,[[,"([17]99)(\\d{4})",
+"$1 $2",["[17]99"],"0$1",,1],[,"([48])(\\d{4})(\\d{4})","$1 $2 $3",["4|8(?:[2-5]|6[236]|7[13])"],"0$1",,1],[,"(\\d{2})(\\d{4})(\\d{3,4})","$1 $2 $3",["2[48]|5[5-9]|6[0-46-8]|7[0235]"],"0$1",,1],[,"(80)(\\d{5})","$1 $2",["80"],"0$1",,1],[,"(69\\d)(\\d{4,5})","$1 $2",["69"],"0$1",,1],[,"(\\d{3})(\\d{4})(\\d{3})","$1 $2 $3",["2[0-35-79]|50|65"],"0$1",,1],[,"([89]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8(?:8|9[89])|9"],"0$1",,1],[,"(1[2689]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1(?:[26]|8[68]|99)"],
+"0$1",,1],[,"(86[89])(\\d{3})(\\d{3})","$1 $2 $3",["86[89]"],"0$1",,1],[,"(1[89]00)(\\d{4,6})","$1 $2",["1[89]0"],"$1",,1]],,[,,,,,,,,,[-1]],,,[,,"[17]99\\d{4}|69\\d{5,6}",,,,"1992000",,,[7,8]],[,,"[17]99\\d{4}|69\\d{5,6}|80\\d{5}",,,,"1992000",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,"[2-57-9]\\d{4,6}",,,,,,,[5,7]],[,,"(?:2[02-9]\\d|3(?:[5-7]\\d|8[0-8])|48[4-9]|88\\d)\\d{2}",,,,"22123",,,[5]],[,,"(?:5(?:7[2-5]|[0-689]\\d)|7[013-7]\\d)\\d{4}",,,,"5912345",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,
+,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"VU",678,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[579]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"3[03]\\d{3}|900\\d{4}",,,,"30123"],,,[,,,,,,,,,[-1]]],WF:[,[,,"[4-8]\\d{5}",,,,,,,[6]],[,,"(?:50|68|72)\\d{4}",,,,"501234"],[,,"(?:50|68|72|8[23])\\d{4}",,,,"501234"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"WF",681,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+,,[,,"[48]0\\d{4}",,,,"401234"]],WS:[,[,,"[2-8]\\d{4,6}",,,,,,,[5,6,7]],[,,"(?:[2-5]\\d|6[1-9]|84\\d{2})\\d{3}",,,,"22123",,,[5,7]],[,,"(?:60|7[25-7]\\d)\\d{4}",,,,"601234",,,[6,7]],[,,"800\\d{3}",,,,"800123",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"WS",685,"0",,,,,,,,[[,"(8\\d{2})(\\d{3,4})","$1 $2",["8"]],[,"(7\\d)(\\d{5})","$1 $2",["7"]],[,"(\\d{5})","$1",["[2-6]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,"[1-7]\\d{6,8}",,,,
+,,,[7,8,9],[6]],[,,"(?:1(?:7\\d|[2-68])|2[2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\d{5}",,,,"1234567",,,[7,8],[6]],[,,"7[0137]\\d{7}",,,,"712345678",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"YE",967,"00","0",,,"0",,,,[[,"([1-7])(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],[,"(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["7[0137]"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,"[268]\\d{8}",,,,,,,[9]],
+[,,"269(?:6[0-4]|50)\\d{4}",,,,"269601234"],[,,"639(?:0[0-79]|1[019]|[26]\\d|3[09]|[45]0|7[06]|9[04-79])\\d{4}",,,,"639012345"],[,,"80\\d{7}",,,,"801234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"YT",262,"00","0",,,"0",,,,,,[,,,,,,,,,[-1]],,"269|63",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,"[1-79]\\d{8}|8\\d{4,8}",,,,,,,[5,6,7,8,9]],[,,"(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}",,,,"101234567",,,[9]],[,,"(?:6\\d|7[0-46-9])\\d{7}|8(?:[1-4]\\d{1,5}|5\\d{5})\\d{2}",
+,,,"711234567"],[,,"80\\d{7}",,,,"801234567",,,[9]],[,,"86[2-9]\\d{6}|9[0-2]\\d{7}",,,,"862345678",,,[9]],[,,"860\\d{6}",,,,"860123456",,,[9]],[,,,,,,,,,[-1]],[,,"87\\d{7}",,,,"871234567",,,[9]],"ZA",27,"00","0",,,"0",,,,[[,"(860)(\\d{3})(\\d{3})","$1 $2 $3",["860"],"0$1"],[,"(\\d{2})(\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[1-79]|8(?:[0-57]|6[1-9])"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"861\\d{6}",
+,,,"861123456",,,[9]],,,[,,,,,,,,,[-1]]],ZM:[,[,,"[289]\\d{8}",,,,,,,[9]],[,,"21[1-8]\\d{6}",,,,"211234567"],[,,"9(?:5[034589]|[67]\\d)\\d{6}",,,,"955123456"],[,,"800\\d{6}",,,,"800123456"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"ZM",260,"00","0",,,"0",,,,[[,"([29]\\d)(\\d{7})","$1 $2",["[29]"],"0$1"],[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["8"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZW:[,[,,"2(?:[0-2457-9]\\d{3,8}|6(?:[14]\\d{7}|\\d{4}))|[13-79]\\d{4,9}|8[06]\\d{5,8}",
+,,,,,,[5,6,7,8,9,10],[3,4]],[,,"(?:2(?:0(?:4\\d|5\\d{2})|2[278]\\d|48\\d|7(?:[1-7]\\d|[089]\\d{2})|8(?:[2-57-9]|[146]\\d{2})|98)|3(?:08|17|3[78]|7(?:[19]|[56]\\d)|8[37]|98)|5[15][78]|6(?:28\\d{2}|37|6[78]|75\\d|98|8(?:7\\d|8)))\\d{3}|(?:2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329)\\d{7}|(?:1(?:3\\d{2}|[4-8]|9\\d)|2(?:0\\d{2}|12|292|[569]\\d)|3(?:[26]|[013459]\\d)|5(?:0|1[2-4]|26|[37]2|5\\d{2}|[689]\\d)|6(?:[39]|[01246]\\d|[78]\\d{2}))\\d{3}|(?:29\\d|39|54)\\d{6}|(?:(?:25|54)83\\d|2582\\d{2}|65[2-8])\\d{2}|(?:4\\d{6,7}|9[2-9]\\d{4,5})",
+,,,"1312345",,,,[3,4]],[,,"(?:7(?:1[2-8]|3[2-9]|7[1-9]|8[2-5])|8644)\\d{6}",,,,"712345678",,,[9,10]],[,,"80(?:[01]\\d|20|8[0-8])\\d{3}",,,,"8001234",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"86(?:1[12]|30|55|77|8[368])\\d{6}",,,,"8686123456",,,[10]],"ZW",263,"00","0",,,"0",,,,[[,"([49])(\\d{3})(\\d{2,4})","$1 $2 $3",["4|9[2-9]"],"0$1"],[,"(7\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["7"],"0$1"],[,"(86\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["86[24]"],"0$1"],[,"([2356]\\d{2})(\\d{3,5})","$1 $2",
+["2(?:0[45]|2[278]|[49]8|[78])|3(?:08|17|3[78]|7[1569]|8[37]|98)|5[15][78]|6(?:[29]8|[38]7|6[78]|75|[89]8)"],"0$1"],[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|31|[56][14]|7[35]|84)|329"],"0$1"],[,"([1-356]\\d)(\\d{3,5})","$1 $2",["1[3-9]|2[02569]|3[0-69]|5[05689]|6\\d"],"0$1"],[,"([235]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[23]9|54"],"0$1"],[,"([25]\\d{3})(\\d{3,5})","$1 $2",["(?:25|54)8","258[23]|5483"],"0$1"],[,"(8\\d{3})(\\d{6})","$1 $2",["86"],"0$1"],[,"(80\\d)(\\d{4})","$1 $2",
+["80"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,"\\d{8}",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"\\d{8}",,,,"12345678"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",800,,,,,,,,1,[[,"(\\d{4})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,"\\d{8}",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"\\d{8}",,,,"12345678"],[,,,,,,,,,[-1]],[,,,,,,
+,,,[-1]],"001",808,,,,,,,,1,[[,"(\\d{4})(\\d{4})","$1 $2"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,"[35-7]\\d{8}",,,,,,,[9]],[,,,,,,,,,[-1]],[,,"(?:[356]\\d|7[6-8])\\d{7}",,,,"301234567"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",870,,,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,"1\\d{11}",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],
+[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"10\\d{10}",,,,"101234567890"],"001",878,,,,,,,,1,[[,"(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,"[67]\\d{8}",,,,,,,[9]],[,,,,,,,,,[-1]],[,,"[67]\\d{8}",,,,"612345678"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",881,,,,,,,,,[[,"(\\d)(\\d{3})(\\d{5})","$1 $2 $3",["[67]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,
+,,[-1]],,,[,,,,,,,,,[-1]]],882:[,[,,"[13]\\d{6,11}",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,"3(?:2\\d{3}|37\\d{2}|4(?:2|7\\d{3}))\\d{4}",,,,"3421234",,,[7,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15678]|9[0689])\\d{4}|6\\d{5,10})|3(?:45|9\\d{3})\\d{7}",,,,"390123456789"],"001",882,,,,,,,,,[[,"(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],[,"(\\d{2})(\\d{5})","$1 $2",["16|342"]],[,"(\\d{2})(\\d{4})(\\d{4})",
+"$1 $2 $3",["34[57]"]],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["348"]],[,"(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["1"]],[,"(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["16"]],[,"(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["16|39"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,"348[57]\\d{7}",,,,"34851234567",,,[11]]],883:[,[,,"51\\d{7}(?:\\d{3})?",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"51(?:00\\d{5}(?:\\d{3})?|[13]0\\d{8})",
+,,,"510012345"],"001",883,,,,,,,,1,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],[,"(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["510"]],[,"(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["51[13]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,"\\d{11}",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",888,,,,,,,,1,[[,"(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,
+,[-1]],[,,"\\d{11}",,,,"12345678901"],,,[,,,,,,,,,[-1]]],979:[,[,,"\\d{9}",,,,,,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"\\d{9}",,,,"123456789"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",979,,,,,,,,1,[[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*
+
+ Copyright (C) 2010 The Libphonenumber Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+function Q(){this.a={}}Q.a=function(){return Q.b?Q.b:Q.b=new Q};
+var ya={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9"},Aa={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",
+7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9",A:"2",B:"2",C:"2",D:"3",E:"3",F:"3",G:"4",H:"4",I:"4",J:"5",K:"5",L:"5",M:"6",N:"6",O:"6",P:"7",
+Q:"7",R:"7",S:"7",T:"8",U:"8",V:"8",W:"9",X:"9",Y:"9",Z:"9"},R=RegExp("^[+\uff0b]+"),Ba=RegExp("([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9])"),Ca=RegExp("[+\uff0b0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]"),Da=/[\\\/] *x/,Ea=RegExp("[^0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9A-Za-z#]+$"),Fa=/(?:.*?[A-Za-z]){3}.*/,Ga=RegExp("(?:;ext=([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})|[ \u00a0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00f3))?n?|\uff45?\uff58\uff54\uff4e?|[;,x\uff58#\uff03~\uff5e]|int|anexo|\uff49\uff4e\uff54)[:\\.\uff0e]?[ \u00a0\\t,-]*([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})#?|[- ]+([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,5})#)$",
+"i"),Ha=RegExp("^[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{2}$|^[+\uff0b]*(?:[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e*]*[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]){3,}[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e*A-Za-z0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]*(?:;ext=([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})|[ \u00a0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00f3))?n?|\uff45?\uff58\uff54\uff4e?|[;,x\uff58#\uff03~\uff5e]|int|anexo|\uff49\uff4e\uff54)[:\\.\uff0e]?[ \u00a0\\t,-]*([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})#?|[- ]+([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,5})#)?$",
+"i"),Ia=/(\$\d)/;function Ja(a){var b=a.search(Ca);0<=b?(a=a.substring(b),a=a.replace(Ea,""),b=a.search(Da),0<=b&&(a=a.substring(0,b))):a="";return a}function Ka(a){return 2>a.length?!1:S(Ha,a)}function La(a){return S(Fa,a)?Ma(a,Aa):Ma(a,ya)}function Na(a){var b=La(a.toString());a.b="";a.a(b)}function Oa(a){return!!a&&(1!=G(a,9)||-1!=D(a,9)[0])}function Ma(a,b){for(var c=new K,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.a(d);return c.toString()}
+function Pa(a){return null!=a&&isNaN(a)&&a.toUpperCase()in xa}
+function Qa(a,b,c){if(0==B(b,2)&&null!=b.a[5]){var d=F(b,5);if(0<d.length)return d}var d=F(b,1),e=T(b);if(0==c)return Ra(d,0,e,"");if(!(d in P))return e;a=U(a,d,Sa(d));b=null!=b.a[3]&&B(b,3).length?3==c?";ext="+B(b,3):null!=a.a[13]?B(a,13)+F(b,3):" ext. "+F(b,3):"";a:{a=D(a,20).length&&2!=c?D(a,20):D(a,19);for(var f,g=a.length,h=0;h<g;++h){f=a[h];var k=G(f,3);if(!k||!e.search(B(f,3,k-1)))if(k=new RegExp(B(f,1)),S(k,e)){a=f;break a}}a=null}a&&(g=a,a=F(g,2),f=new RegExp(B(g,1)),F(g,5),g=F(g,4),e=2==
+c&&null!=g&&0<g.length?e.replace(f,a.replace(Ia,g)):e.replace(f,a),3==c&&(e=e.replace(RegExp("^[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e]+"),""),e=e.replace(RegExp("[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e]+","g"),"-")));return Ra(d,c,e,b)}function U(a,b,c){return"001"==c?V(a,""+b):V(a,c)}
+function T(a){if(null==a.a[2])return"";var b=""+B(a,2);return null!=a.a[4]&&B(a,4)&&0<F(a,8)?Array(F(a,8)+1).join("0")+b:b}function Ra(a,b,c,d){switch(b){case 0:return"+"+a+c+d;case 1:return"+"+a+" "+c+d;case 3:return"tel:+"+a+"-"+c+d;default:return c+d}}
+function W(a,b){switch(b){case 4:return B(a,5);case 3:return B(a,4);case 1:return B(a,3);case 0:case 2:return B(a,2);case 5:return B(a,6);case 6:return B(a,8);case 7:return B(a,7);case 8:return B(a,21);case 9:return B(a,25);case 10:return B(a,28);default:return B(a,1)}}function Ta(a,b){return X(a,B(b,1))?X(a,B(b,5))?4:X(a,B(b,4))?3:X(a,B(b,6))?5:X(a,B(b,8))?6:X(a,B(b,7))?7:X(a,B(b,21))?8:X(a,B(b,25))?9:X(a,B(b,28))?10:X(a,B(b,2))?B(b,18)||X(a,B(b,3))?2:0:!B(b,18)&&X(a,B(b,3))?1:-1:-1}
+function V(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.a[b];if(!c){c=xa[b];if(!c)return null;c=(new ra).b(N.f(),c);a.a[b]=c}return c}function X(a,b){var c=a.length;return 0<G(b,9)&&-1==x(D(b,9),c)?!1:S(F(b,2),a)}function Ua(a,b){if(!b)return null;var c=F(b,1);if(c=P[c])if(1==c.length)c=c[0];else a:{for(var d=T(b),e,f=c.length,g=0;g<f;g++){e=c[g];var h=V(a,e);if(null!=h.a[23]){if(!d.search(B(h,23))){c=e;break a}}else if(-1!=Ta(d,h)){c=e;break a}}c=null}else c=null;return c}
+function Sa(a){return(a=P[a])?a[0]:"ZZ"}function Y(a,b,c,d){var e=W(c,d),f=G(e,9)?D(e,9):D(B(c,1),9),e=D(e,10);if(2==d)if(Oa(W(c,0)))a=W(c,1),Oa(a)&&(f=f.concat(G(a,9)?D(a,9):D(B(c,1),9)),y(f),e.length?(e=e.concat(D(a,10)),y(e)):e=D(a,10));else return Y(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<x(e,b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<x(f,b,1)?0:5}
+function Va(a,b,c,d,e,f){if(!b.length)return 0;b=new K(b);var g;c&&(g=B(c,11));null==g&&(g="NonMatch");var h=b.toString();if(h.length)if(R.test(h))h=h.replace(R,""),b.b="",b.a(La(h)),g=1;else{h=new RegExp(g);Na(b);g=b.toString();if(g.search(h))g=!1;else{var h=g.match(h)[0].length,k=g.substring(h).match(Ba);k&&null!=k[1]&&0<k[1].length&&"0"==Ma(k[1],ya)?g=!1:(b.b="",b.a(g.substring(h)),g=!0)}g=g?5:20}else g=20;e&&C(f,6,g);if(20!=g){if(2>=b.b.length)throw Error("Phone number too short after IDD");a:{a=
+b.toString();if(a.length&&"0"!=a.charAt(0))for(e=a.length,b=1;3>=b&&b<=e;++b)if(c=parseInt(a.substring(0,b),10),c in P){d.a(a.substring(b));d=c;break a}d=0}if(d)return C(f,1,d),d;throw Error("Invalid country calling code");}if(c&&(g=F(c,10),h=""+g,k=b.toString(),!k.lastIndexOf(h,0)&&(h=new K(k.substring(h.length)),k=B(c,1),k=new RegExp(F(k,2)),Wa(h,c,null),h=h.toString(),!S(k,b.toString())&&S(k,h)||3==Y(a,b.toString(),c,-1))))return d.a(h),e&&C(f,6,10),C(f,1,g),g;C(f,1,0);return 0}
+function Wa(a,b,c){var d=a.toString(),e=d.length,f=B(b,15);if(e&&null!=f&&f.length){var g=new RegExp("^(?:"+f+")");if(e=g.exec(d)){var f=new RegExp(F(B(b,1),2)),h=S(f,d),k=e.length-1;b=B(b,16);if(null!=b&&b.length&&null!=e[k]&&e[k].length){if(d=d.replace(g,b),!h||S(f,d))c&&0<k&&c.a(e[1]),a.set(d)}else if(!h||S(f,d.substring(e[0].length)))c&&0<k&&null!=e[k]&&c.a(e[1]),a.set(d.substring(e[0].length))}}}
+function Z(a,b,c){if(!Pa(c)&&0<b.length&&"+"!=b.charAt(0))throw Error("Invalid country calling code");return Xa(a,b,c,!0)}
+function Xa(a,b,c,d){if(null==b)throw Error("The string supplied did not seem to be a phone number");if(250<b.length)throw Error("The string supplied is too long to be a phone number");var e=new K,f=b.indexOf(";phone-context=");if(0<=f){var g=f+15;if("+"==b.charAt(g)){var h=b.indexOf(";",g);0<h?e.a(b.substring(g,h)):e.a(b.substring(g))}g=b.indexOf("tel:");e.a(b.substring(0<=g?g+4:0,f))}else e.a(Ja(b));f=e.toString();g=f.indexOf(";isub=");0<g&&(e.b="",e.a(f.substring(0,g)));if(!Ka(e.toString()))throw Error("The string supplied did not seem to be a phone number");
+f=e.toString();if(!(Pa(c)||null!=f&&0<f.length&&R.test(f)))throw Error("Invalid country calling code");f=new O;d&&C(f,5,b);a:{b=e.toString();g=b.search(Ga);if(0<=g&&Ka(b.substring(0,g)))for(var h=b.match(Ga),k=h.length,q=1;q<k;++q)if(null!=h[q]&&0<h[q].length){e.b="";e.a(b.substring(0,g));b=h[q];break a}b=""}0<b.length&&C(f,3,b);b=V(a,c);g=new K;h=0;k=e.toString();try{h=Va(a,k,b,g,d,f)}catch(z){if("Invalid country calling code"==z.message&&R.test(k)){if(k=k.replace(R,""),h=Va(a,k,b,g,d,f),!h)throw z;
+}else throw z;}h?(e=Sa(h),e!=c&&(b=U(a,h,e))):(Na(e),g.a(e.toString()),null!=c?(h=F(b,10),C(f,1,h)):d&&(delete f.a[6],f.b&&delete f.b[6]));if(2>g.b.length)throw Error("The string supplied is too short to be a phone number");b&&(c=new K,e=new K(g.toString()),Wa(e,b,c),2!=Y(a,e.toString(),b,-1)&&(g=e,d&&0<c.toString().length&&C(f,7,c.toString())));a=g.toString();d=a.length;if(2>d)throw Error("The string supplied is too short to be a phone number");if(17<d)throw Error("The string supplied is too long to be a phone number");
+if(1<a.length&&"0"==a.charAt(0)){C(f,4,!0);for(d=1;d<a.length-1&&"0"==a.charAt(d);)d++;1!=d&&C(f,8,d)}C(f,2,parseInt(a,10));return f}function S(a,b){var c="string"==typeof a?b.match("^(?:"+a+")$"):b.match(a);return c&&c[0].length==b.length?!0:!1};v("intlTelInputUtils",{});v("intlTelInputUtils.formatNumber",function(a,b,c){try{var d=Q.a(),e=Z(d,a,b);return Qa(d,e,"undefined"==typeof c?0:c)}catch(f){return a}});v("intlTelInputUtils.getExampleNumber",function(a,b,c){try{var d=Q.a(),e;a:{if(Pa(a)){var f=W(V(d,a),c);try{if(null!=f.a[6]){var g=B(f,6);e=Xa(d,g,a,!1);break a}}catch(h){}}e=null}return Qa(d,e,b?2:1)}catch(h){return""}});v("intlTelInputUtils.getExtension",function(a,b){try{return B(Z(Q.a(),a,b),3)}catch(c){return""}});
+v("intlTelInputUtils.getNumberType",function(a,b){try{var c=Q.a(),d;var e=Z(c,a,b),f=Ua(c,e),g=U(c,F(e,1),f);if(g){var h=T(e);d=Ta(h,g)}else d=-1;return d}catch(k){return-99}});
+v("intlTelInputUtils.getValidationError",function(a,b){try{var c=Q.a(),d;var e=Z(c,a,b),f=T(e),g=F(e,1);if(g in P){var h=U(c,g,Sa(g));d=Y(c,f,h,-1)}else d=1;return d}catch(k){return"Invalid country calling code"==k.message?1:"The string supplied did not seem to be a phone number"==k.message?4:"Phone number too short after IDD"==k.message||"The string supplied is too short to be a phone number"==k?2:"The string supplied is too long to be a phone number"==k.message?3:-99}});
+v("intlTelInputUtils.isValidNumber",function(a,b){try{var c=Q.a(),d=Z(c,a,b),e;var f=Ua(c,d),g=F(d,1),h=U(c,g,f),k;if(!(k=!h)){var q;if(q="001"!=f){var z,za=V(c,f);if(!za)throw Error("Invalid region code: "+f);z=F(za,10);q=g!=z}k=q}if(k)e=!1;else{var Ya=T(d);e=-1!=Ta(Ya,h)}return e}catch(Za){return!1}});v("intlTelInputUtils.numberFormat",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3});
+v("intlTelInputUtils.numberType",{FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1});v("intlTelInputUtils.validationError",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,NOT_A_NUMBER:4});})();
\ No newline at end of file
diff --git a/src/components/loading/index.vue b/src/components/loading/index.vue
new file mode 100644
index 0000000..f7b2288
--- /dev/null
+++ b/src/components/loading/index.vue
@@ -0,0 +1,22 @@
+<template>
+ <div class="loading w-full h-full flex justify-center items-center loading">
+ <van-loading />
+ </div>
+</template>
+
+<script>
+import { Loading } from 'vant';
+export default {
+ name: 'LoadingComp',
+ components: {
+ [Loading.name]: Loading
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.loading {
+ background: rgba(0,0,0,0.6);
+}
+</style>
\ No newline at end of file
diff --git a/src/components/normal-head/index.vue b/src/components/normal-head/index.vue
new file mode 100644
index 0000000..aa251ac
--- /dev/null
+++ b/src/components/normal-head/index.vue
@@ -0,0 +1,41 @@
+<template>
+ <div id="normalHead">
+ <van-nav-bar
+ :border="false"
+ :title="title"
+ left-arrow
+ @click-left="onClickLeft">
+ <template #right>
+ <slot></slot>
+ </template>
+ </van-nav-bar>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "normal-head",
+ props: ['title', 'goHome', 'goAssetsCenter', 'goPerpetualContract', 'backFunc'],
+ methods: {
+ onClickLeft() {
+ if (this.goHome) {
+ this.$router.push('/');
+ } else if (this.goAssetsCenter) {
+ this.$router.push('/assetsCenter/assets');
+ }else if (this.goPerpetualContract){
+ this.$router.go(-2);
+ } else if (this.backFunc) {
+ this.backFunc()
+ } else {
+ this.$router.go(-1);
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .van-nav-bar__title{
+ color: #333;
+}
+</style>
diff --git a/src/components/order-nav/OrderNav.vue b/src/components/order-nav/OrderNav.vue
new file mode 100644
index 0000000..12de084
--- /dev/null
+++ b/src/components/order-nav/OrderNav.vue
@@ -0,0 +1,84 @@
+<template>
+ <div id="buy_nav" class="buy_nav">
+ <van-nav-bar :title="title" @click-left="onClickLeft" class="font-36 border-none">
+ <template #left>
+ <slot name="left">
+ <van-icon name="arrow-left" />
+ </slot>
+ </template>
+ <template #title>
+ <slot name="title"></slot>
+ </template>
+ <template #right>
+ <slot name="right"></slot>
+ </template>
+ </van-nav-bar>
+ </div>
+</template>
+
+<script>
+import { NavBar, Icon } from 'vant';
+export default {
+ name: "OrderNav",
+ props: {
+ title: {
+
+ },
+ state: {
+
+ },
+ // 是否要路由返回
+ back: {
+ default: true,
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ methods: {
+ // 返回
+ onClickLeft() {
+ if (this.back) {
+ this.$router.back();
+ } else {
+ this.$emit('back')
+ }
+ }
+ },
+ components: {
+ [NavBar.name]: NavBar,
+ [Icon.name]: Icon,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.buy_nav {
+ // ::v-deep .van-nav-bar {
+ // @include themify() {
+ // background: themed("main_background") !important;
+ // }
+ // }
+ ::v-deep .van-nav-bar {
+ &:after {
+ border: none;
+ }
+ }
+
+ ::v-deep .van-icon {
+ font-size: 2rem;
+ color: green;
+
+ // @include themify() {
+ // color: themed("c2c_color");
+ // }
+ }
+
+ ::v-deep .van-nav-bar__title {
+ font-size: 4rem;
+ }
+}
+</style>
diff --git a/src/components/otcCircle/index.vue b/src/components/otcCircle/index.vue
new file mode 100644
index 0000000..f39f149
--- /dev/null
+++ b/src/components/otcCircle/index.vue
@@ -0,0 +1,159 @@
+<template>
+ <div class="flex items-center justify-center otcCircle" style="position: relative">
+ <van-count-down @finish="finish" :time="fullTime" class="count font-24" format="mm:ss" @change="handleChange"/>
+ <div v-for="(item, index) in arr" :key="index" class="circle bg-blue" :class="handleClass(item)"></div>
+ </div>
+</template>
+
+<script>
+import {CountDown} from "vant";
+export default {
+ components: {
+ [CountDown.name]: CountDown,
+ },
+ name: "otcCircle",
+ props: ['time','expireTime'],
+ data() {
+ return {
+ // time: 2 * 60 * 1000, // 剩余时间 15分钟,
+ currentTime: '', // 当前时间
+ progress: '', // 进度
+ arr: [
+ {
+ value: 0,
+ active: false,
+ percent: 8.33
+ },
+ {
+ value: 30,
+ active: false,
+ percent: 16.66
+ },
+ {
+ value: 60,
+ active: false,
+ percent: 25
+ },
+ {
+ value: 90,
+ active: false,
+ percent: 33.33
+ },
+ {
+ value: 120,
+ active: false,
+ percent: 41.66
+ },
+ {
+ value: 150,
+ active: false,
+ percent: 50
+ },
+ {
+ value: 180,
+ active: false,
+ percent: 58.33
+ },
+ {
+ value: 210,
+ active: false,
+ percent: 66.66
+ },
+ {
+ value: 240,
+ active: false,
+ percent: 75
+ },
+ {
+ value: 270,
+ active: false,
+ percent: 83.33
+ },
+ {
+ value: 300,
+ active: false,
+ percent: 91.66
+ },
+ {
+ value: 330,
+ active: false,
+ percent: 100
+ }
+ ],
+ }
+ },
+ computed: {
+ fullTime() {
+ return this.time * 1 * 1000;
+ // return parseInt(this.time) * 60
+ }
+ },
+ methods: {
+ handleChange(e) {
+ let restTime = e.minutes * 60 * 1000 + e.seconds * 1000 + e.milliseconds // 剩余毫秒
+ this.progress = ((restTime / 1000) / this.expireTime * 100).toFixed(0) // 进度
+ // console.log('进度', this.progress)
+ this.arr.forEach(item => {
+ if (this.progress >= item.percent) {
+ item.active = true
+ } else {
+ item.active = false
+ }
+ })
+ },
+ handleClass(item) {
+ let a = `circle${item.value}`
+ let b = item.active ? 'active' : ''
+ return a + ' ' + b
+ },
+ // 计时结束
+ finish() {
+ this.$emit('finish');
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.line{
+ width: 60px;
+ height: 60px;
+
+ border-radius: 50%;
+ position: relative;
+ //animation: myRotate 10s linear infinite;
+}
+
+@for $i from 0 through 400 {
+ .circle#{$i} {
+ transform: rotateZ(#{$i}deg) translateY(-5rem);
+ }
+}
+//.active {
+// background: #ccc;
+//}
+.active {
+ background: #CCCCCC !important;
+}
+.count {
+ font-size: 2rem;
+}
+.circle{
+ position: absolute;
+ width: .8rem;
+ height: 2rem;
+ line-height: 60px;
+ text-align: center;
+ color: #fff;
+ border-radius: 2px;
+ left: 50%;
+ top: 50%;
+ margin-top: -13px;
+}
+.otcCircle{
+ ::v-deep .van-count-down{
+ color: #1D91FF;
+ }
+}
+</style>
diff --git a/src/router/index.js b/src/router/index.js
index d223757..78be28a 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1097,60 +1097,155 @@
component: () => import( /* webpackChunkName: "quick" */ /* webpackPrefetch: true */
"@/views/cryptos/loan/loanRule.vue")
},
- // {//c2c自选区我要买
- // path: '/wantBuy',
- // name: 'WantBuy',
- // component: () => import(/* webpackChunkName: "Home" */ /* webpackPrefetch: true */'@/page/placeAnOrder/page/wantBuy/index'),
- // },
+ {//c2c自选区我要买
+ path: '/wantBuy',
+ name: 'WantBuy',
+ component: () => import(/* webpackChunkName: "wantBuy" */ /* webpackPrefetch: true */'@/views/C2C/wantBuy.vue'),
+ },
// {//广告筛选
// path: '/wantBuy/adScreening',
// name: 'adScreening',
// component: () => import(/* webpackChunkName: "adScreening" */ /* webpackPrefetch: true */'@/page/placeAnOrder/page/adScreening'),
// },
- // {//c2c购买
- // path: '/wantBuy/c2cBuy',
- // name: 'c2cBuy',
- // component: () => import(/* webpackChunkName: "c2cBuy" */ /* webpackPrefetch: true */'@/page/c2c-trade/page/c2cBuy'),
- // },
- // {// c2c买卖交易
- // path: '/c2cTrade',
- // name: 'c2cTrade',
- // props(route) {
- // return {
- // ...route.query,
- // }
- // },
- // component: () => import(/* webpackChunkName: "c2cTrade" */ /* webpackPrefetch: true */'@/page/c2c-trade'),
- // },
- // {// c2c订单列表
- // path: '/wantBuy/c2cOrderList',
- // name: 'c2cOrderList',
- // component: () => import(/* webpackChunkName: "c2cOrderList" */ /* webpackPrefetch: true */"@/page/c2c-order-list"),
- // props(route) {
- // return {
- // ...route.query
- // }
- // }
- // },
- // {// c2c订单详情
- // path: '/tradeOrderDetail',
- // name: 'tradeOrderDetail',
- // component: () => import(/* webpackChunkName: "tradeOrderDetail" */ /* webpackPrefetch: true */"@/page/c2c-trade/page/tradeOrderDetail"),
- // },
- // {// 快捷区
- // path: '/wantBuy/quick',
- // name: 'quick',
- // component: () => import(/* webpackChunkName: "quick" */ /* webpackPrefetch: true */"@/page/quick")
- // },
- // {// 选择法币
- // path: '/selectLegalCurrency',
- // name: 'selectLegalCurrency',
- // component: () => import(/* webpackChunkName: "selectLegalCurrency" */ /* webpackPrefetch: true */'@/page/selectLegalCurrency/index'),
- // },
+ {//c2c购买
+ path: '/wantBuy/c2cBuy',
+ name: 'c2cBuy',
+ component: () => import(/* webpackChunkName: "c2cBuy" */ /* webpackPrefetch: true */'@/views/C2C/c2c-trade/page/c2cBuy.vue'),
+ },
+ {// c2c买卖交易
+ path: '/c2cTrade',
+ name: 'c2cTrade',
+ props(route) {
+ return {
+ ...route.query,
+ }
+ },
+ component: () => import(/* webpackChunkName: "c2cTrade" */ /* webpackPrefetch: true */'@/views/C2C/c2c-trade/index.vue'),
+ },
+ {// c2c订单列表
+ path: '/wantBuy/c2cOrderList',
+ name: 'c2cOrderList',
+ component: () => import(/* webpackChunkName: "c2cOrderList" */ /* webpackPrefetch: true */"@/views/C2C/c2c-order-list/index.vue"),
+ props(route) {
+ return {
+ ...route.query
+ }
+ }
+ },
+ {// c2c订单详情
+ path: '/tradeOrderDetail',
+ name: 'tradeOrderDetail',
+ component: () => import(/* webpackChunkName: "tradeOrderDetail" */ /* webpackPrefetch: true */"@/views/C2C/c2c-order-list/tradeOrderDetail.vue"),
+ },
+ {// c2c出售订单生成
+ path: '/sellGenerate',
+ component: () => import(/* webpackChunkName: "sellGenerate" */ /* webpackPrefetch: true */"@/views/C2C/c2c-trade/page/SellGenerate.vue"),
+ props(route) {
+ return {
+ ...route.query
+ }
+ }
+ },
+ {// 确认收款
+ path: '/confirmedPaid',
+ meta: { keepAlive: true },
+ component: () => import(/* webpackChunkName: "confirmedPaid" */ /* webpackPrefetch: true */"@/views/C2C/c2cOrder/payment/ConfirmedPaid.vue")
+ },
+ {
+ // c2c收款方式
+ path: '/c2cCollection',
+ component: () => import(/* webpackChunkName: "c2cCollection" */ /* webpackPrefetch: true */'@/views/C2C/c2c-trade/page/c2cCollection.vue'),
+ props(route) {
+ return {
+ ...route.query,
+ }
+ },
+ },
+ {
+ // 取消订单
+ path: '/cancelOrder',
+ name: 'cancelOrder',
+ component: () => import(/* webpackChunkName: "cancelOrder" */ /* webpackPrefetch: true */'@/views/C2C/c2cOrder/cancel-order/cancelOrder.vue'),
+ },
+ {// 快捷区
+ path: '/wantBuy/quick',
+ name: 'quick',
+ component: () => import(/* webpackChunkName: "quick" */ /* webpackPrefetch: true */"@/views/C2C/quick/index.vue")
+ },
+ {// 选择法币
+ path: '/selectLegalCurrency',
+ name: 'selectLegalCurrency',
+ component: () => import(/* webpackChunkName: "selectLegalCurrency" */ /* webpackPrefetch: true */'@/views/C2C/selectLegalCurrency/index.vue'),
+ },
+ {// 广告商个人信息详情
+ path: '/advertiserDetail',
+ component: () => import(/* webpackChunkName: "advertiserDetail" */ /* webpackPrefetch: true */'@/views/advertiserDetail/index.vue'),
+ props(route) {
+ return {
+ ...route.query
+ }
+ }
+ },
+ {// 广告商个人信息详情
+ path: '/advertiserDetail/detail',
+ component: () => import(/* webpackChunkName: "advertiserDetail" */ /* webpackPrefetch: true */'@/views/advertiserDetail/detail.vue'),
+ },
+ {
+ // 生成订单详情页
+ path: '/orderGeneration',
+ name: 'orderGeneration',
+ component: () => import(/* webpackChunkName: "orderGeneration" */ /* webpackPrefetch: true */'@/views/C2C/c2cOrder/order-generation/index.vue'),
+ props(route) {
+ return {
+ ...route.query,
+ }
+ },
+ },
+ {// 联系买家/卖家
+ path: '/chat',
+ component: () => import(/* webpackChunkName: "chat" */ /* webpackPrefetch: true */"@/views/chat/index.vue"),
+ props(route) {
+ return {
+ ...route
+ }
+ }
+ },
+ {// 付款
+ path: '/paymentBuy',
+ name: 'paymentBuy',
+ component: () => import(/* webpackChunkName: "paymentBuy" */ /* webpackPrefetch: true */"@/views/C2C/c2cOrder/payment/PaymentBuy.vue"),
+ },
+ {
+ // 申诉
+ path: '/appeal',
+ name: 'appeal',
+ component: () => import(/* webpackChunkName: "appeal" */ /* webpackPrefetch: true */'@/views/C2C/c2cOrder/appeal/index.vue'),
+ },
+ {
+ // 申诉成功
+ path: '/appeal/page',
+ name: 'appealSuccess',
+ component: () => import(/* webpackChunkName: "appealSuccess" */ /* webpackPrefetch: true */'@/views/C2C/c2cOrder/appeal/Appeal.vue'),
+ },
+ {
+ //提现申请密码验证
+ path: "/withdraw/securityVerification",
+ name: "SecurityVerification",
+ meta: { index: 10 },
+ props(route) {
+ return {
+ ...route.query
+ }
+ },
+ component: () =>
+ import(
+ /* webpackChunkName: "SecurityVerification" */ /* webpackPrefetch: true */"@/views/C2C/withdraw/withdrawalSecurityVerification.vue"
+ ),
+ },
// {// 收款方式
// path: "/paymentMethod",
// name: 'paymentMethod',
- // component: () => import(/* webpackChunkName: "paymentMethod" */ /* webpackPrefetch: true */"@/page/placeAnOrder/page/payment-method/PaymentMethod")
+ // component: () => import(/* webpackChunkName: "paymentMethod" */ /* webpackPrefetch: true */"@/views/C2C/payment-method/PaymentMethod")
// },
// {// 银行卡详情
// path: '/wantBuy/bankCard',
@@ -1414,6 +1509,7 @@
name: 'payMentMethod',
// meta: { tarbar: true },
component: () => import('@/views/Layout.vue'),
+ redirect: '/payMentMethod/list',
children: [{
path: 'list',
meta: {
diff --git a/src/service/otc.js b/src/service/otc.js
index a78b32e..b44a202 100644
--- a/src/service/otc.js
+++ b/src/service/otc.js
@@ -1,5 +1,9 @@
+// import { httpJson } from "@/service/http";
+// import request from "@/service/request";
+
import { httpJson } from "@/service/http";
-import request from "@/service/request";
+import request from './request'
+
//获取 支付方式配置 列表
const ctcPaymentMethodConfig = (params) => {
return httpJson({
@@ -49,7 +53,7 @@
//获取 用户支付方式列表(需匹配承兑商广告支付方式)
const ctcPaymentMethodUserPay = (params) => {
return httpJson({
- url: "/api/c2cPaymentMethod!getUserPaymentsByAd.action",
+ url: "/api/paymentMethod/myList",
method: "get",
isLoading: false
}, params)
@@ -186,7 +190,7 @@
//获取 订单 详情
const ctcOrderGetDetail = (params) => {
return httpJson({
- url: "/api/c2cOrder/apply",
+ url: "/api/c2cOrder/get",
method: "get",
isLoading: false
}, params)
@@ -213,11 +217,12 @@
//取消订单
const ctcOrderCancel = (params) => {
- return httpJson({
+ return request({
url: "/api/c2cOrder/orderCancel",
- method: "get",
- isLoading: false
- }, params)
+ method: "POST",
+ loading: false,
+ params
+ })
};
@@ -386,7 +391,7 @@
export const getSessionToken = params => {
return httpJson({
url: "/api/c2cOrder/orderOpen",
- method: "get",
+ method: "post",
}, params)
}
@@ -466,6 +471,15 @@
);
};
+//支付完成
+const ctcOrderPayFinish = (params) => {
+ return httpJson({
+ url: "/api/c2cOrder!pay_finish.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
const otcApi = {
ctcPaymentMethodConfig,
@@ -478,7 +492,7 @@
paymentMethodConfigDetail, getUserName,
c2cGetPayCurrencyList,
c2cAppeal,
- c2cgetBestPrice
+ c2cgetBestPrice, ctcOrderPayFinish
}
export default otcApi
diff --git a/src/service/userCenter.js b/src/service/userCenter.js
index 7e73989..cde2ef0 100644
--- a/src/service/userCenter.js
+++ b/src/service/userCenter.js
@@ -204,11 +204,19 @@
isLoading: false,
}, params)
};
+//判断后台是否开启谷歌验证
+const _getIsGoogleAuth = (params) => {
+ return httpJson({
+ url: "/api/syspara!getSyspara.action",
+ method: "get",
+ isLoading: false,
+ }, params)
+};
const apiList = {
changePassword, updatepsw, resetpsw, setSafewordReg, changeFundsPassword, getVerifTarget, getUserNameVerifTarget, setSafeword, bindEmail, bindPhone, getGoogleauth, bindGoogleauth, getSafewordApply, setSafewordApply,
localuserAction, kycHighLevelApply, getKycHighLevel, getBanner,
- getCms, _getNewsList, _getNewsList1, _getNews, _getPopupNews
+ getCms, _getNewsList, _getNewsList1, _getNews, _getPopupNews, _getIsGoogleAuth
}
export default apiList
diff --git a/src/service/withdraw.js b/src/service/withdraw.js
new file mode 100644
index 0000000..6a03dbf
--- /dev/null
+++ b/src/service/withdraw.js
@@ -0,0 +1,71 @@
+import { httpJson } from "./http";
+
+//获取可用usdt
+const GetUsdt = (params) => {
+ return httpJson({
+ url:"api/wallet!getUsdt.action",
+ method:"get",
+ isLoading:false
+ }, params)
+}
+
+//提现,进入页面,获取session_token
+const GetSessionToken = (params) => {
+ return httpJson({
+ url: "api/withdraw!withdraw_open.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+//提现申请
+const WithdrawApply = (params) => {
+ return httpJson({
+ url: "api/withdraw!apply.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+//提现手续费计算
+const WithdrawFee = (params) => {
+ return httpJson({
+ url: "api/withdraw!fee.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+//提现限额
+const WithdrawLimit= (params) => {
+ return httpJson({
+ url: "api/withdraw!limit.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+
+//提现列表
+const WithdrawList= (params) => {
+ return httpJson({
+ url: "api/withdraw!list.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+
+//提现详情
+const WithdrawDetail= (params) => {
+ return httpJson({
+ url: "api/withdraw!get.action",
+ method: "get",
+ isLoading: false
+ }, params)
+};
+
+
+
+export default {GetUsdt,GetSessionToken, WithdrawApply, WithdrawFee,WithdrawLimit,WithdrawList, WithdrawDetail }
+
diff --git a/src/utils/list-load-mixins.js b/src/utils/list-load-mixins.js
new file mode 100644
index 0000000..ce327a7
--- /dev/null
+++ b/src/utils/list-load-mixins.js
@@ -0,0 +1,40 @@
+// import dayjs from "dayjs";
+
+export default {
+ data() {
+ return {
+ list: [], // 列表
+ loading: false,
+ finished: false,
+ isLoading: false,
+ form: { // 传递后端的参数
+ page_no: 1, // 分页
+ // start: dayjs().subtract(7, 'day').format('YYYY-MM-DD'), // 起始时间
+ // end: dayjs().format('YYYY-MM-DD') // 终点时间
+ }
+ }
+ },
+ methods: {
+ handleData(data) { // 往列表里拼接数据
+ console.log('列表', data)
+ this.isLoading = false;
+ this.list = this.list.concat(data)
+ this.loading = false
+ if (data.length < 20) { // 小于十条 说明就是最后一组数据
+ this.finished = true
+ console.log('没有更多数据了')
+ }
+ this.form.page_no++ // 翻页
+ },
+ onRefresh() { // 下拉刷新
+ console.log('refresh')
+ this.form.page_no = 1
+ this.list = []
+ this.get()
+ },
+ onLoad() {
+ console.log('onLoad')
+ this.get()
+ },
+ }
+}
diff --git a/src/views/C2C/c2c-order-list/SelectItem.vue b/src/views/C2C/c2c-order-list/SelectItem.vue
new file mode 100644
index 0000000..de1c954
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/SelectItem.vue
@@ -0,0 +1,38 @@
+<template>
+ <div>
+ <ul class="flex justify-between flex-wrap">
+ <li v-for="(item, index) in list" :key="index"
+ class="relative flex justify-center items-center w-232 h-82 rounded-xl box-border tabBackground c2cColor"
+ @click="itemClick(item)" :class="{ 'active': value === item.title }">
+ <img v-show="value === item.title" class="absolute top-0 right-0 w-full h-full"
+ src="@/assets/image/c2c/Group317.png" alt="">
+ {{ item.title }}
+ </li>
+ </ul>
+ </div>
+</template>
+
+<script>
+
+export default {
+ name: "SelectItem",
+ props: ['list', 'value'],
+ methods: {
+ itemClick(data) {
+ console.log(data);
+ this.$emit('select', data);
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+li {
+ margin-bottom: 30px;
+}
+
+.active {
+ border: 1px solid #1D91FF;
+}
+</style>
diff --git a/src/views/C2C/c2c-order-list/Unread.vue b/src/views/C2C/c2c-order-list/Unread.vue
new file mode 100644
index 0000000..5d0ef3e
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/Unread.vue
@@ -0,0 +1,61 @@
+<template>
+ <div class="flex flex-col w-full h-full">
+ <order-nav class="w-full" :back="false" :title="$t('未读消息')" @back="hiddenUnread" />
+ <div class="w-full flex-1 overflow-auto">
+ <van-list v-model="loading" :finished="finished" :finished-text="$t('已经全部加载完毕')" @load="onLoad">
+ <items v-for="(item, index) in list" :key="index" :items="item" />
+ </van-list>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ List,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import Items from "@/views/orderList/items.vue";
+
+export default {
+ name: "Unread",
+ props: ['data'],
+ data() {
+ return {
+ list: [],
+ loading: false,
+ finished: false,
+ }
+ },
+ methods: {
+ hiddenUnread() {
+ this.$emit('back')
+ },
+ onLoad() {
+ // 异步更新数据
+ // setTimeout 仅做示例,真实场景中一般为 ajax 请求
+ setTimeout(() => {
+ for (let i = 0; i < this.data.length; i++) {
+ this.list.push(this.data[i]);
+ }
+
+ // 加载状态结束
+ this.loading = false;
+
+ // 数据全部加载完成
+ if (this.list.length >= 10) {
+ this.finished = true;
+ }
+ }, 1000);
+ },
+ },
+ components: {
+ [List.name]: List,
+ OrderNav,
+ Items,
+ }
+}
+</script>
+
+<style scoped>
+@import "@/assets/css/copy2.scss";
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-order-list/components/Evaluation.vue b/src/views/C2C/c2c-order-list/components/Evaluation.vue
new file mode 100644
index 0000000..7a9fc4e
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/components/Evaluation.vue
@@ -0,0 +1,45 @@
+<template>
+ <div class="text-center">
+ <div class="pt-80 pb-50 font-28">
+ <slot name="desc"></slot>
+ </div>
+ <div class="flex justify-between px-72 ">
+ <div class="relative w-320 h-80 box-border py-16 border-radius">
+ 好评
+ <div class="circle flex justify-center items-center">
+ <img class="w-32 h-32" src="@/assets/image/c2c/el_thumbs-up.png" alt="">
+ </div>
+ </div>
+ <div class="relative w-320 h-80 box-border py-16 border-radius">
+ 差评
+ <div class="circle flex justify-center items-center">
+ <img class="w-32 h-32" src="@/assets/image/c2c/el_thumbs-up(2).png" alt="">
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "Evaluation"
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.border-radius {
+ border-radius: 60px;
+ background: #EAEBEE;
+}
+
+.circle {
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ width: 72px;
+ height: 72px;
+ border-radius: 50%;
+ background: #fff;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-order-list/components/OrderData.vue b/src/views/C2C/c2c-order-list/components/OrderData.vue
new file mode 100644
index 0000000..8315c62
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/components/OrderData.vue
@@ -0,0 +1,128 @@
+<template>
+ <div class="order-data">
+ <div class="flex items-center font-31 mb-42 c2cColor">
+ <span class="title" :style="{ 'color': detail.direction === 'buy' ? '#2EBD85' : '#E35461' }">
+ {{ detail.direction === 'buy' ? $t('购买') : $t('卖出') }}
+ </span>
+ <span class="mx-15">{{ detail.symbol && detail.symbol.toUpperCase() }}</span>
+ <img class="w-36 h-36" src="@/assets/image/c2c/U1.png" alt="">
+ </div>
+ <van-cell-group>
+ <van-cell :title="$t('总额')">
+ <template #default>
+ <h2 class="font-700 font-36">{{ currencySymbol }} {{ detail.amount }}</h2>
+ </template>
+ </van-cell>
+ <van-cell :title="$t('单价')">
+ <template #default>
+ <span>{{ currencySymbol }} </span>
+ <span>{{ detail.symbolValue }}</span>
+ </template>
+ </van-cell>
+ <van-cell :title="$t('数量')"
+ :value="`${detail.symbol == 'usdt' ? Math.floor(detail.coinAmount * 100) / 100 : Math.floor(detail.coinAmount * 1000000) / 1000000} ${detail.symbol && detail.symbol.toUpperCase()}`" />
+ <slot name="default"></slot>
+ <van-cell class="order-number">
+ <template v-slot:title>
+ <div class="w-100">{{ $t('订单号') }}</div>
+ </template>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ detail.orderNo }}</span>
+ <img class="relative top-1 w-30 h-34" src="@/assets/image/c2c/Group1168.png" alt=""
+ @click="copy(detail.orderNo)">
+ </div>
+ </van-cell>
+ <van-cell v-if="detail.createTime" :title="$t('创建时间')" :value="detail.createTime" />
+ <van-cell v-if="detail.sellerName">
+ <template #title>
+ <span>{{ clientType }}</span>
+ </template>
+ <template #default>
+ <span class="mr-20">{{ sellerName }}</span>
+ <van-icon class="font-700 text-grey" name="arrow" />
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+</template>
+
+<script>
+import {
+ mapState,
+ mapGetters
+} from "vuex";
+import { Cell, CellGroup, Icon, showToast } from "vant"
+import useClipboard from "vue-clipboard3";
+const { toClipboard } = useClipboard();
+
+export default {
+ name: "OrderDate",
+ // props: ['count', 'totalPrice', 'orderNumber', 'sellerName', 'createOrderTime'],
+ props: {
+ clientType: {
+ default: '卖家昵称'
+ },
+ detail: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // // count: {},
+ // totalPrice: {},
+ // // orderNumber: {},
+ // sellerName: {},
+ // createOrderTime: {},
+ // unitPrice: {
+ // // required: true,
+ // }
+ },
+ filters: {
+ format(time) {
+ const _time = new Date(time)
+ return [_time.getFullYear(), _time.getMonth() + 1, _time.getDate()].join('/') + ' ' + [_time.getHours(), _time.getMinutes(), _time.getSeconds()].join(":")
+ }
+ },
+ methods: {
+ async copy(text) {
+ await toClipboard(text);
+ showToast(this.$t('copySuccess'));
+ }
+ },
+ computed: {
+ ...mapState('home', ['currency']),
+ ...mapGetters('c2c', ['currencySymbol'])
+ },
+ components: {
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Icon.name]: Icon,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::v-deep .van-cell {
+ margin-bottom: 46px;
+}
+
+::v-deep .order-number {
+ .van-cell__title {
+ flex: inherit;
+ }
+}
+
+.order-data {
+ ::v-deep .van-cell-group,
+ .van-cell {
+ margin-bottom: 46px;
+ color: $text_color;
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell__value {
+ color: $text_color;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue b/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue
new file mode 100644
index 0000000..e138a1f
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/components/TradeSuccessDetail.vue
@@ -0,0 +1,215 @@
+<template>
+ <div id="full" style="z-index: 100;overflow: auto;"
+ class="fixed top-0 left-0 w-full h-full c2cBackground1 tradeSuccessDetail">
+ <div :class="orderDetail.state == 3 ? 'green' : 'greyBg'">
+ <order-nav :back="back" :class="orderDetail.state == 3 ? 'green' : 'greyBg'" @back="$router.replace('/wantBuy')">
+ <template #left>
+ <van-icon name="arrow-left" class="arrow-left-icon" />
+ </template>
+ <template #right>
+ <div class="flex items-center chat flex justify-center" @click="$router.push({
+ path: '/chat'
+ })">
+ <van-badge class="w-35 h-33 mr-22">
+ <img class="w-full h-full" v-if="orderDetail.state == 3" src="@/assets/image/c2c/Vector-white.png"
+ alt="" />
+ <img class="w-full h-full" v-else src="@/assets/image/c2c/Vector-black.png" alt="" />
+ </van-badge>
+ <span class="font-28" :class="orderDetail.state == 3 ? 'text-white' : 'c2cColor'">
+ <span>{{ orderDetail.direction == 'buy' ? $t('联系卖家') : $t('联系买家') }}</span>
+ </span>
+ </div>
+ </template>
+ </order-nav>
+ <div class="flex justify-between items-center mt-20 px-32 pb-50 text-white">
+ <div>
+ <div class="font-52" :class="orderDetail.state != 3 ? 'c2cColor' : ''">{{ fixStr() }}</div>
+ <div class="mt-26 font-26" v-if="orderDetail.state == 3">
+ {{ $t('您已成功') }} {{ orderDetail.direction == 'buy' ? $t('购买') : $t('出售') }} {{
+ orderDetail.symbol.toLowerCase() == 'usdt' ? Math.floor(orderDetail.amountUsdt * 100) / 100 :
+ Math.floor(orderDetail.amountUsdt * 10000) / 10000 }} {{ orderDetail.symbol.toUpperCase() }}
+ </div>
+ <div class="mt-26 font-26 c2cColor" v-else>{{ fixText() }}</div>
+ </div>
+ <div>
+ <img v-if="orderDetail.state == 3" class="w-92 h-92" src="@/assets/image/c2c/Group181.png" alt="">
+ <img v-else class="w-92 h-92" src="@/assets/image/c2c/Group1212.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div class="pt-46 pb-30 c2cTabBackground">
+ <order-data :detail="orderDetail">
+ <div class="w-full h-16 mb-40 diviLine"></div>
+ </order-data>
+ </div>
+ <div class="px-32 mt-16 mainBackground py-39">
+ <h2 class="font-400 font-30 c2cColor">{{ $t('交易方式') }}</h2>
+ <div class="flex items-center mt-28">
+ <div class="w-6 h-28 border-ra" style="background: #E7BB41;"></div>
+ <span class="ml-9 font-22 text-grey">{{ orderDetail.methodName }}</span>
+ </div>
+ </div>
+ <!-- <van-divider/>-->
+ <!-- <evaluation class="pb-60 bg-white">-->
+ <!-- <template #desc>-->
+ <!-- <slot name="desc"></slot>-->
+ <!-- </template>-->
+ <!-- </evaluation>-->
+ <div class="mt-16">
+ <div class="flex justify-between items-center h-100 px-32 mt-16 c2cTabBackground c2cColor" @click="tokefu">
+ <div>
+ <span class="font-30 c2cColor">{{ $t('联系客服') }}</span>
+ </div>
+ <div>
+ <van-icon name="arrow" class="font-700" />
+ </div>
+ </div>
+ <div class="flex justify-between items-center h-100 px-32 mt-16 c2cTabBackground c2cColor"
+ @click="$router.push('/Appeal')">
+ <div>
+ <span class="font-30 c2cColor">{{ $t('对订单存在疑问') }}</span>
+ </div>
+ <div>
+ <van-icon name="arrow" class="font-700" />
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import {
+ Badge,
+ Divider,
+ Cell,
+ CellGroup,
+ Icon,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import OrderData from "./OrderData.vue";
+import Evaluation from "./Evaluation.vue";
+import otcApi from "@/service/otc";
+export default {
+ name: "TradeSuccessDetail",
+ props: ['title', 'back'],
+ data() {
+ return {
+ checked: false,
+ orderDetail: {},
+ }
+ },
+ components: {
+ [Badge.name]: Badge,
+ [Divider.name]: Divider,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Icon.name]: Icon,
+ OrderNav,
+ OrderData,
+ Evaluation,
+ },
+ async created() {
+ console.log(this.orderInfo)
+ const order_no = this.$store.state.c2c.order_no
+ const res = await otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale });
+ this.orderDetail = res.data;
+ },
+ methods: {
+ fixStr() {
+ let str = ''
+ if (this.orderDetail.state == 1) {
+ str = ''
+ } else if (this.orderDetail.state == 2) {
+ str = this.$t('申诉中')
+ } else if (this.orderDetail.state == 3) {
+ str = this.$t('已完成')
+ } else if (this.orderDetail.state == 4) {
+ str = this.$t('已取消')
+ } else if (this.orderDetail.state == 5) {
+ str = this.$t('已超时')
+ }
+ return str
+ },
+ fixText() {
+ let str = ''
+ if (this.orderDetail.state == 2) {
+ str = this.$t('您的订单正在申诉处理中')
+ } else if (this.orderDetail.state == 4) {
+ str = this.$t('您已取消订单')
+ } else if (this.orderDetail.state == 5) {
+ str = this.$t('您的订单已超时')
+ }
+ return str
+ },
+ tokefu() {
+ this.$router.push('/customerService')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+@import "@/assets/css/copy2.scss";
+
+.tradeSuccessDetail {
+ .arrow-left-icon {
+ color: $text_color;
+ }
+
+
+ ::v-deep .van-nav-bar__right {
+ padding: 0;
+ }
+
+ ::v-deep .van-nav-bar__arrow {
+ color: $text_color;
+ }
+
+ ::v-deep .greyBg .van-nav-bar {
+ background:$grey_bg;
+ }
+
+ ::v-deep .green .van-nav-bar {
+ background: #2EBD85;
+ }
+
+ ::v-deep .van-cell {
+ padding: 0 32px !important;
+ background: $c2c_tab_background;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ ::v-deep .van-cell-group {
+ background: $c2c_tab_background;
+ }
+
+ ::v-deep .van-cell__title {
+ color: $text_color1;
+ }
+
+ ::v-deep .van-cell__value {
+ color: $text_color;
+ }
+}
+
+.switch {
+ transform: scale(.7) translateX(20px);
+}
+
+.chat {
+ width: 232px;
+ height: 64px;
+ border-radius: 36px 0px 0px 36px;
+}
+
+.green {
+ background: #2EBD85;
+}
+</style>
diff --git a/src/views/C2C/c2c-order-list/index.vue b/src/views/C2C/c2c-order-list/index.vue
new file mode 100644
index 0000000..e187c80
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/index.vue
@@ -0,0 +1,234 @@
+<template>
+ <div class="flex flex-col w-full h-full c2c-order-list">
+ <div>
+ <order-nav class="w-full" :title="$t('订单列表')" ref="nav">
+ <template #right>
+ <img class="w-24 h-27" src="@/assets/image/c2c/Vector27.png" alt="" @click="selectShow = true">
+ </template>
+ </order-nav>
+ </div>
+ <div class="flex-1 w-full overflow-auto">
+ <div v-if="isEmpty === 'true'" class="flex justify-center mt-176">
+ <div>
+ <img class="w-157 h-152" src="@/assets/image/c2c/Group323.png" alt="">
+ <p class="mt-36 font-28 text-center text-grey">{{ $t('暂无订单') }}</p>
+ </div>
+ </div>
+ <div v-else>
+ <van-pull-refresh :pulling-text="$t('下拉即可刷新')" :loosing-text="$t('释放即可刷新')" :loading-text="$t('加载中')"
+ v-model="isLoading" @refresh="onRefresh">
+ <van-list v-model:loading="loading" :finished="finished" :immediate-check="false" :finished-text="$t('没有更多了')"
+ @load="onLoad">
+ <template v-if="list.length > 0">
+ <items v-for="(item, index) in list" :items="item" :key="index" />
+ </template>
+ <div v-else class="w-full h-full">
+ <van-empty class="custom-image" :image="emptyImg"
+ :description="$t('暂无数据')">
+ </van-empty>
+ </div>
+ </van-list>
+ </van-pull-refresh>
+ <!-- <div class="w-full mt-76 mb-52 font-28 text-grey text-center">已经全部加载完毕</div>-->
+ </div>
+ </div>
+ <!-- 显示筛选 -->
+ <div class="select">
+ <van-popup class="relative" v-model:show="selectShow" position="bottom" :style="fulHeight">
+ <order-nav>
+ <template #left><i></i></template>
+ <template #title>
+ <span class="font-35 font-700">{{ $t('订单历史筛选') }}</span>
+ </template>
+ <template #right>
+ <van-icon @click="selectShow = false" name="cross" color="#9399A4" />
+ </template>
+ </order-nav>
+ <div class=" px-37">
+ <div class="">
+ <p class="mb-38 font-28 text-grey">{{ $t('交易类型') }}</p>
+ <div>
+ <select-item :list="selectList.title" :value="currentDirection" @select='handleSelect' />
+ </div>
+ </div>
+ <div class="mt-59">
+ <p class="mb-38 font-28 text-grey">{{ $t('订单状态') }}</p>
+ <div>
+ <select-item :list="selectList.items" :value="currentState" @select='handleSelect2' />
+ </div>
+ </div>
+ <div class="absolute right-37 left-37 bottom-70">
+ <van-button @click="reset" class="mr-38 font-31 rounded-lg px-36" type="info" color="#EAEBEE">
+ <span style="color: #21262F">{{ $t('重置') }}</span>
+ </van-button>
+ <van-button @click="selectEnter" class="font-31 rounded-lg px-36" type="info" color="#1D91FF">
+ <span>{{ $t('确认') }}</span>
+ </van-button>
+ </div>
+ </div>
+ </van-popup>
+ </div>
+
+ <!-- 未读消息 -->
+ <!-- <van-popup class="w-full h-full" v-model="showUnread" position="right">-->
+ <!-- <unread @back="hiddenUnread" :data="unreadData"/>-->
+ <!-- </van-popup>-->
+ </div>
+</template>
+
+<script>
+import {
+ Popup,
+ Icon,
+ PullRefresh,
+ Empty,
+ Button,
+ List, showToast,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import Items from "@/views/orderList/items.vue";
+import SelectItem from "./SelectItem.vue";
+import Unread from "./Unread.vue";
+import listLoadMixins from '@/utils/list-load-mixins'
+import { ctcOrderList } from "@/service/otc";
+export default {
+ name: "c2cOrderList",
+ props: ['isEmpty'],
+ mixins: [listLoadMixins],
+ data() {
+ return {
+ currentDirection: '全部',
+ currentState: '全部',
+ form: {
+ direction: '',
+ state: '', // 0未付款/1已付款/2申诉中/3已完成/4已取消/5已超时
+ },
+ navHeight: 0,
+ showUnread: false,
+ selectShow: false,
+ titleActive: '全部',
+ itemActive: '全部',
+ selectList: {
+ title: [{
+ title: this.$t('全部'),
+ value: '',
+ }, {
+ title: this.$t('购买'),
+ value: 'buy',
+ }, {
+ title: this.$t('出售'),
+ value: 'sell',
+ }],
+ items: [
+ {
+ title: this.$t('全部'),
+ value: '',
+ },
+ {
+ title: this.$t('未付款'),
+ value: 0,
+ },
+ {
+ title: this.$t('已付款'),
+ value: 1,
+ },
+ {
+ title: this.$t('申诉中'),
+ value: 2,
+ },
+ {
+ title: this.$t('已完成'),
+ value: 3,
+ },
+ {
+ title: this.$t('已取消'),
+ value: 4,
+ },
+ {
+ title: this.$t('已超时'),
+ value: 5,
+ },
+ ],
+ },
+ emptyImg:new URL('@/assets/image/otc/nodatas.png', import.meta.url).href,
+ }
+ },
+ created() {
+ this.get()
+ },
+ mounted() {
+ // let obj = this.selectList.title.find((item) => {
+ // return item.value === 'buy'
+ // })
+ this.navHeight = this.$refs.nav.$el.getBoundingClientRect().height;
+ },
+ methods: {
+ get() { // 获取数据的方法需要自定义
+ ctcOrderList({ ...this.form }).then(res => {
+ res.data.forEach((item) => {
+ // item.time = '01-03 17:20:20'
+ })
+ // console.log(res.data);
+ this.handleData(res.data)
+ })
+ },
+ handleSelect(data) {
+ this.form.direction = data.value
+ this.currentDirection = data.title
+ // this.get()
+ },
+ handleSelect2(data) {
+ this.form.state = data.value
+ this.currentState = data.title
+
+ },
+ hiddenUnread() {
+ this.showUnread = false;
+ },
+ // 筛选确定
+ selectEnter() {
+ this.selectShow = false
+ this.onRefresh()
+ },
+ // 重置选择
+ reset() {
+ this.currentDirection = '全部'
+ this.currentState = '全部'
+ this.form.direction = ''
+ this.form.state = ''
+ },
+ },
+ computed: {
+ fulHeight() {
+ return {
+ height: `calc(100vh - ${this.navHeight}px)`
+ }
+ },
+ // unreadData() {
+ // const arr = this.formatData([...this.sell, ...this.buy])
+ // return arr.filter(v => v.msg !== undefined)
+ // }
+ },
+ components: {
+ [Popup.name]: Popup,
+ [Icon.name]: Icon,
+ [Button.name]: Button,
+ [List.name]: List,
+ [PullRefresh.name]: PullRefresh,
+ [Empty.name]: Empty,
+ OrderNav,
+ Items,
+ SelectItem,
+ Unread,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.select {
+ ::v-deep .van-popup {
+ border-radius: 20px 20px 0 0;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-order-list/tradeOrderDetail.vue b/src/views/C2C/c2c-order-list/tradeOrderDetail.vue
new file mode 100644
index 0000000..d0982aa
--- /dev/null
+++ b/src/views/C2C/c2c-order-list/tradeOrderDetail.vue
@@ -0,0 +1,42 @@
+<template>
+ <div class="w-full h-full">
+ <trade-success-detail :back="back">
+
+ </trade-success-detail>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import TradeSuccessDetail from "./components/TradeSuccessDetail.vue";
+export default {
+ name: "TradeSuccessDetailSell",
+ computed: {
+ ...mapState('c2cSell', ['orderInfo'])
+ },
+ components: {
+ TradeSuccessDetail,
+ },
+ data(){
+ return {
+ back:true
+ }
+ },
+ created(){
+ if (this.$route.query.back){
+ this.back = false
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::v-deep .order-data {
+ .title {
+ padding-left: 32px;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/components/C2cTrade.vue b/src/views/C2C/c2c-trade/components/C2cTrade.vue
new file mode 100644
index 0000000..9f1895d
--- /dev/null
+++ b/src/views/C2C/c2c-trade/components/C2cTrade.vue
@@ -0,0 +1,218 @@
+<template>
+ <div class="c2cTrade">
+ <normal-head :title="title" />
+ <div class="w-full px-33 box-border relative tabBackground pb-20">
+ <div class="flex pt-34 box-border items-center">
+ <span class="text-grey font-26 mr-20">{{ $t("单价") }}</span>
+ <span class="text-green font-26 mr-35">{{ currencySymbol }} {{ detail.symbol_value }}</span>
+ <!-- <span class="text-green font-26 mr-35">{{ currency.currency_symbol }} {{ detail.symbol_value }}</span> -->
+ <img @click="refresh" class="w-24 h-24" src="@/assets/image/otc/buy/vector_1.png" alt=""
+ style="transition: all ease 0.5s" />
+ </div>
+ <div class="flex mt-22 box-border items-center">
+ <span class="text-grey font-26 mr-20">{{ $t("限额") }}</span>
+ <!-- <span class="text-black font-26 mr-35">{{currencySymbol}} {{detail.investment_min}} - {{currencySymbol}} {{detail.investment_max}}</span> -->
+ <span class="c2cColor font-26 mr-35">{{ currencySymbol }} {{ detail.investment_min }} -
+ {{ currencySymbol }} {{ detail.investment_max }}</span>
+ </div>
+ <slot name="trade"></slot>
+ <div class="h-80 px-32 mt-40 flex items-center rounded-lg tips c2cTipBackground">
+ <img class="w-28 h-28 mr-18" src="@/assets/image/c2c/Group41.png" alt="" />
+ <p class="font-28 textColor">
+ {{ $t("保护资产安全,请提高防范意识!") }}
+ </p>
+ </div>
+ </div>
+ <div class="px-40 pb-40 mt-31 border-bottom-1px c2cColor">
+ <div class="">
+ <h2 class="font-28 font-400">{{ $t("交易信息") }}</h2>
+ <div class="flex justify-between mt-40">
+ <span class="text-grey">{{ $t("付款时限") }}</span>
+ <span>{{ detail.expire_time }} {{ $t("分钟") }}</span>
+ </div>
+ <div class="flex justify-between mt-40">
+ <span class="text-grey">{{ $t("卖家昵称") }}</span>
+ <div>
+ <span class="mr-24">{{ detail.nick_name }}</span>
+ <van-icon class="font-700 text-grey" name="arrow" />
+ </div>
+ </div>
+ <div class="flex justify-between mt-40">
+ <span class="text-grey">{{ $t("交易方式") }}</span>
+ <div class="h-56 tabBackground rounded-md">
+ <template v-if="detail.direction === 'buy'">
+ <van-popover class="w-full h-full" placement="left-end" :theme="$store.state.home.theme"
+ v-model:show="showPopover" trigger="click" :actions="payList" @select="onSelect">
+ <template #reference>
+ <div class="flex justify-center items-center w-full h-full">
+ <div class="w-6 h-28 border-ra" style="background: #e7bb41"></div>
+ <span v-if="detail.direction === 'sell'" class="ml-12 mr-16">{{ fullMethodName }}</span>
+ <span v-else class="ml-12 mr-16">{{ methodName }}</span>
+ <img class="w-28 h-28" src="@/assets/image/c2c/Group1504.png" alt="" />
+ </div>
+ </template>
+ </van-popover>
+ </template>
+ <template v-else>
+ <div class="pl-10">
+ {{ detail.pay_type_name && detail.pay_type_name.replaceAll(',', ' | ') }}
+ <!-- <span v-for="item in payList" :key="item.id" class="mr-10">{{item.methodName }}</span> -->
+ </div>
+ </template>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="px-32">
+ <slot name="desc"></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+import NormalHead from "@/components/normal-head/index.vue";
+import { DropdownMenu, DropdownItem, Popover } from "vant";
+import { mapGetters } from "vuex";
+import { Icon, Divider } from "vant";
+import { mapState } from "vuex";
+import otcApi from "@/service/otc";
+
+export default {
+ name: "C2cTrade",
+ props: {
+ title: {},
+ type: {},
+ cid: {},
+ bankCarNumber: {},
+ detail: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+ },
+ data() {
+ return {
+ num: 0, // 刷新按钮点击
+ payList: [],
+ payType: "", // 支付id 买
+ methodName: "", // 支付方式 买
+ showPopover: false,
+ fullMethodName: ''
+ };
+
+ },
+ computed: {
+ ...mapGetters(['theme'])
+ },
+ created() {
+ // 支付方式
+ // this.detail.pay_type.split(',').map((item, index) => {
+ // const text = this.detail.pay_type_name.split(',')[index]
+ // if (index === 0) {
+ // this.payType = item;
+ // this.methodName = text
+ // }
+ // this.payList.push({
+ // value: item,
+ // text
+ // })
+ // })
+ // let { reciveType } = this.$route.query
+ // if (reciveType) {
+ // reciveType = JSON.parse(reciveType)
+ // this.fullMethodName = '111'
+ // console.log('reciveType', reciveType)
+ // }
+ if (this.detail.direction === "buy") {
+ otcApi.ctcPaymentMethodPayList({ id: this.detail.id, language: this.$i18n.locale }).then((res) => {
+ console.log("res", res);
+ res.data.map((item) => {
+ this.payList.push({
+ value: item.uuid,
+ text: item.methodName,
+ });
+ });
+ this.payType = this.payList[0].value;
+ this.methodName = this.payList[0].text;
+ });
+ } else {
+ console.log(this.detail.id)
+ otcApi.ctcPaymentMethodUserPay({ id: this.detail.id, language: this.$i18n.locale }).then(res => {
+ this.payList = res.data
+ this.payList.map(item => {
+ item.text = item.methodName
+ item.value = item.id
+ })
+ this.payType = this.payList[0].value;
+ this.methodName = this.payList[0].text;
+ })
+ }
+
+ otcApi.c2cGetPayCurrencyList().then(res => {
+ console.log(res.data);
+ })
+
+ },
+ watch: {
+ payType(val) {
+ this.$emit("payType", val);
+ },
+ },
+ methods: {
+ // 刷新点击
+ refresh(e) {
+ this.num++;
+ e.target.style.transform = `rotateZ(-${this.num * 360}deg)`;
+ this.$emit("refresh");
+ },
+ onSelect(action) {
+ this.payType = action.value;
+ this.methodName = action.text;
+ },
+ },
+ computed: {
+ ...mapState("home", ["currency"]),
+ ...mapGetters("c2c", ["direction", "currencySymbol"]),
+ // fullMethodName() {
+ // if (this.paymentMethodName) {
+ // return this.paymentMethodName;
+ // } else {
+ // return "请选择";
+ // }
+ // },
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Divider.name]: Divider,
+ [DropdownMenu.name]: DropdownMenu,
+ [DropdownItem.name]: DropdownItem,
+ [Popover.name]: Popover,
+ NormalHead,
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/mixin.scss";
+@import "@/assets/css/copy2.scss";
+
+.c2cTrade {
+ ::v-deep .van-icon {
+ font-size: 2rem;
+ }
+
+ ::v-deep .van-button {
+ border-radius: 10px;
+ background: #2EBD85;
+ }
+}
+
+.border-bottom-1px {
+ position: relative;
+
+ &:after {
+ @include border-1px("bottom");
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/components/CarItem.vue b/src/views/C2C/c2c-trade/components/CarItem.vue
new file mode 100644
index 0000000..a142f0e
--- /dev/null
+++ b/src/views/C2C/c2c-trade/components/CarItem.vue
@@ -0,0 +1,74 @@
+<template>
+ <div class="pl-30 pr-30 pt-55 payment_item c2cColor" :class="{ 'border-b-grey': item.type === 'CN' }">
+ <div class="title flex justify-between w-full">
+ <div class="flex items-center">
+ <div class="w-11 h-36 mr-22 rounded-2xl" :style="{ 'background': color }"></div>
+ <div class="font-37">{{ $t(item.methodName) }}</div>
+ </div>
+ <div class="icon edit" @click="editClick(item, $event)">
+ <img class="edit w-32 h-32" src="@/assets/image/payment/edit.png" alt="">
+ </div>
+ </div>
+ <div class="mt-20 font-32">{{ item.realName }}</div>
+ <div class="number">
+ <div class="font-700 mt-18 font-37" :class="{ 'ml-44': item.type === 'EN', 'font-32': item.type === 'EN' }">
+ {{ item.paramValue1 ? item.paramValue1 : fullNumber(item.paramValue1) }}
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { getRandom, } from "@/utils/utis";
+
+export default {
+ name: "CarItem",
+ props: ["item", "type"],
+ data() {
+ return {
+ color: "#",
+ }
+ },
+ created() {
+ for (let i = 0; i < 6; i++) {
+ this.color += getRandom();
+ }
+ console.log(this.color)
+ },
+ methods: {
+ fullNumber(number) {
+ if (this.item.type === 'CN') {
+ return number.replace(/(\d{4})/g, "$1 ").trim()
+ // return number;
+ } else {
+ return number;
+ }
+ },
+ // 进入银行卡详情页面
+ editClick(data) {
+ this.$router.push({
+ name: 'bankCarDetail',
+ query: {
+ id: data.id,
+ type: 'CN',
+ configType: 'edit'
+ }
+ })
+ }
+ },
+ computed: {}
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.pt-55 {
+ padding-top: 55px;
+ ;
+}
+
+.payment_item {
+ background: $tab_background;
+ border-bottom: 1px solid $divi_line;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/components/TradeSuccess.vue b/src/views/C2C/c2c-trade/components/TradeSuccess.vue
new file mode 100644
index 0000000..26eeae7
--- /dev/null
+++ b/src/views/C2C/c2c-trade/components/TradeSuccess.vue
@@ -0,0 +1,50 @@
+<template>
+ <div class="w-full h-full">
+ <order-nav :back="false" @back="$router.push('/wantBuy')" />
+ <div class="mt-40">
+ <div class="flex justify-center">
+ <img class="w-122 h-122" src="@/assets/image/c2c/Group100.png" alt="">
+ </div>
+ <div class="flex justify-center flex-col items-center mt-45 font-700 font-56">
+ <div>
+ <slot name="price"></slot>
+ </div>
+ </div>
+ </div>
+ <div class="flex flex-col items-center mt-184">
+ <div>
+ <van-button class="w-360 h-92 rounded-lg bg-blue" type="info"
+ @click="$router.push('/tradeSuccessDetailBuyer')">{{ $t('完成') }}</van-button>
+ </div>
+ <div class="mt-46 font-32 font-400 text-blue " @click="$router.push('/funds')">{{ $t('查看资产') }}</div>
+ </div>
+ <!-- <div class="absolute bottom-0 left-0 w-full text-center">-->
+ <!-- <van-divider />-->
+ <!-- <evaluation class="pb-80">-->
+ <!-- <template #desc>-->
+ <!-- <slot name="desc"></slot>-->
+ <!-- </template>-->
+ <!-- </evaluation>-->
+ <!-- </div>-->
+ </div>
+</template>
+
+<script>
+import {
+ Button,
+ Divider,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav";
+import Evaluation from "@/page/c2cOrder/payment/components/Evaluation";
+export default {
+ name: "TradeSuccess",
+ components: {
+ [Button.name]: Button,
+ [Divider.name]: Divider,
+ OrderNav,
+ Evaluation,
+ }
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue b/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue
new file mode 100644
index 0000000..76901fb
--- /dev/null
+++ b/src/views/C2C/c2c-trade/components/TradeSuccessDetail.vue
@@ -0,0 +1,213 @@
+<template>
+ <div id="full" style="z-index: 100;overflow: auto;"
+ class="fixed top-0 left-0 w-full h-full c2cBackground1 tradeSuccessDetail">
+ <div :class="orderDetail.state == 3 ? 'green' : 'greyBg'">
+ <order-nav :back="back" :class="orderDetail.state == 3 ? 'green' : 'greyBg'" @back="$router.replace('/wantBuy')">
+ <template #left>
+ <van-icon name="arrow-left" class="arrow-left-icon" />
+ </template>
+ <template #right>
+ <div class="flex items-center chat flex justify-center" @click="$router.push({
+ path: '/chat'
+ })">
+ <van-badge class="w-35 h-33 mr-22">
+ <img class="w-full h-full" v-if="orderDetail.state == 3" src="@/assets/image/c2c/Vector-white.png"
+ alt="" />
+ <img class="w-full h-full" v-else src="@/assets/image/c2c/Vector-black.png" alt="" />
+ </van-badge>
+ <span class="font-28" :class="orderDetail.state == 3 ? 'text-white' : 'c2cColor'">
+ <span>{{ orderDetail.direction == 'buy' ? $t('联系卖家') : $t('联系买家') }}</span>
+ </span>
+ </div>
+ </template>
+ </order-nav>
+ <div class="flex justify-between items-center mt-20 px-32 pb-50 text-white">
+ <div>
+ <div class="font-52" :class="orderDetail.state != 3 ? 'c2cColor' : ''">{{ fixStr() }}</div>
+ <div class="mt-26 font-26" v-if="orderDetail.state == 3">
+ {{ $t('您已成功') }} {{ orderDetail.direction == 'buy' ? $t('购买') : $t('出售') }} {{
+ orderDetail.symbol.toLowerCase() == 'usdt' ? Math.floor(orderDetail.amountUsdt * 100) / 100 :
+ Math.floor(orderDetail.amountUsdt * 10000) / 10000 }} {{ orderDetail.symbol.toUpperCase() }}
+ </div>
+ <div class="mt-26 font-26 c2cColor" v-else>{{ fixText() }}</div>
+ </div>
+ <div>
+ <img v-if="orderDetail.state == 3" class="w-92 h-92" src="@/assets/image/c2c/Group181.png" alt="">
+ <img v-else class="w-92 h-92" src="@/assets/image/c2c/Group1212.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div class="pt-46 pb-30 c2cTabBackground">
+ <order-data :detail="orderDetail">
+ <div class="w-full h-16 mb-40 diviLine"></div>
+ </order-data>
+ </div>
+ <div class="px-32 mt-16 mainBackground py-39">
+ <h2 class="font-400 font-30 c2cColor">{{ $t('交易方式') }}</h2>
+ <div class="flex items-center mt-28">
+ <div class="w-6 h-28 border-ra" style="background: #E7BB41;"></div>
+ <span class="ml-9 font-22 text-grey">{{ orderDetail.methodName }}</span>
+ </div>
+ </div>
+ <!-- <van-divider/>-->
+ <!-- <evaluation class="pb-60 bg-white">-->
+ <!-- <template #desc>-->
+ <!-- <slot name="desc"></slot>-->
+ <!-- </template>-->
+ <!-- </evaluation>-->
+ <div class="mt-16">
+ <div class="flex justify-between items-center h-100 px-32 mt-16 c2cTabBackground c2cColor" @click="tokefu">
+ <div>
+ <span class="font-30 c2cColor">{{ $t('联系客服') }}</span>
+ </div>
+ <div>
+ <van-icon name="arrow" class="font-700" />
+ </div>
+ </div>
+ <div class="flex justify-between items-center h-100 px-32 mt-16 c2cTabBackground c2cColor"
+ @click="$router.push('/Appeal')">
+ <div>
+ <span class="font-30 c2cColor">{{ $t('对订单存在疑问') }}</span>
+ </div>
+ <div>
+ <van-icon name="arrow" class="font-700" />
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import {
+ Badge,
+ Divider,
+ Cell,
+ CellGroup,
+ Icon,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav";
+import OrderData from "@/page/c2cOrder/components/order-data/OrderData";
+import Evaluation from "@/page/c2cOrder/payment/components/Evaluation";
+import otcApi from "@/API/otc";
+export default {
+ name: "TradeSuccessDetail",
+ props: ['title', 'back'],
+ data() {
+ return {
+ checked: false,
+ orderDetail: {},
+ }
+ },
+ components: {
+ [Badge.name]: Badge,
+ [Divider.name]: Divider,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Icon.name]: Icon,
+ OrderNav,
+ OrderData,
+ Evaluation,
+ },
+ async created() {
+ console.log(this.orderInfo)
+ const order_no = this.$store.state.c2c.order_no
+ const res = await otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale });
+ this.orderDetail = res.data;
+ },
+ methods: {
+ fixStr() {
+ let str = ''
+ if (this.orderDetail.state == 1) {
+ str = ''
+ } else if (this.orderDetail.state == 2) {
+ str = this.$t('申诉中')
+ } else if (this.orderDetail.state == 3) {
+ str = this.$t('已完成')
+ } else if (this.orderDetail.state == 4) {
+ str = this.$t('已取消')
+ } else if (this.orderDetail.state == 5) {
+ str = this.$t('已超时')
+ }
+ return str
+ },
+ fixText() {
+ let str = ''
+ if (this.orderDetail.state == 2) {
+ str = this.$t('您的订单正在申诉处理中')
+ } else if (this.orderDetail.state == 4) {
+ str = this.$t('您已取消订单')
+ } else if (this.orderDetail.state == 5) {
+ str = this.$t('您的订单已超时')
+ }
+ return str
+ },
+ tokefu() {
+ this.$router.push('/customerService')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+
+.tradeSuccessDetail {
+ .arrow-left-icon {
+ color: $text_color;
+ }
+
+ ::v-deep .van-nav-bar__right {
+ padding: 0;
+ }
+
+ ::v-deep .van-nav-bar__arrow {
+ color: #fff;
+ }
+
+ ::v-deep .greyBg .van-nav-bar {
+ background:$grey_bg;
+ }
+
+ ::v-deep .green .van-nav-bar {
+ background: #2EBD85;
+ }
+
+ ::v-deep .van-cell {
+ padding: 0 32px !important;
+ background: $c2c_tab_background;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ ::v-deep .van-cell-group {
+ background: $c2c_tab_background;
+ }
+
+ ::v-deep .van-cell__title {
+ color: $text_color1;
+ }
+
+ ::v-deep .van-cell__value {
+ color: $text_color;
+ }
+}
+
+.switch {
+ transform: scale(.7) translateX(20px);
+}
+
+.chat {
+ width: 232px;
+ height: 64px;
+ border-radius: 36px 0px 0px 36px;
+}
+
+.green {
+ background: #2EBD85;
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/components/c2cCollectionEmpty.vue b/src/views/C2C/c2c-trade/components/c2cCollectionEmpty.vue
new file mode 100644
index 0000000..d8f1dfe
--- /dev/null
+++ b/src/views/C2C/c2c-trade/components/c2cCollectionEmpty.vue
@@ -0,0 +1,13 @@
+<template>
+<div></div>
+</template>
+
+<script>
+export default {
+ name: "c2cCollectionEmpty"
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/index.vue b/src/views/C2C/c2c-trade/index.vue
new file mode 100644
index 0000000..1be3681
--- /dev/null
+++ b/src/views/C2C/c2c-trade/index.vue
@@ -0,0 +1,27 @@
+<template>
+ <div class="w-full">
+ <c2c-buy v-if="direction === 'buy'" />
+ <c2c-sell v-else />
+ </div>
+</template>
+
+<script>
+import c2cBuy from "./page/c2cBuy.vue";
+import c2cSell from "./page/c2cSell.vue";
+import { mapGetters } from "vuex";
+export default {
+ name: "c2cTradeBridge",
+ computed: {
+ ...mapGetters('c2c', ['direction'])
+ },
+ components: {
+ c2cBuy,
+ c2cSell,
+ },
+ created() {
+ console.log("c2c-trade",this.direction)
+ }
+}
+</script>
+
+<style scoped></style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/page/SellGenerate.vue b/src/views/C2C/c2c-trade/page/SellGenerate.vue
new file mode 100644
index 0000000..1b3f2e5
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/SellGenerate.vue
@@ -0,0 +1,281 @@
+<template>
+ <div id="full" class="w-full h-full">
+ <loading v-if="loading" />
+ <!--完成加载-->
+ <div v-else>
+ <order-nav />
+ <div class="px-32 pb-41 mainBackground">
+ <div class="flex justify-between c2cColor">
+ <div class="mt-10">
+ <div class="font-48">{{ $t('等待买家付款') }}</div>
+ <div class="mt-16 font-24">{{ $t('预计收到付款') }} <span style="color: #1D91FF">{{
+ orderDetail.expireTime
+ }}{{ $t('分钟') }}</span>
+ </div>
+ </div>
+ <div class="w-140 h-144">
+ <otc-circle :time="orderDetail.expireTime * 60" @finish="finish" class="w-full h-full" />
+ </div>
+ </div>
+ <div class="w-full mt-48 pt-46 pl-32 pb-42 box-border border-ra tabBackground c2cColor">
+ <div class="flex justify-between">
+ <div class="flex items-center">
+ <img class="w-38 h-38 mr-10" :src="orderDetail.c2cUserHeadImg" alt="">
+ <h3 class="font-32 font-400">{{ $t(orderDetail.c2cUserNickName) }}</h3>
+ <img class="w-30 h-30 ml-8 mr-20" src="@/assets/image/otc/buy/star.png" alt="">
+ <van-icon color="#9399A4" name="arrow" class="relative top-1 font-700 font-20" />
+ </div>
+ <div
+ style="background:linear-gradient(to right,#b6dbff,#1d91ff);border-top-left-radius: 40px;border-bottom-left-radius: 40px;"
+ class="flex items-center font-24 text-white py-10 px-14" @click="$router.push({ path: '/chat' })">
+ <img class="w-35 h-33 mr-10" src="@/assets/image/c2c/Vector-white.png" alt="" />
+ {{ $t('联系买家') }}
+ </div>
+ </div>
+ <div class="mt-60">
+ <div class="flex items-center mb-30 pr-185">
+ <img class="w-28 h-28 mr-12" src="@/assets/image/c2c/Vector2.png" alt="">
+ <p class="font-24">
+ <span class="text-grey">{{ $t('买家实名 :') }} </span>
+ <span>{{ $t(orderDetail.realName) }}</span>
+ </p>
+ </div>
+ <div class="flex justify-between">
+ <div class="flex items-center">
+ <img class="w-28 h-28 mr-12" src="@/assets/image/c2c/gou.png" alt="">
+ <p class="font-24">{{ $t('7x24小时客服支持') }}</p>
+ </div>
+ <div class="pr-40" @click="tokefu">
+ <van-icon color="#9399A4" name="arrow" class="relative top-1 font-700 font-20" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div>
+ <trade-data :title="$t('出售')" :detail="orderDetail" :count="orderDetail.coinAmount"
+ :total-price="orderDetail.amount" :order-number="orderDetail.orderNo" :trade-method="tradeMethod"
+ :method-name="fullMethodType(orderDetail.methodType)" :unit-price="orderDetail.symbolValue">
+ <template #trade-title>
+ <span>{{ $t('我的收款方式') }}</span>
+ </template>
+ <template #terms>
+ <van-collapse v-model="activeNames">
+ <van-collapse-item name="2">
+ <template #title>
+ <span>{{ $t('交易条款') }}</span>
+ </template>
+ <van-divider />
+ <p class="font-28">{{ $t('资金绝对安全') }}</p>
+ <p class="mt-20 font-28">{{ $t('平时订单较多,看见了会立马打款。急单勿拍!') }}</p>
+ </van-collapse-item>
+ </van-collapse>
+ </template>
+ </trade-data>
+ </div>
+ <div class="flex justify-between px-40 pt-50 pb-41 mt-170 mainBackground">
+ <van-button class="w-244 h-80 mr-16 c2cColor tabBackground" type="primary"
+ @click="$router.push({ path: '/c2cHelp', query: { 'expireTimeRemain': orderDetail.expireTime * 60, 'state': orderDetail.state } })">{{
+ $t('帮助') }}
+ </van-button>
+ <van-button class="disable flex-1 h-80 enter" color="#CCCFD6" type="primary">{{ $t('我已确认收款') }}
+ </van-button>
+ </div>
+ <van-popup class="w-full h-full" position="right" v-model="isShowCancelOrder">
+ <cancel-success v-if="!timeout" :title="$t('出售')" :count="orderDetail.coinAmount"
+ :total-price="orderDetail.amount" :order-number="orderDetail.orderNo"
+ :create-order-time="fullTime(orderDetail.createTime)" :seller-name="orderDetail.c2cUserNickName"
+ :unit-price="orderDetail.symbolValue" />
+ <!-- 已超时 -->
+ <cancel-success v-if="timeout" :title="$t('出售')" :count="orderDetail.coinAmount" :total-price="orderDetail.amount"
+ :order-number="orderDetail.orderNo" :create-order-time="fullTime(orderDetail.createTime)"
+ :seller-name="orderDetail.c2cUserNickName" :unit-price="orderDetail.symbolValue">
+ <template #title>{{ $t('已超时') }}</template>
+ <template #desc>{{ $t('买家付款超时,您的订单已取消') }}</template>
+ </cancel-success>
+ </van-popup>
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+import { Button, Collapse, CollapseItem, Divider, Icon, Popup, showToast } from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import TradeData from "../../c2cOrder/components/trade-data/TradeData.vue";
+import OtcCircle from "@/components/otcCircle/index.vue";
+import CancelSuccess from "../../c2cOrder/components/order-generation/CancelSuccess.vue";
+import loading from "@/components/loading/index.vue";
+
+import otcApi from "@/service/otc";
+
+import { formatTime } from "@/utils/utis";
+import { SET_ORDER_INFO } from "@/store/const.store";
+
+export default {
+ name: "SellGenerate",
+ // props: ['orderNumber'],
+ data() {
+ return {
+ loading: false, // 请求中
+ isShowCancelOrder: false,// 显示取消订单
+ timeout: false, //是否已超时
+ activeNames: [],
+ // 交易方式
+ tradeMethod: [],
+ orderDetail: {},
+ orderNumber: '',
+ timeStatus: null
+ }
+ },
+ created() {
+ // console.log(this.orderNumber)
+ // this.orderNumber = this.$route.query.orderNumber
+ this.orderNumber = this.$store.state.c2c.order_no
+ this.getOrderDetail();
+ },
+ beforeDestroy() {
+ console.log('bbb')
+ if (this.timeStatus) {
+ clearTimeout(this.timeStatus)
+ }
+ },
+ methods: {
+ async getOrderDetail() {
+ console.log(this.orderNumber)
+ const res = await otcApi.ctcOrderGetDetail({ order_no: this.orderNumber, language: this.$i18n.locale });
+ this.orderDetail = res.data;
+ if (res.data.state / 1 === 0) {
+ this.timeStatus = setTimeout(() => {
+ this.getOrderDetail()
+ }, 3000)
+ } else {
+ if (this.timeStatus) {
+ clearTimeout(this.timeStatus)
+ this.$router.replace({
+ path: '/confirmedPaid'
+ })
+ }
+ }
+
+ // 保存订单数据
+ this.$store.commit(`c2cSell/${SET_ORDER_INFO}`, {
+ info: this.orderDetail
+ })
+ this.loading = false;
+ },
+ // 已确认收款
+ enter() {
+
+ // 跳转页面
+ this.$router.replace({
+ path: '/confirmedPaid'
+ })
+ },
+ // 已超时
+ finish() {
+ if (this.timeout) return
+
+ this.loading = true;
+ // 重新获取订单状态
+ //this.getOrderDetail();
+ this.isShowCancelOrder = false;
+ this.timeout = true;
+ },
+ // 取消订单
+ t() {
+ // this.isShowCancelOrder = true;
+
+ // 取消订单
+ // otcApi.ctcOrderCancel({order_no: this.orderInfo.orderNumber}).then(res => {
+ // console.log(res)
+ // }).catch(err => {
+ // console.log(err)
+ // })
+ // setTimeout(() => {
+ // showToast("取消成功")
+ // }, 400)
+ },
+ // 支付方法
+ fullMethodType(num) {
+ const arr = [this.$t('其它'), this.$t('银行卡'), this.$t('虚拟货币'), this.$t('微信'), this.$t('支付宝'), 'paypal', this.$t('西联汇款'), this.$t('swift国际汇款')]
+ return arr[num];
+ },
+ fullTime(time) {
+ console.log(formatTime(new Date(time), 'yyyy-MM-dd hh:mm:ss'));
+ return formatTime(new Date(time), 'yyyy-MM-dd hh:mm:ss')
+ },
+ tokefu() {
+ this.$router.push('/customerService')
+ }
+ },
+ watch: {
+ orderDetail() {
+ this.tradeMethod.push({
+ label: this.$t('姓名'), value: this.orderDetail.realName
+ })
+ this.tradeMethod.push({
+ label: this.$t('银行卡号/账号'), value: this.orderDetail.paramValue1
+ })
+ this.tradeMethod.push({
+ label: this.$t('银行名称'),
+ value: this.orderDetail.methodName
+ })
+ }
+ },
+ computed: {
+ ...mapState('c2cSell', ['orderInfo']),
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ [Divider.name]: Divider,
+ [Button.name]: Button,
+ [Popup.name]: Popup,
+ OrderNav,
+ TradeData,
+ OtcCircle,
+ CancelSuccess,
+ loading,
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.border-ra {
+ border-radius: 20px;
+}
+
+::v-deep .order-data {
+ .title {
+ color: #E35461;
+ }
+
+}
+
+::v-deep {
+ .disable.van-button {
+ color: #7C838F !important
+ }
+
+ .van-button--primary {
+ border: none;
+ }
+}
+
+.loading {
+ background: #fff;
+
+ ::v-deep {
+ .van-loading {
+ color: #1D91FF;
+ }
+ }
+}
+
+.enter {
+ //color: #7C838F !important;
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/TradeSuccessBuyer.vue b/src/views/C2C/c2c-trade/page/TradeSuccessBuyer.vue
new file mode 100644
index 0000000..588f86b
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/TradeSuccessBuyer.vue
@@ -0,0 +1,48 @@
+<template>
+ <div class="w-full">
+ <trade-success>
+ <template #price>
+ <div class="w-full text-center">
+ <div class="info-tilte">
+ <span>{{ detail.symbol == 'usdt' ? Math.floor(detail.amountUsdt * 100) / 100 :
+ Math.floor(detail.amountUsdt * 10000) / 10000 }}</span>
+ <span class="ml-15 font-36">{{ detail.symbol && detail.symbol.toUpperCase() }}</span>
+ </div>
+ <div class="mt-14 font-400 font-28 text-grey">{{ $t('已存入您的资金账户') }}</div>
+ </div>
+ </template>
+ <template #desc>
+ <span>{{ $t('请您对买家进行评价') }}</span>
+ </template>
+ </trade-success>
+ </div>
+</template>
+
+<script>
+import TradeSuccess from "@/page/c2c-trade/components/TradeSuccess";
+import otcApi from '@/API/otc';
+
+export default {
+ name: "TradeSuccessBuyer",
+ components: {
+ TradeSuccess,
+ },
+ data() {
+ return {
+ detail: {}
+ }
+ },
+ created() {
+ const order_no = this.$store.state.c2c.order_no
+ otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale }).then(res => {
+ this.detail = res.data
+ })
+ }
+}
+</script>
+
+<style scoped lang="scss">
+.info-tilte {
+ color: $text_color;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/page/TradeSuccessDetailBuyer.vue b/src/views/C2C/c2c-trade/page/TradeSuccessDetailBuyer.vue
new file mode 100644
index 0000000..bf24e7f
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/TradeSuccessDetailBuyer.vue
@@ -0,0 +1,27 @@
+<template>
+<div class="w-full h-full">
+ <trade-success-detail
+ :back="false"
+ :title="$t('购买')"
+ >
+ </trade-success-detail>
+</div>
+</template>
+
+<script>
+import TradeSuccessDetail from "@/page/c2c-trade/components/TradeSuccessDetail";
+export default {
+ name: "TradeSuccessDetailBuyer",
+ components: {
+ TradeSuccessDetail,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .order-data {
+ .title {
+ padding-left: 32px;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/TradeSuccessDetailSell.vue b/src/views/C2C/c2c-trade/page/TradeSuccessDetailSell.vue
new file mode 100644
index 0000000..a888eed
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/TradeSuccessDetailSell.vue
@@ -0,0 +1,35 @@
+<template>
+ <div class="w-full h-full">
+ <trade-success-detail
+ :title="$t('出售')"
+ >
+ <template #price>
+ <div>{{$t('您已成功出售')}}<span class="mx-8">{{ orderInfo.coinAmount }}</span>{{ orderInfo.symbol.toLocaleUpperCase() }}</div>
+ </template>
+ </trade-success-detail>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import TradeSuccessDetail from "@/page/c2c-trade/components/TradeSuccessDetail";
+export default {
+ name: "TradeSuccessDetailSell",
+ computed: {
+ ...mapState('c2cSell', ['orderInfo'])
+ },
+ components: {
+ TradeSuccessDetail,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .order-data {
+ .title {
+ padding-left: 32px;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/TradeSuccessSell.vue b/src/views/C2C/c2c-trade/page/TradeSuccessSell.vue
new file mode 100644
index 0000000..1553765
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/TradeSuccessSell.vue
@@ -0,0 +1,52 @@
+<template>
+<div>
+ <trade-success>
+ <template #price>
+ <div class="w-full text-center">
+ <div>
+ <span class="relative bottom-2 mr-15 font-36">{{ currencySymbol }}</span>
+ <span class="font-60">{{ detail.amount }}</span>
+ </div>
+ <div class="mt-14 font-400 font-28 text-grey">
+ {{$t('您已成功出售')}}
+ <span class="mx-8">{{ detail.symbol == 'usdt' ? Math.floor(detail.coinAmount * 100) / 100 : Math.floor(detail.coinAmount * 100000) / 100000 }}</span>
+ <span>{{ detail.symbol && detail.symbol.toLocaleUpperCase() }}</span>
+ </div>
+ </div>
+ </template>
+ <template #desc>
+ <span>{{$t('请您对买家进行评价')}}</span>
+ </template>
+ </trade-success>
+</div>
+</template>
+
+<script>
+import TradeSuccess from "@/page/c2c-trade/components/TradeSuccess";
+import otcApi from '@/API/otc';
+import { mapGetters } from "vuex";
+export default {
+ name: "TradeSuccessSell",
+ components: {
+ TradeSuccess,
+ },
+ data() {
+ return {
+ detail: {}
+ }
+ },
+ computed: {
+ ...mapGetters("c2c", ['currencySymbol']),
+ },
+ created() {
+ const order_no = this.$store.state.c2c.order_no
+ otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale }).then(res => {
+ this.detail = res.data
+ })
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/page/c2cBuy.vue b/src/views/C2C/c2c-trade/page/c2cBuy.vue
new file mode 100644
index 0000000..9fc0491
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/c2cBuy.vue
@@ -0,0 +1,279 @@
+<template>
+ <div class="c2cBuy w-full h-full">
+ <c2c-trade :title="$t('购买') + ' ' + symbol" :detail="detail" @refresh="fetchDetail" @payType="payType = $event"
+ v-if="detail.id">
+ <template #trade>
+ <div class="buy-item mt-40 w-full mainBackground c2cColor">
+ <div class="buy-item-title flex justify-between font-28 py-34 border-b-1 border-light-grey c2cColor">
+ <div class="flex-1 text-center" :class="{ 'text-grey': type === 'num' }" @click="typeSwitch('amount')">
+ {{ $t('按金额购买') }}
+ </div>
+ <div class="flex-1 text-center" :class="{ 'text-grey': type === 'amount' }" @click="typeSwitch('num')">
+ {{ $t('按数量购买') }}
+ </div>
+ </div>
+ <div class="px-32 mt-40">
+ <div class="w-full buy-item-input relative box-border" v-show="type === 'amount'">
+ <span class="font-28 absolute left-28 text font-700 c2cColor">{{ currencySymbol }}</span>
+ <input class="w-full font-36 h-110 border-none box-border pl-96 c2cColor" type="number"
+ :placeholder="$t('请输入金额')" v-model="money" @input="changeVal">
+ <span class="font-28 absolute right-19 text c2cColor" @click="all">{{ $t('全部') }}</span>
+ </div>
+ <div class="w-full buy-item-input relative box-border" v-show="type === 'num'">
+ <input class="w-full font-36 h-110 border-none box-border pl-30 c2cColor" type="number"
+ :placeholder="$t('请输入数量')" v-model="quantity" @input="changeValNum">
+ <span class="font-28 absolute right-19 text">
+ <span class="mr-16" style="color:#B8BCC5;">{{ symbol }}</span>
+ <span class="c2cColor" @click="all">{{ $t('全部') }}</span>
+ </span>
+ </div>
+ <div v-if="tips" class="flex mt-12 text-red font-28">
+ {{ tips }}
+ </div>
+ <div class="flex justify-between mt-40 mb-12 c2cColor">
+ <span class="text-grey">{{ $t('数量') }}</span>
+ <span>{{ totalQuantity }} {{ symbol }}</span>
+ </div>
+ <div class="flex justify-between c2cColor">
+ <span class="text-grey">{{ $t('总额') }}</span>
+ <span>{{ totalMoney }} {{ currencySymbol }}</span>
+ </div>
+ <div class="w-full mt-24 pb-30">
+ <van-button @click="buyClick" class="w-full font-30 buy-button" :disabled="loading" type="primary">
+ <span v-if="!loading">{{ $t('购买') }} {{ symbol }}</span>
+ <van-loading v-else type="spinner" />
+ </van-button>
+ </div>
+ </div>
+ </div>
+ </template>
+ <template #desc>
+ <div class="mt-36">
+ <h2 class="font-28 font-400 c2cColor">{{ $t('交易信息') }}</h2>
+ <div class="mt-30 font-26 text-grey">
+ <p class="lh-45">{{ $t('请先阅读以下内容:') }}</p>
+ <p class="lh-45">{{ $t('银行卡转账切勿备注,不然不给予放币和直接封其账号。付款后 需要提供打款后新的交易明细图(如果P图或者隐藏交易明细上报平台冻结账户)') }}</p>
+ </div>
+ </div>
+ </template>
+ </c2c-trade>
+ </div>
+</template>
+
+<script>
+import { formatTime } from "@/utils/utis";
+import { Button, Cell, DropdownItem, DropdownMenu, Field, Icon, Popup, Switch, showToast } from "vant";
+// import { SET_COUNT, SET_CREATE_ORDER_TIME, SET_ORDER_NUMBER, SET_TOTAL_PRICE, } from "@/store/const.store";
+import C2cTrade from "../components/C2cTrade.vue";
+import otcApi from "@/service/otc.js";
+import { mapGetters } from "vuex";
+export default {
+ name: "c2cBuy",
+ data() {
+ return {
+ type: 'amount', // 按金额/数量购买
+ detail: {},
+ payType: '',
+ tips: '',
+ money: '',
+ quantity: '',
+ totalMoney: '-',
+ totalQuantity: '-',
+ loading: false
+ }
+ },
+ created() {
+ this.fetchDetail()
+ },
+ methods: {
+ fetchDetail() { // 获取详情
+ const id = this.$store.state.c2c.adv_id
+ otcApi.ctcAdvertGetDetail({ id, language: this.$i18n.locale }).then(res => {
+ if (res.data.symbol_value == this.detail.symbol_value) {
+ showToast(this.$t('无价格更新'))
+ }
+ this.detail = res.data
+ })
+ },
+ async submitOrder() { // 发起订单
+ this.loading = true
+ const data = await otcApi.getSessionToken({ currency: this.exchangeCurrency })
+ // console.log("this.payType",this.payType,this.detail);
+ // return
+
+ const params = {
+ session_token: data.data.session_token, // session_token
+ c2c_advert_id: this.detail.id,
+ payment_method_id: this.payType,
+ direction: 'buy',
+ order_type: this.type === 'amount' ? 'by_amount' : 'by_num', // 'by_num'
+ amount: this.type === 'amount' ? this.totalMoney / 1 : '', // 金额
+ coin_amount: this.type === 'amount' ? '' : this.totalQuantity / 1 // 数量
+ }
+ otcApi.ctcOrderOpen(params).then(res => {
+ this.loading = false
+ this.$store.commit('c2c/SET_ORDER_NO', res.data.order_no)
+ this.$router.push('/orderGeneration')
+ }).catch(err => {
+ this.loading = false
+ })
+ },
+ // 切换类型
+ typeSwitch(type) {
+ this.type = type;
+ this.tips = ''
+ this.money = ''
+ this.quantity = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ },
+ changeVal(e) {
+ // e.target.value = e.target.value.replace('-', ''); 不能输入小数了
+ //this[this.type] = e.target.value;
+ if (this.money == '') {
+ this.tips = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ if (this.money * 1 < this.detail.investment_min * 1) {
+ this.tips = this.$t('最小金额') + this.detail.investment_min + ' ' + this.exchangeCurrency
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else if (this.money * 1 > this.detail.investment_max * 1) {
+ this.tips = this.$t('最大金额') + this.detail.investment_max + ' ' + this.exchangeCurrency
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ this.tips = ''
+ this.totalMoney = this.money
+ if (this.symbol !== "USDT") {
+ this.totalQuantity = Math.floor((this.totalMoney / this.detail.symbol_value) * 1000000) / 1000000
+ } else {
+ this.totalQuantity = Math.floor((this.totalMoney / this.detail.symbol_value) * 100) / 100;
+ }
+ }
+ }
+ },
+ changeValNum() {
+ if (this.quantity == '') {
+ this.tips = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ let minNum = Math.floor((this.detail.investment_min / this.detail.symbol_value) * 1000000) / 1000000;
+ let maxNum = Math.floor((this.detail.investment_max / this.detail.symbol_value) * 1000000) / 1000000;
+ if (this.quantity * 1 < minNum * 1) {
+ this.tips = this.$t('最小数量') + minNum + ' '
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else if (this.quantity * 1 > maxNum * 1) {
+ this.tips = this.$t('最大数量') + maxNum + ' '
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ this.tips = ''
+ this.totalQuantity = this.quantity
+ if (this.symbol !== "USDT") {
+ this.totalMoney = (this.quantity * this.detail.symbol_value).toFixed(6)
+ } else {
+ this.totalMoney = (this.quantity * this.detail.symbol_value).toFixed(2)
+ }
+ }
+ }
+ },
+ // 购买
+ async buyClick() {
+ if (this.type == 'amount') {
+ if (this.money == '') {
+ showToast(this.$t('请输入金额'))
+ } else {
+ this.submitOrder()
+ }
+ } else {
+ console.log(this.quantity)
+ if (this.quantity == '') {
+ showToast(this.$t('请输入数量'))
+ } else {
+ this.submitOrder()
+ }
+ }
+ },
+ all() {
+ this.tips = ''
+ this.money = this.detail.investment_max
+ this.totalMoney = this.detail.investment_max
+ if (this.symbol !== "USDT") {
+ this.quantity = Math.floor((this.detail.investment_max / this.detail.symbol_value) * 1000000) / 1000000
+ this.totalQuantity = Math.floor((this.detail.investment_max / this.detail.symbol_value) * 1000000) / 1000000
+ } else {
+ this.quantity = Math.floor((this.detail.investment_max / this.detail.symbol_value) * 100) / 100
+ this.totalQuantity = Math.floor((this.detail.investment_max / this.detail.symbol_value) * 100) / 100
+ }
+ }
+ },
+ computed: {
+ ...mapGetters('c2c', ['symbol', "currencySymbol", "exchangeCurrency"]),
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Field.name]: Field,
+ [Popup.name]: Popup,
+ [Cell.name]: Cell,
+ [Switch.name]: Switch,
+ [DropdownMenu.name]: DropdownMenu,
+ [DropdownItem.name]: DropdownItem,
+ [Button.name]: Button,
+ C2cTrade,
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/mixin.scss";
+@import "@/assets/css/copy2.scss";
+
+.c2cBuy {
+ ::v-deep .van-button {
+ border-radius: 10px;
+ background: #2EBD85;
+ }
+}
+
+
+.buy-item {
+
+ border-radius: 25px;
+ box-shadow: 0 0 8px rgba(0, 0, 0, .2);
+}
+
+.border-ra {
+ border-radius: 10px;
+}
+
+.buy-item-title {
+ position: relative;
+
+ // &:after {
+ // @include border-1px('bottom');
+ // }
+}
+
+.buy-item-input {
+ input {
+ border-radius: 10px;
+ background: $input_background;
+ }
+
+ .text {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+}
+
+
+
+
+.tips {
+ border-radius: 8px;
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/c2cCollection.vue b/src/views/C2C/c2c-trade/page/c2cCollection.vue
new file mode 100644
index 0000000..a4ee6b0
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/c2cCollection.vue
@@ -0,0 +1,135 @@
+<template>
+ <div id="full" class="w-full h-full c2cCollection mainBackground">
+ <assets-head :title="$t('C2C收款方式')" :backFunc="() => $router.replace('/c2cTrade')" />
+ <!-- 判断是否有收款方式 -->
+ <div v-if="paymentList.length === 0" class="pt-50 pb-78 text-center bg-white">
+ <div class="flex justify-center items-center">
+ <img class="w-170 h-170" src="@/assets/image/c2c/23@3x1.png" alt="">
+ </div>
+ <div class="mt-8 text-grey font-24">{{$t('暂无支持的收款方式')}}</div>
+ </div>
+ <div v-else>
+ <car-item
+ class="pb-36"
+ v-for="(item, index) in paymentList"
+ :key="index"
+ :item="item"
+ @click="enterCollection(item, $event)"
+ />
+ </div>
+
+ </div>
+</template>
+
+<script>
+import otcApi from "@/service/otc";
+import {Collapse, CollapseItem, Icon} from "vant";
+import CarItem from "../components/CarItem.vue";
+import assetsHead from "@/components/normal-head/index.vue";
+
+export default {
+ name: "c2cCollection",
+ props: ['isEmpty', 'id'],
+ data() {
+ return {
+ show: true,
+ activeNames: [],
+ paymentList: [],
+ // carData: [
+ // {
+ // title: "银行卡",
+ // number: "4367421420489044633",
+ // name: "James",
+ // bankName: "中国农业银行",
+ // desc: "北京朝阳路支行",
+ // type: 'CN'
+ // },
+ // {
+ // title: "银行卡",
+ // number: "4367421420489041111",
+ // name: "James",
+ // bankName: "中国银行",
+ // desc: "北京朝阳路支行",
+ // type: 'CN'
+ // },
+ // ]
+ }
+ },
+ created() {
+ // otcApi.ctcPaymentMethodPayList({id: this.id}).then(res => {
+ // this.paymentList = res.data;
+ // console.log(this.paymentList);
+ // })
+ otcApi.ctcPaymentMethodUserPay({ id: this.id, language: this.$i18n.locale }).then(res => {
+ console.log('d111', res)
+ this.paymentList = res.data;
+ })
+ },
+ methods: {
+ change() {
+ setTimeout(() => {
+ if (this.activeNames.length > 0) {
+
+ this.show = false;
+ } else {
+ this.show = true;
+ }
+ }, 200)
+ },
+ // 折叠面板隐藏
+ hide() {
+ this.$refs.collapseItem.toggle(false);
+ this.show = true;
+ },
+ // 返回出售界面
+ enterCollection(paymentItem, e) { // 获取银行卡号
+
+ if (e.target.className.indexOf('edit') === -1) {
+ this.$router.replace({
+ name: 'c2cTrade',
+ query: {
+ type: this.$route.query.type,
+ total: this.$route.query.total,
+ data:this.$route.query.data,
+ reciveType: JSON.stringify(paymentItem),
+ }
+ })
+ }
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ assetsHead,
+ CarItem,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.c2cCollection{
+ ::v-deep .van-cell{
+ background: #F5F5F5;
+ }
+ ::v-deep .van-cell {
+ background: #F5F5F5;
+ }
+ ::v-deep .van-collapse-item__wrapper {
+ background: #F5F5F5;
+ }
+ ::v-deep .van-collapse-item__content {
+ padding: 0;
+ }
+}
+::v-deep .van-cell {
+ background: #F5F5F5;
+}
+::v-deep .van-collapse-item__wrapper {
+ margin-top: 36px;
+}
+::v-deep .van-collapse-item__content {
+ padding: 0;
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/c2cHelp.vue b/src/views/C2C/c2c-trade/page/c2cHelp.vue
new file mode 100644
index 0000000..c9578fb
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/c2cHelp.vue
@@ -0,0 +1,93 @@
+<template>
+ <div class="w-full">
+ <assets-head :title="$t('帮助')" />
+ <div class="px-32 pt-40 pb-100 c2cColor">
+ <div class="text-center mb-40 font-700">
+ <div class="flex items-center justify-center" @click="$router.push({ path: '/chat' })">
+ <van-badge class="w-35 h-33 mr-22">
+ <img class="w-full h-full " src="@/assets/image/c2c/Vector.png" alt="">
+ </van-badge>
+ <div class="font-28">{{ $t('联系买家') }}</div>
+ </div>
+ </div>
+ <div class="mb-40">
+ <p class="text-grey mb-10">Q:{{ $t('买家不付款,也没有回复怎么办?') }}</p>
+ <p>
+ A:{{ $t('此订单有付款时间限制') }} <van-count-down class="currentColor" style="display:inline-block"
+ @finish="finish" :time="fullTime" format="mm:ss"></van-count-down>
+ </p>
+ </div>
+ <div class="mb-40">
+ <p class="text-grey mb-10">Q:{{ $t('我可以要求取消订单么?', { 'TITLE': TITLE }) }}</p>
+ <p>A:{{ TITLE }} {{ $t('无法帮助你取消订单。买家可能在下单后根据您选择的付款方式付款。') }}</p>
+ </div>
+ <div class="mb-40">
+ <p class="text-grey mb-10">Q:{{ $t('为什么订单支付时限这么长?') }}</p>
+ <p>A:{{ $t('付款时限由广告方设定。部分支付方式不支持实时支付。这使广告方有足够的时间来确认付款状态。提示:您可以在C2C自选区选择支付时限较短的广告进行下单。') }}</p>
+ </div>
+ <div class="mb-40">
+ <p class="text-grey mb-10">Q:{{ $t('我还没有收到货款,如果买家要求我提前放币怎么办?') }}</p>
+ <p>A:{{ $t('首先确保您已收到付款。一旦您点击我已确认收款,您的数字货币将立即被释放给买家。我们将无法追回您的资产损失。') }}</p>
+ </div>
+ <div class="mb-40">
+ <p class="text-grey mb-10">Q:{{ $t('收到买家付款后订单被取消了怎么办?') }}</p>
+ <p>A:{{ $t('与买家沟通再下单或退款给买家以避免申述') }}</p>
+ </div>
+ </div>
+ <template v-if="state == 0">
+ <button class="text-grey h-97 lh-97 w-762 rounded-lg text-center fixed" :disabled="!showBtn"
+ :class="showBtn ? 'btnMain' : 'grey_bg'" style="bottom:44px;left:16px;right:16px;border:0"
+ @click="toshensu">{{ $t('申述') }}</button>
+ </template>
+ <template v-else>
+ <button class="text-white h-97 lh-97 w-762 rounded-lg text-center fixed btnMain"
+ style="bottom:44px;left:16px;right:16px;border:0" @click="toshensu">{{ $t('申述') }}</button>
+ </template>
+ </div>
+</template>
+
+<script>
+import {
+ Badge,
+ CountDown
+} from "vant";
+import assetsHead from "@/components/assets-head";
+export default {
+ props: ['expireTimeRemain'],
+ computed: {
+ fullTime() {
+ return this.time * 1 * 1000;
+ // return parseInt(this.time) * 60
+ }
+ },
+ components: {
+ assetsHead,
+ [Badge.name]: Badge,
+ [CountDown.name]: CountDown,
+ },
+ created() {
+ this.time = this.$route.query.expireTimeRemain
+ this.state = this.$route.query.state
+ },
+ data() {
+ return {
+ showBtn: false,
+ state: '0'
+ }
+ },
+ methods: {
+ finish() {
+ this.showBtn = true
+ },
+ toshensu() {
+ this.$router.push('/appeal/page')
+ },
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.currentColor {
+ color: $color_main;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2c-trade/page/c2cSell.vue b/src/views/C2C/c2c-trade/page/c2cSell.vue
new file mode 100644
index 0000000..8a982c1
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/c2cSell.vue
@@ -0,0 +1,407 @@
+<template>
+ <div>
+ <c2c-trade :title="$t('出售') + ' ' + $store.state.c2c.symbol" :detail="data" v-if="data.id">
+ <template #trade>
+ <div class="buy-item mt-40 w-full mainBackground c2cColor">
+ <div class="buy-item-title flex justify-between font-28 py-34 border-b-1 border-light-grey">
+ <div class="flex-1 text-center" :class="{ 'text-grey': genre === 'num' }" @click="typeSwitch('amount')">
+ {{ $t("按金额出售") }}
+ </div>
+ <div class="flex-1 text-center" :class="{ 'text-grey': genre === 'amount' }" @click="typeSwitch('num')">
+ {{ $t("按数量出售") }}
+ </div>
+ </div>
+ <div class="px-32 mt-40">
+ <div class="w-full buy-item-input relative box-border" v-show="genre === 'amount'">
+ <span class="font-28 absolute left-28 text font-700">{{
+ currencySymbol
+ }}</span>
+ <input class="w-full font-36 h-110 border-none box-border pl-96" type="text"
+ :placeholder="`${data.investment_min} - ${data.investment_max}`" v-model="money" @input="changeVal" />
+ <span class="font-28 absolute right-19 text" style="color: #1a6ebd" @click="all">{{ $t("全部") }}</span>
+ </div>
+ <div class="w-full mb-40 buy-item-input relative box-border" v-show="genre === 'num'">
+ <input class="w-full font-36 h-110 border-none box-border pl-30 font-400" type="number"
+ :placeholder="$t('请输入数量')" v-model="quantity" @input="changeValNum" />
+ <span class="font-28 absolute right-19 text">
+ <span class="mr-16" style="color: #b8bcc5">{{ $store.state.c2c.symbol }}</span>
+
+ <span style="color: #1a6ebd" @click="all">{{
+ $t("全部")
+ }}</span>
+ </span>
+ </div>
+ <div v-if="tips" class="flex mt-12 text-red font-28">
+ {{ tips }}
+ </div>
+ <div v-show="genre === 'amount'" class="mt-18 font-20 text-grey">
+ {{ $t('可用余额') }} {{ Math.floor(usableVolume * 1000000) / 1000000 }} {{ $store.state.c2c.symbol }} ≈ {{
+ (Math.floor(usableVolume * 100000) / 100000 * data.symbol_value / 1).toFixed(2) }}
+ {{ currencySymbol }}
+ </div>
+ <div
+ class="flex justify-between items-center w-full py-20 my-36 pl-30 pr-36 box-border rounded-md tabBackground"
+ @click="toc2cCollection">
+ <div>
+ <span v-if="!reciveInfo.uuid" class="font-32" style="color: #b8bcc5">{{ $t("选择收款方式") }}</span>
+ <div v-else class="flex items-center font-30 c2cColor">
+ <div class="w-8 h-32 rounded-full" style="background: #e7bb41"></div>
+ <span class="mx-20">{{ reciveInfo.methodName }}</span>
+ <span>{{ fullBankCarNumber }}</span>
+ </div>
+ </div>
+ <van-icon class="font-700" color="#B8BCC5" name="arrow" />
+ </div>
+ <div class="flex justify-between mb-12">
+ <span class="text-grey">{{ $t("数量") }}</span>
+ <span>{{ totalQuantity }}
+ {{ data.symbol && data.symbol.toUpperCase() }}</span>
+ </div>
+ <div class="flex justify-between">
+ <span class="text-grey">{{ $t("总额") }}</span>
+ <span>{{ totalMoney }} {{ currencySymbol }}</span>
+ </div>
+ <div class="w-full mt-24 pb-30">
+ <van-button color="#E35461" @click="SellClick" class="w-full font-30 buy-button" :disabled="loading"
+ type="primary">
+ <span v-if="!loading">{{ $t("出售") }} {{ data.symbol && data.symbol.toUpperCase() }}</span>
+ <van-loading v-else type="spinner" />
+ </van-button>
+ </div>
+ </div>
+ </div>
+ </template>
+ <template #desc>
+ <div class="mt-36">
+ <h2 class="font-28 font-400 c2cColor">{{ $t("交易条款") }}</h2>
+ <div class="mt-30 font-26 text-grey">
+ <p>{{ data.transaction_terms }}</p>
+ </div>
+ </div>
+ </template>
+ </c2c-trade>
+ </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from "vuex";
+import otcApi from "@/service/otc.js";
+
+import { Icon, showToast } from "vant";
+import C2cTrade from "../components/C2cTrade.vue";
+import { _getBalance } from "@/service/trade.api";
+// import { formatTime } from "@/utils/utis";
+import { _getAllWallet } from "@/service/fund.api";
+
+// keep-alive
+export default {
+ name: "c2cSell",
+ props: ["type"],
+ data() {
+ return {
+ id: "", // 广告id
+ genre: "amount", // 按金额/数量购买
+ amount: "", // 金额
+ num: "", // 数量
+ session_token: "",
+ usableVolume: "",
+ data: {},
+ passwd: "", // 资金密码
+ tips: '',
+ money: '',
+ quantity: '',
+ totalMoney: '-',
+ totalQuantity: '-',
+ loading: false,
+ // orderInfo: {
+ // unitPrice: "", // 单价
+ // count: "", // 数量
+ // totalPrice: "", // 总价
+ // orderNumber: "", // 订单号
+ // orderCreateTime: "", // 创建时间
+ // paymentMethodId: "", // 支付方式id
+ // methodName: "", // 支付名称
+ // bankNumber: "", // 银行卡号
+ // realName: "", // 卖家姓名
+ // bankName: "", // 银行名
+ // expire_time: "", // 支付时效
+
+ // },
+ reciveInfo: {},
+ };
+ },
+ created() {
+ // this.id = this.$route.query.id
+ this.id = this.$store.state.c2c.adv_id;
+ let { reciveType } = this.$route.query; // 支付方式
+ if (reciveType) {
+ reciveType = JSON.parse(reciveType);
+ this.reciveInfo = reciveType;
+ console.log("reciveType", reciveType);
+ this.data = JSON.parse(this.$route.query.data)
+ if (this.$route.query.type == 'amount') {
+ this.money = this.$route.query.total
+ this.totalMoney = this.money * 1
+ if (this.symbol !== "USDT") {
+ console.log(this.data.symbol_value)
+ this.totalQuantity = Math.floor((this.totalMoney / this.data.symbol_value) * 1000000) / 1000000
+ } else {
+ this.totalQuantity = Math.floor((this.totalMoney / this.data.symbol_value) * 100) / 100;
+ }
+ } else {
+ this.quantity = this.$route.query.total * 1
+ this.totalQuantity = this.quantity
+ if (this.symbol !== "USDT") {
+ console.log(this.quantity)
+ console.log(this.data.symbol_value)
+ this.totalMoney = (this.quantity * this.data.symbol_value).toFixed(6)
+ } else {
+ this.totalMoney = (this.quantity * this.data.symbol_value).toFixed(2)
+ }
+ }
+ this.genre = this.$route.query.type
+ }
+ this.initData();
+ // 获取余额
+ _getAllWallet().then((res) => {
+ let walletList = res.extends;
+ let initObj = walletList.find(item => {
+ return item.symbol.toLowerCase() == this.$store.state.c2c.symbol.toLowerCase()
+ })
+ this.usableVolume = initObj.usable
+ });
+ },
+ mounted() {
+ // this.$bus.$on("returnPwd", (pwd) => {
+ // this.passwd = pwd;
+ // });
+ // 设置关于订单的信息
+ },
+ beforeDestroy() {
+ // this.$bus.$off("returnPwd");
+ },
+ methods: {
+ toc2cCollection() {
+ let total = ''
+ if (this.genre == 'amount') {
+ total = this.money
+ } else {
+ total = this.quantity
+ }
+ this.$router.replace({ path: '/c2cCollection', query: { id: this.data.id, type: this.genre, total, data: JSON.stringify(this.data) } })
+ },
+ initData() {
+ otcApi.ctcAdvertGetDetail({ id: this.id, language: this.$i18n.locale }).then((res) => {
+ this.data = res.data;
+ });
+ },
+ // 切换类型
+ typeSwitch(type) {
+ this.genre = type;
+ this.tips = ''
+ this.money = ''
+ this.quantity = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ },
+ changeVal(e) {
+ // e.target.value = e.target.value.replace('-', ''); 不能输入小数了
+ //this[this.type] = e.target.value;
+ if (this.money == '') {
+ this.tips = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ if (this.money * 1 < this.data.investment_min * 1) {
+ this.tips = this.$t('最小金额') + this.data.investment_min + ' ' + this.exchangeCurrency
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else if (this.money * 1 > this.data.investment_max * 1) {
+ this.tips = this.$t('最大金额') + this.data.investment_max + ' ' + this.exchangeCurrency
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ this.tips = ''
+ this.totalMoney = this.money
+ if (this.symbol !== "USDT") {
+ this.totalQuantity = Math.floor((this.totalMoney / this.data.symbol_value) * 1000000) / 1000000
+ } else {
+ this.totalQuantity = Math.floor((this.totalMoney / this.data.symbol_value) * 100) / 100;
+ }
+ }
+ }
+ },
+ changeValNum() {
+ if (this.quantity == '') {
+ this.tips = ''
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ let minNum = Math.floor((this.data.investment_min / this.data.symbol_value) * 1000000) / 1000000;
+ let maxNum = Math.floor((this.data.investment_max / this.data.symbol_value) * 1000000) / 1000000;
+ if (this.quantity * 1 < minNum * 1) {
+ this.tips = this.$t('最小数量') + minNum + ' '
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else if (this.quantity * 1 > maxNum * 1) {
+ this.tips = this.$t('最大数量') + maxNum + ' '
+ this.totalMoney = '-'
+ this.totalQuantity = '-'
+ } else {
+ this.tips = ''
+ this.totalQuantity = this.quantity
+ if (this.symbol !== "USDT") {
+ this.totalMoney = (this.quantity * this.data.symbol_value).toFixed(6)
+ } else {
+ this.totalMoney = (this.quantity * this.data.symbol_value).toFixed(2)
+ }
+ }
+ }
+ },
+ // 购买
+ async SellClick() {
+ if (!this.reciveInfo.uuid) {
+ showToast(this.$t('请选择收款方式'));
+ return;
+ }
+ // const index = this.data.pay_type_name.split(',').findIndex(item => item === this.reciveInfo.methodName)
+ console.log(this.exchangeCurrency)
+ this.loading = true
+ let res = await otcApi.getSessionToken({
+ currency: this.exchangeCurrency
+ });
+ this.session_token = res.data.session_token;
+ const params = {
+ session_token: this.session_token, // session_token
+ c2c_advert_id: this.data.id,
+ payment_method_id: this.reciveInfo.uuid, //this.data.pay_type.split(',')[index]
+ direction: "sell",
+ order_type: this.genre === "amount" ? "by_amount" : "by_num", // 'by_num'
+ amount: this.genre === "amount" ? this.totalMoney / 1 : "", // 金额
+ coin_amount: this.genre === "amount" ? "" : this.totalQuantity / 1, // 数量
+ remark: this.data.remark,
+ };
+
+ // 获取订单号
+ otcApi.ctcOrderOpen(params).then((res) => {
+ this.loading = false
+ this.$store.commit("c2c/SET_ORDER_NO", res.data.order_no);
+ this.$router.push({ path: "/sellGenerate" });
+ }).catch(err => {
+ this.loading = false
+ })
+ },
+ // 全部点击
+ all() {
+ this.tips = ''
+ let usableMoney = (Math.floor(this.usableVolume * 100000) / 100000 * this.data.symbol_value / 1).toFixed(2)
+ if (usableMoney * 1 <= this.data.investment_max) {
+ this.money = usableMoney
+ this.totalMoney = usableMoney
+ if (this.symbol !== "USDT") {
+ this.quantity = Math.floor((usableMoney / this.data.symbol_value) * 1000000) / 1000000
+ this.totalQuantity = Math.floor((usableMoney / this.data.symbol_value) * 1000000) / 1000000
+ } else {
+ this.quantity = Math.floor((usableMoney / this.data.symbol_value) * 100) / 100
+ this.totalQuantity = Math.floor((usableMoney / this.data.symbol_value) * 100) / 100
+ }
+ } else {
+ this.money = this.data.investment_max
+ this.totalMoney = this.data.investment_max
+ if (this.symbol !== "USDT") {
+ this.quantity = Math.floor((this.data.investment_max / this.data.symbol_value) * 1000000) / 1000000
+ this.totalQuantity = Math.floor((this.data.investment_max / this.data.symbol_value) * 1000000) / 1000000
+ } else {
+ this.quantity = Math.floor((this.data.investment_max / this.data.symbol_value) * 100) / 100
+ this.totalQuantity = Math.floor((this.data.investment_max / this.data.symbol_value) * 100) / 100
+ }
+ }
+ },
+ },
+ watch: {
+ // paymentMethod() {
+ // if (Object.prototype.toString.call(this.paymentMethod) === '[object Object]') {
+ // console.log(this.paymentMethod)
+ // this.orderInfo.paymentMethodId = this.paymentMethod.id;
+ // this.orderInfo.methodName = this.paymentMethod.methodName;
+ // this.orderInfo.bankNumber = this.paymentMethod.paramValue1;
+ // this.orderInfo.realName = this.paymentMethod.realName;
+ // this.orderInfo.bankName = this.paymentMethod.paramName1;
+ // }
+ // }
+ },
+ computed: {
+ ...mapState("home", ["currency"]),
+ ...mapGetters("c2c", ["symbol", "currencySymbol", "exchangeCurrency"]),
+ fullMethodName() {
+ if (this.paymentMethod) {
+ return this.paymentMethod.methodName;
+ } else {
+ return "";
+ }
+ },
+ fullBankCarNumber() {
+ if (!this.reciveInfo.uuid) return;
+ return this.reciveInfo.paramValue1.replace(
+ /^([0-9]{4})[0-9]*([0-9]{4})$/,
+ "$1******$2"
+ );
+ },
+ },
+ components: {
+ [Icon.name]: Icon,
+ C2cTrade,
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/mixin.scss";
+@import "@/assets/css/copy2.scss";
+
+::v-deep .van-button {
+ border-radius: 10px;
+ background: #2EBD85;
+}
+
+.buy-item {
+ border-radius: 25px;
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
+}
+
+.border-ra {
+ border-radius: 10px;
+}
+
+.buy-item-title {
+ position: relative;
+
+ // &:after {
+ // @include border-1px("bottom");
+ // }
+}
+
+.buy-item-input {
+ input {
+ border-radius: 10px;
+ background: $input_background;
+ }
+
+ .text {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+}
+
+.border-bottom-1px {
+ position: relative;
+
+ // &:after {
+ // @include border-1px("bottom");
+ // }
+}
+
+.tips {
+ border-radius: 8px;
+}
+</style>
diff --git a/src/views/C2C/c2c-trade/page/tradeOrderDetail.vue b/src/views/C2C/c2c-trade/page/tradeOrderDetail.vue
new file mode 100644
index 0000000..d53818b
--- /dev/null
+++ b/src/views/C2C/c2c-trade/page/tradeOrderDetail.vue
@@ -0,0 +1,41 @@
+<template>
+ <div class="w-full h-full">
+ <trade-success-detail :back="back">
+
+ </trade-success-detail>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import TradeSuccessDetail from "@/page/c2c-trade/components/TradeSuccessDetail";
+export default {
+ name: "TradeSuccessDetailSell",
+ computed: {
+ ...mapState('c2cSell', ['orderInfo'])
+ },
+ components: {
+ TradeSuccessDetail,
+ },
+ data(){
+ return {
+ back:true
+ }
+ },
+ created(){
+ if (this.$route.query.back){
+ this.back = false
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .order-data {
+ .title {
+ padding-left: 32px;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/appeal/Appeal.vue b/src/views/C2C/c2cOrder/appeal/Appeal.vue
new file mode 100644
index 0000000..8e64e9f
--- /dev/null
+++ b/src/views/C2C/c2cOrder/appeal/Appeal.vue
@@ -0,0 +1,241 @@
+<template>
+ <div id="full" class="w-full h-full">
+ <order-nav :title="$t('申诉')" />
+ <div class="pt-22 px-32 mainBackground pb-50">
+ <c2c-input class="mb-44" :label="$t('申诉理由 (必选)')" :placeholder="$t('我已付款,但订单已取消')" v-model:value="info.reason" />
+ <c2c-input :label="$t('申诉描述')">
+ <textarea class="w-full h-250 inputBackground c2cColor" :placeholder="$t('请尽可能完整的描述信息')"
+ v-model="info.description" />
+ </c2c-input>
+ <div class="mt-66">
+ <div class="font-28 mb-13 c2cColor">{{ $t('添加凭证 (必填)') }}</div>
+ <p class="font-22 text-grey">{{ $t('付款及沟通记录的截图或音视频,最多5个文件,总大小不超过50MB。') }}</p>
+ <div class="mt-32">
+ <van-uploader v-model="fileList" :afterRead="afterRead" multiple :max-count="1" :max-size="50000 * 1024"
+ accept="image/*,video/*" @oversize="oversize">
+ <div class="uploader">
+ <van-icon name="plus" />
+ </div>
+ </van-uploader>
+ </div>
+ </div>
+ </div>
+ <div class="px-32 mt-16 pt-28 pb-26 mainBackground connect">
+ <van-cell-group>
+ <van-cell>
+ <template #title>
+ <span class="font-28">{{ $t('联系人') }}</span>
+ </template>
+ <template #default>
+ <input class="w-244" type="text" :placeholder="$t('联系人')" v-model="info.name">
+ </template>
+ </van-cell>
+ <van-cell class="mt-88">
+ <template #title>
+ <span class="font-28">{{ $t('联系电话') }}</span>
+ </template>
+ <template #default>
+ <div class="flex items-center justify-end">
+ <input class="w-244" type="text" :placeholder="$t('请输入联系方式')" v-model="info.phone">
+ <img class="w-23 h-23 ml-16" src="@/assets/image/c2c/Group1222.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+ <div class="px-32 mt-200 mainBackground pt-36 pb-156">
+ <van-button :disabled="!fullDisabled" color="#1D91FF" class="w-full h-100 rounded-xl" type="info"
+ @click="onAppeal">{{ $t('我要申述') }}
+ </van-button>
+ </div>
+ <!-- 弹窗 -->
+ <van-popup position="right" class="w-full h-full" v-model:show="show">
+ <appeal-waiting @back="back" />
+ </van-popup>
+ </div>
+</template>
+
+<script>
+import {
+ Uploader,
+ Icon,
+ Toast,
+ CellGroup,
+ Cell,
+ Popup,
+ showToast,
+ showLoadingToast,
+ closeToast,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import C2cInput from "../../components/C2cInput.vue";
+import OtcCircle from "@/components/otcCircle/index.vue";
+import AppealWaiting from "../components/appeal/AppealWaiting.vue";
+import AppealSuccess from "../components/appeal/AppealSuccess.vue";
+import {
+ mapGetters,
+ mapMutations,
+} from "vuex";
+import {
+ REASON_FOR_CANCELLATION
+} from "@/store/const.store";
+import { _uploadImage } from "@/service/upload.api.js";
+import otcApi from "@/service/otc";
+
+export default {
+ name: "Appeal",
+ data() {
+ return {
+ show: false,
+ disable: false,
+ info: {
+ reason: '', // 理由
+ description: '', // 描述
+ name: '',
+ phone: '',
+ },
+ fileList: [],
+ }
+ },
+ computed: {
+ ...mapGetters('c2c', ['getReasonForCancellation', 'orderNo']),
+ fullDisabled() {
+ return this.disable && this.fileList.length > 0
+ }
+ },
+ created() {
+ this.info.reason = this.getReasonForCancellation
+ },
+ beforeDestroy() {
+ this[REASON_FOR_CANCELLATION]('');
+ },
+ methods: {
+ ...mapMutations('c2c', [REASON_FOR_CANCELLATION]),
+ afterRead(file) {
+ file.status = 'uploading'
+ file.message = this.$t('上传中...')
+ // 上传图片到服务器
+ _uploadImage(file).then(res => {
+ file.status = 'success';
+ file.message = this.$t('上传成功');
+ file.resURL = res
+ }).catch(err => {
+ file.status = 'failed';
+ file.message = this.$t('图片上传失败');
+ })
+ },
+ // 超出大小
+ oversize() {
+ showToast(this.$t('超出50MB!'))
+ },
+ back() {
+ this.show = false;
+ this.$router.push('/wantBuy')
+ },
+ // 申诉
+ async onAppeal() {
+ showLoadingToast({duration:0})
+ const params = {
+ order_no: this.orderNo,
+ ...this.info,
+ img: this.fileList[0].resURL
+ }
+
+ console.log(params);
+
+ const res = await otcApi.c2cAppeal(params);
+ closeToast();
+ this.show = true;
+ }
+ },
+ watch: {
+ info: {
+ deep: true,
+ handler() {
+ const res = Object.keys(this.info).filter(key => {
+ return this.info[key] === "" || this.info[key] === undefined
+ })
+ console.log(res);
+ this.disable = res.length === 0;
+ },
+ immediate: true
+ }
+ },
+ components: {
+ [Uploader.name]: Uploader,
+ [Icon.name]: Icon,
+ [CellGroup.name]: CellGroup,
+ [Cell.name]: Cell,
+ [Popup.name]: Popup,
+ OrderNav,
+ C2cInput,
+ OtcCircle,
+ AppealWaiting,
+ AppealSuccess,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::v-deep .payment-input {
+ input {
+ height: 90px;
+ }
+}
+
+textarea {
+ &::placeholder {
+ color: #B8BCC5;
+ }
+}
+
+.uploader {
+ position: relative;
+ width: 180px;
+ height: 180px;
+ border: 2px dashed #EAEBEE;
+ background: $tab_background;
+
+ .van-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-weight: 700;
+ font-size: 50px;
+ color: #9399A4;
+ }
+
+}
+
+.connect {
+ input {
+ margin: 0;
+ font-size: 28px;
+ box-sizing: border-box;
+ border: none;
+ background: $main_background;
+ }
+}
+
+#full {
+ ::v-deep {
+
+ .van-cell-group, .van-cell {
+ background: $main_background;
+ color: $text_color1;
+ }
+
+ .van-cell__value {
+ color: $text_color;
+ }
+
+ .van-button--info {
+ background: $btn_main;
+ border-color: $btn_main;
+ }
+ }
+
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/appeal/index.vue b/src/views/C2C/c2cOrder/appeal/index.vue
new file mode 100644
index 0000000..2eb0a65
--- /dev/null
+++ b/src/views/C2C/c2cOrder/appeal/index.vue
@@ -0,0 +1,102 @@
+<template>
+ <div id="full">
+ <order-nav :title="$t('对订单申诉')" />
+ <div class="px-32 mt-22">
+ <h2 class="font-29 font-400 c2cColor">{{ $t('联系对方协商解决') }}</h2>
+ <div class="rounded-lg px-32 pb-30 pt-49 mt-31 box-border tabBackground c2cColor">
+ <div class="mb-60 text-center">
+ <img class="w-128" src="@/assets/image/c2c/Vector1.png" alt="">
+ </div>
+ <div class="font-28 text-center">
+ <p>{{ $t('如存在交易问题,直接与对联系处理是最有效的方式。联系对方协商解决') }}</p>
+ <p class="py-5">{{ $t('您可在聊天窗口上传凭证及账号信息,联系对方协商解决') }}</p>
+ <p>{{ $t('以双方协商核实。联系对方协商解决') }}</p>
+ </div>
+ <van-button color="#1D91FF" class="w-full h-80 mt-60 font-30 rounded-xl" type="info" @click="contact">{{
+ $t('联系对方协商解决') }}</van-button>
+ </div>
+ <div class="mt-56">
+ <div class="mb-20 text-grey font-26" @click="$router.push('/chat')">{{ $t('申诉联系对方协商解决') }}</div>
+ <van-divider class="diviLine" />
+ <div class="mb-56 text-grey font-26 ">{{ $t('本次交易已结束,资产已不在平台托管中。平台无法帮您直接追回 资产,请知晓。联系对方协商解决') }}
+ </div>
+ <van-cell-group>
+ <van-cell @click="show = true">
+ <template #title>
+ <span class="textColor font-30">{{ $t('对订单有疑问联系对方协商解决') }}</span>
+ </template>
+ <template #default>
+ <van-icon class="font-700 text-grey" name="arrow" />
+ </template>
+ </van-cell>
+ <!-- <van-cell class="mt-88">
+ <template #title>
+ <span class="text-black font-30">{{$t('其他联系对方协商解决')}}</span>
+ </template>
+ <template #default>
+ <van-icon class="font-700 text-grey" name="arrow"/>
+ </template>
+ </van-cell> -->
+ </van-cell-group>
+ </div>
+ </div>
+
+ <!-- 申诉 -->
+ <van-popup v-model:show="show">
+ <appeal-msg />
+ </van-popup>
+ </div>
+</template>
+
+<script>
+import {
+ Button,
+ Divider,
+ CellGroup,
+ Cell,
+ Icon,
+ Popup,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import AppealMsg from "../components/appeal/AppealMsg.vue";
+
+export default {
+ name: "AppealPage",
+ data() {
+ return {
+ show: false,
+ }
+ },
+ methods: {
+ contact() { //
+ // console.log(11111)
+ this.$router.push('/chat')
+ }
+ },
+ components: {
+ [Button.name]: Button,
+ [Divider.name]: Divider,
+ [CellGroup.name]: CellGroup,
+ [Cell.name]: Cell,
+ [Icon.name]: Icon,
+ [Popup.name]: Popup,
+ OrderNav,
+ AppealMsg,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.van-popup {
+ border-radius: 10px;
+}
+
+.van-cell {
+ background: $main_background;
+}
+.van-button--info {
+ background: $btn_main;
+ border-color: $btn_main;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/cancel-order/cancelOrder.vue b/src/views/C2C/c2cOrder/cancel-order/cancelOrder.vue
new file mode 100644
index 0000000..6a55013
--- /dev/null
+++ b/src/views/C2C/c2cOrder/cancel-order/cancelOrder.vue
@@ -0,0 +1,193 @@
+<template>
+ <div class="w-full h-full">
+ <div class="w-full h-full">
+ <order-nav :title="$t('取消订单')" />
+ <div class="px-30 mt-30">
+ <div class="flex rounded-2xl box-border px-24 pt-24 pb-31 tabBackground">
+ <img class="w-32 h-32 mr-18" src="@/assets/image/c2c/Group41.png" alt="">
+ <div class="font-26 c2cColor">
+ <p class="font-28">{{ $t('温馨提示') }}</p>
+ <p class="my-20">{{ $t('1. 如果您已经向卖家付款,请千万不要取消订单。') }}</p>
+ <p>2. {{ $t('累计3笔取消,当日不可再购买。') }}</p>
+ </div>
+ </div>
+ <div class="mt-44">
+ <h2 class="font-30 font-400 c2cColor">{{ $t('请告诉我们您为什么要取消订单?') }}</h2>
+ <van-radio-group v-model="radio">
+ <van-radio class="mt-66" v-for="(item, index) in radioItems" :key="index" :name="item.title">
+ <span>{{ item.title }}</span>
+ <template #icon="props">
+ <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
+ </template>
+ </van-radio>
+ <div class="flex items-center h-100 mt-30 tabBackground">
+ <van-radio name="其他">
+ <span>{{ $t('其他') }}</span>
+ <template #icon="props">
+ <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
+ </template>
+ </van-radio>
+ </div>
+ </van-radio-group>
+ <div class="textarea-wrapper relative mt-30 tabBackground">
+ <textarea @input="changeVal" class="rounded-xl textarea-text" :placeholder="$t('请输入取消理由')" maxlength="160"
+ v-model="other"></textarea>
+ <span class="absolute bottom-30 right-22 font-25 text-grey">{{ inputNum }}/160</span>
+ </div>
+ </div>
+ <div class="w-full mt-60 pb-100">
+ <van-button :disabled="isDisabled" class="w-full rounded-xl" color="#1D91FF" type="info"
+ @click="enterCancelOrder">{{ $t('确认取消订单') }}
+ </van-button>
+ </div>
+ </div>
+ </div>
+ <!-- 取消订单成功 -->
+ <van-popup class="w-full h-full" position="right" v-model:show="show">
+ <cancel-success :detail="detail" />
+ </van-popup>
+ </div>
+</template>
+
+<script>
+import { Button, Popup, Radio, RadioGroup, showToast } from 'vant';
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import CancelSuccess from "../components/order-generation/CancelSuccess.vue";
+import otcApi from '@/service/otc'
+import {
+ mapMutations
+} from "vuex";
+
+import {
+ REASON_FOR_CANCELLATION
+} from "@/store/const.store";
+
+export default {
+ name: "cancelOrder",
+ data() {
+ return {
+ show: false, // 是否显示取消成功页面
+ radio: this.$t('我不想交易了'),
+ activeIcon: new URL('@/assets/image/c2c/Group1206.png', import.meta.url).href,
+ inactiveIcon: new URL('@/assets/image/c2c/Ellipse112.png', import.meta.url).href,
+ other: '', // 其他
+ detail: {}, //取消后详情
+ inputNum: 0,
+ radioItems: [
+ {
+ title: this.$t('我不想交易了'),
+ },
+ {
+ title: this.$t('我不满足广告交易条款的要求'),
+ },
+ {
+ title: this.$t('卖家要额外收取费用'),
+ },
+ {
+ title: this.$t('卖家收款方式右问题,无法成功打款'),
+ },
+ ]
+ }
+ },
+ methods: {
+ ...mapMutations('c2c', [REASON_FOR_CANCELLATION]),
+ changeVal(e) {
+ this.inputNum = e.target.value.length
+ },
+ enterCancelOrder() {
+ let cancelText;
+ if (this.radio === '其他') {
+ cancelText = this.other;
+ } else {
+ cancelText = this.radio;
+ }
+
+ this[REASON_FOR_CANCELLATION](cancelText);
+
+ const remark = this.other || this.radio
+ const order_no = this.$store.state.c2c.order_no
+ console.log(order_no, remark)
+ // 取消订单
+ otcApi.ctcOrderCancel({ order_no, remark }).then(async () => {
+ const res = await otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale });
+ this.detail = res.data
+ this.show = true
+ showToast(this.$t('取消成功'))
+ })
+ }
+ },
+ computed: {
+ // ...mapState('c2cBuy', ['count', 'totalPrice', 'createOrderTime', 'orderNumber'])
+ isDisabled() {
+ if (this.radio === '其他') {
+ return this.inputNum === 0
+ } else {
+ return false
+ }
+ }
+ },
+ created() {
+ // console.log(this.count, this.totalPrice, this.createOrderTime, this.orderNumber)
+ // const { detail } = this.$route.query
+ // this.detail = JSON.parse(detail)
+ },
+ components: {
+ [RadioGroup.name]: RadioGroup,
+ [Radio.name]: Radio,
+ [Button.name]: Button,
+ [Popup.name]: Popup,
+ OrderNav,
+ CancelSuccess,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.img-icon {
+ width: 32px;
+ height: 32px;
+}
+
+.textarea-wrapper {
+ textarea {
+ width: 100%;
+ height: 304px;
+ padding: 30px 22px;
+ box-sizing: border-box;
+ background: transparent;
+
+ &::placeholder {
+ color: #B8BCC5;
+ }
+ }
+}
+
+.w-full {
+ ::v-deep .order-data {
+ .title {
+ color: #5EBA89;
+ }
+ }
+
+ ::v-deep {
+
+ .van-radio {
+ align-items: flex-start;
+ padding: 8px 0;
+ }
+
+ .van-radio__label {
+ color: $text_color1;
+ }
+
+ .van-button--info {
+ background: $btn_main;
+ border-color: $btn_main;
+ }
+ }
+ .textarea-text{
+ color: $text_color;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/components/appeal/AppealMsg.vue b/src/views/C2C/c2cOrder/components/appeal/AppealMsg.vue
new file mode 100644
index 0000000..b6d5b46
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/appeal/AppealMsg.vue
@@ -0,0 +1,66 @@
+<template>
+ <div class="w-600 p-50 box-border rounded-2xl c2cColor">
+ <div v-if="show">
+ <h2 class="font-35 font-400">{{ $t('温馨提示') }}</h2>
+ <div class="mt-38 mb-44 font-26">
+ <div>
+ <p class="lh-40">{{ $t('解决方案1:') }}</p>
+ <p class="lh-40">{{ $t('如果您付款但订单被取消,您的资产将无 法自动退回。请与卖家沟通并要求卖家退款。') }}</p>
+ </div>
+ <div class="mt-39">
+ <p class="lh-40">{{ $t('解决方案2:') }}</p>
+ <p class="lh-40">{{ $t('单击下面的按钮,从卖家的个人详情页再下一笔') }}<span style="color: #E35461">{{ $t('相同金额') }}</span>{{
+ $t('的订单。然后点击“我已付款,通知卖家”,通过聊天向卖家说明情况。如果卖家没有任何在线广告,请点击【申诉】按钮。') }}
+ </p>
+ </div>
+ </div>
+ <van-button color="#1D91FF" class="w-full h-80
+ rounded-xl" type="info" @click="$router.push({ path: '/wantBuy/c2cBuy' })">{{ $t('再下一单') }}</van-button>
+ <div class="mt-22 font-30 text-center c2cColor" @click="show = false">{{ $t('申诉') }}</div>
+ </div>
+ <div v-else>
+ <h2 class="font-35 font-400">{{ $t('温馨提示') }}</h2>
+ <div class="mt-38 mb-44 font-26">
+ <p>· {{ $t('如有疑问,请先联系对方处理。') }}</p>
+ <p class="my-40">· {{ $t('客服介入后会协助您处理纠纷,但不保证追回资金。') }}</p>
+ <p>· {{ $t('恶意申诉属于扰乱平台正常运营秩序的行为,情节严重将冻结账户。') }}</p>
+ </div>
+ <van-button color="#1D91FF" class="w-full h-80
+ rounded-xl" type="info" @click="$router.push({ path: '/appeal/page' })">{{ $t('我知道了') }}</van-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ Button,
+} from "vant";
+
+export default {
+ name: "Appeal",
+ data() {
+ return {
+ show: true,
+ }
+ },
+ components: {
+ [Button.name]: Button,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.van-popup {
+ border-radius: 10px;
+}
+
+.van-cell {
+ background: $main_background;
+}
+
+.van-button--info {
+ background: $btn_main;
+ border-color: $btn_main;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/components/appeal/AppealSuccess.vue b/src/views/C2C/c2cOrder/components/appeal/AppealSuccess.vue
new file mode 100644
index 0000000..16fb525
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/appeal/AppealSuccess.vue
@@ -0,0 +1,54 @@
+<template>
+ <div class="w-full h-full">
+ <order-nav :title="$t('申述提交')" :back="false" @back="hide"/>
+ <div class="mt-70">
+ <div class="text-center">
+ <img class="w-122 h-122" src="@/assets/image/c2c/Group100.png" alt="">
+ <div class="mt-35 font-700 font-56 textColor">{{$t('申诉成功')}}</div>
+ <div class="mt-24 font-28 text-grey">
+ <p class="mb-15 font-600">100 USDT</p>
+ <p>{{$t('已返还至您的账户')}}</p>
+ </div>
+ </div>
+ </div>
+ <div class="px-33 mt-92">
+ <order-data
+ :count="count"
+ :total-price="totalPrice"
+ :order-number="orderNumber"
+ />
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+
+import {Button} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import OrderData from "../order-data/OrderData.vue";
+
+export default {
+ name: "AppealWaiting",
+ methods: {
+ hide() {
+ console.log(213)
+ this.$emit("back");
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ["count", "totalPrice", "orderNumber"])
+ },
+ components: {
+ [Button.name]:Button,
+ OrderNav,
+ OrderData,
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue b/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue
new file mode 100644
index 0000000..6473dbd
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/appeal/AppealWaiting.vue
@@ -0,0 +1,50 @@
+<template>
+<div class="w-full h-full">
+ <order-nav :title="$t('申述提交')" :back="false" @back="hide"/>
+ <div class="mt-70">
+ <div class="text-center">
+ <img class="w-122 h-122" style="margin: 0 auto;" src="@/assets/image/c2c/Group100.png" alt="">
+ <div class="mt-35 font-700 font-56 textColor">{{$t('提交成功')}}</div>
+ <div class="mt-10 font-28 text-grey">
+ <p class="mb-15">{{$t('您的资料已成功上传!')}}</p>
+ <p>{{$t('系统将在三个工作日内审核完毕,请您耐心等候。')}}</p>
+ </div>
+ </div>
+ </div>
+ <div class="px-33 mt-92">
+ <van-button
+ color="#1D91FF"
+ class="w-full h-100 rounded-xl"
+ type="info"
+ @click="tokefu"
+ >{{$t('联系客服')}}
+ </van-button>
+ <div @click="hide" class="mt-34 font-36 text-center" style="color: #1D91FF">{{$t('返回')}}</div>
+ </div>
+</div>
+</template>
+
+<script>
+import {Button} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+export default {
+ name: "AppealWaiting",
+ components: {
+ [Button.name]:Button,
+ OrderNav,
+ },
+ methods:{
+ tokefu() {
+ this.$router.push('/customerService')
+ },
+ hide() {
+ console.log(213)
+ this.$emit("back");
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/C2C/c2cOrder/components/footer/OrderFooter.vue b/src/views/C2C/c2cOrder/components/footer/OrderFooter.vue
new file mode 100644
index 0000000..cddd47d
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/footer/OrderFooter.vue
@@ -0,0 +1,89 @@
+<template>
+ <van-tabbar
+ class="h-160"
+ v-model="active"
+ route
+ active-color="#000"
+ inactive-color="#B8BCC5"
+ >
+ <van-tabbar-item
+ v-for="(item, index) in footer"
+ :key="index"
+ replace
+ :to="item.path"
+ >
+ <span>{{ item.title }}</span>
+ <template #icon="props">
+ <img :src="props.active ? item.icon.active : item.icon.inactive" />
+ </template>
+ </van-tabbar-item>
+ </van-tabbar>
+</template>
+
+<script>
+import { Tabbar, TabbarItem } from 'vant'
+
+export default {
+ name: 'OrderFooter',
+ data() {
+ return {
+ active:'',
+ footer: [
+ {
+ title: 'c2c',
+ path: '/c2c/receivingBuy',
+ icon: {
+ active: require('@/assets/image/c2c/c2c2.png'),
+ inactive: require('@/assets/image/c2c/c2c1.png'),
+ },
+ },
+ {
+ title: '订单',
+ path: '/c2c/orderList',
+ icon: {
+ active: require('@/assets/image/c2c/order2.png'),
+ inactive: require('@/assets/image/c2c/order1.png'),
+ },
+ },
+ {
+ title: '广告',
+ path: '/c2c/advertise',
+ icon: {
+ active: require('@/assets/image/c2c/advertise2.png'),
+ inactive: require('@/assets/image/c2c/advertise1.png'),
+ },
+ },
+ {
+ title: '我的',
+ path: '/c2c/c2cUser',
+ icon: {
+ active: require('@/assets/image/c2c/user2.png'),
+ inactive: require('@/assets/image/c2c/user1.png'),
+ },
+ },
+ ],
+ }
+ },
+ components: {
+ [Tabbar.name]: Tabbar,
+ [TabbarItem.name]: TabbarItem,
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .van-tabbar {
+ box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.05);
+}
+
+::v-deep .van-tabbar-item__icon {
+ img {
+ width: 44px;
+ height: 44px;
+ }
+}
+
+::v-deep .van-tabbar-item__text {
+ font-size: 24px;
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/components/order-data/OrderData.vue b/src/views/C2C/c2cOrder/components/order-data/OrderData.vue
new file mode 100644
index 0000000..d957526
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/order-data/OrderData.vue
@@ -0,0 +1,127 @@
+<template>
+ <div class="order-data">
+ <div class="flex items-center font-31 mb-42 c2cColor">
+ <span class="title" :style="{ 'color': detail.direction === 'buy' ? '#2EBD85' : '#E35461' }">
+ {{ detail.direction === 'buy' ? $t('购买') : $t('卖出') }}
+ </span>
+ <span class="mx-15">{{ detail.symbol && detail.symbol.toUpperCase() }}</span>
+ <img class="w-36 h-36" src="@/assets/image/c2c/U1.png" alt="">
+ </div>
+ <van-cell-group>
+ <van-cell :title="$t('总额')">
+ <template #default>
+ <h2 class="font-700 font-36">{{ currencySymbol }} {{ detail.amount }}</h2>
+ </template>
+ </van-cell>
+ <van-cell :title="$t('单价')">
+ <template #default>
+ <span>{{ currencySymbol }} </span>
+ <span>{{ detail.symbolValue }}</span>
+ </template>
+ </van-cell>
+ <van-cell :title="$t('数量')"
+ :value="`${detail.symbol == 'usdt' ? Math.floor(detail.coinAmount * 100) / 100 : Math.floor(detail.coinAmount * 1000000) / 1000000} ${detail.symbol && detail.symbol.toUpperCase()}`" />
+ <slot name="default"></slot>
+ <van-cell class="order-number">
+ <template v-slot:title>
+ <div class="w-100">{{ $t('订单号') }}</div>
+ </template>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ detail.orderNo }}</span>
+ <img class="relative top-4 w-30 h-34" src="@/assets/image/c2c/Group1168.png" alt=""
+ @click="copy(detail.orderNo)">
+ </div>
+ </van-cell>
+ <van-cell v-if="detail.createTime" :title="$t('创建时间')" :value="detail.createTime" />
+ <van-cell v-if="detail.sellerName">
+ <template #title>
+ <span>{{ clientType }}</span>
+ </template>
+ <template #default>
+ <span class="mr-20">{{ sellerName }}</span>
+ <van-icon class="font-700 text-grey" name="arrow" />
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+</template>
+
+<script>
+import {
+ mapState,
+ mapGetters
+} from "vuex";
+import { Cell, CellGroup, Icon, showToast } from "vant"
+import useClipboard from "vue-clipboard3";
+const { toClipboard } = useClipboard();
+
+export default {
+ name: "OrderDate",
+ // props: ['count', 'totalPrice', 'orderNumber', 'sellerName', 'createOrderTime'],
+ props: {
+ clientType: {
+ default: '卖家昵称'
+ },
+ detail: {
+ type: Object,
+ default() {
+ return {}
+ }
+ },
+ // // count: {},
+ // totalPrice: {},
+ // // orderNumber: {},
+ // sellerName: {},
+ // createOrderTime: {},
+ // unitPrice: {
+ // // required: true,
+ // }
+ },
+ filters: {
+ format(time) {
+ const _time = new Date(time)
+ return [_time.getFullYear(), _time.getMonth() + 1, _time.getDate()].join('/') + ' ' + [_time.getHours(), _time.getMinutes(), _time.getSeconds()].join(":")
+ }
+ },
+ methods: {
+ async copy(text) {
+ await toClipboard(text);
+ showToast(this.$t('复制成功'))
+ }
+ },
+ computed: {
+ ...mapState('home', ['currency']),
+ ...mapGetters('c2c', ['currencySymbol'])
+ },
+ components: {
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Icon.name]: Icon,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::v-deep .van-cell {
+ margin-bottom: 46px;
+}
+
+::v-deep .order-number {
+ .van-cell__title {
+ flex: inherit;
+ }
+}
+
+.order-data {
+ ::v-deep .van-cell-group, .van-cell {
+ margin-bottom: 46px;
+ color: $text_color;
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell__value {
+ color: $text_color;
+ }
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/components/order-generation/CancelSuccess.vue b/src/views/C2C/c2cOrder/components/order-generation/CancelSuccess.vue
new file mode 100644
index 0000000..309aac4
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/order-generation/CancelSuccess.vue
@@ -0,0 +1,117 @@
+<template>
+ <div id="full" class="cancel-success">
+ <div style="background: #D8DBE0;">
+ <order-nav :back="false" @back="onBack()">
+ <template>
+ <div class="flex items-center" @click="$router.push({
+ path: '/chat'
+ })">
+ <img class="w-35 h-33 mr-22" src="@/assets/image/c2c/Vector.png" alt="">
+ <span class="font-28">{{ $t('联系卖家') }}</span>
+ </div>
+ </template>
+ </order-nav>
+ <div class="">
+ <div class="flex justify-between items-center pb-33 px-32" style="background:#D8DBE0">
+ <div>
+ <p class="mb-8 font-48">
+ <slot name="title">{{ $t('已取消') }}</slot>
+ </p>
+ <p class="font-24">
+ <slot name="desc">{{ $t('您已取消订单') }}</slot>
+ </p>
+ </div>
+ <div>
+ <img class="w-80 h-80" src="@/assets/image/c2c/Group1212.png" alt="">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="px-32 pt-40 mainBackground">
+ <order-data :detail="detail" />
+ </div>
+ <div class="w-full h-16 my-40 diviLine"></div>
+ <van-cell-group class="px-32">
+ <van-cell @click="enterAppeal">
+ <template #title>
+ <span class="c2cColor font-30">{{ $t('对订单存在疑问') }}</span>
+ </template>
+ <template #default>
+ <van-icon class="font-700 text-grey" name="arrow" />
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+</template>
+
+<script>
+import { Cell, CellGroup, Icon } from 'vant';
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import OrderData from "../order-data/OrderData.vue";
+
+export default {
+ name: "CancelSuccess",
+ // props:['title','count', 'totalPrice', 'orderNumber', 'createOrderTime', 'sellerName', 'unitPrice'],
+ props: {
+ detail: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ methods: {
+ enterAppeal() {
+ this.$router.replace({
+ path: '/appeal'
+ })
+ },
+ onBack() {
+ this.$router.push('/wantBuy')
+ }
+ },
+ components: {
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Icon.name]: Icon,
+ OrderNav,
+ OrderData,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+#full {
+ ::v-deep .buy_nav{
+ .van-icon{
+ color: #000;
+ }
+ }
+ ::v-deep .van-nav-bar {
+ background: #D8DBE0;
+ }
+
+ ::v-deep .order-number {
+ margin-top: 100px;
+ }
+
+ ::v-deep .van-cell {
+ padding: 15px 20px !important;
+ background: $main_background;
+ }
+
+ ::v-deep {
+
+ .van-cell-group,
+ .van-cell {
+ color: $text_color1;
+ background: $main_background;
+ }
+
+ .van-cell__value {
+ color: $text_color;
+ }
+ }
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue b/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue
new file mode 100644
index 0000000..12a9c34
--- /dev/null
+++ b/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue
@@ -0,0 +1,147 @@
+<template>
+ <div>
+ <div class="relative px-32 order-msg mainBackground" :class="{ 'hide': !isShow && detail.sellName }">
+ <order-data class="w-full" :detail="detail">
+ <slot name="divider"></slot>
+ </order-data>
+ <van-icon v-if="detail.sellName" @click="show" name="arrow-down" class="absolute bottom-10 font-700 text-grey"
+ :class="{ 'rotateZ': isShow }" />
+ </div>
+ <div class="h-16 diviLine"></div>
+ <div class="px-32 pt-35 mainBackground">
+ <van-collapse v-model="activeNames">
+ <van-collapse-item name="1">
+ <template #title>
+ <div>
+ <p class="font-30 c2cColor">
+ <slot name="trade-title"></slot>
+ </p>
+ <van-divider />
+ <div class="flex items-center mb-28">
+ <div class="w-6 h-32 rounded-xl mr-20" style="background: #E7BB41;"></div>
+ <span class="ml-8 font-30 c2cColor">{{ $t(detail.methodName) }}</span>
+ </div>
+ </div>
+ </template>
+ <van-cell-group class="payment-method">
+ <van-cell v-for="(item, index) in detail.tradeMethod" :key="index" :title="item.label" :value="item.value" />
+ </van-cell-group>
+ </van-collapse-item>
+ </van-collapse>
+ </div>
+ <div class="h-16 diviLine"></div>
+ <div class="p-32 mainBackground">
+ <slot name="terms"></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+import { Icon, Collapse, CollapseItem, Cell, CellGroup, Divider } from "vant"
+import OrderData from "../order-data/OrderData.vue";
+export default {
+ name: "TradeData",
+ // props: ['title', 'count', 'totalPrice', 'createOrderTime', 'orderNumber', 'sellName', 'clientType','tradeMethod','methodName','unitPrice'],
+ props: {
+ detail: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ isShow: false,
+ activeNames: [],
+ }
+ },
+ methods: {
+ show() {
+ this.isShow = !this.isShow;
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Divider.name]: Divider,
+ OrderData,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.mainBackground {
+ ::v-deep {
+
+ .van-cell-group,
+ .van-cell {
+ color: $text_color1;
+ background: $main_background;
+ }
+
+ .van-cell__value {
+ color: $text_color;
+ }
+
+ .order-msg {
+ transition: all .5s ease;
+ overflow: hidden;
+
+ .van-icon {
+ left: 50%;
+ transform: translateX(-50%);
+ transition: all .5s ease;
+ }
+ }
+
+ .payment-method {
+ .van-cell {
+ margin-bottom: 50px;
+ font-size: 28px;
+
+ &:last-child {
+ margin-bottom: 30px;
+ }
+
+ .van-cell__title {
+ color: #8A919E;
+ }
+ }
+ }
+
+
+
+ .rotateZ {
+ transform: translateX(-50%) rotateZ(180deg) !important;
+ }
+
+ .hide {
+ height: 365px;
+ }
+
+ .van-collapse-item__content {
+ padding: 0;
+ font-size: 28px;
+ color: $c2c_color;
+ background: $main_background;
+ }
+
+ .van-collapse-item {
+ .van-cell__title {
+ font-size: 28px;
+ color: $c2c_color;
+ }
+
+ .van-divider {
+ margin: 28px 0;
+ border-color: transparent !important;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/order-generation/OrderBuy.vue b/src/views/C2C/c2cOrder/order-generation/OrderBuy.vue
new file mode 100644
index 0000000..249316d
--- /dev/null
+++ b/src/views/C2C/c2cOrder/order-generation/OrderBuy.vue
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+ name: "OrderBuy"
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/order-generation/help.vue b/src/views/C2C/c2cOrder/order-generation/help.vue
new file mode 100644
index 0000000..a12e02b
--- /dev/null
+++ b/src/views/C2C/c2cOrder/order-generation/help.vue
@@ -0,0 +1,28 @@
+<template>
+ <div>
+
+ </div>
+</template>
+
+<script>
+ export default {
+ props: {
+
+ },
+ components: {
+
+ },
+ data(){
+ return {
+
+ }
+ },
+ methods: {
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/order-generation/index.vue b/src/views/C2C/c2cOrder/order-generation/index.vue
new file mode 100644
index 0000000..0865040
--- /dev/null
+++ b/src/views/C2C/c2cOrder/order-generation/index.vue
@@ -0,0 +1,19 @@
+<template>
+<div>
+ <order-generation/>
+</div>
+</template>
+
+<script>
+import OrderGeneration from "./orderGeneration.vue";
+export default {
+ name: "oGeneration",
+ components: {
+ OrderGeneration,
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
new file mode 100644
index 0000000..6172380
--- /dev/null
+++ b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
@@ -0,0 +1,171 @@
+<template>
+ <div id="order-generation" class="w-full">
+ <order-nav />
+ <div class="mt-40 px-32 c2cColor">
+ <h1 class="font-48 font-400">{{ $t('订单已生成') }}</h1>
+ <div class="flex items-center mt-16 font-28">
+ <span>{{ $t('请在倒计时时间内付款给卖家。') }}</span>
+ <van-count-down class="flex font-700 mx-10" :time="time">
+ <template #default="timeData">
+ <span class="block">{{ timeData.hours }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.minutes }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.seconds }}</span>
+ </template>
+ </van-count-down>
+ </div>
+ <div class="w-full mt-50 pt-46 pl-32 pb-42 box-border border-ra tabBackground">
+ <div class="flex justify-between">
+ <div @click="$router.push(`/advertiserDetail?uid=${orderDetail.c2cUserId}`)" class="flex items-center">
+ <img class="w-38 h-38 mr-10" :src="orderDetail.c2cUserHeadImg" alt="">
+ <h3 class="font-32 font-400">{{ orderDetail.realName }}</h3>
+ <img class="w-30 h-30 ml-8 mr-20" src="@/assets/image/otc/buy/star.png" alt=""
+ v-if="orderDetail.c2cUserType">
+ <van-icon color="#9399A4" name="arrow" class="relative top-1 font-700 font-20" />
+ </div>
+ <div
+ style="background:linear-gradient(to right,#b6dbff,#1d91ff);border-top-left-radius: 40px;border-bottom-left-radius: 40px;"
+ class="flex items-center font-24 text-white py-10 px-14" @click="gotoChat">
+ <img class="w-35 h-33 mr-10" src="@/assets/image/c2c/Vector-white.png" alt="" />
+ {{ $t('联系卖家') }}
+ </div>
+ </div>
+ <div class="mt-60">
+ <div class="flex items-center mb-30 pr- 185">
+ <img class="w-28 h-28 mr-12" src="@/assets/image/c2c/gou.png" alt="">
+ <p class="font-24">{{ $t('卖家的数字货币现已存入托管账户,请放心付款') }}</p>
+ </div>
+ <div class="flex justify-between">
+ <div class="flex items-center">
+ <img class="w-28 h-28 mr-12" src="@/assets/image/c2c/gou.png" alt="">
+ <p class="font-24">{{ $t('7x24小时客服支持') }}</p>
+ </div>
+ <div class="pr-40" @click="tokefu">
+ <van-icon color="#9399A4" name="arrow" class="relative top-1 font-700 font-20" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="w-full h-16 my-40 diviLine"></div>
+ <div class="px-32">
+ <order-data :title="$t('购买')" :detail="orderDetail" />
+ </div>
+ <div class="w-full h-16 my-40 diviLine"></div>
+ <div class="px-32">
+ <h2 class="font-400 font-30 c2cColor">{{ $t('交易方式') }}</h2>
+ <div class="flex items-center mt-28">
+ <div class="w-6 h-28 border-ra" style="background: #E7BB41;"></div>
+ <span class="ml-8 text-grey">{{ orderDetail.methodName }}</span>
+ </div>
+ </div>
+ <div class="w-full h-56 mt-32 mb-40 diviLine"></div>
+ <div class="flex px-40 pb-80 footer-box">
+ <van-button class="w-244 h-80 font-30 mr-16 text-black border-none" type="primary" style="background: #EAEBEE"
+ @click="cancelOrder">{{ $t('取消订单') }}</van-button>
+ <van-button class="flex-1 h-80 font-30 btnMain border-none" type="info" @click="goToPayment">{{ $t('去付款')
+ }}</van-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+
+import { CountDown, Icon, Cell, CellGroup, Button, showToast } from 'vant';
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import OrderData from "../components/order-data/OrderData.vue";
+import otcApi from "@/service/otc";
+
+
+export default {
+ name: "orderGeneration",
+ data() {
+ return {
+ time: 0, //15 * 60 * 60 * 1000,
+ orderDetail: {},
+ interval: null
+ // orderNumber: ''
+ }
+ },
+ async created() {
+ const order_no = this.$store.state.c2c.order_no
+ const res = await otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale });
+ this.orderDetail = res.data;
+ this.time = this.orderDetail.autoCancelTimeRemain * 1000
+ this.interval = setInterval(() => {
+ this.time = this.time - 1000
+ if (this.time <= 0) {
+ clearInterval(this.interval)
+ }
+ }, 1000)
+ },
+ methods: {
+ // 取消订单
+ cancelOrder() {
+ if (this.time >= 0) {
+ this.$router.push({ path: '/cancelOrder' })
+ } else {
+ showToast({ type: 'warning', message: this.$t('订单不能取消') })
+ }
+ },
+ // 付款
+ goToPayment() {
+ this.$router.push({ path: '/paymentBuy' })
+ },
+ gotoChat() {
+ this.$router.push({ path: '/chat' })
+ },
+ tokefu() {
+ this.$router.push('/customerService')
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ['count', 'totalPrice', 'orderNumber']),
+ },
+ components: {
+ [CountDown.name]: CountDown,
+ [Icon.name]: Icon,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Button.name]: Button,
+ OrderNav,
+ OrderData,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+@import "@/assets/css/copy2.scss";
+
+.border-ra {
+ border-radius: 20px;
+}
+
+#order-generation {
+
+ ::v-deep .van-count-down {
+ font-size: 28px;
+ color: $blue;
+ }
+
+ ::v-deep .van-cell-group,
+ .van-cell {
+ color: $text_color1;
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell__value {
+ color: $text_color;
+ }
+
+ .footer-box {
+ background: $main_background;
+ }
+
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/payment/ConfirmedPaid.vue b/src/views/C2C/c2cOrder/payment/ConfirmedPaid.vue
new file mode 100644
index 0000000..384f2e5
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/ConfirmedPaid.vue
@@ -0,0 +1,430 @@
+<template>
+ <div id="full" class="flex flex-col w-full h-full">
+ <order-nav />
+ <div class="flex-1 tabBackground" style="overflow-y: auto">
+ <div class="pb-40 text-center c2cColor mainBackground">
+ <div>
+ <h1 class="font-600 font-36">{{ $t("请确认已收到付款") }}</h1>
+ <div class="flex justify-center items-center mt-42 font-60 font-600">
+ <span class="relative bottom-2 mr-10 font-44">{{
+ detail.currency
+ }}</span>
+ <span>{{ detail.amount }}</span>
+ <!-- <span class="relative bottom-5 ml-16 font-400 font-44">USDT</span>-->
+ </div>
+ <div class="mt-32">
+ <van-icon class="" color="#9399A4" name="arrow-down" />
+ </div>
+ <div class="flex justify-center items-center mt-50" @click="
+ $router.push({
+ path: '/chat',
+ query: JSON.stringify(),
+ })
+ ">
+ <van-badge class="w-36 h-34 mr-22">
+ <img class="w-full h-full" src="@/assets/image/c2c/Vector.png" alt="" />
+ </van-badge>
+ <span class="font-32">{{ $t("联系买家") }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="w-full pt-50 pb-72 tabBackground">
+ <div class="ml-50 pl-38 pr-32 msg relative">
+ <div
+ class="circle absolute top-0 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">
+ 1
+ </div>
+ <div
+ class="circle absolute bottom-90 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">
+ 2
+ </div>
+ <div class="font-30 c2cColor">
+ {{ $t("登陆您下方的收款帐户,确认买家的付款已到账。") }}
+ </div>
+ <div class="mt-22 px-24 py-34 mainBackground rounded-2xl msg-wrapper">
+ <div class="flex items-center">
+ <div class="w-6 h-28 rounded-xl mr-20" style="background: #e7bb41"></div>
+ <span class="ml-8 font-30 c2cColor">{{ detail.methodName }}</span>
+ </div>
+ <van-cell-group>
+ <van-cell class="order-number " v-for="item in params" :key="item.id">
+ <template #title>
+ <div>
+ <span class="mr-14 textColor">{{ item.name }}</span>
+ </div>
+ </template>
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14 textColor">{{ item.value }}</span>
+ </div>
+ </template>
+ </van-cell>
+ <!-- <van-cell class="order-number" title="银行卡号">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ orderInfo.paramValue1 }}</span>
+ </div>
+ </template>
+ </van-cell>
+ <van-cell
+ class="order-number buyer"
+ style="background: #f5f5f5"
+ title="买家实名"
+ >
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ $t(orderInfo.realName) }}</span>
+ </div>
+ </template>
+ </van-cell> -->
+ </van-cell-group>
+ </div>
+ <div class="mt-39 font-30 c2cColor">
+ {{
+ $t("确认收到款项后,返回平台,点击下方按钮「我已确认收款」。")
+ }}
+ </div>
+ <div class="flex items-center mt-24">
+ <img class="w-24 h-24" src="@/assets/image/c2c/Group41-2.png" alt="" />
+ <span class="ml-14 font-20 text-blue">{{
+ $t("若您未收到款项,请勿点击按钮,避免资产损失。")
+ }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="px-32 my-34 mainBackground">
+ <van-collapse v-model="activeNames">
+ <van-collapse-item name="1">
+ <template #title>
+ <span class="c2cColor font-28">{{ $t("交易条款") }}</span>
+ </template>
+ <van-divider />
+ <p class="font-28 c2cColor pt-20">{{ $t("资金绝对安全") }}</p>
+ <p class="mt-20 font-28 c2cColor">
+ {{ $t("平时订单较多,看见了会立马打款。急单勿拍!") }}
+ </p>
+ </van-collapse-item>
+ </van-collapse>
+ </div>
+ </div>
+ <div class="px-40 pt-54 pb-40 flex font-30 mainBackground">
+ <van-button class="w-244 h-80 mr-16 rounded-2xl c2cColor greyBg border-none" type="primary"
+ @click="$router.push({ path: '/appeal/page' })">{{ $t("帮助") }}
+ </van-button>
+ <van-button class="flex-1 h-80 rounded-2xl bg-blue text-white border-none" type="primary" @click="handleClick">{{
+ $t("我已确认收款")
+ }}
+ </van-button>
+ </div>
+
+ <!-- 弹窗 -->
+ <van-popup v-model="show" round position="bottom">
+ <div class="pt-44">
+ <div class="mb-42 font-600 font-32 text-center">
+ {{ $t("您是否已收到款项?") }}
+ </div>
+ <div class="">
+ <van-radio-group v-model="radio">
+ <van-radio name="1" class="p-32" :class="{ active: radio === '1' }">
+ <span>{{ $t("我还没登陆收款账户确认款项无误。") }}</span>
+ <img class="w-40 h-40 gou" src="@/assets/image/c2c/Group2318.png" alt="" />
+ <template #icon="props">
+ <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
+ </template>
+ </van-radio>
+ <van-radio name="2" class="p-32" :class="{ active: radio === '2' }">
+ <span>{{
+ $t(
+ "我已确认收款无误,付款人与买家在DOME上的验证姓名一致,确认放行数字货币给买家。"
+ )
+ }}</span>
+ <img class="w-40 h-40 gou" src="@/assets/image/c2c/Group2318.png" alt="" />
+ <template #icon="props">
+ <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
+ </template>
+ </van-radio>
+ </van-radio-group>
+ </div>
+ <div class="mt-52">
+ <div class="flex box-border pl-24 pb-31 pr-52">
+ <img class="w-36 h-36 mr-14" src="@/assets/image/c2c/Group41.png" alt="" />
+ <div class="font-24">
+ <p class="font-28" style="color: #454649">{{ $t("温馨提示") }}</p>
+ <p class="my-14">
+ {{
+ $t(
+ "1.收款时,请勿盲目相信转账截图,务必打开收款账户核对款项无误。"
+ )
+ }}
+ </p>
+ <p class="my-20">
+ {{ $t("2.若付款仍在进行中,请等待款项到账后再放币。") }}
+ </p>
+ <p>
+ {{
+ $t(
+ "3.请勿接受第三方付款。若收到与APP上的验证姓名不相匹配的款项,请立即退款,并避免因放行后遭银行拒付而造成财务损失。"
+ )
+ }}
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="mt-78 px-34 pb-40 flex font-30 tabBackground">
+ <van-button class="w-244 h-80 mr-16 rounded-2xl c2cColor bg-grey border-none" type="primary">{{ $t("帮助") }}
+ </van-button>
+ <van-button class="flex-1 h-80 rounded-2xl bg-blue text-white border-none" type="primary"
+ :disabled="radio === '1'" @click="onConfirm">{{ $t("我已确认收款") }}
+ </van-button>
+ </div>
+ </div>
+ </van-popup>
+ <div v-if="isLoading" class="fixed top-0 left-0 w-full h-full loading-wrapper">
+ <van-loading color="#fff" />
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+import {
+ Badge,
+ Button,
+ Cell,
+ CellGroup,
+ Collapse,
+ CollapseItem,
+ CountDown,
+ Divider,
+ Icon,
+ Popup,
+ Radio,
+ RadioGroup,
+ Loading,
+ Toast,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import Question from "./components/Question.vue";
+import otcApi from "@/service/otc";
+
+export default {
+ name: "ConfirmedPaid",
+ data() {
+ return {
+ isLoading: false,
+ show: false,
+ activeNames: [],
+ radio: "1",
+ activeIcon: new URL('@/assets/image/c2c/Group23172.png', import.meta.url).href,
+ inactiveIcon: new URL('@/assets/image/c2c/Group2317.png', import.meta.url).href,
+ passwd: "",
+ detail: {},
+ params: [],
+ };
+ },
+ mounted() {
+
+ },
+ activated() {
+ const order_no = this.$store.state.c2c.order_no;
+ otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale }).then((res) => {
+ this.detail = res.data;
+ this.params = [{ id: 0, name: this.$t('姓名'), value: this.detail.realName }];
+ for (let i = 1; i < 16; i++) {
+ this.params.push({
+ id: i,
+ name: this.detail["paramName" + i],
+ value: this.detail["paramValue" + i],
+ });
+ }
+ this.params = this.params.filter((item) => item.name && item.value);
+ console.log(this.detail);
+ });
+ this.$bus.$on("returnPwd", (pwd) => {
+ this.passwd = pwd;
+ this.enterTrade();
+ });
+ },
+ methods: {
+ onConfirm() {
+ this.$router.push({
+ path: "/withdraw/securityVerification",
+ query: {
+ type: "sell",
+ },
+ });
+ },
+ back() {
+ this.show = false;
+ },
+ handleClick() {
+ console.log("handle");
+ this.show = true;
+ },
+ enterTrade() {
+ // 订单放行
+ otcApi.ctcOrderPass({
+ order_no: this.detail.orderNo,
+ safe_password: this.passwd,
+ }).then((res) => {
+ this.isLoading = false;
+ this.$router.replace({
+ path: "/tradeSuccessSell",
+ });
+ });
+ },
+ },
+ // watch: {
+ // passwd() {
+ // if (this.passwd === '000000') {
+ // console.log(111);
+
+ // this.isLoading = true;
+
+ // // 发送请求
+ // this.enterTrade();
+ // }
+ // }
+ // },
+ components: {
+ [CountDown.name]: CountDown,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Button.name]: Button,
+ [Popup.name]: Popup,
+ [Icon.name]: Icon,
+ [Badge.name]: Badge,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ [Divider.name]: Divider,
+ [RadioGroup.name]: RadioGroup,
+ [Radio.name]: Radio,
+ [Loading.name]: Loading,
+ OrderNav,
+ Question,
+ },
+ beforeDestroy() {
+ this.$bus.$off("returnPwd");
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+@import "@/assets/css/copy2.scss";
+
+#full {
+ ::v-deep .van-count-down {
+ font-size: 26px;
+ color: $blue;
+ }
+
+ .msg-wrapper {
+ .van-cell {
+ margin-top: 28px;
+ color: #fff;
+
+ .van-cell__title,
+ .van-cell__value {
+ color: $text_color;
+ font-size: 26px;
+ }
+ }
+ }
+
+ ::v-deep .van-cell-group {
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell,
+ ::v-deep .van-collapse-item__content {
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell::after {
+ display: none;
+ }
+
+ ::v-deep .van-collapse-item__title--expanded::after {
+ display: none;
+ }
+
+ ::v-deep ::v-deep .van-collapse-item__content {
+ padding: 0;
+ }
+
+ ::v-deep .van-radio__label {
+ position: relative;
+ width: 664px;
+ margin-left: 20px;
+
+ .gou {
+ display: none;
+ position: absolute;
+ top: 50%;
+ right: -54px;
+ transform: translateY(-50%);
+ }
+ }
+
+ ::v-deep .loading-wrapper {
+ z-index: 20;
+ background: rgba(0, 0, 0, 0.3);
+
+ .van-loading {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ }
+ }
+
+ ::v-deep .van-divider {
+ border-color: $line_color;
+ }
+}
+
+
+
+.active {
+ background: #fafafa;
+
+ .gou {
+ display: block !important;
+ }
+}
+
+.msg {
+ //border-left: 1px solid #EAEBEE;
+
+ &:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 86%;
+ background: #eaebee;
+ }
+}
+
+.msg-wrapper {
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+.circle {
+ transform: translateX(-50%);
+}
+
+.buyer {
+ padding: 10px 18px !important;
+ font-size: 28px;
+}
+
+.img-icon {
+ width: 32px;
+ height: 32px;
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/payment/Payment.vue b/src/views/C2C/c2cOrder/payment/Payment.vue
new file mode 100644
index 0000000..de2a6ec
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/Payment.vue
@@ -0,0 +1,178 @@
+<template>
+ <div id="full">
+ <order-nav/>
+ <div class="mt-10 text-center tabBackground text-black">
+ <div>
+ <h1 class="font-700 font-40">{{$t('请向卖家付款')}}</h1>
+ <div v-if="time" class="flex justify-center items-center mt-18 font-30 font-700">
+ <span>{{$t('订单将在')}}</span>
+ <van-count-down class="flex font-700" :time="time">
+ <template #default="timeData">
+ <span class="block">{{ timeData.hours }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.minutes }}</span>
+ </template>
+ </van-count-down>
+ <span>{{$t('后取消')}}</span>
+ </div>
+ <div class="flex justify-center items-end mt-42 font-64 font-700">
+ <span class="relative bottom-5 font-48">¥</span>
+ <span>{{ (totalPrice * 1).toLocaleString() }}.00</span>
+ <img class="relative bottom-10 left-25 w-30 h-33" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ <div class="flex justify-center items-center mt-44">
+ <img class="w-36 h-34 mr-22" src="@/assets/image/c2c/Vector.png" alt="">
+ <span class=" font-32">{{$t('联系卖家')}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="w-full pt-46 pb-58 mt-40" style="background: #fafafa">
+ <div class="ml-50 pl-38 pr-32 msg relative">
+ <div class="circle absolute top-0 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">1
+ </div>
+ <div
+ class="circle absolute bottom-28 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">2
+ </div>
+ <div class="font-28">{{$t('离开APP,登录您与APP上的验证姓名相匹配的银行账户或其他支付方式,转到卖家的以下账户。')}}</div>
+ <div class="mt-50 pt-32 px-22 pb-38 bg-white rounded-2xl msg-wrapper">
+ <div class="flex items-center">
+ <div class="w-6 h-28 rounded-xl mr-20" style="background: #E7BB41;"></div>
+ <span class="ml-8 font-30 text-black">{{$t('银行卡')}}</span>
+ </div>
+ <van-cell-group>
+ <van-cell class="order-number" :title="$t('姓名')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{$t('鸿运当头')}}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" :title="$t('银行卡号')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{$t('请点击右上角按钮联系商家索取')}}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" :title="$t('银行名称')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{$t('请仔细阅读下方交易条款')}}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" :title="$t('开户支行')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{$t('请按照下方交易条款提供相关资料')}}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+ <div class="mt-39 font-28">{{$t('付款后,返回 XX APP,务必点击下方按钮“我已付款”通知卖家。')}}</div>
+ </div>
+ </div>
+ <div class="mt-92 px-40 flex font-30">
+ <van-button
+ class="w-244 h-80 mr-16 rounded-2xl text-black bg-grey border-none"
+ type="primary"
+ @click="show = true"
+ >{{$t('遇到问题?')}}</van-button>
+ <van-button
+ class="flex-1 h-80 rounded-2xl bg-blue text-white border-none"
+ type="primary"
+ @click="$router.push({path: '/paymentDetail'})"
+ >{{$t('我已付款,通知卖家')}}</van-button>
+ </div>
+<!-- 遇到问题 -->
+ <div>
+ <van-popup class="w-full h-full" v-model="show" position="right">
+ <question @back="back" :time="time"/>
+ </van-popup>
+ </div>
+ </div>
+</template>
+
+<script>
+import {mapState} from "vuex";
+import {Cell, CellGroup, CountDown,Button,Popup,} from "vant"
+import OrderNav from "@/components/order-nav/OrderNav";
+import Question from "@/page/c2cOrder/payment/components/Question";
+
+export default {
+ name: "Payment",
+ props: ['time'],
+ data() {
+ return {
+ show: false,
+ }
+ },
+ methods: {
+ back() {
+ this.show = false;
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ["totalPrice"])
+ },
+ components: {
+ [CountDown.name]: CountDown,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Button.name]:Button,
+ [Popup.name]:Popup,
+ OrderNav,
+ Question,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+
+::v-deep {
+ .van-count-down {
+ font-size: 26px;
+ color: $blue;
+ }
+
+ .van-cell {
+ margin-top: 28px;
+
+ .van-cell__title, .van-cell__value {
+ font-size: 26px;
+ }
+ }
+}
+
+.msg {
+
+ //border-left: 1px solid #EAEBEE;
+
+ &:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 93%;
+ background: #EAEBEE;
+ }
+}
+
+.msg-wrapper {
+ box-shadow: 0 0 10px rgba(0, 0, 0, .1);
+}
+
+.circle {
+ transform: translateX(-50%);
+}
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/payment/PaymentBuy.vue b/src/views/C2C/c2cOrder/payment/PaymentBuy.vue
new file mode 100644
index 0000000..b4c5173
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/PaymentBuy.vue
@@ -0,0 +1,261 @@
+<template>
+ <div id="full">
+ <order-nav />
+ <div class="mt-10 text-center mainBackground c2cColor">
+ <div>
+ <h1 class="font-700 font-40">{{ $t("请向卖家付款") }}</h1>
+ <div v-if="time" class="flex justify-center items-center mt-18 font-30 font-700">
+ <span>{{ $t("订单将在倒计时结束时取消。") }} </span>
+ <van-count-down class="flex font-700" :time="time">
+ <template #default="timeData">
+ <span class="block" v-if="timeData.hours">{{
+ timeData.hours
+ }}</span>
+ <span class="colon" v-if="timeData.hours">:</span>
+ <span class="block">{{ timeData.minutes }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.seconds }}</span>
+ </template>
+ </van-count-down>
+ </div>
+ <div class="flex justify-center items-end mt-42 font-64 font-700">
+ <div class="flex justify-center">
+ <span class="font-48">
+ {{currencySymbol}}
+ </span>
+ <span class="px-10">{{
+ (orderInfo.amount && (orderInfo.amount / 1).toFixed(2)) || "--"
+ }}</span>
+ </div>
+ <img class="bottom-10 left-25 w-30 h-33" src="@/assets/image/c2c/Group1168.png" alt=""
+ @click="copy((orderInfo.amount && (orderInfo.amount / 1).toFixed(2)) || '--')" />
+ </div>
+ <div class="flex justify-center items-center mt-44" @click="$router.push({ path: '/chat' })">
+ <img class="w-36 h-34 mr-22" src="@/assets/image/c2c/Vector.png" alt="" />
+ <span class="font-32">{{
+ $t("联系卖家")
+ }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="w-full pt-46 pb-58 mt-40 mainBackground">
+ <div class="ml-50 pl-38 pr-32 msg relative c2cColor">
+ <div
+ class="circle absolute top-0 left-0 z-10 w-45 h-45 flex justify-center items-center btnMain text-white font-26"
+ style="border-radius: 50%">
+ 1
+ </div>
+ <div
+ class="circle absolute bottom-28 left-0 z-10 w-45 h-45 flex justify-center items-center btnMain text-white font-26"
+ style="border-radius: 50%">
+ 2
+ </div>
+ <div class="font-28">
+ {{
+ $t(
+ "离开APP,登录您与APP上的验证姓名相匹配的银行账户或其他支付方式,转到卖家的以下账户。"
+ )
+ }}
+ </div>
+ <div class="mt-50 pt-32 px-22 pb-38 tabBackground rounded-2xl msg-wrapper c2cColor">
+ <div class="flex items-center">
+ <div class="w-6 h-28 rounded-xl mr-20" style="background: #e7bb41"></div>
+ <span class="ml-8 font-30 c2cColor">{{ detail.methodName }}</span>
+ </div>
+ <van-cell-group>
+ <van-cell class="order-number" :title="item.name" v-for="item in params" :key="item.id">
+ <template #default>
+ <div class="flex justify-end c2cColor">
+ <span class="mr-14">{{ item.value }}</span>
+ <img class="relative top-1 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt=""
+ @click="copy(item.value)" />
+ </div>
+ </template>
+ </van-cell>
+ <!-- <van-cell class="order-number" :title="$t('银行卡号')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ detail.paramValue1 }}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" :title="$t('银行名称')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ detail.paramValue2 }}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" :title="$t('开户支行')">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">{{ detail.paramValue3 }}</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell> -->
+ </van-cell-group>
+ </div>
+ <div class="mt-39 font-28">
+ {{ $t("付款后,返回 XX APP,务必点击下方按钮“我已付款”通知卖家。") }}
+ </div>
+ </div>
+ </div>
+ <div class="mt-92 px-40 flex font-30">
+ <van-button class="w-244 h-80 mr-16 rounded-2xl text-black bg-grey border-none" type="primary"
+ @click="show = true">{{ $t("遇到问题?") }}</van-button>
+ <van-button class="flex-1 h-80 rounded-2xl btnMain text-white border-none" type="primary" @click="onPayed">
+ {{ $t("我已付款,通知卖家") }}</van-button>
+ </div>
+ <!-- 遇到问题 -->
+ <div>
+ <van-popup class="w-full h-full" v-model:show="show" position="right">
+ <question @back="back" :time="time" />
+ </van-popup>
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from "vuex";
+import { Cell, CellGroup, CountDown, Button, Popup, showToast } from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import Question from "./components/Question.vue";
+import otcApi from "@/service/otc";
+import useClipboard from "vue-clipboard3";
+const { toClipboard } = useClipboard();
+
+export default {
+ name: "payMent",
+ // props: ['time'],
+ data() {
+ return {
+ time: null,
+ show: false,
+ interval: null,
+ detail: {},
+ params: [],
+ orderInfo: {},
+ };
+ },
+ async created() {
+ const advId = this.$store.state.c2c.adv_id;
+ const order_no = this.$store.state.c2c.order_no;
+ let res = await otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale });
+ this.orderInfo = res.data;
+ this.time = this.orderInfo.autoCancelTimeRemain * 1000;
+ const methodType = this.orderInfo.methodType; // 支付方式
+ this.interval = setInterval(() => {
+ this.time -= 1000;
+ }, 1000);
+ otcApi.ctcPaymentMethodPayList({ id: advId, language: this.$i18n.locale }).then((res) => {
+ // 获取支付方式
+ const payMethod = res.data.find(
+ (item) => item.methodType === methodType / 1
+ );
+ if (payMethod) {
+ this.detail = payMethod;
+ console.log(this.detail);
+ this.params = [{ id: 0, name: this.$t('姓名'), value: this.detail.realName }];
+ for (let i = 1; i < 16; i++) {
+ this.params.push({
+ id: i,
+ name: this.detail["paramName" + i],
+ value: this.detail["paramValue" + i],
+ });
+ }
+ this.params = this.params.filter((item) => item.name && item.value);
+ }
+ });
+
+ },
+ methods: {
+ back() {
+ this.show = false;
+ },
+ onPayed() {
+ // 我已支付
+ this.$router.push("/withdraw/securityVerification?type=buy");
+ // this.$router.push("/cryptos/withdraw/securityVerification?type=buy");
+ },
+ async copy(text) {
+ await toClipboard(text);
+ showToast(this.$t('copySuccess'));
+ },
+ },
+ computed: {
+ ...mapState("c2cBuy", ["totalPrice"]),
+ ...mapGetters('c2c', ['currencySymbol'])
+ },
+ components: {
+ [CountDown.name]: CountDown,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Button.name]: Button,
+ [Popup.name]: Popup,
+ OrderNav,
+ Question,
+ },
+ beforeDestory() {
+ clearInterval(this.interval);
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+@import "@/assets/css/copy2.scss";
+
+#full {
+ ::v-deep {
+ .van-count-down {
+ font-size: 26px;
+ color: $blue;
+ }
+
+ .van-cell {
+ margin-top: 28px;
+ color: $text_color1;
+ background: $tab_background;
+
+ .van-cell__title,
+ .van-cell__value {
+ font-size: 26px;
+ }
+ }
+
+ .van-cell::after {
+ display: none;
+ }
+
+ .van-cell-group {
+ color: $text_color1;
+ background: $tab_background;
+ }
+ }
+}
+
+.msg {
+ //border-left: 1px solid #EAEBEE;
+
+ &:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 93%;
+ background: #eaebee;
+ }
+}
+
+.msg-wrapper {
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+.circle {
+ transform: translateX(-50%);
+}
+</style>
diff --git a/src/views/C2C/c2cOrder/payment/PaymentDetail.vue b/src/views/C2C/c2cOrder/payment/PaymentDetail.vue
new file mode 100644
index 0000000..3a8e14f
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/PaymentDetail.vue
@@ -0,0 +1,154 @@
+<template>
+ <div id="full" class="w-full h-full flex flex-col ">
+ <order-nav :back="false" @back="$router.push('/wantBuy')">
+ <template #right>
+ <div class="flex items-center" @click="$router.push({ path: '/chat' })">
+ <van-badge class="w-35 h-33 mr-22" :content="unreadMsg">
+ <img class="w-full h-full " src="@/assets/image/c2c/Vector.png" alt="">
+ </van-badge>
+ <div class="font-28">{{ $t('联系卖家') }}</div>
+ </div>
+ </template>
+ </order-nav>
+ <div style="overflow-y: auto" class="flex-1 mainBackground">
+ <div class="flex justify-between items-center pt-30 px-32 pb-100 mainBackground">
+ <div class="mainBackground">
+ <p class="font-48 c2cColor">{{ $t('等待卖家确认收款') }}</p>
+ <!-- <p class="mt-16 font-24"> {{$t('此卖家95%的订单会在')}}<span style="color: #1D91FF">02</span> {{$t('分钟内完成')}}</p> -->
+ </div>
+ <div class="w-140 h-144">
+ <otc-circle :time="time" :expireTime="expireTime" class="w-full h-full" />
+ </div>
+ </div>
+ <div class="">
+ <trade-data title="购买" :count="count" :total-price="totalPrice" :create-order-time="createOrderTime"
+ :order-number="orderNumber" sell-name="钱多多爱妞商行" client-type="买家昵称" :detail="detail" :trade-method="tradeMethod">
+ <template #divider>
+ <van-divider class="order-msg-divider" />
+ </template>
+ <template #trade-title>
+ <span>{{ $t('交易方式') }}</span>
+ </template>
+ <template #terms>
+ <van-collapse v-model="activeNames">
+ <van-collapse-item name="2">
+ <template #title>
+ <span>{{ $t('交易条款') }}</span>
+ </template>
+ <van-divider />
+ <p>{{ $t('敢打黑钱者,虽远逼诛!') }}</p>
+ <p class="mt-20">{{ $t('急单勿拍!') }}</p>
+ </van-collapse-item>
+ </van-collapse>
+ </template>
+ </trade-data>
+ </div>
+ </div>
+ <div class="px-40 pt-46 h-172 box-border flex font-30 mainBackground">
+ <van-button class="flex-1 h-80 mr-16 rounded-2xl c2cColor tabBackground border-none" type="primary"
+ @click="$router.push({ path: '/cancelOrder?order_no=' + $route.query.order_no })">{{ $t('取消订单') }}
+ </van-button>
+ <van-button class="flex-1 h-80 rounded-2xl tabBackground c2cColor border-none" type="primary"
+ @click="$router.push({ path: '/appeal' })">{{ $t('申诉') }}
+ </van-button>
+ </div>
+ <!-- 交易成功 -->
+ <!-- <trade-success/>-->
+ <!-- 交易成功详情 -->
+ <!-- <trade-success-detail/>-->
+ </div>
+</template>
+
+<script>
+import { mapState } from "vuex"
+import { Badge, Collapse, CollapseItem, Divider, } from "vant"
+import OrderNav from "@/components/order-nav/OrderNav";
+import OtcCircle from "@/components/otcCircle";
+// import TradeSuccess from "@/page/c2c-trade/components/TradeSuccess";
+// import TradeSuccessDetail from "@/page/c2c-trade/components/TradeSuccessDetail";
+import TradeData from "@/page/c2cOrder/components/trade-data/TradeData";
+import otcApi from '@/API/otc';
+
+export default {
+ name: "PaymentDetail",
+ data() {
+ return {
+ activeNames: [],
+ // 交易方式
+ tradeMethod: [
+ { label: this.$t('姓名'), value: this.$t('刘德华') },
+ { label: this.$t('银行卡号/账号'), value: this.$t('1122 3344 5566 7788') },
+ { label: this.$t('银行名称'), value: this.$t('中国工商银行') },
+ { label: this.$t('开户支行'), value: this.$t('北京海淀支行') },
+ ],
+ detail: {},
+ time: 0,
+ expireTime: 0,
+ timeout: null,
+ unreadMsg: 0
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ['count', 'totalPrice', 'createOrderTime', 'orderNumber'])
+ },
+ created() {
+ this.fetchState()
+ // otcApi.ctcOrderGetDetail({order_no: this.$route.query.order_no}).then(res => {
+ // this.detail = res.data
+ // this.time = this.detail.expireTimeRemain
+ // console.log(this.detail)
+ // })
+ },
+ methods: {
+ fetchState() {
+ const order_no = this.$store.state.c2c.order_no
+ otcApi.ctcOrderGetDetail({ order_no, language: this.$i18n.locale }).then(res => {
+ const state = res.data.state / 1
+ if (state === 1) { // 已付款
+ // TOOD: 完成
+ this.detail = res.data
+ this.time = this.detail.expireTimeRemain
+ this.expireTime = this.detail.expireTime * 60
+ this.unreadMsg = this.detail.unreadMsg
+ console.log(this.expireTime)
+ if (this.timeout) {
+ clearTimeout(this.timeout)
+ }
+ this.timeout = setTimeout(() => {
+ this.fetchState()
+ }, 3000)
+ } else if (state == 3) { // 已成功
+ // TODO 跳转到
+ clearTimeout(this.timeout)
+ this.$router.push('/tradeSuccessBuyer')
+ } else if (state == 5) {
+ clearTimeout(this.timeout)
+ this.$router.push({ path: '/tradeOrderDetail', query: { back: false } })
+ } else {
+ console.log(this.detail)
+ }
+ })
+ }
+ },
+ beforeDestroy() {
+ clearTimeout(this.timeout)
+ },
+ components: {
+ [Badge.name]: Badge,
+ [Divider.name]: Divider,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ OrderNav,
+ OtcCircle,
+ TradeData,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep {
+ .order-msg-divider {
+ margin: 48px 0;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/payment/components/Evaluation.vue b/src/views/C2C/c2cOrder/payment/components/Evaluation.vue
new file mode 100644
index 0000000..55950bc
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/components/Evaluation.vue
@@ -0,0 +1,44 @@
+<template>
+ <div class="text-center">
+ <div class="pt-80 pb-50 font-28">
+ <slot name="desc"></slot>
+ </div>
+ <div class="flex justify-between px-72 ">
+ <div class="relative w-320 h-80 box-border py-16 border-radius">
+ 好评
+ <div class="circle flex justify-center items-center">
+ <img class="w-32 h-32" src="@/assets/image/c2c/el_thumbs-up.png" alt="">
+ </div>
+ </div>
+ <div class="relative w-320 h-80 box-border py-16 border-radius">
+ 差评
+ <div class="circle flex justify-center items-center">
+ <img class="w-32 h-32" src="@/assets/image/c2c/el_thumbs-up(2).png" alt="">
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "Evaluation"
+}
+</script>
+
+<style lang="scss" scoped>
+.border-radius {
+ border-radius: 60px;
+ background: #EAEBEE;
+}
+
+.circle {
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ width: 72px;
+ height: 72px;
+ border-radius: 50%;
+ background: #fff;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/payment/components/Question.vue b/src/views/C2C/c2cOrder/payment/components/Question.vue
new file mode 100644
index 0000000..8038a0d
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/components/Question.vue
@@ -0,0 +1,73 @@
+<template>
+ <div class="w-full h-full c2cPay-page">
+ <order-nav :back="false" @back="hide"/>
+ <div class="text-center">
+ <div class="font-48 ">{{ $t('付款遇到问题?')}}</div>
+ <!-- <div class="flex justify-center items-center mt-18 font-28">
+ <span class="mr-6">{{ $t('付款剩余时间')}}</span>
+ <van-count-down class="flex font-700" :time="time">
+ <template #default="timeData">
+ <span class="font-26 block" v-if="timeData.hours">{{ timeData.hours }}</span>
+ <span class="font-26 colon" v-if="timeData.hours">:</span>
+ <span class="font-26 block">{{ timeData.minutes }}</span>
+ <span class="font-26 colon">:</span>
+ <span class="font-26 block">{{ timeData.seconds }}</span>
+ </template>
+ </van-count-down>
+ </div> -->
+ </div>
+ <div class="px-32 font-32 mt-18">
+ <div class="mt-100">
+ <p class="text-grey">Q:{{ $t('不知道如何付款?')}}</p>
+ <p class="mt-28">A:{{ $t('为保障交易安全,部分卖家可能先需要您提供额外资料来证明您的身份,资金来源等真是可信。请与卖家聊天沟通获取交易方式。')}}</p>
+ </div>
+ <div class="mt-80">
+ <p class="text-grey">Q:{{ $t('向卖家提供的收款方式付款,但支付失败了')}}</p>
+ <p class="mt-28">A:{{ $t('请联系卖家确认卖家是否支持其他交易方式。')}}</p>
+ </div>
+ <div class="mt-80">
+ <p class="text-grey">Q:{{ $t('我不想交易了?')}}</p>
+ <p class="mt-28">A:{{ $t('您可以点击取消订单按钮取消该笔订单。')}}</p>
+ </div>
+ </div>
+ <div class="mt-492 px-30">
+ <van-button class="w-full h-96 mr-16 font-32 rounded-2xl text-white bg-blue border-none"
+ type="primary" @click="$router.push('/chat')">{{ $t('联系卖家')}}
+ </van-button>
+ <van-button
+ class="w-full h-96 mt-42 font-32 rounded-2xl bg-grey text-black border-none"
+ type="primary"
+ @click="$router.push({path: '/cancelOrder'})"
+ >{{$t('取消订单')}}
+ </van-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import {Button, CountDown} from "vant"
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+
+export default {
+ name: "Question",
+ props: ["time"],
+ methods: {
+ hide() {
+ console.log(123)
+ this.$emit('back')
+ }
+ },
+ components: {
+ [CountDown.name]: CountDown,
+ [Button.name]: Button,
+ OrderNav,
+ }
+}
+</script>
+
+<style scoped>
+@import "@/assets/css/copy2.scss";
+.c2cPay-page{
+ color: #333;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/payment/components/TradeSuccessDetail.vue b/src/views/C2C/c2cOrder/payment/components/TradeSuccessDetail.vue
new file mode 100644
index 0000000..1ae7adf
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/components/TradeSuccessDetail.vue
@@ -0,0 +1,149 @@
+<template>
+ <div style="z-index: 100;overflow: auto;background: rgb(245, 245, 245)"
+ class="fixed top-0 left-0 w-full h-full bg-white">
+ <div class="pt-12" style="background: #1D91FF">
+ <order-nav>
+ <template #default>
+ <div class="flex items-center chat flex justify-center">
+ <van-badge class="w-35 h-33 mr-22" :content="6">
+ <img class="w-full h-full" src="@/assets/image/c2c/Vector-white.png" alt="">
+ </van-badge>
+ <span class="font-28 text-white">{{ $t('联系卖家')}}</span>
+ </div>
+ </template>
+ </order-nav>
+ <div class="flex justify-between items-center mt-20 px-32 pb-50 text-white">
+ <div>
+ <div class="font-52">交易成功</div>
+ <div class="mt-26 font-26">您已成功购买 2,352.22 USDT</div>
+ </div>
+ <div>
+ <img class="w-92 h-92" src="@/assets/image/c2c/Group181.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div class="pt-46 pb-30 bg-white">
+ <order-data
+ :count="count"
+ :total-price="totalPrice"
+ :order-number="orderNumber"
+ :create-order-time="createOrderTime"
+ client-type="买家昵称"
+ seller-name="钱多多爱妞商行"
+ >
+ <div class="w-full h-16 mb-40" style="background: rgb(245, 245, 245)"></div>
+ </order-data>
+ </div>
+ <div class="px-32 mt-16 bg-white py-39">
+ <h2 class="font-400 font-30">交易方式</h2>
+ <div class="flex items-center mt-28">
+ <div class="w-6 h-28 border-ra" style="background: #E7BB41;"></div>
+ <span class="ml-9 font-22 text-grey">银行卡</span>
+ </div>
+ </div>
+ <van-divider/>
+ <evaluation class="pb-60 bg-white"/>
+ <div class="mt-16">
+ <div class="flex justify-between items-center h-100 px-32 bg-white">
+ <div>
+ <span class="font-30 text-black">关注此用户</span>
+ </div>
+ <div class="switch">
+ <van-switch v-model="checked"/>
+ </div>
+ </div>
+ <div class="flex justify-between items-center h-100 px-32 mt-16 bg-white">
+ <div>
+ <span class="font-30 text-black">对订单存在疑问</span>
+ </div>
+ <div>
+ <van-icon name="arrow" class="font-700"/>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ mapState
+} from "vuex";
+import {
+ Badge,
+ Divider,
+ Cell,
+ CellGroup,
+ Switch,
+ Icon,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav";
+import OrderData from "@/page/c2cOrder/components/order-data/OrderData";
+import Evaluation from "@/page/c2cOrder/payment/components/Evaluation";
+
+export default {
+ name: "TradeSuccessDetail",
+ data() {
+ return {
+ checked: false,
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ['count', 'totalPrice', 'orderNumber', 'createOrderTime'])
+ },
+ components: {
+ [Badge.name]: Badge,
+ [Divider.name]: Divider,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Switch.name]: Switch,
+ [Icon.name]: Icon,
+ OrderNav,
+ OrderData,
+ Evaluation,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+
+::v-deep {
+ .van-nav-bar__right {
+ padding: 0;
+ }
+
+ .van-nav-bar__arrow {
+ color: #fff;
+ }
+
+ .van-nav-bar {
+ background: #1D91FF;
+ }
+
+ .van-cell {
+ padding: 0 32px !important;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ .order-data {
+ .title {
+ padding: 0 32px;
+ }
+ }
+}
+
+.switch {
+ transform: scale(.7) translateX(20px);
+}
+
+.chat {
+ width: 232px;
+ height: 64px;
+ background: linear-gradient(310.03deg, #1D91FF 14.76%, #B6DBFF 84.98%);
+ border-radius: 36px 0px 0px 36px;
+}
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/c2cOrder/payment/index.vue b/src/views/C2C/c2cOrder/payment/index.vue
new file mode 100644
index 0000000..02fb00b
--- /dev/null
+++ b/src/views/C2C/c2cOrder/payment/index.vue
@@ -0,0 +1,194 @@
+<template>
+ <div id="full">
+ <order-nav/>
+ <div class="mt-10 text-center tabBackground text-black">
+ <div>
+ <h1 class="font-700 font-40">请向卖家付款</h1>
+ <div class="flex justify-center items-center mt-18 font-30 font-700">
+ <span>订单将在</span>
+ <van-count-down class="flex font-700" :time="time">
+ <template #default="timeData">
+ <span class="block">{{ timeData.hours }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.minutes }}</span>
+ </template>
+ </van-count-down>
+ <span>后取消</span>
+ </div>
+ <div class="flex justify-center items-end mt-42 font-64 font-700">
+ <span class="relative bottom-5 font-48">¥</span>
+ <span>{{ (totalPrice * 1).toLocaleString() }}.00</span>
+ <img class="relative bottom-10 left-25 w-30 h-33" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ <div class="flex justify-center items-center mt-44">
+ <img class="w-36 h-34 mr-22" src="@/assets/image/c2c/Vector.png" alt="">
+ <span class=" font-32">联系卖家</span>
+ </div>
+
+ </div>
+ </div>
+ <div class="w-full pt-46 pb-58 mt-40" style="background: #fafafa">
+ <div class="ml-50 pl-38 pr-32 msg relative">
+ <div class="circle absolute top-0 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">1
+ </div>
+ <div
+ class="circle absolute bottom-28 left-0 z-10 w-45 h-45 flex justify-center items-center bg-blue text-white font-26"
+ style="border-radius: 50%">2
+ </div>
+ <div class="font-28">离开APP,登录您与APP上的验证姓名相匹配的银行账户或其他支付方式,转到卖家的以下账户。</div>
+ <div class="mt-50 pt-32 px-22 pb-38 bg-white rounded-2xl msg-wrapper">
+ <div class="flex items-center">
+ <div class="w-6 h-28 rounded-xl mr-20" style="background: #E7BB41;"></div>
+ <span class="ml-8 font-30 text-black">银行卡</span>
+ </div>
+ <van-cell-group>
+ <van-cell class="order-number" title="姓名">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">鸿运当头</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" title="银行卡号">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">请点击右上角按钮联系商家索取</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" title="银行名称">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">请仔细阅读下方交易条款</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ <van-cell class="order-number" title="开户支行">
+ <template #default>
+ <div class="flex justify-end">
+ <span class="mr-14">请按照下方交易条款提供相关资料</span>
+ <img class="relative top-8 w-25 h-29" src="@/assets/image/c2c/Group1168.png" alt="">
+ </div>
+ </template>
+ </van-cell>
+ </van-cell-group>
+ </div>
+ <div class="mt-39 font-28">付款后,返回 XX APP,务必点击下方按钮“我已付款”通知卖家。</div>
+ </div>
+ </div>
+ <div class="mt-92 px-40 flex font-30">
+ <van-button
+ class="w-244 h-80 mr-16 rounded-2xl text-black bg-grey border-none"
+ type="primary"
+ @click="show = true"
+ >遇到问题?</van-button>
+ <van-button
+ class="flex-1 h-80 rounded-2xl bg-blue text-white border-none"
+ type="primary"
+ @click="onPayed"
+ >我已付款,通知卖家</van-button>
+ </div>
+<!-- 遇到问题 -->
+ <div>
+ <van-popup class="w-full h-full" v-model="show" position="right">
+ <question @back="back" :time="time"/>
+ </van-popup>
+ </div>
+ </div>
+</template>
+
+<script>
+import {mapState} from "vuex";
+import {Cell, CellGroup, CountDown,Button,Popup,} from "vant"
+import OrderNav from "@/components/order-nav/OrderNav";
+import Question from "@/page/c2cOrder/payment/components/Question";
+import otcApi from '@/API/otc';
+
+export default {
+ name: "payMent",
+ props: {
+ time: {},
+ detail: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ show: false,
+ }
+ },
+ methods: {
+ back() {
+ this.show = false;
+ },
+ onPayed() {
+ otcApi.ctcOrderPayFinish({}).then(res => {
+ console.log(res)
+ this.$router.push({path: '/paymentDetail?id=' + this.$route.query.order_no})
+ })
+ }
+ },
+ computed: {
+ ...mapState('c2cBuy', ["totalPrice"])
+ },
+ components: {
+ [CountDown.name]: CountDown,
+ [Cell.name]: Cell,
+ [CellGroup.name]: CellGroup,
+ [Button.name]:Button,
+ [Popup.name]:Popup,
+ OrderNav,
+ Question,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/init.scss";
+
+::v-deep {
+ .van-count-down {
+ font-size: 26px;
+ color: $blue;
+ }
+
+ .van-cell {
+ margin-top: 28px;
+
+ .van-cell__title, .van-cell__value {
+ font-size: 26px;
+ }
+ }
+}
+
+.msg {
+
+ //border-left: 1px solid #EAEBEE;
+
+ &:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 93%;
+ background: #EAEBEE;
+ }
+}
+
+.msg-wrapper {
+ box-shadow: 0 0 10px rgba(0, 0, 0, .1);
+}
+
+.circle {
+ transform: translateX(-50%);
+}
+
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/components/BuyInput.vue b/src/views/C2C/components/BuyInput.vue
new file mode 100644
index 0000000..0b36f60
--- /dev/null
+++ b/src/views/C2C/components/BuyInput.vue
@@ -0,0 +1,60 @@
+<template>
+ <div class="buy-input relative">
+ <img class="w-40 h-40 absolute left-24" src="@/assets/image/payment/search.png" alt="" />
+ <input class="w-full box-border pl-80 pt-10 pb-10" :readonly="readonly" type="text" :value="value" :placeholder="placeholder" @input="changeVal"
+ @focus="focus" />
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'BuyInput',
+ props: ['value', 'placeholder','isReadonly'],
+ data() {
+ return {
+ readonly: false
+ }
+ },
+ mounted() {
+ if(this.isReadonly) {
+ this.readonly = this.isReadonly
+ } else {
+ this.readonly = false
+ }
+ },
+ methods: {
+ focus(e) {
+ this.$emit('focus', e.target.value)
+ },
+ changeVal(e) {
+ this.$emit('input', e.target.value)
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+input {
+ border: none;
+ outline: none;
+}
+
+.buy-input {
+ width: 100%;
+ height: 100%;
+
+ img {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+
+ input {
+ width: 100%;
+ height: 100%;
+ border-radius: 50px;
+ background: $input_background;
+ color: $text_color;
+ }
+}
+</style>
diff --git a/src/views/C2C/components/C2cInput.vue b/src/views/C2C/components/C2cInput.vue
new file mode 100644
index 0000000..ca51674
--- /dev/null
+++ b/src/views/C2C/components/C2cInput.vue
@@ -0,0 +1,74 @@
+<template>
+<div class="payment-input-wrapper">
+ <div class="label font-28 mb-18 textColor2">
+ {{ $t(label) }}
+ </div>
+ <div class="payment-input w-full" >
+ <slot>
+ <input v-if="!isTextArea"
+ :readonly="disabled"
+ class="w-full h-full inputBackground c2cColor"
+ type="text"
+ :value="$t(value)"
+ @input="changeValue"
+ :placeholder="$t(placeholder)"
+ >
+ <textarea v-else
+ class="w-full h-full inputBackground c2cColor"
+ type="text"
+ :value="$t(value)"
+ @input="changeValue"
+ :placeholder="$t(placeholder)"
+ cols="30" rows="6"
+ ></textarea>
+ </slot>
+ </div>
+</div>
+</template>
+
+<script>
+export default {
+ name: "PaymentInput",
+ // props: ["label", "color", "value"]
+ props: {
+ label: {
+ redirect: true
+ },
+ color: {
+ default: "#000000"
+ },
+ value: {
+
+ },
+ placeholder: {
+ default: ""
+ },
+ disabled: {
+ default() {
+ return false
+ }
+ },
+ isTextArea:{
+ default:false
+ }
+ },
+ methods: {
+ changeValue(e) {
+ this.$emit("input", e.target.value)
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+input, textarea {
+ box-sizing: border-box;
+ padding: 32px 24px;
+ border: none;
+ border-radius: 8px;
+}
+
+textarea {
+ resize: none;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/components/SelectItem.vue b/src/views/C2C/components/SelectItem.vue
new file mode 100644
index 0000000..fee59d1
--- /dev/null
+++ b/src/views/C2C/components/SelectItem.vue
@@ -0,0 +1,115 @@
+<template>
+ <div class="px-32">
+ <div class="flex justify-between box-border items-center">
+ <div class="text-grey font-26">{{ $t(title) }}</div>
+ <div class="font-26" @click="show = !show">
+ <span class="mr-17 text-color">{{ $t('全部') }}</span>
+ <van-icon name="arrow-down" class="text-color" />
+ </div>
+ </div>
+ <div class="select-wrapper mt-35" :class="{ 'show': show }">
+ <div v-if="dataType() === '[object Object]'"
+ class="relative h-82 lh-82 text-center rounded-xl font-28 c2cColor box-border tabBackground"
+ @click="handlerClick({ code: 99 })" :class="{ 'active': value === 99 }">
+ <img v-show="value === 99" class="absolute top-0 left-0 w-full h-full"
+ src="@/assets/image/c2c/Group317.png" alt="">
+ {{ $t('全部') }}
+ </div>
+ <div class="relative text-center rounded-xl font-28 c2cColor box-border tabBackground px-6 py-10"
+ v-for="(item, index) in options" :key="index" @click="handlerClick(item)" :class="{ 'active': a(value, item) }">
+ <img v-show="a(value, item)" class="absolute top-0 left-0 w-full h-full"
+ src="@/assets/image/c2c/Group317.png" alt="">
+ {{ item.title || item.name }}
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ Icon
+} from "vant";
+
+export default {
+ name: "SelectItem",
+ props: ['title', 'options', 'value'],
+ data() {
+ return {
+ activeIndex: 0,
+ show: false,
+ }
+ },
+ created() {
+ console.log(this.options);
+ // const type = Object.prototype.toString.call(this.options)
+ // if (type === '[object Array]') {
+ // this.activeIndex = 0;
+ // } else {
+ // const keys = Object.keys(this.options)
+ // console.log(keys[0]);
+ // this.activeIndex = this.options[keys[0]].code;
+ // }
+ },
+ methods: {
+ handlerClick(item) {
+ let val;
+ if (item.method_type || item.method_type === 0) {
+ console.log(item.method_type);
+ val = item.method_type
+ } else {
+ val = item.code
+ }
+ console.log(val);
+ // this.activeIndex = index;
+ this.$emit('update:value', val)
+ },
+ dataType() {
+ return Object.prototype.toString.call(this.options)
+ },
+ a(a, item) {
+ let val;
+ if (item.method_type || item.method_type === 0) {
+ val = item.method_type
+ } else {
+ val = item.code
+ }
+ return a === val;
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.text-color {
+ color: #868D9A;
+}
+
+.show {
+ height: 310px !important;
+}
+
+.active {
+ border-color: #1D91FF !important;
+}
+
+.select-wrapper {
+ overflow-y: scroll;
+ height: 82px;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 32px;
+ transition: all ease .4s;
+ //background: #00ff33;
+
+ &>div {
+ border-width: 1px;
+ border-style: solid;
+ background-color: #888;
+ border-color: $tab_background;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/components/adScreening.vue b/src/views/C2C/components/adScreening.vue
new file mode 100644
index 0000000..cbe24ed
--- /dev/null
+++ b/src/views/C2C/components/adScreening.vue
@@ -0,0 +1,204 @@
+<template>
+ <div id="full" class="adScreening">
+ <div class="flex box-border items-center justify-between px-36 w-full mt-26 font-36 font-700 text-center">
+ <div></div>
+ <span class="c2cColor">{{ $t('广告筛选') }}</span>
+ <van-icon class="c2cColor" name="cross" @click="handlerBack" />
+ </div>
+ <div class="font-27 mb-35 text-grey ml-32 mt-40">{{ $t('总额') }}</div>
+ <div class="px-32">
+ <van-field v-model="amount" :size="large" :placeholder="$t('请输入总额')">
+ <template #extra>
+ <div class="tabBackground pr-30 box-border textColor">
+ {{ exchangeCurrency }}
+ </div>
+ </template>
+ </van-field>
+ </div>
+ <select-item class="mt-64" :title="$t('交易方式')" :options="fullPayMethods" v-model:value="method_type" />
+ <select-item class="mt-64" :title="$t('国家/地区')" :options="countries" v-model:value="country_code" />
+ <div class="px-32">
+ <van-cell class="c2cColor" center :title="$t('仅显示商家发布的广告')">
+ <template #right-icon>
+ <van-switch v-model="checked" size="24" @click="showAd = !showAd" />
+ </template>
+ </van-cell>
+ <van-collapse v-model="activeNames" v-show="showAd">
+ <van-collapse-item>
+ <template #title>
+ <div class="flex items-center">
+ <img class="w-24 h-24 mr-18" src="@/assets/image/otc/wantBuyHead/tip_ico.png" alt="">
+ <span class="mr-16 font-24 text-grey">{{ $t('广告筛选说明') }}</span>
+ <van-icon name="arrow-down" class="block relative top-1 font-24 font-700"
+ :class="{ 'rotateZ': activeNames.length > 0 }" />
+ </div>
+ </template>
+ <template #right-icon><i></i></template>
+ <template #default>
+ <div class="font-28 c2cColor">
+ <div><span>{{ $t('交易方式:') }}</span><span class="font-700">{{ $t('仅显示可用的交易方式') }}</span></div>
+ <div class="mt-6"><span>{{ $t('国家/地区') }}</span><span class="font-700">{{ $t('仅显示可用的国家 / 地区') }}</span>
+ </div>
+ </div>
+ </template>
+ </van-collapse-item>
+ </van-collapse>
+ <div class="flex mt-56 mb-36 justify-center ">
+ <button class="w-370 h-82 tabBackground c2cColor rounded-lg font-400 font-30 border-none mr-21"
+ @click="onReset">{{ $t('重置') }}
+ </button>
+ <button class="w-370 h-82 bg-grey rounded-lg font-400 font-30 border-none"
+ :class="[{ 'btnMain': tabindex === 1 }, { 'text-white': tabindex === 1 }]" @click="onConfirm">{{ $t('确认') }}
+ </button>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import SelectItem from "./SelectItem.vue";
+import { Cell, Icon, Popup, DropdownMenu, DropdownItem, Field, Switch, Collapse, CollapseItem } from 'vant';
+
+import { mapGetters, mapState } from 'vuex'
+import countries from '@/components/country-list/countryList.js'
+// import { timeStamp } from 'console';
+
+export default {
+ name: "adScreening",
+ components: {
+ [Icon.name]: Icon,
+ [Field.name]: Field,
+ [Popup.name]: Popup,
+ [Cell.name]: Cell,
+ [Switch.name]: Switch,
+ [DropdownMenu.name]: DropdownMenu,
+ [DropdownItem.name]: DropdownItem,
+ [Collapse.name]: Collapse,
+ [CollapseItem.name]: CollapseItem,
+ SelectItem,
+ },
+ computed: {
+ ...mapGetters('c2c', ['payMethods']),
+ ...mapGetters('c2c', ['symbolList', 'payMethods', 'exchangeCurrency']),
+ // 处理交易方式对象
+ fullPayMethods() {
+ const payMethods = [];
+ Object.keys(this.payMethods).forEach((key) => {
+ payMethods.push({
+ method_type: key,
+ title: this.payMethods[key]
+ })
+ })
+ payMethods.unshift({
+ method_type: 99,
+ title: this.$t('全部')
+ })
+
+ return payMethods;
+ }
+ },
+ created() {
+ },
+ data() {
+ return {
+ countries, // 国家列表
+ activeNames: [],
+ amount: '',
+ // 0 代表全部
+ method_type: '', // 支付方式
+ country_code: 99, // 国家
+ tradeList: [
+ {
+ '': this.$t('全部'),
+ // Bank_card: '银行卡',
+ // Coin_collection: '币收款',
+ }
+ ],
+ large: '80',
+ checked: false,
+ tabindex: 1,
+ showAd: false,
+ }
+ },
+ methods: {
+ onChooseType(key) { // 选择支付方式
+ this.method_type = key
+ this.$refs.paymentMethod[0].toggle()
+ },
+ onSelectCountry(item) {
+ this.country_code = item.code;
+ this.$refs.country.toggle()
+ },
+ onReset() { // 重置
+ this.amount = ''
+ this.method_type = 99
+ this.country_code = 99
+ },
+ onConfirm() { // 确认
+ console.log(this.amount, this.method_type, this.country_code, this.checked)
+ this.$emit('confirm', {
+ amount: this.amount,
+ method_type: this.method_type
+ })
+
+ this.$emit('back')
+ },
+ handlerBack() {
+ this.$emit('back')
+ },
+ payMethod(val) {
+ console.log(val);
+ this.method_type = val
+ },
+ address(val) {
+ this.country_code = val
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.active_trade {
+ color: #ffffff;
+ // background-color: #888;
+ background:$color_main;
+}
+
+.rotateZ {
+ transform: rotateZ(180deg);
+}
+
+::v-deep {
+ .van-dropdown-menu__bar {
+ background: none;
+ box-shadow: none;
+ }
+
+ .van-collapse-item__content {
+ padding: 0;
+ }
+}
+
+#full {
+ ::v-deep .van-cell {
+ background: $main_background;
+ }
+
+ ::v-deep .van-cell::after {
+ border-bottom: 1px solid $divi_line;
+ }
+
+ .van-switch {
+ background: $btn_main;
+ }
+
+ ::v-deep .van-collapse-item__content {
+ background: $main_background;
+ }
+
+ ::v-deep .van-field__control {
+ color: $text_color;
+ }
+}
+</style>
diff --git a/src/views/C2C/components/buy.vue b/src/views/C2C/components/buy.vue
new file mode 100644
index 0000000..9724012
--- /dev/null
+++ b/src/views/C2C/components/buy.vue
@@ -0,0 +1,394 @@
+<template>
+ <div style="overflow: hidden" class="absolute left-0 right-0 bottom-0 top-122 box-ra flex flex-col"
+ :class="fullBottom">
+ <div class="flex justify-between mt-46 mb-40 items-center">
+ <div class="flex ml-32 text-grey">
+ <div class="font-400 font-36 mr-89 " @click="switchDirection('buy')" :class="{ 'textColor': buyTab === 'buy' }">
+ {{ $t('我要买') }}
+ </div>
+ <div class="font-400 font-36 " @click="switchDirection('sell')" :class="{ 'textColor': buyTab === 'sell' }">
+ {{ $t('我要卖') }}
+ </div>
+ </div>
+ <img @click="$router.push({ path: '/wantBuy/c2cOrderList' })" class="w-22 h-30 mr-55"
+ src="@/assets/image/otc/buy/subtract.png" alt="">
+ </div>
+ <!-- <div class="flex"> -->
+ <!-- <div class="flex flex-col mr-80 ml-32" @click="tab = 0" :class="{'text-blue': tab === 0}" v-for="(item, index) in symbol" :key="index">
+ <div class="font-400 font-26 mb-18">{{item}}</div>
+ <div class="h-4 w-48 text-white" :class="{'text-blue': tab === 0}">一</div>
+ </div> -->
+ <!-- <div class="flex flex-col " @click="tab = 1" :class="{'text-blue': tab === 1}">
+ <div class="font-400 font-26 mb-18 mr-80">BTC</div>
+ <div class="h-4 w-48 text-white" :class="{'text-blue': tab === 1}">一</div>
+ </div>
+ <div class="flex flex-col " @click="tab = 2" :class="{'text-blue': tab === 2}">
+ <div class="font-400 font-26 mb-18">ETH</div>
+ <div class="h-4 w-48 text-white" :class="{'text-blue': tab === 2}">一</div>
+ </div> -->
+ <!-- </div> -->
+ <!-- <van-tabs v-model="tab" @change="onchange">-->
+ <!-- <van-tab :title="item" v-for="(item, index) in symbol" :key="index"></van-tab>-->
+ <!-- </van-tabs>-->
+ <div class="tabs flex px-32 items-center" style="overflow-x: auto;touch-action: auto;">
+ <div :class="{ 'active': tab === index }" @click="onchange(index)" style="flex-shrink: inherit;touch-action: auto;"
+ v-for="(item, index) in symbol" :key="index" class="mr-80 item flex flex-col items-center textColor1">
+ <span class="font-26">{{ item }}</span>
+ <div v-if="tab === index" class="w-48 h-4 mt-20" style="background: #1194F7"></div>
+ <div v-else class="w-48 h-4 mt-20"></div>
+ </div>
+ </div>
+ <div class="mt-26 flex justify-between">
+ <div class="flex ml-16">
+ <div class="mr-80">
+ <van-dropdown-menu active-color="#1989fa">
+ <van-dropdown-item :title="$t('金额')" ref="amountItem">
+ <van-field v-model="value1" :placeholder="$t('请输入总额')">
+ <template #extra>
+ {{ exchangeCurrency }}
+ </template>
+ </van-field>
+ <div class="flex flex-wrap justify-between px-20 box-border mb-62 mt-12">
+ <div class="font-400 font-28 w-248 h-72 mb-12 rounded-md tabBackground c2cColor text-center lh-72 mr-12"
+ :class="{ 'active_trade': index === numListActive }" v-for="(item, index) in numList"
+ :key="'num' + index" @click="onQuickAmount(item, index)">
+ {{ item.num }}
+ </div>
+ </div>
+ <div class="flex mb-36 justify-center ">
+ <button class="w-370 h-82 tabBackground c2cColor rounded-lg font-400 font-30 border-none mr-21"
+ :class="[{ 'bg-blue': tabindex === 0 }, { 'text-white': tabindex === 0 }]" @click="onResetMoney">{{
+ $t('重置')
+ }}
+ </button>
+ <button class="w-370 h-82 btnMain c2cColor rounded-lg font-400 font-30 border-none"
+ :class="[{ 'bg-blue': tabindex === 1 }, { 'text-white': tabindex === 1 }]" @click="onConfirmMoney">
+ {{ $t('确认') }}
+ </button>
+ </div>
+ </van-dropdown-item>
+ </van-dropdown-menu>
+ </div>
+ <div class=" ">
+ <van-dropdown-menu active-color="#1989fa">
+ <van-dropdown-item :title="$t('交易方式')" ref="payTypeItem">
+ <div class="flex mb-72 justify-center mt-44 flex-wrap">
+ <button v-show="showTab !== 0"
+ class="w-232 h-82 tabBackground c2cColor rounded-lg font-400 font-28 border-none mr-32"
+ @click="onAllType">
+ {{ $t('全部') }}
+ </button>
+ <div class="relative" v-show="showTab === 0" @click="showTab = 2">
+ <button class="w-232 h-82 tabBackground c2cColor rounded-lg font-400 font-28 border-none mr-32">{{
+ $t('全部')
+ }}
+ </button>
+ <img class="absolute top-0 right-0 w-232 h-82 mr-32"
+ src="@/assets/image/otc/wantBuyHead/trade_bg.png" alt="">
+ </div>
+ <button class="w-232 minh-82 tabBackground c2cColor rounded-lg font-400 font-24 border-none mr-32 mb-20"
+ :class="{ 'active_trade': showTab == index + 1 }" @click="onShowTab(index)"
+ v-for="(item, index) in payMethods" :key="index">{{ item }}
+ </button>
+ <!-- <button class="w-232 h-82 bg-grey rounded-lg font-400 font-28 border-none "
+ :class="{'active_trade' : showTab === 2} " @click="showTab = 2">币收款
+ </button> -->
+ </div>
+ <div class="font-22 text-center mb-30 text-grey">{{ $t('仅展示可用的交易方式') }}</div>
+ </van-dropdown-item>
+ </van-dropdown-menu>
+ </div>
+ </div>
+ <div class="flex mr-32 items-center" @click="selectClick">
+ <div class="mr-10 font-24 font-400 textColor">{{ $t('筛选') }}</div>
+ <img class="w-18 h-21" src="@/assets/image/otc/buy/Vector.png" alt="">
+ </div>
+ </div>
+ <div class="flex justify-center mb-52">
+ <div class="w-full h-2 diviLine mt-28 box-border mx-32 "></div>
+ </div>
+ <!-- loading / empty -->
+ <!-- <div class="flex justify-center" :class="{'pt-100': !buyList.length}">-->
+ <!-- <van-loading color="#1989fa" v-if="loading"/>-->
+ <!-- <van-empty description="没有广告" v-if="!loading && !buyList.length"/>-->
+ <!-- </div>-->
+ <div class="flex-1 roll-section" style="overflow-y: auto">
+ <slot></slot>
+ </div>
+
+ <van-popup class="w-600 rounded-xl" v-model:show="showRemoved">
+ <div class="flex flex-col items-center pt-46 pb-40 px-34 bg-white">
+ <img class="w-76 h-76" src="@/assets/image/c2c/Group41-3.png" alt="">
+ <div>
+ <p class="mt-36 mb-50 font-28">{{ $t('该广告已下架。请选择其他广告。') }}</p>
+ <van-button @click="showRemoved = false" class="w-full h-80 rounded-lg bg-blue" type="info">
+ {{ $t('确认') }}
+ </van-button>
+ </div>
+ </div>
+ </van-popup>
+
+ <!--筛选-->
+ <van-popup class="w-full popHeight" round v-model:show="showSelect" position="bottom">
+ <ad-screening @back="handlerBack" @confirm="confirm" />
+ </van-popup>
+ </div>
+</template>
+<script>
+import { Cell, Icon, Popup, DropdownMenu, DropdownItem, Field, Button, Tabs, Tab } from 'vant';
+import adScreening from "./adScreening.vue";
+import { mapGetters } from 'vuex'
+
+export default {
+ name: "BuyPage",
+ components: {
+ [Icon.name]: Icon,
+ [Field.name]: Field,
+ [Popup.name]: Popup,
+ [Cell.name]: Cell,
+ [DropdownMenu.name]: DropdownMenu,
+ [DropdownItem.name]: DropdownItem,
+ [Button.name]: Button,
+ [Tabs.name]: Tabs,
+ [Tab.name]: Tab,
+ adScreening,
+ },
+ props: {
+ buyList: { // 承兑商列表
+ type: Array,
+ default() {
+ return []
+ }
+ },
+ symbol: {
+ type: Array,
+ default() {
+ return []
+ }
+ },
+ loading: {
+ type: Boolean,
+ default: false
+ },
+ finished: {
+ type: Boolean,
+ default: false
+ },
+ isLoading: {
+ type: Boolean,
+ default: false
+ },
+ },
+ created() {
+ // 设置选中tab
+ const index = this.symbol.findIndex(item => item === this.$store.state.c2c.symbol)
+ // this.tab = index
+ this.tab = 0
+ // direction
+ this.buyTab = this.$store.state.c2c.direction
+
+ },
+ data() {
+ return {
+ showSelect: false, // 显示筛选
+ showRemoved: false, // 显示已下架弹窗
+ tabindex: 1,
+ tab: 0,
+ showTab: 0,
+ buyTab: 0,
+ // buyList1: [
+ // {
+ // name: 'BitcomTxm',
+ // unit_price: '0.960',
+ // quantity: '498.6 USDT',
+ // limit: '$200.50 - $483.64',
+ // volume: '158',
+ // Transaction_rate: '78%',
+ // bgm: require('@/assets/image/otc/buy/B.png'),
+ // bgm2: require('@/assets/image/otc/buy/star.png'),
+ // uid: 'dsadas',
+ // },
+ // {
+ // name: 'ETHCoin',
+ // unit_price: '0.960',
+ // quantity: '498.6 USDT',
+ // limit: '$200.50 - $483.64',
+ // volume: '158',
+ // Transaction_rate: '78%',
+ // bgm: require('@/assets/image/otc/buy/E.png'),
+ // bgm2: require('@/assets/image/otc/buy/star.png'),
+ // uid: 'sss',
+ // isRemoved: true, // 已下架
+ // },
+ // {
+ // name: 'BitcomTxm',
+ // unit_price: '0.960',
+ // quantity: '498.6 USDT',
+ // limit: '$200.50 - $483.64',
+ // volume: '158',
+ // Transaction_rate: '78%',
+ // bgm: require('@/assets/image/otc/buy/B.png'),
+ // bgm2: require('@/assets/image/otc/buy/star.png'),
+ // uid: '333',
+ // },
+ // {
+ // name: 'BitcomTxm',
+ // unit_price: '0.960',
+ // quantity: '498.6 USDT',
+ // limit: '$200.50 - $483.64',
+ // volume: '158',
+ // Transaction_rate: '78%',
+ // bgm: require('@/assets/image/otc/buy/B.png'),
+ // bgm2: require('@/assets/image/otc/buy/star.png'),
+ // uid: '5444',
+ // },
+ // ],
+ value: 0,
+ value1: '',
+ switch1: false,
+ switch2: false,
+ numListActive: -1,
+ numList: [
+ {
+ num: '100',
+ value: '100'
+ }, {
+ num: '1000',
+ value: '1000'
+ }, {
+ num: '5000',
+ value: '5000'
+ }, {
+ num: this.$i18n.locale === 'CN' || this.$i18n.locale === 'zh-CN' ? '1万' : '10k',
+ value: '10000'
+ }, {
+ num: this.$i18n.locale === 'CN' || this.$i18n.locale === 'zh-CN' ? '10万' : '100k',
+ value: '100000'
+ }, {
+ num: this.$i18n.locale === 'CN' || this.$i18n.locale === 'zh-CN' ? '20万' : '200k',
+ value: '200000'
+ }
+ ]
+ }
+ },
+ methods: {
+ onAllType() { //全部
+ this.showTab = 0
+ this.$emit('change', { method_type: '' })
+ this.$refs.payTypeItem.toggle()
+ },
+ onShowTab(index) { // 选择交易方式
+ this.showTab = index + 1
+ this.$emit('change', { method_type: index })
+ this.$refs.payTypeItem.toggle()
+ },
+ onResetMoney() { // 重置金额
+ this.value1 = ''
+ this.numListActive = -1
+ },
+ onConfirmMoney() { // 确定金额
+ this.$emit('change', { amount: this.value1 })
+ this.$refs.amountItem.toggle()
+ },
+ onQuickAmount(item, index) { // 快捷金额
+ this.numListActive = index
+ this.value1 = item.value
+ // console.log(item)
+ },
+ // 筛选
+ selectClick() {
+ this.showSelect = true;
+ },
+ // 隐藏筛选
+ handlerBack() {
+ this.showSelect = false;
+ },
+ // 筛选确定
+ confirm(params) {
+ console.log(params)
+ this.$emit('confirm', params)
+ },
+
+ switchDirection(direction) { // 我要买/卖
+ this.buyTab = direction
+ this.$store.commit('c2c/SET_DIRECTION', direction)
+ this.$emit('change', { direction })
+ },
+ onchange(index) { // tab改变
+ this.tab = index
+ this.$store.commit('c2c/SET_SYMBOL', this.symbolList[index])
+ this.$emit('change', { symbol: this.symbolList[index] })
+ }
+ },
+ computed: {
+ ...mapGetters('c2c', ['symbolList', 'payMethods', 'exchangeCurrency']),
+ fullBottom() {
+ return this.$route.path === '/wantBuy' ? 'bottom-0' : 'bottom-160';
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::-webkit-scrollbar {
+ width: 0;
+ height: 0;
+ color: transparent;
+}
+
+.tabs {
+ .item:last-child {
+ margin-right: 0;
+ }
+}
+
+.popHeight {
+ height: calc(100% - 122px);
+}
+
+.box-ra {
+ border-radius: 80px 80px 0 0;
+}
+
+.col {
+ color: #E7BB41;
+}
+
+.cl {
+ color: var(--theme-color);
+}
+
+.active {
+ color: var(--theme-color);
+}
+
+.active_all {
+ background: url("@/assets/image/otc/wantBuyHead/trade_bg.png");
+ border: 2px solid #2C78F8;
+}
+
+.active_trade {
+ color: #ffffff;
+ background-color: #555 !important;
+}
+
+::v-deep {
+ .van-dropdown-menu__bar {
+ background: none;
+ box-shadow: none;
+ }
+}
+
+.minh-82 {
+ min-height: 82px;
+}
+
+.mb-52 {
+ margin-bottom: 52px;
+}
+
+.tabBackground{
+ background-color: #999;
+}
+</style>
diff --git a/src/views/C2C/quick/EnterTrade.vue b/src/views/C2C/quick/EnterTrade.vue
new file mode 100644
index 0000000..ff95b99
--- /dev/null
+++ b/src/views/C2C/quick/EnterTrade.vue
@@ -0,0 +1,219 @@
+<template>
+ <div class="py-50 px-52">
+ <order-nav>
+ <template #left><i></i></template>
+ <template #title>
+ <div class="header-box">
+ <span v-if="type === 'buy'" class="font-36 header-title">{{ $t('确认购买') }}</span>
+ <span v-else class="font-36 header-title">{{ $t('确认出售') }}</span>
+ </div>
+ </template>
+ <template #default>
+ <van-icon @click="$emit('close')" name="cross" class="font-600" color="#868D9A" />
+ </template>
+ </order-nav>
+ <div class="text-center">
+ <div v-if="type === 'buy'">
+ <div v-if="info.type === 'Amount'">
+ <div class="flex items-end justify-center font-700">
+ <span class="relative bottom-3 mr-15 font-40">{{ currencySymbol }}</span>
+ <span class="font-52">{{ fullTotalPrice }}</span>
+ </div>
+ <div class="mt-16 font-28">{{ $t('我将收到') }} <span style="color:#2C78F8;">{{ fullNum
+ }}</span> {{ symbol }}</div>
+ </div>
+ <div v-else>
+ <div class="flex items-end justify-center font-700">
+ <span class="relative bottom-3 mr-15 font-40">{{ currencySymbol }}</span>
+ <span class="font-52">{{ fullTotalPrice }}</span>
+ </div>
+ <div class="mt-16 font-28">{{ $t('我将收到') }} <span style="color:#2C78F8;">{{ fullNum
+ }}</span> {{ symbol }}</div>
+ </div>
+ </div>
+ <div v-else>
+ <div v-if="info.type === 'Amount'">
+ <div class="flex items-end justify-center font-700">
+ <span class="relative bottom-3 mr-15 font-40">{{ currencySymbol }}</span>
+ <span class="font-52">{{ fullTotalPrice }}</span>
+ </div>
+ <div class="mt-16 font-28">{{ $t('我将出售') }} <span style="color:#2C78F8;">{{ fullNum
+ }}</span> {{ symbol }}</div>
+ </div>
+ <div v-else>
+ <div class="flex items-end justify-center font-700">
+ <span class="relative bottom-3 mr-15 font-40">{{ currencySymbol }}</span>
+ <span class="font-52">{{ fullTotalPrice }}</span>
+ </div>
+ <div class="mt-16 font-28">{{ $t('我将出售') }} <span style="color:#2C78F8;">{{ fullNum
+ }}</span> {{ symbol }}</div>
+ </div>
+ </div>
+ </div>
+ <div class="mt-64">
+ <div class="text-grey">{{ $t('选择支付方式') }}</div>
+ <div class="mt-18">
+ <div
+ class="relative flex items-center justify-between mb-19 pl-36 pr-62 py-28 bg-f5 rounded-xl font-28 box-border bank-item"
+ :class="{ 'active': active === index }" @click="handleClick(index, item)" v-for="(item, index) in paymentMethod"
+ :key="index">
+ <div class="flex items-center h-30">
+ <img :src="item.method_img_path" alt="" class="w-40 h-40 mr-20" />
+ <span>{{ $t(item.method_name) }}</span>
+ </div>
+ <div>
+ <p>{{ currencySymbol }} {{ item.advert_price }}</p>
+ <p class="mt-12 font-20" style="color: #1A6EBD" v-if="goodPrice">{{ $t('价格最优') }}</p>
+ </div>
+ <img v-show="active === index" class="absolute right-0 top-0 w-310 h-110"
+ src="@/assets/image/c2c/Group317.png" alt="">
+ </div>
+ <!-- <div
+ class="relative flex justify-between pl-36 pr-62 py-28 bg-f5 rounded-xl font-28 box-border bank-item"
+ :class="{'active': active === 1}"
+ @click="handleClick(1)"
+ >
+ <div class="flex items-center">
+ <span class="w-5 h-21 mr-13 rounded-2xl" style="background: #4BA6EB"></span>
+ <span>{{$t(paymentMethod[1].methodName)}}</span>
+ </div>
+ <div>
+ <p>¥ 6.73</p>
+ </div>
+ <img v-show="active === 1" class="absolute right-0 top-0 w-310 h-110"
+ src="@/assets/image/c2c/Group317.png" alt="">
+ </div> -->
+ </div>
+ </div>
+ <div>
+ <van-button v-if="type === 'buy'" class="w-full h-80 mt-56 font-32 rounded-xl" type="primary" color="#2EBD85"
+ @click="trade">{{ $t('确认购买') }}
+ </van-button>
+ <van-button v-else class="w-full h-80 mt-56 font-32 rounded-xl" type="primary" color="#E35461" @click="trade">{{
+ $t('确认出售') }}
+ </van-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ Icon,
+ Button,
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import otcApi from "@/service/otc";
+import { mapGetters } from "vuex";
+
+export default {
+ name: "EnterTrade",
+ props: ['type', 'paymentMethod', 'info', 'sessionToken', 'symbol', 'exchangeCurrency'],
+ data() {
+ return {
+ advert_price: '', // 测试单价
+ active: 0,
+ goodPrice: true,
+ advert_id: ''
+ }
+ },
+ watch: {
+ paymentMethod: {
+ handler: function (val) {
+ this.advert_price = this.paymentMethod[this.active].advert_price
+ this.advert_id = this.paymentMethod[this.active].advert_id
+ },
+ immediate: true
+ }
+ },
+ methods: {
+ handleClick(num, item) {
+ this.active = num;
+ this.advert_price = item.advert_price
+ this.advert_id = item.advert_id
+ },
+ async trade() {
+ const params = {
+ session_token: this.sessionToken,
+ payment_method_id: this.paymentMethod[this.active].payment_method_id,
+ order_type: this.info.type === 'Amount' ? 'by_amount' : 'by_num',
+ amount: this.fullTotalPrice,
+ coin_amount: this.fullNum,
+ direction: this.type,
+ currency: this.exchangeCurrency,
+ symbol: this.symbol.toLowerCase(),
+ remark: '',
+ c2c_advert_id: this.advert_id
+ }
+
+ otcApi.ctcOrderOpenQuick(params).then(res => {
+ this.$store.commit('c2c/SET_ORDER_NO', res.data.order_no)
+ if (this.type == 'buy') {
+ this.$router.push('/orderGeneration')
+ } else {
+
+ this.$router.push('/sellGenerate')
+ }
+ }).catch(err => {
+ // if(err.code==1){
+ // this.$emit('updataToken',true)
+ // }
+ })
+ }
+ },
+ computed: {
+ ...mapGetters("c2c", ["currencySymbol"]),
+ fullTotalPrice() {
+ if (this.info.type === 'Amount') {
+ return this.info.num
+ } else {
+ console.log((this.info.num * 1))
+ console.log(this.advert_price)
+ return ((this.info.num * 1) * this.advert_price).toFixed(2)
+ }
+ },
+ fullNum() {
+ if (this.info.type === 'Amount') {
+ return ((this.info.num * 1) / this.advert_price).toFixed(4)
+ } else {
+ return this.info.num
+ }
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Button.name]: Button,
+ OrderNav,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+
+.header-box {
+ color: $text_color;
+}
+
+.bank-item {
+ border-width: 1px;
+ border-style: solid;
+ // border-color: #F5F5F5;
+
+ background: $main_background;
+ color: $text_color;
+ border-color: $line_color;
+
+ img {
+ right: -1px;
+ top: -1px;
+ }
+}
+
+.active {
+ border-color: #1D91FF !important;
+}
+
+.text-center {
+ color: $text_color;
+}
+</style>
diff --git a/src/views/C2C/quick/index.vue b/src/views/C2C/quick/index.vue
new file mode 100644
index 0000000..58ac76e
--- /dev/null
+++ b/src/views/C2C/quick/index.vue
@@ -0,0 +1,408 @@
+<template>
+ <div id="wantBuy" class="flex flex-col w-full h-full">
+ <div>
+ <div class="w-full h-122 pl-40 pr-31 box-border flex text-white items-center">
+ <van-icon class="c2cColor" name="arrow-left" @click="$router.back()" />
+ <div class="flex-1 text-right mr-100" @click="showPopup">
+ <span class="font-35 font-700 mr-8 titleColor">{{ $t('快捷区') }}</span>
+ <van-icon name="arrow-down" class="c2cColor" />
+ </div>
+ <van-popup round position="top" v-model:show="show" :closeable="true">
+ <span class="w-232 font-28 c2cColor font-500 ml-32 block mt-20">{{
+ $t('选择交易区')
+ }}</span>
+ <div class="flex justify-around c2cColor mt-40 pb-48">
+ <div class="flex flex-col items-center" @click="show = false">
+ <img class="w-56 h-56" src="@/assets/image/otc/wantBuyHead/fast.png" alt="" />
+ <span class="font-24 mt-10 h-32 font-500">{{ $t('快捷区') }}</span>
+ </div>
+ <div class="flex flex-col items-center" @click="$router.push({
+ path: '/wantBuy'
+ })">
+ <img class="w-56 h-56" src="@/assets/image/otc/wantBuyHead/optional.png" alt="" />
+ <span class="font-24 mt-10 font-500">{{ $t('自选区') }}</span>
+ </div>
+ </div>
+ </van-popup>
+ <div class="w-232 h-64 px-23 box-border box-radius textColor flex justify-around items-center tabBackground">
+ <div class="flex items-center" @click="$router.push({
+ path: '/selectLegalCurrency'
+ })">
+ <span class="mr-15 font-31 font-400">{{ exchangeCurrency }}</span>
+ <img class="w-24 h-20" src="@/assets/image/otc/wantBuyHead/Group.png" alt="" />
+ </div>
+ <template>
+ <span class="w-2 h-36">|</span>
+ <van-popover get-container="#quick" v-model="showPopover" :actions="actions" @select="onSelect"
+ placement="bottom-end" theme="dark" :offset="[20, 20]">
+ <template #reference>
+ <img @click="showPopover = !showPopover" class="relative bottom-4 w-24 h-6 list-img"
+ src="@/assets/image/otc/wantBuyHead/Group2.png" alt="" />
+ </template>
+ </van-popover>
+ </template>
+ </div>
+ </div>
+ <div class="px-32 pb-42 type">
+ <div class="flex items-center font-36 ">
+ <div :class="{ 'active': isBuy }" @click="isBuy = true">{{ $t('我要买') }}
+ </div>
+ <div class="w-34 h-1 mx-20" style="transform: rotate(90deg);background:#EAEBEE"></div>
+ <div :class="{ 'active': !isBuy }" @click="isBuy = false">{{ $t('我要卖') }}
+ </div>
+ </div>
+ <div class="flex mt-40 currency text-center">
+ <div v-for="(item, index) in currency" :key="index" :class="{ 'active': activeCurrency === item.title }"
+ @click="changeTab(item)">
+ <p>{{ item.title }}</p>
+ <p>{{ item.label }}</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="w-full flex-1 px-32 pt-36 box-border mainBackground">
+ <div class="px-32 py-40 c2cTabBackground item" v-show="isBuy">
+ <div v-show="order_type === 'Amount'">
+ <div class="mb-18 textColor1">{{ $t('购买金额') }}</div>
+ <div class="w-full relative box-border rounded-xl inputBackground1 input">
+ <span class="font-32 absolute left-22 text font-700 c2cColor">{{ currencySymbol }}</span>
+ <input class="w-full font-36 h-110 rounded-xl border-none box-border pl-94 inputBackground1 c2cColor"
+ type="number" :placeholder="$t('最小金额') + 100" v-model="buyAmount">
+ </div>
+ <div class="flex justify-between mt-28 font-24">
+ <div class="text-grey">{{ $t('参考单价') }} {{ currencySymbol }}{{ referPrice }} </div>
+ <div class="flex items-center text-blue" @click="changeOrderType('Num')">
+ <span class="mr-11">{{ $t('按数量购买') }}</span>
+ <img class="w-24 h-24" src="@/assets/image/c2c/Group241.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div v-show="order_type === 'Num'">
+ <div class="flex justify-between mb-18">
+ <span class="textColor1">{{ $t('购买数量') }}</span>
+ </div>
+ <div class="w-full relative box-border rounded-xl inputBackground1 input">
+ <input class="w-full font-36 h-110 rounded-xl border-none box-border pl-38 inputBackground1 c2cColor"
+ type="number" :placeholder="$t('请输入数量')" v-model="buyNum">
+ <span class="font-28 absolute right-19 text" style="color: #1A6EBD;">
+ <span class="mr-22 c2cColor">{{ activeCurrency }}</span>
+ </span>
+ </div>
+ <div class="flex justify-between mt-28 font-24">
+ <div class="text-grey">{{ $t('参考单价') }} {{ currencySymbol }}{{ referPrice }}</div>
+ <div class="flex items-center text-blue" @click="changeOrderType('Amount')">
+ <span class="mr-11">{{ $t('按金额购买') }}</span>
+ <img class="w-24 h-24" src="@/assets/image/c2c/Group241.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div class="mt-76">
+ <van-button class="w-full h-80 font-32 rounded-xl" type="primary" color="#2EBD85" @click="handleClick">{{
+ $t('0手续费购买') }}
+ </van-button>
+ </div>
+ </div>
+ <div class="px-32 py-40 c2cTabBackground item" v-show="!isBuy">
+ <div v-show="order_type === 'Num'">
+ <div class="flex justify-between mb-18">
+ <span class="textColor1">{{ $t('出售数量') }}</span>
+ <span class="font-24 text-blue" style="text-decoration: underline" @click="isBuy = !isBuy">{{
+ $t('划转') }}</span>
+ </div>
+ <div class="w-full relative box-border rounded-xl inputBackground1 input">
+ <input class="w-full font-36 h-110 rounded-xl border-none box-border pl-38 inputBackground1 c2cColor"
+ type="number" :placeholder="$t('请输入数量')" v-model="sellNum">
+ <span class="font-28 absolute right-19 text" style="color: #1A6EBD;">
+ <span class="mr-22 c2cColor">{{ activeCurrency }}</span>
+ </span>
+ </div>
+ <div class="flex justify-between mt-28 font-24">
+ <div class="text-grey">{{ $t('参考单价') }} {{ currencySymbol }}{{ referPrice }}</div>
+ <div class="flex items-center text-blue" @click="order_type = 'Amount'">
+ <span class="mr-11">{{ $t('按金额出售') }}</span>
+ <img class="w-24 h-24" src="@/assets/image/c2c/Group241.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div v-show="order_type === 'Amount'">
+ <div class="flex justify-between mb-18" style="color: #595C61">
+ <span class="textColor1">{{ $t('出售金额') }}</span>
+ <span class="font-24 text-blue" style="text-decoration: underline"
+ @click="$router.push('/my/transfer')">{{ $t('划转') }}</span>
+ </div>
+ <div class="w-full relative box-border rounded-xl inputBackground1 input">
+ <div class="w-full relative box-border rounded-xl inputBackground1 input">
+ <span class="font-32 absolute left-22 text font-700 c2cColor">{{ currencySymbol }}</span>
+ <input class="w-full font-36 h-110 rounded-xl border-none box-border pl-94 inputBackground1 c2cColor"
+ type="number" :placeholder="$t('最小金额') + 100" v-model="sellAmount">
+ </div>
+ </div>
+ <div class="flex justify-between mt-28 font-24">
+ <div class="text-grey">{{ $t('参考单价') }} {{ currencySymbol }}{{ referPrice }}</div>
+ <div class="flex items-center text-blue" @click="order_type = 'Num'">
+ <span class="mr-11">{{ $t('按数量出售') }}</span>
+ <img class="w-24 h-24" src="@/assets/image/c2c/Group241.png" alt="">
+ </div>
+ </div>
+ </div>
+ <div class="mt-76">
+ <van-button class="w-full h-80 font-32 rounded-xl" type="primary" color="#E35461" @click="handleClick">{{
+ $t('0手续费出售') }}
+ </van-button>
+ </div>
+ </div>
+ </div>
+
+ <van-popup v-model:show="enterTrade" position="bottom">
+ <enter-trade v-if="paymentMethod.length" :type="fullType" :payment-method="paymentMethod" :info="info"
+ :session-token="session_token" :symbol="activeCurrency" :exchangeCurrency="exchangeCurrency"
+ @updataToken="updataToken" @close="enterTrade = false" />
+ </van-popup>
+ </div>
+</template>
+
+<script>
+import otcApi from "@/service/otc";
+
+import {
+ Icon,
+ Popup,
+ Popover,
+ Button,
+ showToast,
+} from "vant";
+
+import EnterTrade from "./EnterTrade.vue";
+import { mapGetters } from "vuex";
+export default {
+ name: "index",
+ data() {
+ return {
+ referPrice: '--',
+ paymentMethod: [],
+ order_type: 'Amount',
+ enterTrade: false,
+ isBuy: true, // 模式
+ activeCurrency: 'USDT',
+ show: false,
+ showPopover: false,
+ currency: [
+ {
+ title: 'USDT',
+ label: this.$t('计价币种')
+ },
+ {
+ title: 'BTC',
+ label: this.$t('最知名币种')
+ },
+ {
+ title: 'ETH',
+ label: this.$t('以太坊')
+ }
+ ],
+ actions: [
+ {
+ text: this.$t('收款方式'),
+ icon: new URL('@/assets/image/otc/buy/collection_icon.png', import.meta.url).href,
+ path: '/paymentMethod',
+ },
+ // {
+ // text: this.$t('c2c帮助中心'),
+ // icon: new URL('@/assets/image/otc/buy/help_icon.png', import.meta.url).href,
+ // path: '/c2cHelpCenter',
+ // },
+ // {
+ // text: 'c2c用户中心',
+ // icon: new URL('@/assets/image/otc/buy/user_icon.png', import.meta.url).href,
+ // path: '/c2c/c2cUser',
+ // },
+ // {
+ // text: this.$t('接单模式'),
+ // icon: new URL('@/assets/image/otc/buy/order_icon.png', import.meta.url).href,
+ // },
+ ],
+ session_token: '',
+
+ buyAmount: '',
+ buyNum: '',
+ sellAmount: '',
+ sellNum: '',
+ info: {},
+ all_price: {},
+ isPay: false
+ }
+ },
+ created() {
+ otcApi.getSessionToken({
+ currency: this.exchangeCurrency
+ }).then(res => {
+ this.session_token = res.data.session_token;
+ console.log(this.activeCurrency.toLowerCase())
+ this.all_price = res.data.all_price
+ this.referPrice = this.all_price[this.activeCurrency.toLowerCase()]
+ })
+
+ otcApi.ctcPaymentMethodList({ language: this.$i18n.locale }).then(res => {
+ if (res.data.length) {
+ this.isPay = true
+ } else {
+ this.isPay = false
+ }
+ })
+
+ },
+ methods: {
+ changeOrderType(order_type) {
+ this.buyAmount = ''
+ this.buyNum = ''
+ this.sellAmount = ''
+ this.sellNum = ''
+ this.order_type = order_type
+ },
+ getPriceList(type) {
+ //获取承兑商支付方式列表
+ otcApi.c2cgetBestPrice({
+ order_type: this.order_type == 'Amount' ? 'by_amount' : 'by_num',
+ amount: this.isBuy ? this.buyAmount : this.sellAmount,
+ coin_amount: this.isBuy ? this.buyNum : this.sellNum,
+ direction: this.isBuy ? 'buy' : 'sell',
+ currency: this.exchangeCurrency,
+ symbol: this.activeCurrency.toLowerCase(),
+ language: this.$i18n.locale
+ }).then(data => {
+ this.paymentMethod = data
+ if (this.paymentMethod.length == 0) {
+ showToast(this.$t('无匹配的承兑商'))
+ return
+ } else {
+ this.enterTrade = true;
+ this.info = {
+ type: this.order_type,
+ num: this[type + this.order_type]
+ }
+ }
+ })
+ },
+ changeTab(item) {
+ this.buyAmount = ''
+ this.buyNum = ''
+ this.sellAmount = ''
+ this.sellNum = ''
+ this.activeCurrency = item.title
+ this.referPrice = this.all_price[this.activeCurrency.toLowerCase()]
+ },
+ updataToken() {
+ otcApi.getSessionToken({
+ currency: this.exchangeCurrency
+ }).then(res => {
+ this.session_token = res.data.session_token;
+ })
+ },
+ showPopup() {
+ this.show = true
+ },
+ onSelect(action) {
+
+ if (action.text == this.$t('接单模式')) {
+ this.showJie = true
+ return
+ }
+
+ this.$router.push({
+ path: action.path,
+ })
+ },
+ handleClick() {
+ const type = this.isBuy ? 'buy' : 'sell';
+ if (!this[type + this.order_type]) {
+ const text = this.order_type === 'Amount' ? this.$t('金额') : this.$t('数量')
+ showToast(this.$t('请输入') + text)
+ } else {
+ if (this.isPay) {
+ this.getPriceList(type)
+ } else {
+ showToast(this.$t('请添加收款方式'))
+ setTimeout(() => {
+ this.$router.push('/paymentMethod/list')
+ }, 500);
+ }
+ }
+ }
+ },
+ computed: {
+ ...mapGetters("c2c", ["exchangeCurrency", 'currencySymbol']),
+ fullType() {
+ return this.isBuy ? 'buy' : 'sell'
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Popup.name]: Popup,
+ [Popover.name]: Popover,
+ [Button.name]: Button,
+ EnterTrade,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.box-radius {
+ border-radius: 40px;
+}
+
+.van-icon{
+ font-size: 2rem;
+}
+.type {
+ color: #B8BCC5;
+
+ .active {
+ // color: red;
+ color: $c2c_color;
+ }
+}
+
+.currency {
+ .active {
+ p {
+ color: #1A6EBD !important;
+ }
+ }
+
+ &>div {
+ padding: 10px 50px;
+ margin-right: 30px;
+ border-radius: 12px;
+ // background-color: #888;
+ background: $tab_background;
+
+
+ &:last-child {
+ margin: 0;
+ }
+ }
+
+ p:first-child {
+ margin-bottom: 8px;
+ font-weight: 500;
+ color: $text_color;
+ }
+
+ p:last-child {
+ color: $text_color;
+ }
+}
+
+.item {
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.1);
+ border-radius: 10px;
+}
+
+.input {
+ span {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+}
+</style>
diff --git a/src/views/C2C/selectLegalCurrency/index.vue b/src/views/C2C/selectLegalCurrency/index.vue
new file mode 100644
index 0000000..7cf4ee2
--- /dev/null
+++ b/src/views/C2C/selectLegalCurrency/index.vue
@@ -0,0 +1,321 @@
+<template>
+ <div style="display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ ">
+ <div class="top w-full">
+ <order-nav class="mb-20" :title="$t('选择法币')" />
+ <div class="h-72 pl-32 pr-32 pb-24" @click="showSearch = true">
+ <buy-input :isReadonly="true" :placeholder="$t('请输入法币')" />
+ </div>
+ </div>
+ <!-- <div style="width: 100%">
+ <p class="jiao">
+ <span>{{$t('您可交易的法币')}}</span>
+ <img class="tan" src="@/assets/image/tan.png" alt="" />
+ </p>
+
+ <div class="ke">
+ <p class="ke-li">
+ <span class="yang">¥</span>
+ <span>CNY</span>
+ </p>
+ </div>
+ </div> -->
+ <div style="width: 100%">
+ <p class="jiao line_color">{{ $t('全部法币') }}</p>
+ </div>
+ <div style="width: 100%; flex: 1; overflow: auto">
+ <van-index-bar :sticky-offset-top="100" :sticky="false">
+ <div v-for="(item, index) in items" :key="index">
+ <van-index-anchor class="pt-10 pb-10" :index="item.title" />
+ <div class="payment_method_cell flex items-center ml-50 pt-8 pb-8" v-for="(label, labelIndex) in item.labels"
+ :key="labelIndex" @click="onSelectCurrency(label)">
+ <span class="first">{{ label.fLabel }}</span>
+ <van-cell :title="label.label" />
+ </div>
+ </div>
+ </van-index-bar>
+ </div>
+
+ <div v-show="showSearch" class="fixed-search c2cBackground">
+ <div class="search h-110 pb-24 flex justify-between items-center">
+ <buy-input v-model="searchValue" :placeholder="$t('请输入法币')" @input="inputChange" />
+ <span class="close-q" @click="showSearch = false">{{ $t('取消') }}</span>
+ </div>
+ <div class="search-main main_background">
+ <div v-if="searchValue.length === 0 || searchList.length === 0" class="clear">
+ <p>{{ $t('历史搜索') }}</p>
+ <p>{{ $t('没有历史记录') }}</p>
+ </div>
+ <div v-else class="search-li text_color">
+ <p v-html="filterStr(item.label)" v-for="(item, index) in searchList" :key="index"
+ @click="onSelectCurrency(item)"></p>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { IndexBar, IndexAnchor, Cell } from 'vant'
+import OrderNav from '@/components/order-nav/OrderNav.vue'
+import BuyInput from '../components/BuyInput.vue'
+import { mapActions, mapGetters, mapMutations } from 'vuex'
+
+export default {
+ name: 'AddPaymentMethod',
+ data() {
+ return {
+ showSearch: false,
+ searchValue: '',
+ list: [
+ 'A',
+ 'B',
+ 'C',
+ 'D',
+ 'E',
+ 'F',
+ 'G',
+ 'H',
+ 'I',
+ 'J',
+ 'K',
+ 'L',
+ 'M',
+ 'N',
+ 'O',
+ 'P',
+ 'Q',
+ 'R',
+ 'S',
+ 'T',
+ 'U',
+ 'V',
+ 'W',
+ 'X',
+ 'Y',
+ 'Z',
+ '#',
+ ],
+ // items: [
+ // {
+ // title: 'A',
+ // labels: [
+ // { fLabel: 'ARS', label: 'ARS', type: 'EN' }, // type 国外、国内标识
+ // { fLabel: 'A', label: 'AUD', type: 'EN' },
+ // ],
+ // },
+ // {
+ // title: 'B',
+ // labels: [
+ // { fLabel: 'B', label: 'BOB', type: 'EN' }, // type 国外、国内标识
+ // ],
+ // },
+ // ],
+ searchList: [],
+ }
+ },
+ async created() {
+ await this.SET_FIAT_LIST()
+ // console.log(this.fiatList)
+ },
+ computed: {
+ ...mapGetters('c2c', ['fiatList']),
+ items() {
+ return this.fiatList
+ }
+ },
+ methods: {
+ ...mapActions('c2c', ['SET_FIAT_LIST']),
+ ...mapMutations('c2c', ['SET_CURRENCY', 'SET_CURRENCY_SYMBOL']),
+ filterStr(val) {
+ return this.heightLight(val, this.searchValue)
+ },
+ heightLight(str, key) {
+ const reg = new RegExp(key, 'ig')
+ return str.replace(reg, (val) => {
+ return `<span style="color:#1D91FF">${val}</span>`
+ })
+ },
+ inputChange(val) {
+ let arr = []
+ this.items.forEach((item) => {
+ arr = arr.concat(item.labels)
+ })
+ // console.log('arr', arr, val)
+ this.searchList = arr.filter((item) => item.label.indexOf(val.toUpperCase()) !== -1)
+ // console.log('searchList',this.searchList)
+ },
+ onSelectCurrency(item) {
+ console.log('item', item)
+ this.SET_CURRENCY(item.currency)
+ this.SET_CURRENCY_SYMBOL(item.currency_symbol)
+ this.$router.go(-1)
+ }
+ },
+ components: {
+ [IndexBar.name]: IndexBar,
+ [IndexAnchor.name]: IndexAnchor,
+ [Cell.name]: Cell,
+ OrderNav,
+ BuyInput,
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+::v-deep .van-index-bar__sidebar {
+ display: none;
+}
+::v-deep .van-index-anchor {
+ color: $text_color4;
+}
+
+.top {
+ position: relative;
+ top: 0;
+ left: 0;
+}
+
+.payment_method_cell {
+ position: relative;
+
+ &:after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 16px;
+ bottom: 0;
+ left: 16px;
+ border-bottom: 1px solid $line_color;
+
+ -webkit-transform: scaleY(0.5);
+ transform: scaleY(0.5);
+ }
+
+ ::v-deep {
+ .van-index-anchor {
+ font-size: 36px;
+ font-weight: 500;
+ color: #868d9a;
+ }
+
+ .van-cell__title {
+ font-size: 32px;
+ }
+
+ .van-cell {
+ padding-left: 8px;
+ }
+
+ .van-index-bar__sidebar {
+ color: #7cbfff;
+
+ span {
+ margin-bottom: 4px;
+ font-size: 26px;
+ }
+ }
+
+ .van-cell {
+ // background: $tab_background;
+ // color: $text_color2;
+ }
+ }
+}
+
+
+
+.jiao {
+ color: #868d9a;
+ font-size: 32px;
+ padding: 40px 0 20px 0;
+ margin-left: 30px;
+
+ text-align: left;
+ display: flex;
+ align-items: center;
+
+ .tan {
+ margin-left: 12px;
+ width: 24px;
+ height: 24px;
+ }
+}
+
+.ke {
+ padding: 30px;
+
+ .ke-li {
+ padding: 30px 70px;
+ font-size: 28px;
+ color: #21262f;
+
+ .yang {
+ margin-right: 38px;
+ color: #868d9a;
+ }
+ }
+}
+
+.first {
+ color: #868d9a;
+ margin-right: 40px;
+ width: 80px;
+ text-align: right;
+}
+
+.fixed-search {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 100000;
+
+ .search {
+ padding: 24px 30px;
+ }
+
+ .search-main {
+ min-height: calc(100% - 72px);
+
+ padding: 0 30px;
+
+ .search-li {
+ padding-left: 70px;
+
+ p {
+ height: 100px;
+ line-height: 100px;
+ border-bottom: 1px solid #484756;
+ }
+ }
+ }
+}
+
+.close-q {
+ display: inline-block;
+ width: 80px;
+ margin-left: 29px;
+ color: #444;
+}
+
+.clear {}
+
+.clear> :first-child {
+ font-size: 26.5px;
+ margin-bottom: 116px;
+ color: $text_color;
+}
+
+.clear> :last-child {
+ text-align: center;
+ color: #868d9a;
+ font-size: 28px;
+}</style>
diff --git a/src/views/C2C/wantBuy.vue b/src/views/C2C/wantBuy.vue
new file mode 100644
index 0000000..11b3aec
--- /dev/null
+++ b/src/views/C2C/wantBuy.vue
@@ -0,0 +1,400 @@
+<template>
+ <div id="wantBuy" class=" fixed left-0 right-0 top-0 bottom-0 wantBuy">
+ <div
+ class="w-full h-122 pl-40 pr-31 box-border flex items-center"
+ >
+ <van-icon name="arrow-left" @click="goback"/>
+ <div class="flex-1 text-right mr-100" @click="showPopup">
+ <span class="font-35 mr-8">{{ $t('自选区') }}</span>
+ <van-icon name="arrow-down" />
+ </div>
+ <van-popup round position="top" class="pt-30" v-model:show="show" :closeable="true">
+ <div class="flex justify-around mt-40 pb-48">
+ <div class="flex flex-col items-center" @click="$router.push({ path: '/wantBuy/quick' })">
+ <img class="w-56 h-56" src="@/assets/image/otc/wantBuyHead/fast.png" alt="" />
+ <span class="font-24 mt-10 h-32 font-500" >{{ $t('快捷区') }}</span>
+ </div>
+ <div class="flex flex-col items-center" @click="show=false">
+ <img class="w-56 h-56" src="@/assets/image/otc/wantBuyHead/optional.png" alt="" />
+ <span class="font-24 mt-10 font-500">{{ $t('自选区') }}</span>
+ </div>
+ </div>
+ </van-popup>
+ <div class="w-232 h-64 px-23 box-border box-radius text-black flex justify-around items-center"
+ style="background: #c2e1ff">
+ <div class="flex items-center" @click="$router.push({ path: '/selectLegalCurrency' })">
+ <span class="mr-15 font-31 font-400">{{ exchangeCurrency }}</span>
+ <img class="w-24 h-20" src="@/assets/image/otc/wantBuyHead/Group.png" alt="" />
+ </div>
+ <template >
+ <span class="mx-28 w-2 h-36">|</span>
+ <van-popover get-container="#quick" v-model="showPopover" :actions="actions" @select="onSelect" placement="bottom-end"
+ theme="dark" :offset="[20, 20]">
+ <template #reference>
+ <img @click="showPopover = !showPopover" class="relative bottom-4 w-24 h-6 list-img"
+ src="@/assets/image/otc/wantBuyHead/Group2.png" alt="" />
+ </template>
+ </van-popover>
+ </template>
+ </div>
+ </div>
+ <buy :loading="loading" :symbol="['USDT']" @change="onChange" @change-direction="handleDirection"
+ @confirm="selectConfirm">
+ <van-pull-refresh :pulling-text="$t('下拉即可刷新')" :loosing-text="$t('释放即可刷新')" :loading-text="$t('加载中')"
+ v-model="isLoading" @refresh="onRefresh">
+ <template v-if="list.length > 0">
+ <van-list v-model:loading="loading" :immediate-check="false" :finished="finished" :finished-text="$t('没有更多了')"
+ @load="onLoad">
+ <div class="flex flex-col ml-32 mr-32" v-for="(item, index) in list" :key="'buy' + index">
+ <div class="flex">
+ <div class="flex-1 textColor">
+ <div class="flex items-center">
+ <img class="w-32 h-32 mr-10" @click="handleGoUserHome(item)" :src="item.head_img" alt="">
+ <div class="font-400 font-26 mr-10">{{ item.nick_name }}</div>
+ <img class="w-22 h-22" src="@/assets/image/otc/buy/star.png" alt="">
+ </div>
+ <div class="font-22 text-grey mt-31">{{ $t('单价') }}</div>
+ <div class="mt-10">
+ <span class="font-22 mr-10">{{ item.currency }}</span>
+ <span class="font-40">{{ (item.symbol_value / 1).toFixed(2) }}</span>
+ </div>
+ <div class="mt-26">
+ <span class="font-22 text-grey mr-10">{{ $t('数量') }}</span>
+ <span>{{ item.coin_amount && (item.coin_amount / 1).toFixed(item.symbol.toUpperCase() === 'USDT' ? 2 : 4) }}</span>
+ </div>
+ <div class="mt-13">
+ <span class="font-22 text-grey mr-10">{{ $t('限额') }}</span>
+ <span class="font-22 ">{{ currencySymbol }} {{ (item.investment_min / 1).toFixed(2) }} - {{ currencySymbol }} {{ (item.investment_max / 1).toFixed(2) }}</span>
+ </div>
+ <div class="flex mt-36">
+ <section v-for="(_item, _index) in (item.pay_type_name.split(','))" :key="_index" class="flex">
+ <div class="w-5 h-20 col mr-9">|</div>
+ <div class="mr-19">{{ _item }}</div>
+ </section>
+ <!-- <div class="w-5 h-20 cl mr-9">|</div>
+ <div>币交易</div> -->
+ </div>
+ </div>
+ <div class="flex flex-col justify-between items-end">
+ <div class="text-grey flex font-24 ">
+ <div class="flex items-center">
+ <span>{{ $t('成交量') }} {{ item.thirty_days_order }}</span>
+ <span class="w-1 h-16 mx-8" style="background: #EAEBEE"></span>
+ <span>{{ item.thirty_days_order_ratio }}%</span>
+ </div>
+ </div>
+ <div class="w-250 h-54 font-24 greyBg lh-54 text-center textColor px-10"
+ v-if="item.direction === 'sell'&&!methodAvaiable(item.pay_type_name, payMethods)">{{ $t('不满足广告方要求') }}</div>
+ <div v-if="item.direction === 'sell'" @click="trade('sell', item)"
+ class="w-160 h-58 font-29 rounded-lg bg-red text-center lh-58">{{ $t('出售') }}
+ </div>
+ <div v-if="item.direction === 'buy'" @click="trade('buy', item)"
+ class="w-160 h-58 font-29 rounded-lg bg-green text-center lh-58">{{ $t('购买') }}
+ </div>
+ </div>
+ </div>
+ <div class="flex justify-center mb-12">
+ <div class="w-full h-8 diviLine mt-40 mb-45 box-border"></div>
+ </div>
+ </div>
+ </van-list>
+ </template>
+ <template v-if="list.length === 0 && loading === false && isLoading === false">
+ <div>
+ <van-empty class="custom-image" :image="emptyImg"
+ :description="$t('暂无广告')">
+ </van-empty>
+ </div>
+
+ </template>
+ </van-pull-refresh>
+ </buy>
+ <van-dialog v-model="showJie" :showConfirmButton="false">
+ <div class="dia-main">
+ <p class="dia-change">{{$t('切换到接单模式')}}</p>
+ <p class="dia-text">{{$t('接单模式适用于有发布广告交易需求的用户。')}}</p>
+ <div class="dia-btn">
+ <div @click="showJie = false">{{$t('取消')}}</div>
+ <div style="background: #1d91ff; color: #ffffff" @click="linkToC2C">
+ {{$t('确认')}}
+ </div>
+ </div>
+ </div>
+ </van-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ SET_ORDER_MODE
+} from "@/store/const.store";
+import { Icon, Popup, Popover, Dialog, List, PullRefresh, Empty, showToast } from 'vant'
+import listLoadMixins from '@/utils/list-load-mixins'
+import Buy from './components/buy.vue'
+import otcApi from "@/service/otc.js";
+import { mapActions, mapGetters, mapMutations } from 'vuex'
+// import payment from "@/store/modules/payment";
+
+export default {
+ // beforeRouteEnter(to, from, next) {
+ // next(vm => {
+ // // 回到原来的位置
+
+ // // const position = JSON.parse(window.sessionStorage.getItem('position'))
+ // // document.querySelector('.roll-section').scrollTop = position
+ // setTimeout(() => {
+ // // console.log( document.querySelector('.roll-section') )
+ // })
+ // })
+ // },
+ beforeRouteLeave(to, from, next) {
+ // 保存离开页面时的列表的位置
+ const position = document.querySelector('.roll-section').scrollTop
+ window.sessionStorage.setItem('position', JSON.stringify(position))
+ next()
+ },
+ props: {
+ showDot: {
+ type: Boolean,
+ default: true
+ }
+ },
+ name: 'wantBuy',
+ mixins: [listLoadMixins],
+ components: {
+ [Icon.name]: Icon,
+ [Popup.name]: Popup,
+ [Popover.name]: Popover,
+ [Dialog.name]: Dialog,
+ [List.name]: List,
+ [Empty.name]: Empty,
+ [PullRefresh.name]: PullRefresh,
+ Buy,
+ },
+ computed: {
+ ...mapGetters('c2c', ['symbolList', 'exchangeCurrency', 'symbol','currencySymbol']),
+ ...mapGetters('home', ['currency'])
+ },
+ async created() {
+ console.log('created')
+ await this.SET_SYMBOL_LIST()
+ await this.SET_PAY_METHODS({ language: this.$i18n.locale })
+ if (!this.exchangeCurrency) {
+ console.log(this.currency.currency);
+ this.SET_CURRENCY(this.currency.currency)
+ }
+
+ if (!this.currencySymbol) {
+ this.SET_CURRENCY_SYMBOL(this.currency.currency_symbol)
+ }
+
+ otcApi.ctcPaymentMethodList({ language: this.$i18n.locale }).then(res => {
+ res.data.map(item => {
+ this.payMethods.push(item.methodName)
+ })
+ })
+ this.params = {
+ page_no: this.page_no, // 页码
+ direction: this.$store.state.c2c.direction, // 买 or 卖
+ currency: this.exchangeCurrency, // 法币
+ symbol: this.symbol, // 配置的加密货币
+ amount: '', // 兑换金额
+ method_type: '', // 支付方式
+ language: this.$i18n.locale
+ }
+ this.get()
+ },
+ data() {
+ return {
+ showJie: false,
+ show: false,
+ showPopover: false,
+ page_no: 1,
+ list: [],
+ direction: 'buy', //
+ params: {},
+ loading: false,
+ payMethods: [],
+ emptyImg:new URL('@/assets/image/otc/nodatas.png', import.meta.url).href,
+ actions: [
+ {
+ text: this.$t('收款方式'),
+ icon: new URL('@/assets/image/otc/buy/collection_icon.png', import.meta.url).href,
+ path: '/paymentMethod',
+ },
+ // {
+ // text: this.$t('c2c帮助中心'),
+ // icon: new URL('@/assets/image/otc/buy/help_icon.png', import.meta.url).href,
+ // path: '/c2cHelpCenter',
+ // },
+ // {
+ // text: 'c2c用户中心',
+ // icon: new URL('@/assets/image/otc/buy/user_icon.png', import.meta.url).href,
+ // path: '/c2c/c2cUser',
+ // },
+ // {
+ // text: this.$t('接单模式'),
+ // icon: new URL('@/assets/image/otc/buy/order_icon.png', import.meta.url).href,
+ // },
+ ],
+ }
+ },
+ methods: {
+ ...mapActions('c2c', ['SET_SYMBOL_LIST', 'SET_PAY_METHODS']),
+ ...mapMutations('c2c', ['SET_CURRENCY','SET_CURRENCY_SYMBOL']),
+ onChange(params) { // 买卖变化
+ this.params = Object.assign(this.params, params)
+ this.list = []
+ this.get()
+ },
+ methodAvaiable(payStr, arr) {
+ console.log("methodAvaiable",payStr,'-', arr)
+ let exist = false
+ for (let i = 0; i < arr.length; i++) {
+ if (payStr.indexOf(arr[i]) > -1) {
+ exist = true
+ break
+ }
+ }
+ return exist
+ },
+ get() {
+ if(this.params.method_type == 99) this.params.method_type = ''
+ otcApi.ctcAdvertList(this.params).then(res => {
+ this.handleData(res.data)
+ })
+ },
+ linkToC2C() {
+ // if (this.$store.state.user.userInfo.c2c_user_type === 0) { // 普通用户
+ // showToast('你不是平台认证商家')
+ // return
+ // }
+ this.$router.push('/c2c/receivingBuy')
+ this.$store.commit(`c2c/${SET_ORDER_MODE}`, {
+ state: true,
+ })
+ },
+ showPopup() {
+ this.show = true
+ },
+ onSelect(action) {
+ if (action.text === '接单模式') {
+ this.showJie = true
+ return
+ }
+ this.$router.push({
+ path: action.path,
+ })
+ },
+ handleDirection(direction) {
+ console.log(direction);
+ this.direction = direction;
+ this.params.direction = this.direction;
+ // 发送请求
+ this.get()
+ },
+ handleGoUserHome(item) {
+ console.log('去买卖用户首页', item)
+ this.$router.push({
+ path: '/advertiserDetail',
+ query: {
+ uid: item.c2c_user_id
+ }
+ })
+ },
+ trade(type, data) {
+ console.log('trade', type, data);
+
+ // 支付方式是否满足
+ if (type=='sell'&&!this.methodAvaiable(data.pay_type_name, this.payMethods)) {
+ console.log(data.pay_type_name)
+ console.log(this.payMethods)
+ showToast(this.$t('请添加相应的收款方式'))
+ setTimeout(() => {
+ this.$router.push('/paymentMethod/list')
+ }, 500);
+ //Notify({ type: 'danger', message: '不满足广告方要求' })
+ return
+ }
+ //
+ if (data && data.isRemoved) {
+ this.showRemoved = true;
+ return;
+ }
+ this.$store.commit('c2c/SET_ADV_ID', data.id) // 保存广告id
+ this.$router.push({
+ name: 'c2cTrade'
+ // query: {
+ // type,
+ // id: data.id
+ // }
+ })
+ },
+ selectConfirm(params) {
+ this.params = Object.assign(this.params,params)
+ this.list = []
+ this.get();
+ },
+ goback(){
+ let frompath = this.$route.query.frompath
+ if (frompath){
+ this.$router.push(frompath)
+ }else{
+ this.$router.push('/')
+ }
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.van-icon{
+ font-size: 2rem;
+}
+
+.wantBuy {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.dia-main {
+ padding: 50px;
+ color: #000;
+
+ .dia-change {
+ text-align: center;
+ margin-bottom: 32px;
+ font-size: 35px;
+ font-weight: bold;
+ }
+
+ .dia-text {
+ margin-bottom: 40px;
+ }
+
+ .dia-btn {
+ display: flex;
+ justify-content: space-between;
+
+ div {
+ width: 240px;
+ height: 80px;
+ text-align: center;
+ line-height: 80px;
+ background: #eaebee;
+ color: #21262f;
+ font-size: 32px;
+ border-radius: 8px;
+ }
+ }
+}
+
+.box-radius {
+ border-radius: 40px;
+}
+
+.list-img {
+ top: -6px;
+}
+</style>
diff --git a/src/views/C2C/withdraw/withdrawDetail.vue b/src/views/C2C/withdraw/withdrawDetail.vue
new file mode 100644
index 0000000..090774f
--- /dev/null
+++ b/src/views/C2C/withdraw/withdrawDetail.vue
@@ -0,0 +1,31 @@
+<template>
+ <div class="pl-30 pr-30 withdrawDetail">
+ <detail type="提现" />
+ </div>
+</template>
+
+<script>
+import Detail from '@/page/recharge/rechargeDetail.vue'
+export default {
+ components: {
+ Detail
+ },
+ data() {
+ return {
+
+ }
+ },
+ created() {
+
+ },
+ methods: {
+
+ }
+}
+</script>
+<style lang="scss" scoped>
+.withdrawDetail {
+ width: 100%;
+ box-sizing: border-box;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/C2C/withdraw/withdrawPage.vue b/src/views/C2C/withdraw/withdrawPage.vue
new file mode 100644
index 0000000..7b241e7
--- /dev/null
+++ b/src/views/C2C/withdraw/withdrawPage.vue
@@ -0,0 +1,442 @@
+<template>
+ <div class="withdrawl-page">
+ <assets-head title="">
+ <img src="../../assets/image/assets-center/exchange.png" alt="exchange-img" class="w-44 h-38"
+ @click="goRouter('/assetsCenter/rechargeWithdrawRecord?back=1')" />
+ </assets-head>
+ <div class="px-32 pb-48">
+ <!--<h1 class="font-52 pt-40 textColor">{{ $t('提币') }} USDT</h1>-->
+ <h1 class="font-52 pt-40 textColor">{{ $t('提币 ') + value }} </h1>
+ <!--<p class="text-grey font-30 mt-26">{{ $t('提币 USDT 到数字币地址') }}</p>-->
+ <p class="text-grey font-30 mt-26">{{ $t('提币 ') + value + $t(' 到数字币地址') }}</p>
+ <div @click="showSymbol = true"
+ class="flex border-grey items-center items-center justify-between rounded-lg mt-42 inputBackground textColor">
+ <input v-model="value" class="flex-1 h-100 border-none px-16 inputBackground textColor" />
+ <p class="flex items-center">
+ <span>{{ $t('选择币种') }}</span>
+ <img src="@/assets/image/icon-left_arrow.png" alt="logo" class="w-20 h-33 ml-30 mr-40"
+ style="transform: rotate(-90deg)" />
+ </p>
+ </div>
+ <p class="font-35 mt-44 textColor">{{ $t('区块链网络') }}</p>
+ <ul class="flex mt-22 flex-wrap">
+ <li class="w-210 h-96 mb-20 mr-40 rounded rounded-lg border border-solid flex justify-center items-center textColor"
+ :class="blockchainIndex == index ? 'active' : ''" v-for="(item, index) in blockList" :key="item.id"
+ @click="changeBlockchain(item, index)">{{ item.blockchain_name }}</li>
+ </ul>
+ <p class="font-35 mt-22 textColor">{{ $t('地址') }}</p>
+ <div class="inputBackground flex items-center justify-between h-96 rounded mt-22">
+ <input :placeholder="$t('长按粘贴')" class="h-full flex-1 border-none bg-none px-16 textColor"
+ v-model="address" />
+ <div class="flex items-center">
+ <span class="colorMain" @click="pastCont">{{ $t('粘贴') }}</span>
+ <div>
+ <img @click="clickCode()" src="@/assets/image/public/scan.png" alt="logo"
+ class="w-65 h-65 ml-20 mr-30" />
+ </div>
+ </div>
+ </div>
+ <p class="font-35 mt-44 textColor">{{ $t('数量') }}</p>
+ <div class="inputBackground flex items-center justify-between h-96 rounded mt-22">
+ <input :placeholder="$t('请输入提币数量')" maxlength="10"
+ class="h-full flex-1 border-none bg-none px-16 font-22 textColor" type="number" v-model="amount"
+ @input="changeInput" />
+ <p class="flex items-center">
+ <!--<span class="text-grey">USDT</span>-->
+ <span class="text-grey">{{ value }}</span>
+ <span class="colorMain ml-20 mr-30" @click="allBtn">{{ $t('全部') }}</span>
+ </p>
+ </div>
+ <p class="flex justify-between text-grey mt-22">
+ <span>{{ $t('可用') }}</span>
+ <!--<span>{{ usdtBalance }} USDT</span>-->
+ <span>{{ getwei(usdtBalance * 1, numLenth) }} {{ value }}</span>
+ </p>
+ <p class="text-grey mt-64">{{ $t('可到账数量') }}</p>
+ <div class="font-40 mt-20 fon-bold ">
+ <span class="font-40 font-700 textColor"> {{ volume_last || '0.00' }}</span>
+ <!--<span class="font-32 ml-5 text-grey">USDT</span>-->
+ <span class="font-32 ml-5 text-grey">{{ value }}</span>
+ </div>
+ <p class="text-grey mt-22">{{ $t('提现费用') }}:{{ fee || '0.00' }} {{ value }}</p>
+ <p class="text-black mt-46 textColor">{{ $t('提币说明') }}:
+ </p>
+ <div class="text-grey mt-10" v-html="tip"></div>
+ <van-button class="w-768 h-100 rounded flex justify-center items-center mt-56 text-white btnMain border-none"
+ @click="showDetail">
+ {{ $t('提现') }}</van-button>
+
+ </div>
+ <van-popup v-model="show" position="bottom">
+ <div class="pop-box relative">
+ <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-20 top-20" @click="show = false" />
+ <p class="font-38 text-center pt-60 textColor">{{ $t('确认订单') }}</p>
+ <p class="font-35 mt-49 text-grey text-center">{{ $t('实际到账') }}</p>
+ <p class="font-50 mt-23 text-center textColor">{{ volume_last }} <span class="text-grey font-35">
+ {{ value }}</span></p>
+ <ul class="border-b-color px-32 pb-34">
+ <li class="flex justify-between font-32 mt-25 items-center">
+ <span class="textColor">{{ $t('提币地址') }}</span>
+ <span class="text-grey font-26">{{ address }}</span>
+ </li>
+ <li class="flex justify-between font-32 mt-25">
+ <span class="textColor">{{ $t('主网络') }}</span>
+ <span class="text-grey">{{ blockName }}</span>
+ </li>
+ <li class="flex justify-between font-32 mt-25">
+ <span class="textColor">{{ $t('提现来源账户') }}</span>
+ <span class="text-grey">{{ $t('钱包账户') }}</span>
+ </li>
+ </ul>
+ <ul class="px-32 mt-32">
+ <li class="flex justify-between font-32 mt-25">
+ <span class="textColor">{{ $t('币种') }}</span>
+ <span class="text-grey">{{ value }}</span>
+ </li>
+ <li class="flex justify-between font-32 mt-25">
+ <span class="textColor">{{ $t('金额') }}</span>
+ <span class="text-grey">{{ amount }} {{ value }}</span>
+ </li>
+ <li class="flex justify-between font-32 mt-25">
+ <span class="textColor">{{ $t('网络手续费') }}</span>
+ <span class="text-grey">{{ fee }} {{ value }}</span>
+ </li>
+ </ul>
+ <p class="px-32 mt-49 font-30 textColor">
+ 1. {{ $t('请确保您输入了正确的提币地址并且您选择的转账网络与地址相匹配') }}
+ </p>
+ <p class="px-32 mt-40 font-30 textColor">2. {{ $t('提币订单创建后不可取消。') }}</p>
+ <p class="w-768 h-100 rounded flex justify-center items-center mt-56 mb-48 btnMain text-white ml-32"
+ @click="onConfirm">
+ {{ $t('确定') }}</p>
+ </div>
+ </van-popup>
+ <!-- 币种 -->
+ <van-action-sheet v-model="showSymbol" :actions="actions.filter(item => item.name !== value)" @select="onSelect" />
+ <bar-scan :scancode="scancode" v-if="scancode" @ok="getResult"></bar-scan>
+ </div>
+</template>
+
+<script>
+import { Popup, ActionSheet, Toast, Dialog } from "vant"
+import Axios from "@/API/recharge.js"
+import AxiosWithdraw from "@/API/withdraw.js"
+import assetsHead from "@/components/assets-head";
+import BarScan from '@/components/scan/scan.vue';
+import { _getAllWallet } from "@/API/fund.api";
+import AxiosUser from "@/API/userCenter";
+import { mapGetters } from "vuex";
+export default {
+ name: "withdrawPage",
+ components: {
+ assetsHead,
+ [Popup.name]: Popup,
+ [ActionSheet.name]: ActionSheet,
+ BarScan
+ },
+ data() {
+ return {
+ tip: '',
+ value: 'USDT', //选中的币种
+ show: false,
+ showSymbol: false,
+ actions: [{ name: 'USDT' }, { name: 'BTC' }, { name: 'ETH' }],
+ blockList: [],
+ blockchainIndex: "",
+ usdtBalance: "", //余额
+ amount: "",//提现金额
+ fee: "", //手续费
+ volume_last: "",//到账金额
+ blockName: "",//当前链名称
+ address: "",// 二维码扫描结果
+ scancode: false,//控制是否使用扫一扫功能
+ withdraw_fee_type: '',
+ percent: 0,
+ numLenth: 3
+ }
+ },
+ computed: {
+ ...mapGetters('user', ['userInfo'])
+ },
+ created() {
+ AxiosUser._getIsGoogleAuth({ code: 'google_auth_secret_open' }).then(res => {
+ let isGetdata
+ if (res.data.google_auth_secret_open === '1') {
+ // if (this.userInfo.googleverif) {
+ isGetdata = true
+ // } else {
+ // Dialog({
+ // message: this.$t('未绑定谷歌验证器,暂时无法提现,点击前往绑定'),
+ // theme: 'round-button',
+ // confirmButtonColor: '#2C78F8',
+ // confirmButtonText: this.$t('确定'),
+ // }).then(() => {
+ // this.$router.replace('/bindVerify?type=3')
+ // // on close
+ // });
+ // isGetdata = false
+ // }
+ } else {
+ isGetdata = true
+ }
+ if (isGetdata) {
+ this.getBlock(this.value);
+ this.getAvailable(this.actions[0].name);
+
+
+ Axios.getRechargeTips({
+ language: this.$i18n.locale,
+ token: this.$store.state.user.userInfo.token,
+ content_code: '003',
+ }).then(res => {
+ this.tip = res.data.content
+ }).catch(err => {
+ if (err.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); }
+ else if (err.msg !== undefined) { this.$toast(this.$t(err.msg)); }
+ })
+ AxiosWithdraw.WithdrawFee({
+ amount: 1,
+ channel: this.value + '_' + this.blockName
+ }).then((res) => {
+ this.withdraw_fee_type = res.data.withdraw_fee_type
+ if (this.withdraw_fee_type == 'rate') {
+ this.percent = res.data.fee
+ } else {
+ this.fee = res.data.fee;
+ }
+ });
+ }
+ })
+ },
+ methods: {
+ getwei(value, numLenth) {
+ console.log(numLenth)
+ let str = value.toString();
+ let strIndex = str.indexOf('.');
+ if (strIndex === -1) return str;
+ str = str.substring(0, strIndex + numLenth);
+ console.log(str, numLenth)
+ return str;
+ },
+ // 打开相机
+ clickCode() {
+ this.scancode = true;
+ },
+ //返回扫描结果并关闭摄像头
+ getResult(result) {
+ this.address = result;
+ if (result !== "") {
+ this.scancode = false;
+ }
+ },
+ showDetail() {
+ if (this.address.length > 63 || this.address.length == 0) {
+ Toast(this.$t('提现地址格式错误'))
+ return
+ }
+ if (!this.amount) {
+ Toast(this.$t('请输入正确数量'))
+ return
+ }
+ if (this.amount / 1 > this.usdtBalance / 1) {
+ Toast(this.$t('金额不足'))
+ return
+ }
+ this.show = true;
+ },
+ goRouter(params) {
+ this.$router.push({
+ path: params,
+ query: {
+ type: '2'
+ }
+ });
+ },
+ // onConfirm() {
+ // this.$router.push('/withdraw/withdrawSumbit')
+ // },
+ //选中币种
+ onSelect(item) {
+ this.amount = ''
+ this.volume_last = ''
+ this.fee = ''
+ this.showSymbol = false;
+ this.value = item.name;
+ this.withdraw_fee_type = ''
+ this.getBlock(item.name);
+ this.getAvailable(item.name)
+ if (item.name == 'BTC' || item.name == 'ETH') {
+ this.numLenth = 7
+ AxiosWithdraw.WithdrawFee({
+ amount: 1,
+ channel: this.value + '_' + this.blockName
+ }).then((res) => {
+ this.withdraw_fee_type = res.data.withdraw_fee_type
+ if (this.withdraw_fee_type == 'fixed') {
+ this.fee = res.data.fee;
+ } else {
+ this.percent = res.data.fee
+ }
+ });
+ } else {
+ this.numLenth = 3
+ }
+ },
+ //根据币种获取链地址
+ getBlock(symbol) {
+ Axios.getBlock({
+ coin: symbol
+ }).then((res) => {
+ this.blockList = res.data;
+ this.blockName = res.data[0].blockchain_name;
+ });
+ },
+ //选中链名称
+ changeBlockchain(item, index) {
+ this.blockchainIndex = index;
+ this.blockName = item.blockchain_name;
+ },
+ //获取钱包余额
+ getAvailable(symbol) {
+ _getAllWallet().then((res) => {
+ let walletList = res.extends;
+ let initObj = walletList.find(item => {
+ return item.symbol.toLowerCase() == symbol.toLowerCase()
+ })
+ this.usdtBalance = initObj.usable
+ });
+ },
+ //点全部
+ allBtn() {
+ this.amount = this.getwei(this.usdtBalance, this.numLenth);
+ this.changeInput()
+ },
+ //输入改变
+ changeInput() {
+ if (this.amount === '') {
+ this.volume_last = '0.00'
+ return
+ }
+ if (this.amount.length > 11) {
+ this.amount = this.amount.slice(0, 11)
+ }
+
+ if (this.withdraw_fee_type == 'part') {
+ AxiosWithdraw.WithdrawFee({
+ amount: this.amount,
+ channel: this.value + '_' + this.blockName
+ }).then((res) => {
+ this.fee = res.data.fee;
+ this.volume_last = res.data.volume_last;
+ });
+ } else if (this.withdraw_fee_type == 'rate') {
+ if (this.amount == '') {
+ this.volume_last = 0
+ } else {
+ this.fee = this.getwei(this.percent * this.amount, this.numLenth)
+ this.volume_last = this.getwei(this.amount * 1 - this.percent * this.amount, this.numLenth)
+ }
+ } else {
+ if (this.amount * 1 < this.fee * 1) {
+ console.log('a')
+ this.volume_last = 0
+ } else {
+ this.volume_last = this.getwei(this.amount * 1 - this.fee * 1, this.numLenth)
+ }
+ }
+
+ },
+ //提币提交
+ onConfirm() {
+ if (!this.amount) {
+ this.$toast(this.$t('请输入数量'));
+ return;
+ }
+
+ let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/;
+ if (!numReg.test(this.amount)) {
+ this.$toast(this.$t('请输入数字'));
+ return;
+ }
+
+ if (!this.address) {
+ this.$toast(this.$t('请输入提现地址'));
+ return;
+ }
+
+ if (this.amount && this.address) {
+ this.$router.push({
+ path: '/withdraw/securityVerification',
+ query: {
+ amount: this.amount,
+ from: this.address,
+ channel: this.value + '_' + this.blockName
+ }
+ })
+ // AxiosWithdraw.WithdrawApply({
+ // session_token:this.sessionToken,
+ // amount:this.amount,
+ // from:this.address,
+ // channel:this.value+'_'+ this.blockName
+ // }).then((res)=> {
+ // if(res.code==0) {
+ // this.$router.push({
+ // path:"/withdraw/withdrawSumbit"
+ // });
+ // }else{
+ // this.$toast(this.$t(res.msg));
+ // }
+ // this.getToken();
+ // });
+ } else {
+ this.$toast(this.$t('请输入提币数量'));
+ }
+ },
+ async pastCont() {
+ this.address = await navigator.clipboard.readText();
+ }
+ }
+}
+</script>
+<style>
+.withdrawl-page {
+ width: 100%;
+ box-sizing: border-box;
+ font-size: 26px;
+}
+
+.van-popup.van-popup--bottom {
+ border-top-left-radius: 30px;
+ border-top-right-radius: 30px;
+}
+</style>
+<style lang="scss" scoped>
+.pop-box {
+ border-top-left-radius: 30px;
+ border-top-right-radius: 30px;
+}
+
+.color-blue {
+ color: #2C78F8;
+}
+
+.bg-grey-light {
+ background: #F5F5F5;
+}
+
+li {
+ &.active {
+ @include themify() {
+ border-color: themed("color_main");
+ }
+
+ @include themify() {
+ color: themed("color_main");
+ }
+ }
+}
+
+.van-button--default {
+ color: #fff;
+}
+</style>
diff --git a/src/views/C2C/withdraw/withdrawSumbit.vue b/src/views/C2C/withdraw/withdrawSumbit.vue
new file mode 100644
index 0000000..c2fd4a3
--- /dev/null
+++ b/src/views/C2C/withdraw/withdrawSumbit.vue
@@ -0,0 +1,33 @@
+<template>
+ <!-- 提现申请提交页面 -->
+ <div class="page-box">
+ <application :title="title" />
+ </div>
+</template>
+
+<script>
+import Application from '@/components/application/application.vue';
+
+export default {
+ name: 'withdrawSumbit',
+ components: {
+ Application
+ },
+ data() {
+ return {
+ title: this.$t("提现")
+ }
+ },
+ created() {
+
+ },
+ methods: {
+ }
+}
+</script>
+<style lang="scss" scoped>
+.page-box {
+ width: 100%;
+ box-sizing: border-box;
+}
+</style>
diff --git a/src/views/C2C/withdraw/withdrawalSecurityVerification.vue b/src/views/C2C/withdraw/withdrawalSecurityVerification.vue
new file mode 100644
index 0000000..d0d6cef
--- /dev/null
+++ b/src/views/C2C/withdraw/withdrawalSecurityVerification.vue
@@ -0,0 +1,189 @@
+<template>
+ <div id="withdraw_verify" class="withdraw_verify">
+ <assets-head />
+ <div class="content">
+ <div class="title textColor">{{ $t('安全验证') }}</div>
+ <p>{{ $t('请输入资金密码') }}</p>
+ <div class="iptbox inputBackground">
+ <input class="inputBackground textColor" type="password" :placeholder="$t('请输入密码')" v-model="password">
+ </div>
+<!-- <div class="mt-40" v-if="this.isGoogleInput">-->
+<!-- <p>{{ $t('请输入谷歌验证码') }}</p>-->
+<!-- <div class="iptbox inputBackground">-->
+<!-- <input class="inputBackground textColor" type="password" :placeholder="$t('请输入谷歌验证码')" v-model="googleCode">-->
+<!-- </div>-->
+<!-- </div>-->
+ <div class="btn btnMain" @click="confirm">{{ $t('提交') }}</div>
+ <div class="mt-42" style="color:#1D91FF;" ><span @click="$router.push('/resetVerify?type=0')">{{ $t('资金密码不可用?') }}</span>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import assetsHead from "@/components/order-nav/OrderNav.vue";
+import { Form, Field, CellGroup } from 'vant';
+import AxiosWithdraw from "@/service/withdraw.js"
+import otcApi from "@/service/otc";
+import AxiosUser from "@/service/userCenter";
+
+export default {
+ name: "withdrawalSecurityVerification",
+ props: ['type'],
+ components: {
+ assetsHead,
+ [Form.name]: Form,
+ [Field.name]: Field,
+ [CellGroup.name]: CellGroup,
+ },
+ data() {
+ return {
+ password: '',
+ data: null,
+ sessionToken:'',
+ googleCode:'',
+ isGoogleInput:false
+ }
+ },
+ created() {
+ AxiosUser._getIsGoogleAuth({code:'google_auth_secret_open'}).then(res=>{
+ this.isGoogleInput=res.data.google_auth_secret_open==='1'
+ })
+ this.data = this.$route.query
+ this.getToken()
+ },
+ methods: {
+ getToken() {
+ AxiosWithdraw.GetSessionToken().then((res) => {
+ this.sessionToken = res.data.session_token;
+ });
+ },
+ onSubmit(values) {
+ console.log('submit', values);
+ },
+ confirm(data) {
+ if (this.type === 'sell' || this.type === 'buy') {
+ if (!this.password) {
+ this.$toast(this.$t('请输入资金密码'));
+ return
+ } else {
+ if (this.type === 'buy') {
+ otcApi.ctcOrderPayFinish({ order_no: this.$store.state.c2c.order_no, safe_password: this.password }).then((res) => {
+ if (res.code / 1 === 0) {
+ this.$router.push({ path: "/paymentDetail" });
+ }
+ })
+ } else {
+ otcApi.ctcOrderPass({
+ order_no: this.$store.state.c2c.order_no,
+ safe_password: this.password,
+ }).then((res) => {
+ this.isLoading = false;
+ this.$router.replace({
+ path: "/tradeSuccessSell",
+ });
+ });
+ }
+
+ }
+ } else {
+ if (!this.password) {
+ this.$toast(this.$t('请输入资金密码'));
+ return
+ }
+ // if(this.isGoogleInput){
+ // if (!this.googleCode) {
+ // this.$toast(this.$t('请输入谷歌验证码'));
+ // return
+ // }
+ // }
+ AxiosWithdraw.WithdrawApply({
+ session_token: this.sessionToken,
+ amount: this.data.amount,
+ from: this.data.from,
+ safeword: this.password,
+ channel: this.data.channel,
+ googleCode:this.googleCode
+ }).then((res) => {
+ if (res.code == 0) {
+ this.$router.push({
+ path: "/withdraw/withdrawSumbit"
+ });
+ } else {
+ this.getToken()
+ }
+ }).catch(err => {
+ //console.log(err)
+ if (err.code == 105) {
+ this.$toast(this.$t('当前还需交易%s,才可提币', { 'MONEY': err.msg }));
+ } else if (err.code === 'ECONNABORTED') {
+ this.$toast(this.$t('网络超时!'))
+ } else if (err.msg !== undefined) {
+ this.$toast(this.$t(err.msg))
+ }
+ this.getToken()
+ })
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.withdraw_verify {
+ width: 100%;
+ box-sizing: border-box;
+ font-size: 1.6rem;
+}
+
+.cl {
+ color: dodgerblue;
+}
+
+.title {
+ font-weight: 700;
+ font-size: 52px;
+ margin-top: 54px;
+ margin-bottom: 56px;
+}
+
+.content {
+ padding: 0 32px;
+
+ p {
+ color: #868D9A;
+ font-size: 30px;
+ margin-bottom: 18px;
+ }
+
+ .iptbox {
+ height: 88px;
+ margin-top: 16px;
+ padding: 0 20px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-radius: 8px;
+
+ input {
+ flex: 1;
+ height: 100%;
+ border: none;
+ }
+
+ span {
+ color: #1D91FF;
+ }
+ }
+}
+
+.btn {
+ color: #fff;
+ height: 88px;
+ line-height: 88px;
+ text-align: center;
+ font-size: 32px;
+ margin-top: 178px;
+ border-radius: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/advertiserDetail/detail.vue b/src/views/advertiserDetail/detail.vue
new file mode 100644
index 0000000..dd93ef2
--- /dev/null
+++ b/src/views/advertiserDetail/detail.vue
@@ -0,0 +1,119 @@
+<template>
+ <div v-if="detail" class="main w-full h-full">
+ <order-nav :title="detail.nickName" :back="false" @back="back" />
+ <div class="mt-40 px-32">
+ <p class="flex justify-between p-li">
+ <span>{{ $t('30日成单数') }}</span>
+ <span><span class="text_color">{{ detail.thirtyDaysOrder }}</span>{{ $t('次') }}</span>
+ </p>
+ <p class="flex justify-between p-li bor">
+ <span>{{ $t('30日成单率') }}</span>
+ <span class="text_color">{{ detail.thirtyDaysOrderRatio }}%</span>
+ </p>
+ <p class="flex justify-between p-li pd-t">
+ <span>{{ $t('平均放行') }}</span>
+ <span><span class="text_color">{{ detail.thirtyDaysPassAverageTime }}</span>{{ $t('分钟') }}</span>
+ </p>
+ <p class="flex justify-between p-li bor">
+ <span>{{ $t('平均放款') }}</span>
+ <span><span class="text_color">{{ detail.thirtyDaysPayAverageTime }}%</span>{{ $t('分钟') }}</span>
+ </p>
+ <p class="flex justify-between p-li pd-t">
+ <span>{{ $t('账户已创建') }}</span>
+ <span><span class="text_color">{{ detail.accountCreateDays }}</span>{{ $t('天') }}</span>
+ </p>
+ <p class="flex justify-between p-li">
+ <span>{{ $t('首次交易至今') }}</span>
+ <span><span class="text_color">{{ detail.firstExchangeDays }}</span>{{ $t('天') }}</span>
+ </p>
+ <p class="flex justify-between p-li">
+ <span>{{ $t('交易人数') }}</span>
+ <span class="text_color">{{ detail.exchangeUsers }}</span>
+ </p>
+ <p class="flex justify-between p-li">
+ <span>{{ $t('总成单数') }}</span>
+ <span><span class="text_color">{{ detail.totalSuccessOrders }}</span>{{ $t('次') }}</span>
+ </p>
+ <p class="flex justify-between p-li">
+ <span>{{ $t('数据') }}</span>
+ <span>
+ {{ $t('购买') }}
+ <span class="text_color">{{ detail.buySuccessOrders }}</span>
+ {{ $t('| 出售') }}
+ <span class="text_color">{{ detail.sellSuccessOrders }}</span>
+ </span>
+ </p>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ formatTime
+} from "@/utils/utis";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+export default {
+ props: ['detail'],
+ data() {
+ return {
+ info: {
+ singularNumber: 1045,
+ singularBai: '99.24%',
+ release: 1.87,
+ payment: 0.93,
+ establish: 101,
+ first: 231,
+ num: 123,
+ total: 12345,
+ buy: 824,
+ sell: 1093,
+ },
+ }
+ },
+ methods: {
+ linkToBack() {
+ this.$router.go(-1)
+ },
+ back() {
+ this.$emit('back')
+ }
+ },
+ components: {
+ OrderNav,
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.main {
+ //padding: 0 30px;
+ color: #868d9a;
+
+ .p-li {
+ padding-bottom: 44px;
+ }
+
+ .bor {
+ border-bottom: 1px solid $divi_line;
+ }
+
+ .pd-t {
+ padding-top: 40px;
+ }
+}
+
+.nav {
+ display: flex;
+ align-items: center;
+ font-size: 33px;
+ font-weight: bold;
+ color: #21262f;
+ padding: 54px 0 80px;
+
+ img {
+ width: 32px;
+ height: 32px;
+ margin-right: 264px;
+ }
+}
+</style>
diff --git a/src/views/advertiserDetail/index.vue b/src/views/advertiserDetail/index.vue
new file mode 100644
index 0000000..8516d7b
--- /dev/null
+++ b/src/views/advertiserDetail/index.vue
@@ -0,0 +1,519 @@
+<template>
+ <div v-if="userInfo" id="wantBuy" class="bg-blue " style="overflow: auto">
+ <div class="w-full h-122 pl-40 pr-31 box-border bg-blue flex justify-between text-white items-center">
+ <van-icon class="flex-1 font-32 font-700" name="arrow-left" @click="$router.back()" />
+ </div>
+
+ <div class="main">
+ <div class="user">
+ <img :src="c2cUser.headImg" class="avag" alt="" />
+ <!-- <div class="avag">B</div>-->
+ <div>
+ <p class="name">{{ c2cUser.nickName }}</p>
+ <div class="advertisement flex items-center">
+ <img class="succ" src="@/assets/image/icon-success.png" alt ="" />
+ <span>{{ $t('认证广告方') }}</span>
+ <span class="shu">|</span>
+ <span>{{ $t('保证金') }} {{ $t(`${c2cUser.deposit}USDT`) }}</span>
+ </div>
+ <div class="e-li">
+ <div class="email">
+ <span>{{ $t('邮箱') }}</span>
+ <img v-if="party.emailAuthority" class="relative top-2" src="@/assets/image/success.png" alt="" />
+ <img class="w-20 h-20 relative top-2" v-else src="@/assets/image/c2c/no.png" alt="">
+ </div>
+ <div class="email">
+ <span>{{ $t('手机') }}</span>
+ <img v-if="party.phoneAuthority" class="relative top-2" src="@/assets/image/success.png" alt="" />
+ <img class="w-20 h-20 relative top-2" v-else src="@/assets/image/c2c/no.png" alt="">
+ </div>
+ <div class="email">
+ <span>{{ $t('身份') }}</span>
+ <img v-if="party.kycAuthority" class="relative top-2" src="@/assets/image/success.png" alt="" />
+ <img class="w-20 h-20 relative top-2" v-else src="@/assets/image/c2c/no.png" alt="">
+ </div>
+ <div class="email">
+ <span>{{ $t('高级认证') }}</span>
+ <img v-if="party.kycHighlevelAuthority" class="relative top-2" src="@/assets/image/success.png" alt="" />
+ <img class="w-20 h-20 relative top-2" v-else src="@/assets/image/c2c/no.png" alt="">
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="main-list" ref="main" :style="fullHeight">
+ <div class="main-box">
+ <div class="main-nav">
+ <span class="info">{{ $t('信息') }}</span>
+ <span class="gen" style="color: #868d9a" @click="linkToDetail">
+ {{ $t('更多数据') }}
+ <img class="right" src="@/assets/image/icon-right.png" alt="" />
+ </span>
+ </div>
+ <div class="shuju">
+ <div>
+ <p class="num">{{ c2cUser.thirtyDaysOrder }}</p>
+ <p class="time">{{ $t('30日成单数') }}</p>
+ </div>
+ <div>
+ <p class="num">{{ c2cUser.thirtyDaysOrderRatio }}%</p>
+ <p class="time">{{ $t('30日成单率') }}</p>
+ </div>
+ </div>
+ <p class="flex justify-between ping" @click="show = true">
+ <span class="time">{{ $t('平均放行') }}</span>
+ <span class="textColor">{{ c2cUser.thirtyDaysPassAverageTime }}{{ $t('分钟') }}</span>
+ </p>
+ <p class="flex justify-between ping" @click="show = true">
+ <span class="time">{{ $t('平均付款') }}</span>
+ <span class="textColor">{{ c2cUser.thirtyDaysPayAverageTime }}{{ $t('分钟') }}</span>
+ </p>
+ </div>
+
+ <div class="guang">
+ <p class="g-title">{{ $t('在线广告') }}</p>
+ <!--
+
+ <div v-show="buy.length === 0" class="g-box"></div> -->
+ <div class="g-box">
+ <p class="g-zai">{{ $t('在线出售广告') }}</p>
+ <div v-if="advert.length === 0" class="g-data flex justify-center items-center">
+ <div class="text-align: center;">
+ <img class="zanwu" :src="require('@/assets/image/c2c/Group1942.png')" alt="" />
+ </div>
+ </div>
+ <template v-else>
+ <div class="g-data" v-for="(item, index) in advert" :key="index">
+ <div class="usdt ">
+ <img src="@/assets/image/USDT.png" alt="" />
+ <span class="textColor">{{ item.symbol.toLocaleUpperCase() }}</span>
+ </div>
+ <p>{{ $t('单价') }}</p>
+ <p class="g-dan textColor">
+ <span class="textColor">$</span><span class="textColor">{{ item.symbolValue }}</span>
+ </p>
+ <p class="mar-9">
+ {{ $t('数量') }}<span style="color: #fff">{{ item.coinAmount }} USDT</span>
+ </p>
+ <p class="mar-30">
+ {{ $t('限额') }}
+ <span style="color: #fff">${{ item.investmentMin }} - ${{ item.investmentMax }}</span>
+ </p>
+ <div class="flex">
+ <div class="flex items-center mar-23">
+ <div class="shu-h"></div>
+ <span>{{ $t('银行卡') }}</span>
+ </div>
+ <div class="flex items-center">
+ <div class="shu-h" style="background: #4ba6eb"></div>
+ <span>{{ $t('币交易') }}</span>
+ </div>
+ </div>
+
+ <div v-if="item.direction === 'sell'" class="buy" style="background: #e35461" @click="trade(item)">{{
+ $t('向Ta出售') }}</div>
+ <div v-else class="buy" @click="trade(item)">{{ $t('向Ta购买') }}</div>
+ </div>
+ </template>
+
+ <!-- <div class="g-bottom"></div> -->
+ </div>
+
+ <p class="g-feng">
+ {{ $t(' 风控提示:为了降低您的交易风险,认证广告方已向平台缴纳保证金,请放心交易。') }}
+ </p>
+ </div>
+ </div>
+ </div>
+
+ <van-dialog v-model="show" :showConfirmButton="false" :closeOnClickOverlay="true">
+ <div class="dia-main">
+ <p>{{ $t('30日平均放行: 近30日卖币时收款后放币的平均确认时间。') }}</p>
+ <p class="mar-70">{{ $t('30日平均放行: 近30日购买数字货币平均付款的时间。') }}</p>
+ <div class="dia-btn" @click="show = false">{{ $t('好的') }}</div>
+ </div>
+ </van-dialog>
+
+ <van-popup class="w-full h-full" v-model="showDetail" position="right">
+ <detail :detail="c2cUser" @back="back" />
+ </van-popup>
+ </div>
+</template>
+
+<script>
+import { Icon, Dialog, Popup } from 'vant';
+import detail from "./detail.vue";
+import otcApi from "@/service/otc";
+// import { nextTick } from 'process';
+
+export default {
+ name: 'advertiserDetail',
+ props: ['uid'],
+ components: {
+ [Icon.name]: Icon,
+ [Dialog.name]: Dialog,
+ [Popup.name]: Popup,
+ detail,
+ },
+ data() {
+ return {
+ top: 0, // main-list距离顶部的高度
+ show: false,
+ showDetail: false,
+ userInfo: null,
+ info: {
+ singularNumber: 1045,
+ singularBai: '99.24%',
+ release: 1.87,
+ payment: 0.93,
+ },
+ sell: [
+ {
+ name: 'USDT',
+ price: '0.970',
+ count: '498.60',
+ minCount: '200.00',
+ maxCount: '483.64',
+ },
+ ],
+ buy: [
+ {
+ name: 'USDT',
+ price: '0.970',
+ count: '498.60',
+ minCount: '200.00',
+ maxCount: '483.64',
+ },
+ ],
+ }
+ },
+ created() {
+ console.log(this.uid);
+ otcApi.ctcUserGet({ c2c_user_id: this.uid, language: this.$i18n.locale }).then(res => {
+ this.userInfo = res.data;
+ })
+ },
+ mounted() {
+ // nextTick(() => {
+ setTimeout(() => {
+ this.top = this.$refs.main.getBoundingClientRect().top;
+ }, 1000)
+ // })
+ },
+ methods: {
+ linkToDetail() {
+ this.showDetail = true;
+ // this.$router.push('/advertiserDetail/detail')
+ },
+ back() {
+ this.showDetail = false;
+ },
+ trade(item) {
+ console.log(item);
+ this.$store.commit('c2c/SET_DIRECTION', item.direction)
+ this.$router.push({
+ name: 'c2cTrade',
+ query: {
+ id: item.id,
+ type: item.direction,
+ }
+ })
+ }
+ },
+ computed: {
+ c2cUser() {
+ return this.userInfo.c2c_user;
+ },
+ advert() {
+ return this.userInfo.advert;
+ },
+ party() {
+ return this.userInfo.party;
+ },
+ fullHeight() {
+ return {
+ 'height': `calc(100vh - ${this.top}px)`
+ }
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.box-radius {
+ border-radius: 40px;
+}
+
+.list-img {
+ top: -6px;
+}
+
+.main {
+ min-height: 100%;
+}
+
+.user {
+ display: flex;
+ color: #fff;
+ background: $btn_main;
+}
+
+.avag {
+ width: 64px;
+ height: 64px;
+ background: #fff;
+ border-radius: 50%;
+ font-weight: bold;
+ font-size: 32px;
+ text-align: center;
+ line-height: 64px;
+ margin: 10px 25px 0 32px;
+}
+
+.name {
+ font-size: 33px;
+}
+
+.succ {
+ width: 23px;
+ height: 23px;
+ margin-right: 10px;
+}
+
+.shu {
+ margin: 0 15px;
+}
+
+.advertisement {
+ display: flex;
+ align-items: center;
+ font-size: 20px;
+ margin-top: 10px;
+ margin-bottom: 24px;
+}
+
+.e-li {
+ display: flex;
+ font-size: 26px;
+}
+
+.email {
+ display: flex;
+ align-items: center;
+ //width: 100px;
+ justify-content: space-between;
+ margin-right: 48px;
+
+ span {
+ margin-right: 14px;
+ }
+}
+
+.email>img {
+ width: 23px;
+ height: 23px;
+ border-radius: 50%;
+}
+
+.main-list {
+ overflow: auto;
+ margin-top: 44px;
+ background: $main_background;
+
+ border-radius: 80px 80px 0px 0px;
+ // padding-bottom: 300px;
+}
+
+.main-box {
+ padding: 45px 32px 60px;
+ border-bottom: 1px solid $divi_line;
+}
+
+.main-nav {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 48px;
+}
+
+.info {
+ color: $text_color;
+ font-size: 30px;
+ font-weight: bold;
+}
+
+.gen {
+ font-size: 22px;
+}
+
+.right {
+ width: 13px;
+ height: 18px;
+ margin-left: 15px;
+}
+
+.shuju {
+ display: flex;
+ padding-right: 244px;
+ justify-content: space-between;
+ margin-bottom: 53px;
+}
+
+.num {
+ font-size: 40px;
+ color: $text_color;
+
+ font-weight: bold;
+ margin-bottom: 18px;
+}
+
+.time {
+ color: #868d9a;
+ font-size: 22px;
+}
+
+.ping {
+ margin-right: 47px;
+ font-size: 22px;
+ margin-top: 26px;
+}
+
+.g-title {
+ color: $text_color;
+
+ font-size: 30px;
+ font-weight: bold;
+ margin: 60px 32px;
+}
+
+.g-zai {
+ color: #868d9a;
+ font-size: 28px;
+ margin-left: 32px;
+ padding-bottom: 32px;
+ border-bottom: 1px solid $divi_line;
+}
+
+.g-data {
+ min-height: 380px;
+ background: $main_background;
+
+ box-sizing: border-box;
+ font-size: 24px;
+ color: #868d9a;
+ padding: 45px 0 41px 32px;
+ position: relative;
+ border-bottom: 1px solid $divi_line;
+
+ .g-dan {
+ margin: 8px 0 22px;
+ color: $text_color;
+
+ font-weight: bold;
+
+ span {
+ font-size: 40px;
+ }
+ }
+
+ .mar-9 {
+ margin-bottom: 9px;
+ }
+
+ .mar-30 {
+ margin-bottom: 30px;
+ }
+
+ .buy {
+ width: 160px;
+ height: 56px;
+ background: #2EBD85;
+ color: #fff;
+ font-size: 26px;
+ text-align: center;
+ line-height: 56px;
+ border-radius: 10px;
+ position: absolute;
+ right: 32px;
+ bottom: 95px;
+ }
+}
+
+.g-bottom {
+ margin: 60px 0;
+ height: 1px;
+ border-top: 1px solid #484756;
+}
+
+.usdt {
+ display: flex;
+ align-items: center;
+ margin-bottom: 32px;
+
+ img {
+ width: 32px;
+ height: 32px;
+ margin-right: 15px;
+ }
+
+ span {
+ font-size: 30px;
+ }
+}
+
+.shu-h {
+ width: 5px;
+ height: 20px;
+ background: #e7bb41;
+ border-radius: 10px;
+ margin-right: 9px;
+}
+
+.mar-23 {
+ margin-right: 23px;
+}
+
+.g-feng {
+ color: #868d9a;
+ font-size: 18px;
+ margin: 0 32px;
+ padding-top: 80px;
+ padding-bottom: 80px;
+}
+
+.zanwu {
+ width: 150px;
+ height: 180px;
+}
+
+.dia-main {
+ padding: 60px 64px 44px 48px;
+ color: $text_color;
+
+ font-size: 28px;
+
+ .mar-70 {
+ margin: 70px 0 46px;
+ }
+}
+
+.dia-btn {
+ height: 80px;
+ line-height: 80px;
+ text-align: center;
+ color: $text_color;
+
+ background: #1d91ff;
+}
+
+.bg-blue {
+ background: $btn_main;
+}
+
+// .textColor {
+// color: #fff;
+// }
+
+.appContent {
+ padding-bottom: 0 !important;
+}
+</style>
diff --git a/src/views/chat/index.vue b/src/views/chat/index.vue
new file mode 100644
index 0000000..2174498
--- /dev/null
+++ b/src/views/chat/index.vue
@@ -0,0 +1,369 @@
+<template>
+ <div class="w-full h-full flex flex-col chat-page" ref="mianscroll">
+ <div class="w-full">
+ <order-nav>
+ <template #left>
+ <van-icon name="cross" class="font-700" color="#868D9A" />
+ </template>
+ <template #title>
+ <div class="flex items-center">
+ <img class="w-32 h-32" :src="detail.c2cUserHeadImg" alt="">
+ <span class="ml-11 font-700 font-28">{{ detail.c2cUserNickName }}</span>
+ </div>
+ </template>
+ </order-nav>
+ <div class="pt-30 px-32 pb-32 tabBackground">
+ <template v-if="detail.direction == 'buy'">
+ <template v-if="detail.state == 0">
+ <div class="font-40 c2cColor" v-if="time > 0">{{ $t('订单将在倒计时结束时取消。') }} <span class="text-blue">{{ time }}</span></div>
+
+ <div class="font-40 c2cColor" v-else>{{ $t('您的订单已超时') }}</div>
+ <van-count-down class="flex font-700 mx-10" :time="time">
+ <template #default="timeData">
+ <span class="block">{{ timeData.hours }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.minutes }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ timeData.seconds }}</span>
+ </template>
+ </van-count-down>
+ <!-- <span class="block" v-if="time.hours">{{
+ time.hours
+ }}</span>
+ <span class="colon" v-if="time.hours">:</span>
+ <span class="block">{{ time.minutes }}</span>
+ <span class="colon">:</span>
+ <span class="block">{{ time.seconds }}</span> -->
+ </template>
+ <template v-else>
+ <div class="font-40 font-600 c2cColor">{{ fixStrBuy() }}</div>
+ </template>
+ </template>
+ <template v-else>
+ <div class="font-40 c2cColor">{{ fixStrSell() }}</div>
+ </template>
+ <div class="flex justify-between items-center mt-31">
+ <div class="font-26 text-black">
+ <span class="text-grey">{{ $t('金额') }}</span>
+ <span class="ml-14 c2cColor">{{ detail.currency }} {{ detail.amount && (detail.amount).toFixed(2) }}</span>
+ </div>
+ <!-- <div class="font-30 text-blue" @click="$router.push('/appeal')">{{ $t('举报') }}</div> -->
+ </div>
+ <van-button v-if="detail.direction == 'buy' && detail.state == 0" class="w-full mt-44 font-31 rounded-lg"
+ color="#1D91FF" type="info" @click="gotoPay">{{ $t('去付款') }}</van-button>
+ </div>
+ </div>
+ <div class="content flex-1 pb-200">
+ <div class="flex flex-col px-32 box-border">
+ <div class="w-full py-10 text-grey text-center pt-100" @click="onMore"
+ :style="{ 'visibility': finished ? 'hidden' : 'visiable' }">
+ {{ $t('历史消息') }}</div>
+ <ul class="flex flex-col pt-20">
+ <li v-for="(item, index) in list" :key="item.id" class="flex flex-col mt-20">
+ <p class="font-26 text-center py-20 text-grey" v-if="showTime(index)">{{ item.createtime &&
+ item.createtime.split(' ')[0] }}</p>
+ <div class="flex" :class="item.send_receive === 'send' ? 'justify-end' : ''">
+
+ <template v-if="item.send_receive === 'receive'">
+ <img :src="detail.c2cUserHeadImg" class="w-81 h-81 mr-40" />
+ <div class="responser bg-grey px-50 py-35 font-30 rounded-lg font-26 chatBg bg-right"
+ style="border-radius: 20px 20px 20px 0">
+ <p class="break-word textColor" style="max-width: 230px; word-break: break-word;"
+ v-if="item.type === 'text'">{{ item.content }}</p>
+ <img v-else :src="item.content" class="w-200 h-200" @click="onPreview(item.content)" />
+ </div>
+ </template>
+ <div class="py-25 px-50 rounded-lg flex flex-col chatBg bg-right" style="border-radius: 20px 20px 0 20px"
+ v-else>
+ <img :src="`${item.content}`" class="w-200 h-200" v-if="item.type === 'img'"
+ @click="onPreview(item.content)" />
+ <p class="break-word textColor" v-else style="max-width: 230px; word-break: break-word;color: #fff">
+ {{ item.content }}</p>
+ </div>
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <!-- <div class="flex-1 w-full overflow-auto bg-f5">
+ <div class="w-full pt-43">
+ <div class="font-24 text-grey text-center">2022-07-07 20:18:10</div>
+ <div class="px-30 mt-45">
+ <div class="flex items-end">
+ <img class="w-64 h-64 mr-26" src="@/assets/image/c2c/Group11762.png" alt="">
+ <div class="h-100 pl-38 pr-52 py-32 box-border bg-white sell">{{$t('银行卡三天流水明细截图')}}</div>
+ </div>
+ <div class="flex justify-end mt-58">
+ <div class="buyer bg-blue text-white py-32 px-48">{{$t('误划,取消!')}}</div>
+ </div>
+ </div>
+ </div>
+ </div> -->
+ <div class="fixed bottom-0 bottom-box left-0 w-full px-32 box-border pb-80">
+ <div
+ class="pl-30 flex justify-between relative w-full h-120 items-center pr-140 box-border rounded-xl tabBackground chat-input">
+ <van-uploader :max-size="10000 * 1024" @oversize="onOversize" :after-read="afterRead">
+ <img src="@/assets/image/service/photo.png" class="w-72 h-72" />
+ </van-uploader>
+ <input class="w-full h-full font-32 pl-40 inputBackground c2cColor" type="text" v-model="message"
+ :placeholder="$t('请输入您的消息...')">
+ <div class="right-34 chat-icon" @click="send('text', message)">
+ <img class="w-54" src="@/assets/image/c2c/Vector(1).png" alt="">
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import {
+ Icon,
+ Button,
+ Uploader, ImagePreview,
+ CountDown, showLoadingToast, closeToast
+} from "vant";
+import OrderNav from "@/components/order-nav/OrderNav.vue";
+import { _uploadImage } from '@/service/fund.api'
+import otcApi from "@/service/otc.js";
+
+export default {
+ name: "ChatIndex",
+ props: ['type'], // 标识买家还是卖家
+ components: {
+ [Icon.name]: Icon,
+ [Button.name]: Button,
+ OrderNav,
+ [Uploader.name]: Uploader,
+ [CountDown.name]: CountDown,
+ },
+ data() {
+ return {
+ list: [],
+ lastMsgId: '',
+ finished: false, // 没有历史消息
+ message: '',
+ orderNo: '',
+ detail: {},
+ inter: null,
+ timerData: null,
+ time: '' // 剩余时间
+ }
+ },
+ filters: {
+ format(val) {
+ return Math.floor(val / 60) + ':' + val % 60
+ }
+ },
+ async created() {
+ this.orderNo = this.$store.state.c2c.order_no
+ const res = await otcApi.ctcOrderGetDetail({ order_no: this.orderNo, language: this.$i18n.locale });
+ this.detail = res.data
+ const { autoCancelTimeRemain } = this.detail
+ this.time = autoCancelTimeRemain
+ if (this.time > 0) {
+ this.timerData = setInterval(() => {
+ this.time--
+ if (this.time <= 0) {
+ clearInterval(this.timerData)
+ }
+ }, 2000)
+ }
+ this.fetchList()
+ },
+ methods: {
+ fixStrSell() {
+ let str = ''
+ if (this.detail.state == 0) {
+ str = this.$t('等待买家付款')
+ } else if (this.detail.state == 1) {
+ str = this.$t('请放行')
+ } else if (this.detail.state == 2) {
+ str = this.$t('申诉中')
+ } else if (this.detail.state == 3) {
+ str = this.$t('已完成')
+ } else if (this.detail.state == 4) {
+ str = this.$t('已取消')
+ } else if (this.detail.state == 5) {
+ str = this.$t('已超时')
+ }
+ return str
+ },
+ fixStrBuy() {
+ let str = ''
+ if (this.detail.state == 1) {
+ str = this.$t('等待卖家放行')
+ } else if (this.detail.state == 2) {
+ str = this.$t('申诉中')
+ } else if (this.detail.state == 3) {
+ str = this.$t('已完成')
+ } else if (this.detail.state == 4) {
+ str = this.$t('已取消')
+ } else if (this.detail.state == 5) {
+ str = this.$t('已超时')
+ }
+ return str
+ },
+ gotoPay() {
+ if (this.detail.state == 0) {
+ this.$router.push({ path: '/paymentBuy' })
+ }
+ },
+ onOversize(file) {
+ console.log(file);
+ this.$toast(this.$t('文件大小不能超过10m'));
+ },
+ onPreview(url) { // 预览
+ ImagePreview([url])
+ },
+ showTime(index) { // 时间显示
+ if (index === 0) {
+ return true
+ }
+ if (index === this.list.length - 1) {
+ return false
+ }
+ if (this.list[index].createtime.split(' ')[0] === this.list[index + 1].createtime.split(' ')[1]) {
+ return false
+ }
+ },
+ afterRead(file) { // 文件上传
+ showLoadingToast({ duration: 0 })
+ _uploadImage(file, (percent) => {
+ console.log(percent)
+ }).then(data => {
+ closeToast()
+ this.send('img', data)
+ }).catch(() => {
+ closeToast()
+ })
+ },
+ fetchList(message_id = '') { // 获取消息列表
+ otcApi.otcOnlinechatList({
+ messageId: message_id,
+ orderNo: this.detail.orderNo
+ }).then(res => { // this.lastMsgId
+ if (!this.lastMsgId) {
+ this.lastMsgId = res.data.length && res.data[res.data.length - 1]['id']
+ }
+ if (res.data.length) {
+ if (message_id) { // 加载更多
+ this.lastMsgId = res.data[res.data.length - 1]['id']
+ this.list = [...res.data.reverse(), ...this.list]
+ } else {
+ this.list = [...this.list, ...res.data.reverse()]
+ let hash = {};
+ this.list = this.list.reduce(function (preVal, curVal) {
+ hash[curVal.id] ? ' ' : hash[curVal.id] = true && preVal.push(curVal);
+ return preVal
+ }, []);
+ }
+ if (res.data.length < 10) {
+ this.finished = true
+ }
+ } else {
+ this.list = []
+ }
+ if (!message_id) {
+ this.clearInterval()
+ this.inter = setInterval(() => {
+ this.fetchList()
+ }, 2000)
+ }
+ })
+
+ },
+ onMore() { // 加载更多
+ this.fetchList(this.lastMsgId)
+ },
+ clearInterval() {
+ if (this.inter) {
+ clearInterval(this.inter)
+ this.inter = null
+ }
+ },
+ send(type = 'text', content = '') { // 发送消息, img 也当消息text
+ if (!content) {
+ this.$toast(this.$t('请输入消息内容'))
+ return
+ }
+ otcApi.otcOnlinechat({
+ orderNo: this.detail.orderNo,
+ type,
+ content
+ }).then(data => {
+ console.log(data)
+ this.message = ''
+ // document.getElementById('bottom').click()
+ this.fetchList()
+ setTimeout(() => {
+ this.bottomScrollClick()
+ },1000)
+ // setTimeout(() => {
+ // window.scrollTo(0, document.documentElement.scrollHeight)
+ // }, 1000)
+ })
+ },
+ bottomScrollClick() {
+ this.$nextTick(() => {
+ let scrollEl = this.$refs.mianscroll;
+ scrollEl.scrollTo({ top: scrollEl.scrollHeight + 400, behavior: 'smooth' });
+ });
+ }
+ },
+ beforeUnmount() {
+ this.clearInterval()
+ let end = setInterval(function () { }, 10000);
+ for (let i = 1; i <= end; i++) {
+ clearInterval(i);
+ clearTimeout(i);
+ }
+ },
+ beforeDestroy() {
+ this.clearInterval()
+ let end = setInterval(function () { }, 10000);
+ for (let i = 1; i <= end; i++) {
+ clearInterval(i);
+ clearTimeout(i);
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.bg-left {
+ background: #fff !important;
+}
+
+.bg-right {
+ background: #1D91FF !important;
+}
+
+.sell {
+ border-radius: 10.0022px 10.0022px 10.0022px 0;
+}
+
+.buyer {
+ border-radius: 10.0022px 10.0022px 0 10.0022px;
+ //transform: matrix(-1, 0, 0, 1, 0, 0);
+}
+
+.chat-input {
+ input {
+ border: none;
+ outline: none;
+ }
+}
+.chat-page{
+ overflow: auto;
+}
+
+.chat-icon {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.bottom-box{
+ background: $main_background !important;
+}
+</style>
diff --git a/src/views/cryptos/AboutUs/index.vue b/src/views/cryptos/AboutUs/index.vue
index 84844b8..2bf1e67 100644
--- a/src/views/cryptos/AboutUs/index.vue
+++ b/src/views/cryptos/AboutUs/index.vue
@@ -12,6 +12,7 @@
import assetsHead from "@/components/Transform/assets-head/index.vue";
import { _getAboutUs } from "@/service/user.api"
import { dataTimeEx } from '@/utils/utis'
+import { showToast } from "vant";
export default {
data() {
return {
@@ -50,8 +51,8 @@
this.createTime = this.dataTimeEx(res.createTime)
}).catch((error) => {
- if (error.code == 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); }
- else if (error.msg !== undefined) { this.$toast(this.$t(error.msg)); }
+ if (error.code == 'ECONNABORTED') { showToast(this.$t('网络超时!')); }
+ else if (error.msg !== undefined) { showToast(this.$t(error.msg)); }
});
}
}
diff --git a/src/views/cryptos/HelpCenter/index.vue b/src/views/cryptos/HelpCenter/index.vue
index 30b7f6f..1d6f66c 100644
--- a/src/views/cryptos/HelpCenter/index.vue
+++ b/src/views/cryptos/HelpCenter/index.vue
@@ -18,7 +18,7 @@
</template>
<script>
-import { Icon } from 'vant';
+import { Icon, showToast } from 'vant';
import assetsHead from "@/components/Transform/assets-head/index.vue";
import { _helpCenter } from "@/service/user.api"
export default {
@@ -46,8 +46,8 @@
}).then((res) => {
this.listArr = res
}).catch((error) => {
- if (error.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); }
- else if (error.msg !== undefined) { this.$toast(this.$t(error.msg)); }
+ if (error.code === 'ECONNABORTED') { showToast(this.$t('网络超时!')); }
+ else if (error.msg !== undefined) { showToast(this.$t(error.msg)); }
});
},
}
diff --git a/src/views/cryptos/financialManagement/fundBuy.vue b/src/views/cryptos/financialManagement/fundBuy.vue
index fd284fc..892e8e8 100644
--- a/src/views/cryptos/financialManagement/fundBuy.vue
+++ b/src/views/cryptos/financialManagement/fundBuy.vue
@@ -76,6 +76,7 @@
import { _getBalance } from "@/service/user.api.js";
import { fundMakeOrder } from '@/service/financialManagement.api.js'
import dayjs from 'dayjs'
+import { showToast } from "vant";
export default {
name: "funBuy",
components: {
@@ -105,7 +106,7 @@
},
handleBuy() {
if (!this.form.amount) {
- this.$toast(this.$t('请输入金额'))
+ showToast(this.$t('请输入金额'))
return
}
fundMakeOrder(this.form).then(res => {
diff --git a/src/views/cryptos/financialManagement/machineBuy.vue b/src/views/cryptos/financialManagement/machineBuy.vue
index d64b443..710c3ce 100644
--- a/src/views/cryptos/financialManagement/machineBuy.vue
+++ b/src/views/cryptos/financialManagement/machineBuy.vue
@@ -69,6 +69,7 @@
import assetsHead from '@/components/Transform/assets-head/index.vue';
import dayjs from 'dayjs'
import { _getBalance } from "@/service/user.api.js";
+import { showToast } from "vant";
export default {
name: "MachineBuy",
components: {
@@ -99,16 +100,16 @@
},
handleBuy() {
if (!this.data.test && !this.form.amount) {
- this.$toast(this.$t('请输入金额'))
+ showToast(this.$t('请输入金额'))
return
} else if (this.data.test && this.form.amount == '') {
this.form.amount = 0
}
if (this.form.amount * 1 < this.data.investment_min) {
- this.$toast(this.$t('最低金额') + ':' + this.data.investment_min)
+ showToast(this.$t('最低金额') + ':' + this.data.investment_min)
return
} else if (this.form.amount * 1 > this.data.investment_max) {
- this.$toast(this.$t('最大数量') + ':' + this.data.investment_max)
+ showToast(this.$t('最大数量') + ':' + this.data.investment_max)
return
}
diff --git a/src/views/cryptos/loan/index.vue b/src/views/cryptos/loan/index.vue
index 89e5628..7a4c9d7 100644
--- a/src/views/cryptos/loan/index.vue
+++ b/src/views/cryptos/loan/index.vue
@@ -147,7 +147,7 @@
<script>
import AssetsHead from "@/components/Transform/assets-head/index.vue";
-import { Popup, Uploader } from "vant";
+import { Popup, Uploader, showToast } from "vant";
import { _uploadImage, _getLoan, _loanApply } from "@/service/fund.api";
// import {debounce} from "@/utils/utis";
@@ -171,7 +171,7 @@
submit() {
// console.log('this.frontFile',this.frontFile)
if (!this.frontFile.length || !this.reverseFile.length || !this.fileList.length) {
- this.$toast(this.$t('请上传完整证件信息'))
+ showToast(this.$t('请上传完整证件信息'))
return
}
_loanApply({
@@ -191,7 +191,7 @@
// console.log('res',res)
this.$router.push('/cryptos/loanHistory')
}).catch(err => {
- this.$toast(this.$t(err.msg))
+ showToast(this.$t(err.msg))
})
},
// //防抖
diff --git a/src/views/cryptos/order/FinancialOrder/index.vue b/src/views/cryptos/order/FinancialOrder/index.vue
index a3ccfde..2c02487 100644
--- a/src/views/cryptos/order/FinancialOrder/index.vue
+++ b/src/views/cryptos/order/FinancialOrder/index.vue
@@ -80,6 +80,7 @@
import assetsHead from '@/components/Transform/assets-head/index.vue';
import dayjs from 'dayjs'
import { ransomFinacialProduct, getFinanceOrder } from '@/service/financialManagement.api.js'
+import { showToast } from 'vant'
export default {
name: "index",
components: {
@@ -143,7 +144,7 @@
id: this.id
}).then(res => {
console.log(res)
- this.$toast(this.$t('赎回成功'))
+ showToast(this.$t('赎回成功'))
setTimeout(() => {
this.backFunc()
}, 1000)
diff --git a/src/views/cryptos/order/MiningMachineOrder/index.vue b/src/views/cryptos/order/MiningMachineOrder/index.vue
index 855bac0..88baf8a 100644
--- a/src/views/cryptos/order/MiningMachineOrder/index.vue
+++ b/src/views/cryptos/order/MiningMachineOrder/index.vue
@@ -71,6 +71,7 @@
<script>
import assetsHead from '@/components/Transform/assets-head/index.vue';
import { ransomMachineProduct, getMinerorder } from "@/service/financialManagement.api.js";
+import { showToast } from 'vant';
import dayjs from "dayjs";
export default {
name: "index",
@@ -117,7 +118,7 @@
ransomMachineProduct({
order_no: this.order_no
}).then(res => {
- this.$toast(this.$t('赎回成功'))
+ showToast(this.$t('赎回成功'))
setTimeout(() => {
this.backFunc()
}, 1000)
diff --git a/src/views/cryptos/promote/SharePoster.vue b/src/views/cryptos/promote/SharePoster.vue
index 8a7358d..f1017f3 100644
--- a/src/views/cryptos/promote/SharePoster.vue
+++ b/src/views/cryptos/promote/SharePoster.vue
@@ -49,7 +49,7 @@
// import { Carousel3d, Slide } from 'vue-carousel-3d';
// import { VueCanvasPoster } from 'vue-canvas-poster';
import { mapGetters } from "vuex";
-import { Toast } from "vant";
+import { showToast } from "vant";
// import Vue from 'vue';
import { Carousel3d, Slide } from 'vue3-carousel-3d';
@@ -117,7 +117,7 @@
// 生成二维码
QRCode.toDataURL(this.localuser.url, (err, qrCodeData) => {
- if (err) Toast.fail(err)
+ if (err) showToast.fail(err)
this.img = qrCodeData
this.readyCount = 3;
})
@@ -196,7 +196,7 @@
// link.href = base64
// link.download = 'qrCode.png'
// link.click()
- // // Toast.loading({
+ // // showToast.loading({
// // duration: 1000,
// // forbidClick: true
// // })
diff --git a/src/views/customerService/index.vue b/src/views/customerService/index.vue
index 6d3b92d..60a2619 100644
--- a/src/views/customerService/index.vue
+++ b/src/views/customerService/index.vue
@@ -66,7 +66,7 @@
import { Uploader, showImagePreview } from 'vant'
import { _getMsg, _getUnreadMsg, _sendMsg } from '@/service/im.api'
import { _uploadImage } from '@/service/upload.api'
-import { ref, onMounted, onUnmounted } from "vue";
+import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue";
import { useI18n } from "vue-i18n";
import { throttle } from '@/utils/index'
import { closeToast, showToast, showLoadingToast } from "vant";
@@ -256,7 +256,12 @@
onUnmounted(() => {
clearIntervalTimer()
})
-
+onBeforeUnmount(() => {
+ let lastTimerId = setInterval(() => {}, 1000);
+ for (let i = 1; i <= lastTimerId; i++) {
+ clearInterval(i);
+ }
+})
</script>
<style lang="scss" scoped>
diff --git a/src/views/homePage/index.vue b/src/views/homePage/index.vue
index d82d293..88312f2 100644
--- a/src/views/homePage/index.vue
+++ b/src/views/homePage/index.vue
@@ -107,7 +107,7 @@
// { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) },
{ key: 11, name: "ICO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' },
- { key: 12, name: "C2C", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '' },
+ { key: 12, name: "C2C", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/wantBuy' },
]
// 获取公告数据
diff --git a/src/views/orderList/index.vue b/src/views/orderList/index.vue
new file mode 100644
index 0000000..0817ba2
--- /dev/null
+++ b/src/views/orderList/index.vue
@@ -0,0 +1,187 @@
+<template>
+ <div class="main flex flex-col">
+ <div class="nav flex items-center">
+ <van-icon name="arrow-left" />
+ <div class="top-nav flex">
+ <div :class="active ? 'active' : ''" @click="active = true">{{ $t('进行中') }}</div>
+ <div :class="!active ? 'active' : ''" @click="active = false">
+ {{ $t('已完成') }}
+ </div>
+ </div>
+ </div>
+ <van-tabs @change="handleChange" v-model="activeName">
+ <van-tab v-for="(item, index) in tabList" :key="index" :title="item.label">
+ </van-tab>
+ </van-tabs>
+ <div class="btp flex-1 bg-white">
+ <van-pull-refresh :pulling-text="$t('下拉即可刷新')" :loosing-text="$t('释放即可刷新')" :loading-text="$t('加载中')"
+ v-model="isLoading" @refresh="onRefresh">
+ <van-list :immediate-check="false" v-model="loading" :finishedArr="finishedArr" :finishedArr-text="$t('没有更多了')"
+ @load="onLoad">
+ <div v-if="list.length === 0" class="zanwu">
+ <img src="@/assets/image/zanwu.png" alt="" />
+ <p>{{ $t('暂无订单') }}</p>
+ </div>
+ <div v-else>
+ <Items v-for="(el, eIndex) in list" :key="eIndex" :items="el" />
+ </div>
+ </van-list>
+ </van-pull-refresh>
+ </div>
+ </div>
+</template>
+
+<script>
+import { Icon, Tab, Tabs, showToast, List, PullRefresh } from 'vant'
+import listLoadMixins from '@/utils/list-load-mixins'
+import Items from './items.vue'
+import { getMerchantOrdersList } from '@/service/otc'
+export default {
+ mixins: [listLoadMixins],
+ components: {
+ [Icon.name]: Icon,
+ [Tab.name]: Tab,
+ [Tabs.name]: Tabs,
+ Items,
+ [List.name]: List,
+ [showToast.name]: showToast,
+ [PullRefresh.name]: PullRefresh,
+ },
+ created() {
+ this.get()
+ },
+ methods: {
+ get() { // 获取数据的方法需要自定义
+ showToast.loading()
+ getMerchantOrdersList(this.form).then(res => {
+ showToast.clear()
+ // console.log('承兑商订单列表', res)
+ this.handleData(res)
+ })
+ },
+ handleChange() {
+ this.form.state = this.tabList[this.activeName].value
+ this.onRefresh()
+ }
+ },
+ data() {
+ return {
+ form: {
+ direction: '', // buy sell
+ state: '' // 0未付款/1已付款/2申诉中/3已完成/4已取消/5已超时
+ },
+ active: true,
+ activeName: 0,
+ finishedArr: [
+ {
+ label: this.$t('已完成'),
+ value: 3
+ },
+ {
+ label: this.$t('已取消'),
+ value: 4
+ },
+ {
+ label: this.$t('已超时'),
+ value: 5
+ },
+ ],
+ runningArr: [
+ {
+ label: this.$t('全部'),
+ value: ''
+ },
+ {
+ label: this.$t('已付款'),
+ value: 1
+ },
+ {
+ label: this.$t('申诉中'),
+ value: 2
+ },
+ ],
+ }
+ },
+
+ watch: {
+ active(val) {
+ this.activeName = 0
+ if (val === true) {
+ this.form.state = ''
+ } else {
+ this.form.state = 3
+ }
+ this.onRefresh()
+ }
+ },
+ computed: {
+ tabList() {
+ return this.active ? this.runningArr : this.finishedArr
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.main {
+ background: rgb(245, 245, 245);
+ height: calc(100% - 160px);
+
+ .nav {
+ padding: 22px 40px;
+
+ .top-nav {
+ width: 372px;
+ height: 80px;
+ border: 1px solid #e0e0e0;
+ border-radius: 6px;
+ margin-left: 160px;
+
+ div {
+ margin: 8px;
+ height: 64px;
+ line-height: 64px;
+ text-align: center;
+ width: 48%;
+ }
+ }
+ }
+
+ ::v-deep .van-tabs__nav {
+ border-radius: 70px 70px 0 0 !important;
+ }
+
+ ::v-deep .van-tabs__line {
+ width: 52px;
+ height: 6px;
+ }
+
+ .main-c {
+ height: 100%;
+ background: #fff;
+ border-radius: 80px 80px 0px 0px;
+ overflow: auto;
+ }
+}
+
+.zanwu {
+ text-align: center;
+ font-size: 28px;
+ color: #868d9a;
+
+ img {
+ margin-top: 206px;
+ width: 157px;
+ height: 152px;
+ }
+}
+
+.btp {
+ border-top: 1px solid #484756;
+ overflow-y: auto;
+}
+
+.active {
+ background: #fff;
+}
+</style>
diff --git a/src/views/orderList/items.vue b/src/views/orderList/items.vue
new file mode 100644
index 0000000..3891250
--- /dev/null
+++ b/src/views/orderList/items.vue
@@ -0,0 +1,157 @@
+<template>
+ <div class="item-main" @click="gotoPage">
+ <div class="flex justify-between items-center buy">
+ <span class="us-buy">
+ <span v-if="items.direction === 'buy'" style="color: #5eba89">{{ $t('购买') }}</span>
+ <span v-else style="color: #e35461">{{ $t('出售') }}</span>
+ {{ items.symbol }}
+ </span>
+ <span v-if="items.direction === 'buy'">
+ <span
+ :class="{ 'blue': items.state === '0', 'yellow': items.state === '1', 'red': items.state === '2' || items.state === '5', 'green': items.state === '3' }">{{
+ arr[items.state / 1] }}</span>
+ <van-icon name="arrow" />
+ </span>
+ <span v-else>
+ <span
+ :class="{ 'blue': items.state === '0', 'yellow': items.state === '1', 'red': items.state === '2' || items.state === '5', 'green': items.state === '3' }">{{
+ arr1[items.state / 1] }}</span>
+ <van-icon name="arrow" />
+ </span>
+ </div>
+ <div class="flex justify-between items-center price-i">
+ <span>{{ $t('单价') }} {{ items.currency || currency.currency_symbol }} {{ items.symbol_value }}</span>
+ <span style="color: #b8bcc5">{{ items.time }}</span>
+ </div>
+ <div class="flex justify-between items-center price-i pd-32">
+ <span>{{ $t('数量') }} {{ (items.coin_amount / 1).toFixed(items.symbol === 'USDT' ? 2 : 4) }} {{ items.symbol
+ }}</span>
+ <span class="textColor" style="font-weight: bold">{{ items.currency }}
+ {{ (items.symbol_value * items.coin_amount / 1).toFixed(2) }}</span>
+ </div>
+ <div class="niu flex items-center">
+ <van-badge v-if="items.msg" :content="items.msg">
+ <img src="@/assets/image/Subtract.png" class="mr-20" alt="" />
+ </van-badge>
+ <img v-else src="@/assets/image/Subtract.png" class="mr-20" alt="" />
+ {{ items.c2c_user_nick_name }}
+ <!-- <img src="@/assets/image/up.png" alt="" />
+ 资金安全 -->
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+import { Icon, Badge } from 'vant'
+
+export default {
+ props: ['items'],
+ data() {
+ return {
+ arr: [this.$t('未付款'), this.$t('已付款'), this.$t('申诉中'), this.$t('已完成'), this.$t('已取消'), this.$t('已超时')],
+ arr1: [this.$t('等待付款'), this.$t('待确认'), this.$t('申诉中'), this.$t('已完成'), this.$t('已取消'), this.$t('已超时')],
+ }
+ },
+ computed: {
+ ...mapState('home', ['currency'])
+ },
+ methods: {
+ gotoPage() { // 去到相应的页面
+ // console.log(this.items)
+ // this.$store.commit('c2c/SET_ADV_ID',this.items.id)
+ this.$store.commit('c2c/SET_ORDER_NO', this.items.order_no)
+ // return
+ if (this.items.direction === 'buy') {
+ if (this.items.state / 1 === 0 || this.items.state / 1 === 5) { // 未付款
+ this.$router.push(`/orderGeneration`)
+ } else if (this.items.state / 1 === 1) { // 已付款
+ this.$router.push('/paymentDetail')
+ } else { /// 111 其他
+ this.$router.push('/tradeOrderDetail')
+ }
+ } else {
+ if (this.items.state / 1 === 0 || this.items.state / 1 === 5) { // 未付款
+ this.$router.push(`/sellGenerate`)
+ } else if (this.items.state / 1 === 1) { // 已付款
+ this.$router.push(`/confirmedPaid`)
+ // this.$router.push('/paymentDetail?order_no=' + this.items.order_no)
+ } else { /// 111 其他
+ this.$router.push('/tradeOrderDetail')
+ }
+ }
+ }
+ },
+ components: {
+ [Icon.name]: Icon,
+ [Badge.name]: Badge,
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/css/copy2.scss";
+.item-main {
+ padding: 42px 0 66px;
+ margin: 0 30px;
+ font-size: 28px;
+ color: #868d9a;
+ border-bottom: 1px solid $line_color;
+
+ .buy {
+ margin-bottom: 40px;
+ font-size: 32px;
+
+ .us-buy {
+ color: #fff;
+ }
+ }
+
+ .price-i {
+ margin-bottom: 28px;
+ }
+
+ .pd-32 {
+ margin-bottom: 32px;
+ }
+
+ .niu {
+ width: 200px;
+ height: 57px;
+ overflow: hidden;
+ background: $tab_background;
+
+ border-radius: 50px;
+ font-size: 22px;
+ padding: 0 20px;
+
+ img {
+ width: 30px;
+ height: 30px;
+ margin-top: 6px;
+ }
+ }
+}
+
+::v-deep {
+ .van-badge--fixed {
+ top: 80%;
+ }
+}
+
+.blue {
+ color: #1D91FF;
+}
+
+.green {
+ color: #2EBD85;
+}
+
+.red {
+ color: #E35461
+}
+
+.yellow {
+ color: #E2AE27;
+}
+</style>
diff --git a/src/views/payMentMethod/list.vue b/src/views/payMentMethod/list.vue
index b46f532..fc92540 100644
--- a/src/views/payMentMethod/list.vue
+++ b/src/views/payMentMethod/list.vue
@@ -48,7 +48,7 @@
router.push('add')
}
const back = () => {
- router.push('/my/index')
+ router.go(-1)
}
</script>
<style lang="scss" scoped>
--
Gitblit v1.9.3